ACL 2021 | 结构化知识蒸馏方法
本文介紹了上海科技大學屠可偉課題組與阿里巴巴達摩院的一項合作研究,提出了在結構預測問題上一種較為通用的結構化知識蒸餾方法。該論文已被 ACL 2021 接受為長文。
?
論文標題:
Structural Knowledge Distillation: Tractably Distilling Information for Structured Predictor
論文地址:
http://faculty.sist.shanghaitech.edu.cn/faculty/tukw/acl21kd.pdf
簡介
知識蒸餾(knowledge distillation,簡稱 KD)是模型壓縮方法的一種,用于將知識從一個復雜的教師模型轉移到一個簡單的學生模型中。KD 的基本思想是希望學生模型的預測盡量接近教師模型的預測。自然語言處理和計算機視覺的很多任務要求結構化的輸出,例如圖片的像素級標簽、句子的單詞級標簽序列等。
這時就需要使用結構知識蒸餾(structural KD)在模型之間轉移這種結構化的信息。但結構輸出空間一般是輸出尺寸的指數大小,直接求解和優化 structural KD 的目標函數是不可行的。之前的工作一般是在特定情形中采用近似求解或將問題轉換成非結構化知識蒸餾求解。
本文則根據很多常見結構預測模型會把輸出結構的打分分解成多個子結構的打分之和,且子結構空間遠小于結構輸出空間的特性,提出了在一定條件下 structural KD 目標函數的多項式復雜度精確求解的方法。
?
背景知識
2.1 知識蒸餾
知識蒸餾框架通常包含一個或多個大型的已訓練的教師模型和小型的學生模型,訓練時知識蒸餾會鼓勵學生模型的預測盡量接近教師模型的預測,一般來說就是將兩者的交叉熵作為目標函數。
假設我們要訓練一個多分類模型,類別集合為 。在樣本 x 上教師模型的預測分布為 ,學生模型的預測分布為 ,則知識蒸餾要最大化兩者的交叉熵:
?
同時我們使用訓練集上的樣本 訓練學生模型,目標函數為:
是指示函數。訓練時最終的目標函數是兩者的加權求和?
λλ
2.2 詞級別知識蒸餾
給定輸入序列 ,輸出序列 。如果將所有輸出 都看作相互獨立的,那么就可以在序列的每個位置分別做知識蒸餾,即詞級別知識蒸餾(token-wise?knowledge distillation),對每個位置的 求和得到整個序列的知識蒸餾目標函數:
2.3 結構知識蒸餾
但實際上不同位置的輸出往往并不是相互獨立的,比如用 BIOES 標注 NER 標簽的例子:“希爾頓離開北京機場了”,其標簽為”B-PER, I-PER, E-PER, O, O, B-LOC, I-LOC, I-LOC, E-LOC, O“。I 標簽前只能是 B 標簽,不能是其他標簽,類似的還有 E 標簽前必須是 B 或者 I 標簽等規則。
假設這個例子中只有 PER 和 LOC 兩種 NER 標簽,那么每個詞的標注有 9 種,長度為 10 的輸出序列理論上有 種組合,但實際上違反了 BIOES 標注規則的結構都不可能出現。因此常見的序列結構預測模型例如線性鏈 CRF 會建模不同位置輸出之間的相關性。
同理,很多其他形式的結構預測模型(例如樹或圖的預測)也會建模輸出結構不同部分之間的相關性。我們希望能在結構預測模型的知識蒸餾中,讓學生模型學習到教師模型對完整結構的預測,亦即結構知識蒸餾(structrual knowledge distillation)。
令所有可能的結構輸出序列構成結構輸出空間 ,則結構知識蒸餾的目標函數為:
由于結構輸出空間大小 往往是輸出序列長度 n 的指數函數,因此直接按上式計算是不可行的。
我們去年在 ACL2020 發表的論文“Structure-Level Knowledge Distillation For Multilingual Sequence Labeling”提出了兩種近似方法。
一種方法是只考慮 中概率最大的若干輸出結構,在這些輸出序列上求和,計算目標函數的近似值。如可以使用動態規劃算法預測出前 k 個概率最高的輸出結構 ,并假設教師模型在這 k 個輸出序列上是均勻分布,從而得到 top-K 知識蒸餾:
如果對教師模型在這 k 個輸出結構上的預測概率進行一個估計,就得到 weighted top-K 知識蒸餾:
另一種方法是在一些特定場景下,通過全局結構分布求出局部的邊緣分布,將問題強行變成一個非結構化知識蒸餾問題。Posterior Distillation 方法就是在線性鏈 CRF 模型之間進行知識蒸餾時,用前向后向算法求出模型在每個 token 上輸出的邊緣分布,然后再使用 token-wise?KD。
上述第一種方法舍棄了概率不大的結構輸出,第二種方法則優化的不再是真正的結構知識蒸餾目標函數,兩者都是近似解決結構知識蒸餾。
?
本文的工作
3.1 Structural KD???
??
上面介紹的方法都是近似方法,本文則介紹了在一定條件下一種精確求解結構知識蒸餾目標函數的方法。
很多結構預測模型會將結構輸出分解成許多子結構,結構輸出的分數是由子結構的分數求和得到。因此完整結構輸出的概率公式如下:
其中 y 是某個結構輸出, 是模型對 y 的打分, 表示 u 是 y 的一個子結構;我們定義子結構空間 ,即所有可能子結構的集合; 是 partition function。
例如前例中的序列標注任務。如果是最大熵(MaxEnt)模型,模型對每個位置預測的標簽打分,整個標簽序列的分數等于各個標簽的分數之和:,y 的子結構即每個位置的輸出 。子結構空間大小為 。
如果使用線性鏈 CRF 模型,則模型對每個位置的輸出 和相鄰兩個位置的輸出對 打分,y 的子結構即所有 和 ,因而 ,子結構空間大小為 。
如果結構知識蒸餾的學生模型是基于這種結構分解模型,我們可以簡化結構知識蒸餾目標函數如下:
如果同時滿足條件:1. 學生模型的子結構空間 是多項式大小,2. 教師模型可快速計算學生模型子結構的邊緣分布,那么這個目標函數可以在多項式時間內精確求解。
3.2 四類場景
下面按照教師和學生模型子結構分解的差異分成四類場景舉例討論,其中所有場景都討論了命名實體識別(NER)任務,場景 1 和 2 還討論了依存分析(dependency parsing)任務。
?
教師模型和學生模型有相同的子結構分解
Case1a: 線性鏈 CRF 到線性鏈 CRF
應用場景舉例:在線服務需要快速響應,因此需要將準確性很高但使用了大型預訓練上下文相關詞向量嵌入的教師網絡壓縮成只使用靜態詞向量嵌入的輕量級學生網絡。
本場景教師模型和學生模型都是線性鏈 CRF,兩者有相同的子結構空間。我們將發射分數 合并到了轉移分數 中。此時學生模型的子結構空間 。教師模型的子結構分數 ,子結構邊緣分布可由 計算,其中 由經典的前向后向算法得到。
Case 1b: 基于圖的依存分析到基于序列標注的依存分析
教師模型和學生模型分別是基于圖和基于序列標注的依存分析模型。教師模型的準確率要遠遠高于學生模型,但學生模型的速度更快,因此兩者之間的知識蒸餾是有意義的。
這里依存分析使用 head-selection 方式,對輸入句子的每個單詞 預測一個 dependency head 和 label ,即結構輸出 ,。學生模型是一個MaxEnt模型,對每個單詞預測 ,即子結構空間 。教師模型是一個 Biaffine 模型,對兩個單詞 之間的 dependency arc 進行建模,預測 是否是 的 head,以及預測這個 dependency arc 的 label。即對每個單詞獨立預測 和 并分別得到 ,所以其子結構邊緣分布為 。
學生模型相比教師模型有更精細的子結構分解
Case 2a: 線性鏈 CRF 到最大熵模型
以往的研究表明序列標注任務上線性鏈 CRF 的性能一般都要高于 MaxEnt 模型,但是往往實際應用中我們希望能獲得 MaxEnt 模型的速度和效率,因此這個場景下我們設計了在線性鏈 CRF 模型和 MaxEnt 模型之間進行知識蒸餾。
此時教師模型的子結構空間為 ,學生模型的子結構空間為 。這時我們可以使用前向后向算法求出教師模型在學生模型的子結構上的邊緣分布:。
Case 2b: 二階依存分析到基于序列標注的依存分析
這個場景類似于 Case 1b,不同之處是我們將教師模型替換成了性能更高的二階依存分析器。
教師模型對 dependency arc 的存在建模使用了二階依存分析,即對所有共享一個單詞的兩個 arc ? 進行打分;對 arc 的類型預測則與 Case 1b 一樣。因此教師模型的子結構空間包含所有共享一個單詞的 dependency arc 對。學生模型同 Case 1b,子結構空間 。
教師模型可以使用平均場變分推斷方法估計 arc 的存在概率 ,arc 的類型預測 同 Case 1b,因此子結構邊緣分布 。
教師模型相比學生模型有更精細的子結構分解
Case 3: 最大熵模型到線性鏈 CRF
這個場景與 Case 2a 的蒸餾方向相反。一個應用場景是零樣本跨語言命名實體識別任務:現有大部分基于預訓練多語言 BERT 的模型使用 MaxEnt 解碼,我們可以將其遷移到使用靜態詞向量嵌入的線性鏈 CRF 模型以獲得更快的速度。
由 Case 2a 可知 ,。容易得到子結構邊緣分布 。
?
教師模型和學生模型的分解形式不相容
Case 4: NER as Paring 模型到最大熵模型
這里的教師模型是當前準確度最高的命名實體識別模型之一,但是其時間復雜度比通常的序列標注模型要高,因此在這個場景中我們將其蒸餾到一個 MaxEnt 模型中。
教師模型用依存分析的方式做命名實體識別任務,即對一個候選實體的頭尾兩個詞 之間的 dependency arc 打分,用 arc 的類型表示命名實體的類型。而學生模型是最大熵模型使用 BIOES 標注。學生模型的子結構空間是 , 取值為 BIOES 標注的 NER 標簽,如“B-PER”。教師模型使用動態規劃可以得到子結構邊緣分布 。
?
實驗
本文在上述四個場景的不同 case 進行了實驗。命名實體識別任務使用了 CoNLL2002/2003 和 WikiAnn 數據集,用到的無標簽數據從 WikiAnn 數據集采樣得到。對于依存分析使用了 Penn Treebank(PTB)3.0 數據集,用到的無標簽數據從 BLLIP 數據集得到。
作為對比的基準知識蒸餾方法是前面介紹的 token-wise KD,weighted top-K KD 和 Posterior KD,表中記為:Token. KD, Top-WK KD 和? Pos. KD。文中提出的 structural KD 方法記為 struct. KD。
?
有標簽數據上的訓練
這是在有標簽數據上進行上述實驗的結果,w/o KD 為學生模型進行監督學習的結果。
?
加入無數據標簽
然后在訓練時加入了無標簽數據。先用教師模型對 unlabel 數據預測獲得偽標簽,Case 3 只包含帶偽標簽的訓練數據,其他 Case 使用的訓練數據是有標簽和偽標簽數據的混合。Top-1 是僅使用這樣的訓練數據來訓練學生模型。
?
token-wise KD 和 structural KD 的比較
Case 2a 中學生模型都是 MaxEnt,比較了 MaxEnt 教師模型加 token-wise KD和 CRF 教師模型加 structural KD 的組合。Case 3 中教師都是 MaxEnt 模型,比較了 Token-wise KD 加 MaxEnt 學生模型和 Structural KD 加 CRF 學生的組合。
多語言 NER 下不同 KD 方法的比較
由上述各表可以看出各種條件下 structural KD 的效果一般都是最好的。
?
?
結語
?
本文提出了在一定條件下可以多項式時間精確求解和優化結構知識蒸餾目標函數的方法,從而擴展了結構知識蒸餾的應用范圍,是對知識蒸餾方法的一個非常有意義的探索。
研究組
介紹
上海科技大學信息學院屠可偉老師研究組主要從事自然語言處理、機器學習等人工智能領域的研究,目前側重于研究語言結構的表示、學習與應用。研究組近幾年已發表頂會論文數十篇,2021 年至今已發表 ACL 長文 7 篇、ACL Findings 長文 1 篇、NAACL 長文 1 篇。研究組現招收碩士研究生(推免生)、博士后和研究助理,歡迎有興趣的同學聯系屠老師。?
更多信息請訪問屠可偉老師主頁:
http://faculty.sist.shanghaitech.edu.cn/faculty/tukw/
特別鳴謝
感謝 TCCI 天橋腦科學研究院對于 PaperWeekly 的支持。TCCI 關注大腦探知、大腦功能和大腦健康。
?
?
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
?????稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
?????投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的ACL 2021 | 结构化知识蒸馏方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 护脊床垫即昂首床垫是深圳智造的吗?
- 下一篇: 西安紫檀家具贵不贵?