淺讀知識(shí)蒸餾 p1 自用筆記
學(xué)習(xí)兩篇知識(shí)蒸餾有關(guān)文章,作涉獵。
借用博文底下一位答者的回復(fù),很不錯(cuò):

遷移學(xué)習(xí)與知識(shí)蒸餾的差異:

遷移學(xué)習(xí)與知識(shí)蒸餾的差
Distilling the Knowledge in a Neural Network
原文:1503.02531.pdf (arxiv.org)
知識(shí)蒸餾開(kāi)山作,壓縮網(wǎng)絡(luò)模型,做遷移學(xué)習(xí)。
主要工作:
我們對(duì)于特別的問(wèn)題,應(yīng)該愿意訓(xùn)練非常大而準(zhǔn)確的模型。而這樣的模型可以是單獨(dú)訓(xùn)練的很多模型的集合,也可以是用非常強(qiáng)的正則化子(如dropout)訓(xùn)練的單個(gè)非常大的模型。一旦對(duì)繁瑣的模型進(jìn)行了訓(xùn)練,我們就可以使用另一種訓(xùn)練,我們稱之為“蒸餾”,將知識(shí)從繁瑣的模型(teacher模型)轉(zhuǎn)移到更適合部署的小模型(student模型)。
知識(shí)的一個(gè)更抽象的觀點(diǎn)是,它是從輸入向量到輸出向量的學(xué)習(xí)映射,這將它從任何特定的實(shí)例化中解放出來(lái)。 ——?A more abstract view of the knowledge, that frees it from any particular instantiation, is that it is a learned mapping from input vectors to output vectors.
因?yàn)檫@樣的觀念,作者擯棄了研究與探究大型網(wǎng)絡(luò)內(nèi)部參數(shù)的意義的研究思路,直接將teacher模型視作黑盒,只取其輸出結(jié)果,作為student模型的學(xué)習(xí)目標(biāo)。這里出現(xiàn)了一個(gè)問(wèn)題,那就是教師模型往往都是訓(xùn)練的非常好的,他對(duì)于能夠正確預(yù)測(cè)的結(jié)果有一個(gè)非常高的置信度,常常能達(dá)到99%,而其實(shí)教師網(wǎng)絡(luò)是在學(xué)習(xí)到了對(duì)應(yīng)表征后才做的判斷,如原文 —— An image of a BMW, for example, may only have a very small chance of being mistaken for a garbage truck, but that mistake is still many times more probable than mistaking it for a carrot. 可以看到正確分類為寶馬車的概率如果是99%,那該網(wǎng)絡(luò)將其分類成垃圾車的概率也一定比把車分類為胡蘿卜的概率要高得多(雖然都很小,但也一定不是一個(gè)數(shù)量級(jí)的)。這就導(dǎo)致若我們直接用極高置信度的輸出結(jié)果作為student網(wǎng)絡(luò)的對(duì)應(yīng)的學(xué)習(xí)目標(biāo),將使得小網(wǎng)絡(luò)難以學(xué)到大模型所學(xué)到的表征信息。
那怎么去改善上述的高置信度的情況呢,這里在softmax的輸出上使用溫度系數(shù)去調(diào)整分布的平滑度,這里在原文中被解釋為 —— 軟化(和標(biāo)簽平滑的感覺(jué)有一點(diǎn)點(diǎn)像)。這里當(dāng)T越大,則會(huì)將輸出的分布圖像拉的越“平”,當(dāng)T趨于無(wú)窮大時(shí),分布為均勻分布。

借用 知乎用戶-清川《深度學(xué)習(xí)高溫蒸餾:Softmax With Temperature》的里的一張可視化圖來(lái)理解:

個(gè)人理解:一種解讀方式就是,student模型一般不會(huì)訓(xùn)練的很好,他可能學(xué)不到垃圾場(chǎng)和寶馬車“很像”這個(gè)概念,但是教師模型直接告訴了你這個(gè)事情,讓student對(duì)著這個(gè)思路去“改善”你的參數(shù)。而為了充分利用教師模型負(fù)類的信息,就可以選用一個(gè)較高的溫度系數(shù),讓負(fù)樣本帶來(lái)的信息被放大,表現(xiàn)出來(lái)的就是小模型更“關(guān)注”(W中對(duì)應(yīng)的權(quán)值改變)與正確類更近似的類別了,來(lái)使得小的student模型能具備更好的泛化能力。
訓(xùn)練方法比較簡(jiǎn)單:

首先是單獨(dú)訓(xùn)練繁雜Teacher網(wǎng)絡(luò),然后凍住Teacher網(wǎng)絡(luò)的參數(shù),只做forward推理,使用下圖的損失函數(shù)對(duì)student網(wǎng)絡(luò)進(jìn)行訓(xùn)練:

再簡(jiǎn)單點(diǎn)就是:

注意:學(xué)生網(wǎng)絡(luò)訓(xùn)練完畢后,做推理使用時(shí)其softmax的溫度系數(shù)T要恢復(fù)到1。
參考鏈接:
1503.02531.pdf (arxiv.org)
[論文閱讀]知識(shí)蒸餾(Distilling the Knowledge in a Neural Network)_XMU_MIAO的博客-CSDN博客
《Distilling the Knowledge in a Neural Network》閱讀筆記 - 知乎 (zhihu.com)
知識(shí)蒸餾(Knowledge Distillation)簡(jiǎn)述(一) - 知乎 (zhihu.com)
深度學(xué)習(xí)高溫蒸餾:Softmax With Temperature - 知乎 (zhihu.com)
【經(jīng)典簡(jiǎn)讀】知識(shí)蒸餾(Knowledge Distillation) 經(jīng)典之作 - 知乎 (zhihu.com)
Knowledge Distillation - Neural Network Distiller (intellabs.github.io)