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