1. 程式人生 > 其它 >模型蒸餾相關記錄

模型蒸餾相關記錄

參考這篇文章:

https://zhuanlan.zhihu.com/p/24337627

有研究表明深度模型具有較大的資訊引數冗餘。因此我們可以通過一定的技術方法對複雜的模型進行去冗餘壓縮。現有的壓縮方法主要可以下四類:

淺層網路:通過設計一個更淺(層數較少)結構更緊湊的網路來實現對複雜模型效果的逼近。但是淺層網路的表達能力很難與深層網路相匹敵【1】。因此,這種設計方法的侷限性在於只能應用解決在較為簡單問題上。如分類問題中類別數較少的task。




直接壓縮訓練好的複雜模型:直接對訓練得到的複雜模型採用矩陣量化【2】、Kronecker內積、霍夫曼編碼、模型剪枝【3】等優化方式,對模型中的引數進行量化。以實現對模型的壓縮,部署階段採用量化過後的模型可以同時達到引數壓縮和提速的效果。



多值網路:最為典型就是二值網路【
4】、XNOR【5】網路等。其主要原理就是採用1bit對網路的輸入、權重、響應進行編碼。減少模型大小的同時,原始網路的卷積操作可以被bit-wise運算代替,極大提升了模型的速度。但是,如果原始網路結果不夠複雜(模型描述能力),由於二值網路會較大程度降低模型的表達能力。因此現階段有相關的論文開始研究n-bit編碼【6】方式成為n值網路或者多值網路來克服二值網路表達能力不足的缺點。 蒸餾模型:蒸餾模型採用的是遷移學習,通過採用預先訓練好的複雜模型(Teacher model)的輸出作為監督訊號去訓練另外一個簡單的網路。這個簡單的網路稱之為student model。

下面我們將著重介紹蒸餾模型壓縮方法,文章來自Geoffrey Hinton《Distilling the Knowledge in a Neural Network》【7】

但是上面的文章沒有圖,所以看了下面的文章:

https://mp.weixin.qq.com/s/tKfHq49heakvjM0EVQPgHw

《BERT蒸餾完全指南|原理/技巧/程式碼》

是從下面的文章連結過去的:

https://zhuanlan.zhihu.com/p/71986772

《深度神經網路模型蒸餾Distillation》