通用數(shù)據(jù)集上蒸餾,和特定數(shù)據(jù)集上蒸餾,并且在特定數(shù)據(jù)集上做數(shù)據(jù)增加效果會更好
TinyBERT中蒸餾的整體過程:首先進行通用蒸餾,然后用數(shù)據(jù)增強后的數(shù)據(jù),在特定任務(wù)上進行蒸餾,本文主要進行了第二階段的蒸餾,模型是利用第一階段得到的通用小模型tinybert-6l-768d-v2進行初始化。
知識的蒸餾通常是通過讓學生模型學習相關(guān)的蒸餾相損失函數(shù)實現(xiàn),在本實驗中,蒸餾的學習目標由兩個部分組成,分別是中間層的蒸餾損失和預測層的蒸餾損失。其中,中間層的蒸餾包括對Embedding層的蒸餾、對每個Transformer layer輸出的蒸餾、以及對每個Transformer中attention矩陣(softmax之前的結(jié)果)的蒸餾,三者均采用的是均方誤差損失函數(shù)。而預測層蒸餾的學習目標則是學生模型輸出的logits和教師模型輸出的logits的交叉熵損失。
蒸餾層的映射由于教師模型是12層,學生模型的層數(shù)少于教師模型的層數(shù),因此需要選擇一種layer mapping的方式。論文中采用了一種固定的映射方式,當學生模型的層數(shù)為教師模型的1/2時,學生第i層的attention矩陣,需要學習教師的第2i+1層的attention矩陣,Transformer layer輸出同理。