Knowledge transfer summary-2

所謂“知識精煉”我的理解就是將一個訓練好的復雜模型的“知識”遷移到一個結構更為簡單的網絡中,或者通過簡單的網絡去學習復雜模型中“知識”或模仿復雜模型的行為。當然“知識”的定義方式并不是唯一的,見仁見智。KD不同于遷移學習和多任務學習的地方在于它是單一任務在同一個域下的知識傳遞。隨著深度網絡的層數和參數的迅速增長,深度學習在實際應用中的部署越來越困難。因此,結合KD來壓縮和加速網絡的推理就顯得尤為重要。目前關于KD的文章大致分為三類:

如何定義知識

  • outputs: logits / soften probability
    《Distilling the knowledge in a neural networks》
    知識精煉方法最早可以追溯到2006年的這篇文章,作者的做法是用小網絡去擬合復雜網絡的logits。Hinton在這個工作的基礎上做了改進,他提出了soft target的做法。擬合soft target的優點是很多的,一方面可以提供更多信息,彌補監督信號不足的問題;另一方面可以恢復類內variance和類間distance。其本質是打散原來壓縮到了一個點的監督信息,讓小模型的輸出盡量match 復雜模型的輸出分布;另外soft target還可以看作一個正則項,起到防止過擬合的作用。soft target其實就是軟化的softmax,比常規的softmax多了一個溫度系數T,以達到蒸餾的目的。而且當T充分大的時候,擬合soft target的做法和logits其實是等價的。文章的不足在于只將網絡輸出作為知識傳遞給小網絡的做法過于簡單,teacher模型理論上是有很多知識可以傳遞給student模型的;而且這種做法只適合有softmax的分類任務,并且要求類別數比較多,對于二分類問題就沒有太大效果;最后一點不足是student模型不能是太深的網絡。

  • feature map
    《Fitnets: hints for thin deep nets》
    本文試圖將一個復雜網絡的知識傳遞給一個深度更深但是參數更少的網絡,因為作者認為深度對于網絡的表達能力至關重要。訓練一個深層網絡的難度在于優化,即如何克服梯度消失的問題。文章提出了intermediate-level hints的概念,即先用student模型學習teacher 模型的中間表示,目的是讓student模型取得一個較好的局部最優點作為初始參數。第二階段的訓練把整個student模型作為優化目標,讓student模型學習teacher模型的soft targets。得益于網絡的深度,student模型的性能甚至超過teacher模型。文章的不足在于用student模型粗暴地學習teacher模型中間層的feature map,這有可能發過來影響student模型的性能和收斂,而且teacher模型和student模型的中間層的選取有很大的人為因素。

    《Knowledge Projection for DNN》
    這篇文章的做法和fitnet的做法幾乎完全相同,兩點改變:中間層的選取上采用了迭代選擇的方案,選擇標準是聯合loss最?。籺eacher模型的中間輸出不只監督student模型的底層,也被繼續利用監督student模型的高層訓練。

  • attention map
    《Pay more attention to attention》
    本文將attention map作為知識從teacher模型遷移到student模型。注意力機制很早就被用在NLP中,后來被證明將attention應用在CNN中也可以取得不錯的效果。作者提出attention map的原因是feature map的做法太多生硬,表現不佳。定義attention map的做法是將feature map不同通道的feature plane取絕對值然后相加。損失函數也做了改變,即在原損失函數的基礎上加上teacher和student模型的attention maps之間的歐氏距離。attention map的做法可以看作全激活feature map的summary,所以擬合attention map的效果略好于feature map也是容易理解的。雖然比feature map的做法有進步,但是仍然存在要人為選取中間層的問題。

  • mini-batch MMD
    《Like What You Like: Knowledge Distill via Neuron Selectivity Transfer》
    這篇文章在attention transfer的基礎上引入了kernel trick,insight來自于風格遷移的做法,當kernel取線性核的時候attention transfer只是MMD的特例。作者之所以利用kernel trick將feature map映射到高維空間,是因為他認為attention map的做法粒度還是比較大。當kernel取二階多項式核的時候,根據gram矩陣的性質,feature map的channel之間的內積可以轉化為feature map空間的相關性,即讓student模型學習teacher模型的feature map通道之間的關系或者空間像素點之間的關系。具體的方法和attention transfer相同。

  • layers relation
    《Gift from Knowledge Distillation》
    這篇文章定義的知識不是模型的輸出而是層與層之間的關系,相當于把MMD中的同一層feature map的相關性用到了不同層的feature map上,這里的關系用FSP矩陣表示。因為層之間的關系相比輸出更本質,更能反映網絡的knowledge。其中FSP矩陣(i,j)位置的值等于第i個channel和第j個channel的內積,然后讓student和teacher模型的FSP矩陣之間的距離最小。感覺這篇文章的做法不是直接學結果,而是學習得到這種結果的方法和過程,是一個不錯的思路。

  • gradient map
    《Pay more attention to attention》
    基于gradient的attention map和基于activation的attention map的思想來自于同一篇文章,輸出對于輸入的梯度也反映了輸入和輸出層之間的關系,而且直接考慮輸入輸出的關系省去了很多人為選擇中間層的操作。文中提到把teacher模型中loss對input的導數作為知識傳遞給student模型,因為loss對input的導數反映了網絡output的變化對于input的敏感程度,如果某個像素一個小的變化對于對于網絡輸出有一個大的影響,我們就可以認為網絡"pay attention"那個像素。具體做法和基于activation的attention map相同,不過這里在反傳梯度的時候相當于對student模型的input求了兩次導數。

    《Sobolev training for neural network》
    這是NIPS'17的文章,作者提出在sobolev空間中近似兩個函數,即不光match兩個函數的輸出,還match輸出對于輸入的梯度,即梯度也提供了非常豐富的信息。把teacher和student模型分別看作兩個函數,采用sobolev訓練的方式比只match輸出要好很多。

  • mini-batch rank
    《DarkRank: Accelerating Deep Metric Learning via Cross Sample Similarities Transfer》
    之前的工作都是考慮teacher模型和student模型的輸出以及中間結果的匹配,insight來源于Hinton的soft target,即讓student模型學習teacher模型的不同樣本之間的排序關系。假設1個batch有7個樣本進來,輸出端得到7張feature map,但這7張feature map是有親疏遠近關系的,對于類別6, 樣本0到它的距離小于5到它的距離。換句話說,在teacher模型中這7個樣本在類別6上的排序關系也可以作為知識傳遞給student模型。

改進學習框架

《Rocket Launching: A Universal and Efficient Framework》
這篇文章在定義知識上沒有大的創新,使用的仍然是logits,但是在學習框架上和之前有所不同。它不用預訓練teacher模型,而是student和teacher模型同時訓練;另外一點是共享網絡參數,共享一部分參數相當于火箭發射點火助推器的作用。所以student模型不是向一個已經完全學好的teacher模型學習,每次都去學習一個相對正確的輸出,而是和teacher模型一起學習成長,連同teacher模型犯錯后糾錯的過程也一并學習了。

特定場景應用

《Mimicking Very Efficient Network for Object Detection》
在檢測任務中,直接擬合logits或者feature map都是不可行的。所以作者采用匹配proposal的做法。

《Cross Modal Distillation for Supervision Transfer》
作者提出跨模態遷移知識的做法,即在RGB數據集學習到的知識也能遷移到深度場景中來。

《Face Model Compression by Distilling Knowledge from Neurons》
人臉識別中,遷移的知識更具針對性,選擇特定的特征去擬合,盡量做到特征選擇的均勻性。

《Data-free knowledge distillation for deep neural networks》
這篇文章的應用場景是當訓練數據由于隱私等問題對于student模型不可用的時候,如何通過extra metadata的方式解決。

經典方法結合

《Learning loss for knowledge distillation with conditional adversarial networks》
這篇文章將GAN和KD做了一個結合,取得了不錯的效果。作者認為student模型的容量遠小于teacher模型,讓student模型完全匹配teacher的做法有點困難,而且采用l2損失逼近的方式一定程度上限制了student模型的自主學習空間。學生網絡是生成器,判別器是一個多層感知機網絡,生成器和判別器迭代優化,生成器的目標是生成讓判別器無法辨別的logits。某種程度上,這個工作也可以理解成對損失函數做了改進。

《Using Knowledge Distillation To Improve Low-Precision Network Accuracy》
本文將KD和網絡量化做了一個結合,用高精度teacher模型指導低精度student模型的訓練。網絡參數精度下降后準確率勢必會受到影響,在獲得teacher模型的知識之后或許可以從一個壞的局部最優點爬上來。作者提出了3種思路:teacher模型和量化后的student模型聯合訓練;預訓練的teacher模型指導量化的student模型從頭開始訓練;teacher模型和student模型均進行了預訓練,不過student模型在全精度權重基礎上做了量化,然后student在teacher模型的指導下進行finetuning。

《Moonshine: Distilling with Cheap Convolutions》
這篇工作將KD和設計輕便的網絡結構方法做了結合。當復雜網絡結構被簡化的卷積模塊替換的時候,計算更加高效,精度勢必受到影響。此時,將原網絡作為teacher模型,簡化之后的網絡作為student模型,然后通過teacher模型指導student模型的訓練。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容

  • 最近看了幾篇KD方法用于模型壓縮的文章,現總結如下: Knowledge Distillation 最先由 Hin...
    信步閑庭v閱讀 1,533評論 0 0
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,737評論 18 399
  • 我的岳母是一名基督教徒,很虔誠的基督教徒。她幾乎每天都很認真的在看圣經。星期天一定去教堂,每周四還有查經會。當然,...
    妖娥子廣州閱讀 263評論 1 1
  • 必須承認的是,截至目前,Photoshop 依然是設計師的首選設計工具,尤其是對于平面設計、網頁設計師以及UI設計...
    打豆豆閱讀 346評論 0 0
  • 陳思誠出軌了!抱歉,在這件事成為新聞熱點之前,我沒聽說他,也搞不清佟麗婭是哪一位美麗的女演員。這倆演員我都不熟悉,...
    妙不可言的生命之書閱讀 380評論 0 0