當前位置:
首頁 > 最新 > ACL 2018使用知識蒸餾提高基於搜索的結構預測

ACL 2018使用知識蒸餾提高基於搜索的結構預測

論文作者:劉一佳,車萬翔,趙懷鵬,秦兵,劉挺

1 基於搜索的結構預測

1.1 結構預測

自然語言結構預測是這樣一類問題:問題的輸出有多個變數,並且變數之間有相互依賴。圖1給出了結構預測與分類的一個對比。可以看到,對於圖1中的結構預測問題——機器翻譯,演算法要輸出四個變數(對應四個翻譯的詞),而且翻譯出的四個詞是相互依賴的。

圖1 分類(上)與結構預測(下)的對比

1.2 基於搜索的結構預測:搜索過程、打分函數與學習演算法

一種求解這些多變數的方法是將求解過程建模為一個搜索過程。我們從起始狀態出發,每次選擇一個搜索動作(對於機器翻譯來講,可以認為從詞表中選一個詞作為翻譯是一個搜索動作),進入新的狀態。不斷重複這一過程,就可以獲得最終的結構(如圖2所示)。

圖2 基於搜索的結構預測與控制預測過程的打分函數

在這個搜索過程中,我們需要一個打分函數。這個打分函數告訴我們:在一個狀態下,每個動作的可行性有多大。一種常見的方法是將這個打分函數建模為一個分類器(如圖2中的p)。這個打分函數的一般學習過程可以歸納為:首先根據專家知識找到一個正確的搜索狀態序列(圖3中橙色的搜索序列)。然後,在這些正確的狀態上,以正確的搜索動作為正例訓練分類器。

圖3 基於搜索的結構預測的一般學習過程及其問題

1.3 問題

上述學習過程有兩種常見的問題:

訓練數據歧義性:在我們的翻譯的例子里,」這「可以翻譯this也可以翻譯為the,但訓練數據往往只有一種參考翻譯。

訓練測試不一致:在訓練分類器時,我們是基於正確的搜索狀態。但在實際測試階段,演算法會進入錯誤狀態(如圖3中的紅色狀態)。我們訓練的分類器往往不具備在錯誤狀態中做決策的能力。

在這項工作中,我們希望通過知識蒸餾(knowledge distillation)統一地解決這兩種問題。

2 知識蒸餾

知識蒸餾[Hinton et al., 2015]是一種機器學習演算法。不同於傳統的從訓練數據中有監督地學習,知識蒸餾從一個複雜模型(teacher model)的概率輸出中學習參數。圖4給出了知識蒸餾的學習目標,以及和對數似然學習目標的對比。當然,兩種學習目標可以通過插值簡單組合。

圖4 知識蒸餾學習目標(右)與對數似然學習目標(左)的對比

在這項工作中,我們希望通過知識蒸餾統一地解決基於搜索的結構預測中的問題。對於訓練數據歧義的問題,前人工作中常見的解決方法是使用模型集成[Dietterich, 2000]。在基於搜索的結構預測中,我們同樣可以採用模型集成來提高模型應對有歧義訓練數據的能力。然後通過知識蒸餾,將複雜模型(模型集成)的應對歧義的能力轉移到簡單模型中。具體來講,我們可以直接在傳統學習演算法的基礎上將對數似然替換為知識蒸餾的學習目標(如圖5所示)。由於這種知識蒸餾方法在正確狀態(reference state)上進行知識蒸餾,我們將其命名為distilling from reference。

圖5 Distilling from reference

對於訓練測試不一致的問題,前人研究的主要解決思路是在訓練過程中引入錯誤狀態並在錯誤狀態上進行模型學習。在這項工作中,我們也沿用了這一思路,用模型集成隨機地探索狀態空間,並在探索到的狀態上使用知識蒸餾目標學習模型參數(如圖6所示)。由於這種知識蒸餾方法在探索得到的狀態(explored state)上進行知識蒸餾,我們將其命名為distilling from exploration。

圖6 Distilling from exploration

實踐中,distilling from reference與distilling from exploration可以通過簡單組合來進一步提到學習效果。我們在實驗部分也驗證了這點。

對於Distilling from exploration,我們完全放棄了傳統對數似然的學習目標。後文的實驗分析中,我們經驗性地證明完全從探索中學習知識蒸餾模型也是可行的。

3 實驗

我們在基於轉移的句法分析以及一個小規模機器翻譯數據集上進行了實驗。實驗結果如表1所示。相較基線模型,我們的蒸餾模型在不改變模型結構的情況下將句法分析的準確率提高1.3,並將機器翻譯準確率提高2.6。

表1 實驗結果

3.1 模型集成是否具有克服歧義性的能力?

通過在依存句法分析中以dynamic oracle為工具(對於依存句法,d.o.可以在任意狀態下給出最優的動作),我們發現,相較基線模型,模型集成選擇的動作與dynamic oracle的選擇來更接近。

3.2 完全從探索中學習知識蒸餾模型是否可行?

我們通過改變α調整從知識蒸餾學習的比例。我們發現,兩個任務都呈現出越多地從知識蒸餾中學習,效果越好。這說明完全從探索中學習知識蒸餾模型是可行的。

圖7 α值與開發集性能的曲線

3.3 從知識蒸餾中學習是穩定的嗎?

從violin-plot來看,從知識蒸餾中學習模型相較基線模型來講對初始化更不敏感,有更好的模型穩定性。

圖8 模型穩定性

4 結論與補充資源

我們嘗試用知識蒸餾解決基於搜索的結構預測的問題,並且取得了模型性能的顯著提高。實驗分析給出了知識蒸餾應用於基於搜索的結構預測的一些性質並經驗性地解釋了性能提高的原因。

論文:https://arxiv.org/abs/1805.11224

依存句法代碼:https://github.com/Oneplus/twpipe

機器翻譯代碼:https://github.com/Oneplus/OpenNMT-py

AIS演講視頻(34分到43分):https://v.qq.com/x/page/m0686geizuw.html

5 引用文獻

Thomas G. Dietterich. An experimental comparison of three methods for constructing ensembles of decision trees: Bagging, boosting, and randomization. Machine Learning, 40(2):139-157, 2000.

Geoffrey E. Hinton, Oriol Vinyals, and Jeffrey Dean. Distilling the knowledge in a neural network. CoRR, abs/1503.02531, 2015.

本期責任編輯: 丁 效

本期編輯: 吳 洋

「哈工大SCIR」公眾號

主編:車萬翔

副主編: 張偉男,丁效

責任編輯: 張偉男,丁效,趙森棟,劉一佳

編輯: 李家琦,趙得志,趙懷鵬,吳洋,劉元興,蔡碧波,孫卓


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 哈工大SCIR 的精彩文章:

TAG:哈工大SCIR |