神經網絡模型壓縮和加速之知識蒸餾


深度神經網絡模型壓縮和加速方法

綜合現有的深度模型壓縮方法,它們主要分為四類:

1、參數修剪和共享(parameter pruning and sharing)

2、低秩因子分解(low-rank factorization)

3、轉移/緊湊卷積濾波器(transferred/compact convolutional filters)

4、知識蒸餾(knowledge distillation)

具體參考https://www.cnblogs.com/shixiangwan/p/9015010.html

下面詳細講解下知識蒸餾

“蝴蝶以毛毛蟲的形式吃樹葉積攢能量逐漸成長,最后變換成蝴蝶這一終極形態來完成繁殖。”

毛毛蟲的形態是為了更方便的吃樹葉,積攢能量,但是為了增大活動范圍提高繁殖幾率,毛毛蟲要變成蝴蝶來完成這樣的繁殖任務。

蒸餾神經網絡,其本質上就是要完成一個從毛毛蟲到蝴蝶的轉變。基礎的蒸餾網絡中存在兩種類型的神經網絡,一種稱為教師網絡,好比於毛毛蟲階段的積攢能量的過程,教師網絡是為了抽取更優的特征表示,學習到更多數據分布的特性,另一種稱作學生網絡,好比於靈活的蝴蝶階段,在准確率和教師網絡相當的前提下通過減少網絡層和每層的參數以用於更高效的進行工程化的部署以及應用。

第一篇論文《Distilling the Knowledge in a Neural Network》蒸餾神經網絡的提出論文

目前,在用神經網絡訓練大規模數據集時,為了處理復雜的數據分布:一種做法是建立復雜的神經網絡模型,例如含有上百層的殘差網絡,這種復雜的網絡往往含有多達幾百萬個參數;另一種做法往往會混合多種模型,將幾個大規模的神經網絡在同一個數據集上訓練好,然后綜合(ensemble)多個模型,得到最終的分類結果。

其中的問題是:這種復雜模型,一是在新的場景下重新訓練成本過高,二是由於模型過於龐大而難以大規模部署(deployment)。

設計思路:最基本的想法就是將大模型神經網絡(教師網絡)學習出來的知識作為先驗,將先驗知識遷移到小規模的神經網絡中訓練更小但性能仍較好的小型神經網絡(學生網絡)。

知識的遷移方式

一種直觀的遷移Big model(教師網絡)知識的方式是,將教師網絡生成的類別概率向量作為訓練small model(學生網絡)的soft targets.

soft targets:經過softmax層的輸出

hard targets:one-hot形式的0-1編碼

為什么這樣做?

一方面大規模神經網絡能夠得到更為豐富的數據結構間的相似性以及數據的分布信息,另一方面soft targets相比於hard targets包含更為豐富的信息。

例如:一只狗,在貓這個類別下的概率值可能是0.001,而在汽車這個類別下的概率值可能就只有0.0000001不到,這能夠反映狗和貓比狗和汽車更為相似,這就是大規模神經網絡能夠得到的更為豐富的數據結構間的相似信息。

知識蒸餾的整個過程如下:

 

 

 

                                                  訓練部分                                                                                                                                      預測部分

先看左邊的圖

加入蒸餾后的softmax

T是一個可調節的超參數、T值越大、概率分布越軟(論文中的描述)。這就相當於在遷移學習的過程中添加了擾動,從而使得學生網絡在借鑒學習的時候更有效、泛化能力更強,這其實就是一種抑制過擬合的策略。

一般T的取值在1-20之間

soft targets和小模型的輸出數據的交叉熵(保證小模型和大模型的結果盡可能一致)

hard targets和小模型的輸出數據的交叉熵(保證小模型的結果和實際類別標簽盡可能一致)

Total loss設計為軟目標和硬目標所對應的交叉熵的加權平均,其中軟目標交叉熵的加權系數越大,表明遷移誘導越依賴教師網絡的貢獻,這在訓練初級階段是很有必要的,有助於讓學生網絡更輕松的鑒別簡單的樣本,但訓練后期需要適當減小軟目標的比重,讓真實標注幫忙鑒別困難樣本。(論文中沒具體提及,加權系數應該設置為逐漸衰減的)

總結:什么是KDDistilling the Knowledge),一句話總結,就是用teacher network的輸出作為soft label來訓練一個student network

我們把數據結構信息和數據本身當作一個混合物,分布信息通過概率分布被分離出來。首先,T值很大,相當於用很高的溫度將關鍵的分布信息從原有的數據中分離,之后在同樣的溫度下用新模型融合蒸餾出來的數據分布,最后恢復溫度,讓兩者充分融合。這也可以看成Prof. Hinton將這一個遷移學習過程命名為蒸餾的原因。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM