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