浅谈“知识蒸馏”技术在机器学习领域的应用
什么是知識蒸餾技術(shù)?
知識蒸餾技術(shù)首次出現(xiàn)是在Hinton幾年前的一篇論文《Distilling the Knowledge in a Neural Network》。老大爺這么大歲數(shù)了還孜孜不倦的發(fā)明各種人工智能領(lǐng)域新名詞,讓我這種小白有很多可以去學(xué)習(xí)了解的內(nèi)容,給個(gè)贊。
那什么是知識蒸餾技術(shù)呢?知識蒸餾技術(shù)的前提是將模型看作一個(gè)黑盒,數(shù)據(jù)進(jìn)入后經(jīng)過處理得到輸出。通常意義上,復(fù)雜的模型的輸出會(huì)比簡單模型準(zhǔn)確,那么是否有辦法讓復(fù)雜模型的知識傳遞給簡單模型,就是知識蒸餾要探索的內(nèi)容。
這就有點(diǎn)類似于遷移學(xué)習(xí)的原理,在遷移學(xué)習(xí)中,網(wǎng)絡(luò)先學(xué)習(xí)大數(shù)量級的數(shù)據(jù),然后生成base模型,再用小數(shù)據(jù)在base模型的基礎(chǔ)上Fine-Tune。在知識蒸餾中,也是先生成復(fù)雜的Teacher模型,然后采用Teacher模型將知識傳遞給簡單的Student模型的方式。
這樣做的好處就是Student網(wǎng)絡(luò)不必那么復(fù)雜,某種意義上實(shí)現(xiàn)了模型壓縮的功能。
為什么叫蒸餾呢?
我最先好奇的其實(shí)不是Teacher網(wǎng)絡(luò)和Student網(wǎng)絡(luò)怎么傳遞知識,而是為什么用了Distilling這個(gè)詞,我甚至覺得是不是某些人翻譯錯(cuò)誤了。于是有道了一下,蒸餾也可以是提煉的意思,我就懂了。
?
在化學(xué)領(lǐng)域有一個(gè)概念叫沸點(diǎn),不同液體有不同的沸點(diǎn),假設(shè)酒精和水混合在一起,我們想提取混合物中的水,就可以將溫度加熱到小于水的沸點(diǎn)而大于酒精沸點(diǎn)的溫度,這樣酒精就揮發(fā)了。知識蒸餾也是用相似的手段將需要的知識從Teacher網(wǎng)絡(luò)蒸餾出來傳遞給Student網(wǎng)絡(luò)。
Teacher網(wǎng)絡(luò)和Student網(wǎng)絡(luò)
具體怎么做呢?就是先構(gòu)建一個(gè)非常復(fù)雜的網(wǎng)絡(luò)作為Teacher網(wǎng)絡(luò),默認(rèn)它的模型預(yù)測準(zhǔn)確性很高。然后再構(gòu)建一個(gè)簡單的Student網(wǎng)絡(luò),用Teacher網(wǎng)絡(luò)的輸出結(jié)果q和Student網(wǎng)絡(luò)的輸出結(jié)果p做Cross Entropy(交叉熵),y是真實(shí)的目標(biāo)值,最終算Loss的公式如下。
這樣就達(dá)到了知識傳遞的問題,但是第二個(gè)問題來了。如果Teacher網(wǎng)絡(luò)的預(yù)測準(zhǔn)確率很準(zhǔn),比如Teacher網(wǎng)絡(luò)是一個(gè)圖片識別模型,識別貓、狗、兔子,Teacher網(wǎng)絡(luò)很準(zhǔn)的話,最后的輸出可能是以下這樣的概率分布結(jié)果,非常不均勻
貓的概率:0.998
兔子的概率:0.0013
狗的概率:0.0007
這種結(jié)果被稱為Hard Label,因?yàn)檎鎸?shí)傳遞下去的知識只有“貓”這一個(gè)結(jié)果,忽略了“兔子”比“狗”更像“貓”這樣的知識,因?yàn)椤巴米印焙汀肮贰钡臋?quán)重太低。Teacher網(wǎng)絡(luò)需要Soft Label,怎么做呢?在Softmax結(jié)果加入下面的公式:
其中zi是Softmax輸出的logit,T取1,那么這個(gè)公式就是輸出Hard Label。如果T的取值大于1,T越大整個(gè)Label的分布就變得越均勻,Hard Label就自然轉(zhuǎn)變成了Soft Label。
總結(jié)
上一篇文章講了模型壓縮技術(shù)中的剪枝、量化、共享權(quán)重,加上今天這篇知識蒸餾就比較完整了。感覺知識蒸餾這種方案比較適合終端設(shè)備的模型壓縮,特別是CV相關(guān)的模型。
非技術(shù)背景,純YY,有不對的請大神指正。
參考文章:
(1)https://zhuanlan.zhihu.com/p/90049906
(2)https://blog.csdn.net/nature553863/article/details/80568658
(3)https://zhuanlan.zhihu.com/p/81467832
(衷心感謝以上文章的作者們)
總結(jié)
以上是生活随笔為你收集整理的浅谈“知识蒸馏”技术在机器学习领域的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈模型压缩之量化、剪枝、权重共享
- 下一篇: 关于联邦学习What、How、Who的灵