1. 程式人生 > 實用技巧 >知識蒸餾方法的演進歷史綜述

知識蒸餾方法的演進歷史綜述

點選上方“AI公園”,關注公眾號,選擇加“星標“或“置頂”


作者:Nishant Nikhil

編譯:ronghuaiyang

導讀

帶你回顧知識蒸餾的6篇文章,瞭解知識蒸餾的演進歷史。

歷史

2012年,AlexNet在ImageNet資料上的表現超過了所有現有模型。神經網路即將被廣泛採用。到2015年,許多SOTA都被打破了。業界的趨勢是在你能找到的任何場景上都使用神經網路。VGG Net的成功進一步肯定了採用可以使用更深層次模型或模型整合來提高效能。

(模型集合只是一個花哨的術語。它意味著對多個模型的輸出進行平均。比如,如果有三個模型,兩個模型預測的是“A”,而一個模型預測的是“B”,那麼就把最終的預測作為“A”(兩票對一票))。

但是這些更深層次的模型和模型的集合過於昂貴,無法在推理過程中執行。(3個模型的整合使用的計算量是單個模型的3倍)。

思想

Geoffrey Hinton, Oriol Vinyals和Jeff Dean想出了一個策略,在這些預先訓練的整合模型的指導下訓練淺層模型。他們稱其為知識蒸餾,因為你將知識從一個預先訓練好的模型中提取到一個新的模型中。這就像是老師在指導學生,所以也被稱為師生學習:https://arxiv.org/abs/1503.02531。

在知識蒸餾中,他們使用預訓練模型的輸出概率作為新的淺層模型的標籤。通過這篇文章,你可以瞭解到這項技術的演進。

Fitnets

2015年出現了FitNets: hint for Thin Deep Nets(釋出於ICLR'15)除了KD的損失,FitNets還增加了一個附加項。它們從兩個網路的中點獲取表示,並在這些點的特徵表示之間增加均方損失。

經過訓練的網路提供了一種新的學習-中間-表示讓新的網路去模仿。這些表示有助於學生有效地學習,被稱為hints。

FitNet能夠壓縮模型,同時保持幾乎相同的效能

回過頭看看,使用單點給出hints的選擇不是最優的。隨後的許多論文都試圖改進這些hints。

Paying more attention to attention

Paying more attention to attention: Improving the performance of convolutional neural networks via Attention Transfer釋出於ICLR 2017。

它們的動機與FitNets類似,但它們不是使用網路中某個點的表示,而是使用注意力圖作為hints。(老師和學生的注意力圖)。它們還使用網路中的多個點來提供hints,而不是FitNets中的單點hints。

A Gift from Knowledge Distillation

同年,A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning釋出於CVPR 2017。

這和FitNets和注意力轉移的論文也很類似。但是,與表示和注意力圖不同的是,它們使用Gram矩陣給出了hints。

他們在論文中對此進行了類比:

“如果是人類的話,老師解釋一個問題的解決過程,學生學習解決問題的過程。學生DNN不一定要學習具體問題輸入時的中間輸出,但可以學習遇到具體型別的問題時的求解方法。通過這種方式,我們相信演示問題的解決過程比講授中間結果提供了更好的泛化。”

為了度量這個“解決流程”,他們在兩個層的特徵圖之間使用了Gram矩陣。因此,它沒有使用FitNets中的中間特徵表示作為hints,而是使用特徵表示之間的Gram矩陣作為hints。

Paraphrasing Complex Network

然後到了2018年,Paraphrasing Complex Network: Network Compression via Factor Transfer釋出於NeurIPS 2018。

他們在模型中增加了另一個模組,他們稱之為paraphraser。它基本上是一個不減少尺寸的自編碼器。從最後一層開始,他們又分出另外一層用於reconstruction loss。

學生模型中還有另一個名為translator的模組。它把學生模型的最後一層的輸出嵌入到老師的paraphraser維度中。他們用老師潛在的paraphrased 表示作為hints。

學生模型應該能夠為來自教師網路的輸入構造一個自編碼器的表示。

AComprehensive Overhaul of Feature Distillation

在2019年,A Comprehensive Overhaul of Feature Distillation釋出於ICCV 2019。

他們認為我們獲取hints的位置不是最佳的。通過ReLU對輸出進行細化,在轉換過程中會丟失一些資訊。他們提出了marginReLU啟用函式(移位的ReLU)。“在我們的margin ReLU,積極的(有益的)資訊被使用而沒有任何改變,而消極的(不利的)資訊被壓制。結果表明,該方法可以在不遺漏有益資訊的情況下進行蒸餾。“

他們採用了partial L2 distance函式,目的是跳過對負區域資訊的蒸餾。(如果該位置的學生和老師的特徵向量都是負的,則沒有損失)

Contrastive Representation Distillation發表於ICLR 2020。在這裡,學生也從教師的中間表示進行學習,但不是通過MSE損失,他們使用了對比損失。

總的來說,這些不同的模型採用了不同的方法

  1. 增加蒸餾中傳遞資訊的量。(特徵表示、Gram矩陣、注意力圖、Paraphrased表示、pre-ReLU特徵)

  2. 通過調整損失函式,使蒸餾過程更有效(對比損失,partial L2 distance)

看待這些想法的另一種有趣的方式是,新想法是舊想法的向量和。

  1. KD的Gram矩陣 = Neural Style Transfer + KD

  2. KD的注意力圖 = Attention is all you need + KD

  3. Paraphrased表示 KD = Autoencoder + KD

  4. Contrastive表示蒸餾 = InfoNCE + KD

其他向量的和是什麼?

  1. GANs for KD(即改變特徵表示之間的GAN損失的對比損失)

  2. 弱監督KD(Self-Training with Noisy Student Improves ImageNet classification)

—END—

英文原文:https://towardsdatascience.com/knowledge-distillation-a-survey-through-time-187de05a278a

請長按或掃描二維碼關注本公眾號

喜歡的話,請給我個在看吧