萬字綜述 | 一文讀懂知識蒸餾


看這個圖,就知道現在知識蒸餾的大致做法了。差不多就是在做模型裁剪,有時候我也覺得奇怪,按理說老師教學生不應該青出於藍而勝於藍嗎?從這里看,student模型除了性能有優勢,精確率是沒有優勢的。

 

 

 

萬字綜述 | 一文讀懂知識蒸餾

知識蒸餾綜述

本文梳理了用於簡單分類任務的各種知識蒸餾(KD)策略,並實現了一系列經典的知識蒸餾技術。

  • 知識蒸餾論文綜述: Knowledge Distillation: A Survey
  • 知識蒸餾論文分類: https://github.com/FLHonker/Awesome-Knowledge-Distillation

摘要

近年來,深度神經網絡在工業界和學術界都取得了成功,尤其是在計算機視覺任務方面。深度學習的巨大成功主要歸因於其可擴展性以編碼大規模數據並操縱數十億個模型參數。但是,將這些繁瑣的深度模型部署在資源有限的設備(例如,移動電話和嵌入式設備)上是一個挑戰,這不僅是因為計算復雜性高,而且還有龐大的存儲需求。為此,已經開發了多種模型壓縮和加速技術。作為模型壓縮和加速的代表類型,知識蒸餾有效地從大型教師模型中學習小型學生模型。它已迅速受到業界的關注。本文從知識類別,訓練框架,師生架構,蒸餾算法,性能比較和應用的角度對知識蒸餾進行了全面的調查。此外,簡要概述了知識蒸餾中的挑戰,並討論和轉發了對未來研究的評論。

知識蒸餾簡介

知識蒸餾,已經受到業界越來越多的關注。大型深度模型在實踐中往往會獲得良好的性能,因為當考慮新數據時,過度參數化會提高泛化性能。在知識蒸餾中,小模型(學生模型)通常是由一個大模型(教師模型)監督,算法的關鍵問題是如何從老師模型轉換的知識傳授給學生模型。一個知識蒸餾系統由三個主要部分組成:知識,蒸餾算法,和師生架構

知識蒸餾框架

用於模型壓縮的知識蒸餾類似於人類學習的方式。受此啟發,最近的知識蒸餾方法已擴展到師生學習,相互學習,輔助教學,終身學習和自學。知識蒸餾的大多數擴展都集中在壓縮深度神經網絡上。由此產生的輕量級學生網絡可以輕松部署在視覺識別,語音識別自然語言處理(NLP)等應用程序中。此外,知識蒸餾中的知識從一種模型到另一種模型的轉移可以擴展到其他任務,例如對抗攻擊,數據增強,數據隱私和安全性。通過知識蒸餾的動機進行模型壓縮,知識轉移的思想已被進一步用於壓縮訓練數據,即數據集蒸餾,這將知識從大型數據集轉移到小型數據集以減輕深度模型的訓練負擔

早期知識蒸餾框架通常包含一個或多個大型的預訓練教師模型和小型的學生模型。教師模型通常比學生模型大得多。主要思想是在教師模型的指導下訓練高效的學生模型以獲得相當的准確性。來自教師模型的監督信號(通常稱為教師模型學到的“知識”)可以幫助學生模型模仿教師模型的行為。

在典型的圖像分類任務中,logit(例如深層神經網絡中最后一層的輸出)被用作教師模型中知識的載體,而訓練數據樣本未明確提供該模型。例如,貓的圖像被錯誤地歸類為狗的可能性非常低,但是這種錯誤的可能性仍然比將貓誤認為汽車的可能性高很多倍。另一個示例是,手寫數字2的圖像與數字3相比,與數字7更相似。這種由教師模型學習的知識也稱為暗知識(“dark knowledge”)

早期的知識蒸餾中轉移 dark knowledge 的方法如下。給定對數向量

z

作為深度模型的最后一個全連接層的輸出,則

zi

是第 i 類的對數,則輸入屬於第 i 類的概率

pi

可以為 由softmax 函數估算:

pi=exp(zi)jexp(zj)

因此,通過教師模型獲得的軟目標的預測包含暗知識,並且可以用作監督者,以將知識從教師模型轉移到學生模型。同樣,one-hot 標簽也稱為硬目標。關於軟目標和硬目標的直觀示例如圖3所示。此外,引入溫度因子T來控制每個軟目標的重要性

pi=exp(zi/T)jexp(zj/T)

較高的溫度會在各個類別上產生較弱的概率分布。具體來說,當

T

時,所有類別都具有相同的概率。當

T0

時,軟目標變為 one-hot 標記,即硬目標。教師模型提供的軟目標(distillation loss)和ground-truth label提供的硬目標(student loss)對於提高學生模型的績效都非常重要。

定義蒸餾損失以匹配教師模型和學生模型之間的 logits ,即:

LD(p(zt,T),p(zs,T))=ipi(zti,T)log(pi(zsi,T))

其中

zt

zs

分別是教師和學生模型的logits。教師模型的logits通過交叉熵梯度與學生模型的 logits 匹配, 然后可以將相對於 logit

zsi

的梯度評估為:

LD(p(zt,T),p(zs,T))zsi=pi(zsi,T)pi(zti,T)T=1T(exp(zsi/T)jexp(zsj/T)exp(zti/T)jexp(ztj/T))

如果溫度 T 比 logits 高得多,

LD(p(zt,T),p(zs,T))zsi

則可以根據其泰勒級數近似得出:

LD(p(zt,T),p(zs,T))zsi=1T(1+zsiTN+jzsjT1+ztiTN+jztjT).

如果進一步假設每個轉移訓練樣本的 logits 為零 (比如,

jzsj=jztj=0

),則上式可以簡化為:

LD(p(zt,T),p(zs,T))zsi=1NT2(zsizti)

因此,根據上式,在高溫和零均值 logits 的情況下,蒸餾損失等於匹配教師模型和學生模型之間的 logit ,即最小化

(zsizti)

。因此,通過與高溫匹配的 logit 進行蒸餾可以傳達非常有用的知識信息,這些信息是由教師模型學到的以訓練學生模型。

學生損失(student loss)定義為 ground truth 標簽和學生模型的軟對數之間的交叉熵:

LS(y,p(zs,T))=LCE(y,p(zs,T))

這里,

LCE(y,p(zs,T))=iyilog(pi(zsi,T))

代表交叉熵損失,y 是一個 ground truth 向量,其中只有一個元素為1,它表示轉移訓練樣本的 ground truth 標簽,其他元素為0。在蒸餾和學生損失中,兩者均使用學生模型的相同 logit,但溫度不同。溫度在學生損失中為T = 1,在蒸餾損失中為T = t。最后,傳統知識蒸餾的基准模型是蒸餾和學生損失的結合:

L(x,W)=αLD(p(zt,T),p(zs,T))+(1α)LS(y,p(zs,T))

其中

x

是轉移集上的訓練輸入,

W

是學生模型的參數,並且是調節參數。為了輕松理解知識蒸餾,下圖顯示了傳統知識蒸餾與教師和學生模型聯合的特定體系結構。在下圖所示的知識蒸餾中,始終首先對教師模型進行預訓練,然后再進行訓練。僅使用來自預訓練教師模型的軟目標的知識來訓練學生模型。實際上,這就是離線知識提煉與基於響應的知識。

Student Loss vs. Distillation Loss

知識

知識的三種形式

Response-Based Knowledge

基於響應的知識通常是指教師模型最后輸出層的神經響應。主要思想是直接模仿教師模型的最終預測。基於響應的知識蒸餾簡單但有效地進行了模型壓縮,已被廣泛用於不同的任務和應用中。最流行的基於響應的圖像分類知識被稱為軟目標。基於響應的知識的蒸餾損失可以表示為

LResD(p(zt),p(zs))=LKL(p(zs),p(zt))

其中

LKL

表示Kullback-Leibler(KL)散度損失。典型的基於響應的KD模型如下圖所示。基於響應的知識可用於不同類型的模型預測。例如,對象檢測任務中的響應可能包含logit以及邊界框的偏移量。在語義地標定位任務中,例如人體姿態估計,教師模型的響應可能包括每個地標的熱圖。最近,基於響應的知識得到了進一步的探索,以解決將地面標簽信息作為條件目標的問題。

Response-Based Knowledge示意圖

基於響應的知識的概念是簡單易懂的,尤其是在“黑暗知識(dark knowledge)”的情況下。從另一個角度看,軟目標的有效性類似於標簽平滑或正則化器。但是,基於響應的知識通常依賴於最后一層的輸出(例如,軟目標),因此無法解決教師模型在監督,這對於使用非常深層神經網絡的表示學習非常重要。由於 soft logits 實際上是類概率分布,因此基於響應的知識蒸餾也僅限於監督學習。

Feature-Based Knowledge

深度神經網絡擅長通過增加抽象來學習多個級別的特征表示。這就是代表性學習。因此,最后一層的輸出和中間層的輸出,即特征圖,都可以用作監督學生模型訓練的知識。具體來說,來自中間層的基於特征的知識是基於響應的知識的良好擴展,尤其是對於更薄和更深的網絡的訓練而言。

中間表示法首先在 Fitnets 中引入,通過提供 hints,以改善學生模型的訓練。主要思想是直接匹配老師和學生的特征激活。受此啟發,已經提出了多種其他方法來間接匹配特征從原始特征圖中得出了一個“注意圖”來表達知識。Huang和Wang(2017)使用神經元選擇性轉移對注意力圖進行了概括。Passalis和Tefas(2018)通過匹配特征空間中的概率分布來傳遞知識。為了更容易地轉移教師知識,Kim等人。(2018年)引入了所謂的“因素”,作為一種更易於理解的中間表示形式。為了縮小師生之間的績效差距,Jin等人。(2019)提出了路線約束式提示學習,該方法通過教師提示層的輸出來監督學生。最近,Heo等。(2019c)建議使用隱藏神經元的激活邊界進行知識轉移。有趣的是,教師模型中間層的參數共享以及基於響應的知識也可以被用作教師知識(Zhou et al。,2018)。

通常,基於特征的知識轉移的蒸餾損失可以用公式表達為:

LFeaD(ft(x),fs(x))=LF(Φt(ft(x)),Φs(fs(x)))

其中

ft(x),fs

分別是教師模型和學生模型的中間層的特征圖。轉換函數

Φt(ft(x)),Φs(fs(x))

通常在教師和學生模型的特征圖不是同一形狀時應用。

LF(.)

表示用於匹配老師和學生模型的特征圖的相似度函數。一個通用的基於特征的KD模型如下圖所示。

Feature-Based Knowledge示意圖

本文還從特征類型,源層和蒸餾損失的角度總結了不同類型的基於特征的知識,如下表所示。

Feature-Based Knowledge方法匯總

具體地說,

L2(.),L1(.),LCE(.),LMMD(.)

分別表示l2-范數距離,l1-范數距離,交叉熵損失和最大平均差異損失。盡管基於特征的知識轉移為學生模型的學習提供了有利的信息,但是如何有效地從教師模型中選擇提示層和從學生模型中選擇引導層仍然有待進一步研究。由於 hint 層和 guided 層的大小之間存在顯着差異,因此還需要探索如何正確匹配教師和學生的特征表示

Relation-Based Knowledge

基於響應的知識和基於特征的知識都使用教師模型中特定層的輸出。基於關系的知識進一步探索了不同層或數據樣本之間的關系

為了探索不同特征圖之間的關系,Yim等人。(2017)提出了一種解決方案流程(FSP),該流程由兩層之間的Gram矩陣定義。FSP 矩陣總結了特征圖對之間的關系。它是使用兩層要素之間的內積來計算的。利用特征圖之間的相關性作為蒸餾的知識,(Lee et al。,2018)提出了通過奇異值分解的知識蒸餾來提取特征圖中的關鍵信息。為了利用多位教師的知識,Zhang和Peng(2018)分別以每個教師模型的 logits 和特征為節點,形成了兩個圖。具體來說,在知識轉移之前,不同的教師的重要性和關系通過 logits 和表示圖進行建模(Zhang and Peng,2018)。Lee and Song(2019)提出了基於多頭圖的知識蒸餾。圖知識是通過多頭注意力網絡在任意兩個特征圖之間的內部數據關系。為了探索成對的提示信息,學生模型還模擬了教師模型的成對的提示層之間的互信息(Passalis等,2020b)。通常,基於特征圖的關系的知識的蒸餾損失可以表示為:

LRelD(ft,fs)=LR1(Ψt(^ft,ˇft),Ψs(^fs,ˇfs))

其中

ft

fs

分別是老師和學生模型的特征圖。教師模型選取的成對特征圖表達為:

^ft,ˇft

,學生模型選擇的成對特征圖表達為:

^fs,ˇfs

Ψt(.)

Ψs(.)

是來自教師和學生模型的成對特征圖的相似性函數。

LR1(.)

表示教師和學生特征圖之間的相關函數。

傳統的知識轉移方法通常涉及個人知識的提煉。老師的軟目標直接提煉給學生。實際上,提煉的知識不僅包含特征信息,還包含數據樣本的相互關系。具體來說,劉等。(2019g)通過實例關系圖提出了一種魯棒而有效的知識提煉方法。實例關系圖中傳遞的知識包含實例特征,實例關系和特征空間轉換跨層。Park等。(2019)提出了一種關系知識蒸餾,該知識蒸餾了實例關系中的知識。基於流形學習的思想,通過特征嵌入來學習學生網絡,這保留了教師網絡中間層中樣本的特征相似性(Chen等人,2020b)。使用數據的特征表示將數據樣本之間的關系建模為概率分布(Passalis和Tefas,2018; Passalis等,2020a)。師生的概率分布與知識轉移相匹配。(Tung and Mori,2019)提出了一種保留相似性的知識提煉方法。尤其是,將教師網絡中輸入對的相似激活所產生的保持相似性的知識轉移到學生網絡中,並保持成對相似性。Peng等。(2019a)提出了一種基於相關一致性的知識蒸餾方法,其中蒸餾的知識既包含實例級信息,又包含實例之間的相關性。使用關聯一致性進行蒸餾,學生網絡可以了解實例之間的關聯。

如上所述,基於實例關系的基於關系的知識的蒸餾損失可以表述為:

LRelD(Ft,Fs)=LR2(ψt(ti,tj),ψs(si,sj))

其中,

(ti,tj)Ft

(si,sj)Fs

Ft

Fs

分別是老師和學生模型中的要素表示集。

ψt(.)

ψs(.)

(ti,tj)

(si,sj)

的相似度函數。

LR2(.)

是教師和學生特征表示之間的相關函數。典型的基於實例關系的KD模型如下圖所示。

Relation-Based Knowledge示意圖

可以將提取的知識從不同的角度進行分類,例如數據的結構化知識,有關輸入功能的特權信息。下表顯示了基於關系的知識的不同網絡類別的摘要。

Relation-Based Knowledge方法匯總

盡管最近提供了一些類型的基於關系的知識,但是如何根據特征圖或數據樣本對關系信息進行建模(作為知識)仍然值得進一步研究

蒸餾

蒸餾的幾種形式

離線蒸餾(Offline Distillation)

大多數以前的知識蒸餾方法都可以脫機工作。在常見的知識蒸餾中,知識從預先訓練的教師模型轉移到學生模型。因此,整個訓練過程有兩個階段,即:

  • 大型教師模型是在蒸餾之前首先在一組訓練樣本上訓練的。
  • 教師模型用於提取logit或中間特征形式的知識,然后用於指導蒸餾過程中學生模型的訓練。

離線蒸餾的第一階段通常不作為知識蒸餾的一部分進行討論,即,假定教師模型是預先定義的。很少關注教師模型結構及其與學生模型的關系。因此,離線方法主要集中於改進知識轉移的不同部分,包括知識的設計以及用於匹配特征或分布匹配的損失函數。離線方法的主要優點在於它們簡單易行。例如,教師模型可以包含使用可能位於不同機器上的不同軟件包訓練的一組模型。可以提取知識並將其存儲在緩存中。

離線蒸餾方法通常采用單向知識轉移和兩階段訓練程序。然而,不可避免的是,復雜的高容量教師模型具有很長的訓練時間,而離線蒸餾中對學生模型的訓練通常在教師模型的指導下是有效的。此外,大型教師和小型學生之間的能力差距始終存在,而學生在很大程度上依賴於教師。

在線蒸餾(Online Distillation)

盡管離線蒸餾方法簡單有效,但離線蒸餾中的一些問題已引起研究界的越來越多的關注。為了克服離線蒸餾的局限性,提出了在線蒸餾以進一步改善學生模型的性能,特別是在沒有大容量高性能教師模型的情況下。在在線蒸餾中,教師模型和學生模型同時更新,並且整個知識蒸餾框架是端到端可訓練的。

在最近三年中,已經提出了多種在線知識蒸餾方法。具體來說,在深度相互學習中(Zhang等人,2018b),多個神經網絡以協作方式工作。在訓練過程中,任何一個網絡都可以作為學生模型,其他模型可以作為老師。為了提高泛化能力,通過使用 soft Logits 的集合來擴展深度相互學習(Guo等,2020)。Chen等。(2020a)進一步將輔助同伴(auxiliary peers)和小組負責人(group leader)引入深度相互學習中,以形成一套多樣化的同伴模型。為了降低計算成本,Zhu和Gong(2018)提出了一種多分支架構,其中每個分支表示一個學生模型,不同分支共享相同的骨干網絡。Kim等人(2019b)沒有使用Logits,引入了特征融合模塊來構建教師分類器。謝等。(2019)用便宜的卷積運算代替了卷積層以形成學生模型。Anil等。(2018)使用在線蒸餾來訓練大規模分布式神經網絡,並提出了在線蒸餾的一種變體,稱為共蒸餾。並行共蒸餾以相同的架構訓練多個模型,並且通過從其他模型轉移知識來訓練任何一個模型。最近,提出了一種在線對抗知識蒸餾方法,以利用來自類別概率和特征圖的知識,同時由鑒別者訓練多個網絡(Chung等,2020)。

在線蒸餾是一種具有高效並行計算功能的單階段端到端訓練方案。然而,現有的在線方法(例如,相互學習)通常不能解決在線設置中的高能力教師,這使得在在線設置中進一步探索教師與學生模型之間的關系成為一個有趣的話題。

自我蒸餾(Self-Distillation)

在自我蒸餾中,教師和學生模型采用相同的網絡。這可以視為在線蒸餾的特殊情況。具體來說,Zhang等。(2019b)提出了一種新的自蒸餾方法,其中將來自網絡較深部分的知識蒸餾為淺層部分。與(Zhang et al。,2019b)中的自蒸餾相似,有人提出了一種自注意蒸餾方法進行車道檢測(Hou et al。,2019)。該網絡利用其自身層的注意力圖作為其較低層的蒸餾目標。快照蒸餾(Yang et al。,2019b)是自我蒸餾的一種特殊變體,其中網絡早期(教師)的知識被轉移到其后期(學生)以支持在同一時期內的監督訓練過程網絡。為了進一步減少通過提前退出的推理時間,Phuong和Lampert(2019b)提出了基於蒸餾的訓練方案,其中提前退出層嘗試在訓練過程中模仿后續退出層的輸出。

另外,最近提出了一些有趣的自蒸餾方法。具體來說,袁等。提出了一種基於標簽平滑規則化(label smoothing regularization)分析的無教師知識蒸餾方法(Yuan et al。,2020)。Hahn和Choi提出了一種新穎的自我知識蒸餾方法,其中自我知識由預測概率而不是傳統的軟概率組成(Hahn和Choi,2019)。這些預測的概率由訓練模型的特征表示來定義。它們反映了特征嵌入空間中數據的相似性。Yun等。提出了分類自知識蒸餾,以匹配同一模型中同一來源內的類內樣本和擴充樣本之間的訓練模型的輸出分布(Yun et al。,2020)。此外,采用Lee等人(2019a)提出的自蒸餾進行數據增強,並將增強的自知性蒸餾為模型本身。還采用自我蒸餾中以一對一地優化具有相同架構的深度模型(教師或學生網絡)(Furlanello等,2018; Bagherinezhad等,2018)。每個網絡都使用教師優化來蒸餾先前網絡的知識。

此外,還可以從人類師生學習的角度直觀地了解離線,在線和自我蒸餾中。離線蒸餾是指知識淵博的老師向學生傳授知識;在線蒸餾是指老師和學生互相學習;自我蒸餾是指學生自己學習知識。而且,就像人類學習一樣,這三種蒸餾由於自身的優勢可以結合起來互相補充。

師生架構

在知識蒸餾中,師生架構是形成知識轉移的通用載體。換句話說,從老師到學生的知識獲取和蒸餾的質量也取決於如何設計老師和學生的網絡。在人類學習習慣方面,我們希望學生能夠找到合適的老師。因此,如何在知識蒸餾中完成知識的提取和提取,如何選擇或設計合適的師生結構是非常重要而又困難的問題。最近,在蒸餾過程中,教師和學生的模型設置幾乎都預先設置了不變的大小和結構,從而容易造成模型容量差距。但是,幾乎不存在如何特別設計教師和學生的體系結構以及為什么由這些模型設置確定其體系結構的方法。在本節中,將討論下圖所示的教師模型和學生模型的結構之間的關系。

師生架構關系

知識蒸餾以前曾被設計為壓縮深度神經網絡的方法之一。深度神經網絡的復雜性主要來自兩個維度:深度和寬度。通常需要將知識從更深和更廣的神經網絡轉移到更淺和更薄的神經網絡。學生網絡通常選擇為:

  • 教師網絡的簡化版本,每層中的層數更少且通道更少。
  • 教師網絡的量化版本,其中保留了網絡的結構。
  • 具有高效基本操作的小型網絡。
  • 具有優化的全局網絡結構的小型網絡。
  • 與教師使用同一網絡。

大型深層神經網絡和小型學生神經網絡之間的模型能力差距會降低知識轉移的速度。為了有效地將知識轉移到學生網絡,已提出了多種方法來控制模型復雜度的可控降低。具體來說,Mirzadeh等。(2020)引入了助教來減輕教師模型和學生模型之間的訓練差距。(Gao et al。,2020)通過殘差學習進一步縮小了差距,即使用輔助結構來學習殘差。另一方面,最近的幾種方法也集中在最小化學生模型和教師模型的結構差異上。例如,Polino等。(2018)將網絡量化與知識蒸餾相結合,即學生模型很小,是教師模型的量化版本。Nowak和Corso(2018)提出了一種結構壓縮方法,該方法涉及將多層學習的知識轉移到單層。Wang等。(2018a)逐步執行從教師網絡到學生網絡的塊狀知識轉移,同時保留接受領域。在在線環境中,教師網絡通常是學生網絡的集合,其中學生模型彼此共享相似的結構(或相同的結構)。

最近,深度可分離卷積已被廣泛用於為移動或嵌入式設備設計有效的神經網絡。受神經架構搜索(或NAS)成功的啟發,通過基於有效元操作或塊的全局結構搜索,小型神經網絡的性能得到了進一步改善。此外,動態搜索知識轉移機制的想法也出現在知識蒸餾中,例如,使用強化學習以數據驅動的方式自動刪除冗余層,並在給定教師網絡條件下搜索最佳學生網絡

以前的大多數工作都着重於設計教師和學生模型的結構或它們之間的知識轉移方案。為了使小型學生模型與大型教師模型很好地匹配,以提高知識蒸餾的績效,自適應的師生學習體系結構是必要的。最近,在知識蒸餾中進行神經體系結構搜索(NAS)的想法,即在教師模型的指導下聯合搜索學生結構和知識轉移,將是未來研究的一個有趣課題。

蒸餾算法

對抗蒸餾(Adversarial Distillation)

對抗蒸餾

多教師蒸餾(Multi-Teacher Distillation)

多教師蒸餾

跨模態蒸餾(Cross-Modal Distillation)

跨模態蒸餾

跨模態蒸餾方法匯總

圖蒸餾(Graph-Based Distillation)

圖蒸餾

注意力蒸餾(Attention-Based Distillation)

由於注意力可以很好地反映卷積神經網絡的神經元激活,因此在知識蒸餾中使用了一些注意力機制來改善學生網絡的性能。在這些基於注意力的KD方法中,定義了不同的注意力轉移機制,用於從教師網絡向學生蒸餾知識網絡。注意轉移的核心是定義用於特征嵌入神經網絡各層的關注圖。也就是說,使用關注圖功能來傳遞關於特征嵌入的知識

無數據蒸餾(Data-Free Distillation)

無數據蒸餾

Data-Free Learning of Student Networks

量化蒸餾(Quantized Distillation)

網絡量化通過將高精度網絡(例如32位浮點)轉換為低精度網絡(例如2位和8位)來降低神經網絡的計算復雜度。同時,知識蒸餾的目的是訓練小型模型以產生與復雜模型相當的性能。目前已經有多篇文章提出了在量化過程使用教師-學生框架中的一些KD方法。量化蒸餾方法的框架如下圖所示。

量化蒸餾框架

具體來說,Polino等。(2018)提出了一種量化蒸餾方法,將知識轉移到權重量化的學生網絡中。在(Mishra和Marr,2018年)中,提出的量化KD被稱為“學徒”。高精度教師網絡將知識轉移到小型的低精度學生網絡。為了確保小型學生網絡准確地模仿大型教師網絡,首先在特征圖上對高精度教師網絡進行量化,然后將知識從量化教師轉移到量化學生網絡(Wei等人,2018年) )。Kim等。(2019a)提出了基於量化學生網絡的自學,以及基於師生網絡與知識轉移的共同研究的量化意識知識蒸餾。此外,Shin等。(2019)使用蒸餾和量化進行了深度神經網絡的經驗分析,同時考慮了知識蒸餾的超參數,例如教師網絡的大小和蒸餾溫度。

終身蒸餾(Lifelong Distillation)

終身學習,包括持續學習和元學習,旨在以與人類相似的方式進行學習。它積累了以前學到的知識,還將學到的知識轉移到未來的學習中。知識蒸餾提供了一種有效的方法來保存和轉移所學知識,而不會造成災難性的遺忘。最近,基於終生學習的KD變體數量不斷增加。

關於元學習:Jang等。(2019)設計了元轉移網絡,可以確定在師生架構中轉移的內容和地點。Flennerhag等。(2019)提出了一個輕量級的框架,稱為Leap,用於通過將知識從一種學習過程轉移到另一種學習過程來對任務流形進行元學習。Peng等。(2019b)設計了一種用於少拍圖像識別的新知識轉移網絡架構。該體系結構同時合並了來自圖像和先驗知識的視覺信息。劉等。(2019e)提出了一種用於圖像檢索的語義感知知識保存方法。從圖像模態和語義信息中獲得的教師知識將得到保存和轉移。

此外,為了解決終身學習中的災難性遺忘問題,全局蒸餾(Lee等人,2019b),基於知識蒸餾的終身GAN(Zhai等人,2019),多模型蒸餾(Zhou等人,2020) )和其他基於KD的方法(Li and Hoiem,2017; Shmelkov et al。,2017)已經開發出來,以提取學習到的知識並在新任務上教給學生網絡。

NAS蒸餾(NAS-Based Distillation)

神經體系結構搜索(NAS)是最流行的自動機器學習(或AutoML)技術之一,旨在自動識別深度神經模型並自適應地學習適當的深度神經結構。在知識蒸餾中,知識轉移的成功不僅取決於老師的知識,還取決於學生的架構。但是,大型教師模型和小型學生模型之間可能存在能力差距,從而使學生難以向老師學習。為了解決這個問題,已經有工作采用 NAS 來找到 oracle-based 和 architecture-aware 的合適的學生架構實現知識蒸餾。此外,知識蒸餾被用於提高神經架構搜索的效率,例如,具有蒸餾架構知識的 NAS(AdaNAS)以及教師指導的架構搜索(TGSA)。在TGSA中,指導每個體系結構搜索步驟以模仿教師網絡的中間特征表示,通過有效搜索學生的可能結構,老師可以有效地監督特征轉移。

性能對比

知識蒸餾是用於模型壓縮的出色技術。通過捕獲教師的知識並在教師學習中使用蒸餾策略,它可以提高輕量級學生模型的性能。近來,許多知識蒸餾方法致力於改善性能,尤其是在圖像分類任務中。在本節中,為了清楚地證明知識蒸餾的有效性,總結了一些典型的KD方法在兩個流行的圖像分類數據集上的分類性能。

這兩個數據集是 CIFAR10 和 CIFAR100,分別由分別來自 10 和 100 個類別的 32×32 RGB 圖像組成。兩者都具有 50000 個訓練圖像和 10000 個測試圖像,並且每個類具有相同數量的訓練和測試圖像。為了公平比較,KD 方法的實驗分類准確度結果(%)直接來自相應的原始論文,如 CIFAR10 的表5和 CIFAR100 的表6所示。當使用不同類型的知識,蒸餾方案和教師/學生模型的結構時,報告了不同方法的性能。具體而言,括號中的准確度是教師和學生模型的分類結果,它們是經過單獨訓練的。應該注意的是,DML 和 DCM 的成對精度是在線蒸餾后師生的表現。

CIFAR-10

CIFAR-10方法性能對比

CIFAR-100

CIFAR-100方法性能對比

從表5和表6的性能比較中,可以得出以下幾點結論:

  • 知識蒸餾可以簡單地在不同的深度模型上實現,並且可以通過知識蒸餾輕松地實現不同深度模型的模型壓縮。
  • 通過協作學習進行在線知識蒸餾可以顯着提高深度模型的性能。
  • 自知蒸餾可以很好地改善深度模型的性能。
  • 輕量級深層模型(學生)的性能可以通過大容量教師模型中的知識轉移而輕松提高。

通過不同知識蒸餾方法的性能比較,可以很容易地得出結論,知識蒸餾是一種有效且有效的深度模型壓縮技術。

總結和討論

近年來,知識蒸餾及其應用引起了相當大的關注。本文從知識,蒸餾方案,師生架構,蒸餾算法,性能比較和應用的角度對知識蒸餾進行了全面綜述。下面,討論知識蒸餾的挑戰,並對知識蒸餾的未來研究提供一些見識。

挑戰

對於知識蒸餾,關鍵是:1)從教師那里提取豐富的知識;2)從教師那里轉移知識以指導學生的訓練。因此,本文從以下幾個方面討論知識蒸餾的挑戰:知識的均等性,蒸餾的類型,師生體系結構的設計以及知識蒸餾的理論基礎

大多數KD方法利用各種知識的組合,包括基於響應的知識,基於特征的知識和基於關系的知識。因此,重要的是要了解每種知識類型的影響,並知道不同種類的知識如何以互補的方式互相幫助。例如,基於響應的知識具有相似的動機來進行標簽平滑和模型正則化; 基於特征的知識通常用於模仿教師的中間過程,而基於關系的知識則用於捕獲不同樣本之間的關系。為此,在統一和互補的框架中對不同類型的知識進行建模仍然是挑戰。例如,來自不同提示層的知識可能對學生模型的訓練有不同的影響:1)基於響應的知識來自最后一層;2)來自較深的提示/指導層的基於特征的知識可能會遭受過度規范化的困擾。

如何將豐富的知識從老師傳授給學生是知識蒸餾的關鍵一步。通常,現有的蒸餾方法可分為離線蒸餾,在線蒸餾和自蒸餾。離線蒸餾通常用於從復雜的教師模型中轉移知識,而教師模型和學生模型在在線蒸餾和自我蒸餾的設置中具有可比性。為了提高知識轉移的效率,應進一步研究模型復雜性與現有蒸餾方案或其他新穎蒸餾方案之間的關系

目前,大多數KD方法都將重點放在新型知識或蒸餾損失函數上,而對師生體系結構的設計研究不足。實際上,除了知識和蒸餾算法之外,教師和學生的結構之間的關系也顯着影響知識蒸餾的性能。例如,一方面,最近的一些研究發現,由於教師模型和學生模型之間的模型能力差距,學生模型無法從某些教師模型中學習到很多東西;另一方面,從對神經網絡容量的一些早期理論分析來看,淺層網絡能夠學習與深層神經網絡相同的表示。因此,設計有效的學生模型或構建合適的教師模型仍然是知識蒸餾中的難題。

盡管有大量的知識蒸餾方法和應用,但對知識蒸餾的理解(包括理論解釋和實證評估)仍然不夠。例如,蒸餾可以被視為一種獲得特權信息的學習形式。線性教師模型和學生模型的假設使得能夠通過蒸餾來研究學生學習特征的理論解釋。此外,Cho和Hariharan(2019)對知識蒸餾的功效進行了一些實證評估和分析。但是,仍然很難獲得對知識提升的可概括性的深刻理解,尤其是如何衡量知識的質量或師生架構的質量。

未來發展方向

為了提高知識蒸餾的性能,最重要的因素包括:怎樣設計師生網絡體系結構,從老師網絡中學習什么樣的知識,以及在何處提煉到學生網絡中

深層神經網絡的模型壓縮和加速方法通常分為四個不同類別,即模型剪枝和量化,低秩分解,緊湊型卷積濾波器和知識蒸餾。在現有的知識蒸餾方法中,只有很少的相關工作討論了知識蒸餾與其他壓縮方法的結合。例如,量化知識蒸餾可以看作是一種參數修剪方法,它將網絡量化整合到師生架構中。因此,為了學習用於在便攜式平台上部署的高效輕巧的深度模型,由於大多數壓縮技術都需要重新訓練/微調過程,因此需要通過知識蒸餾和其他壓縮技術進行混合壓縮的方法。此外,如何決定使用不同壓縮方法的正確順序將是未來研究的有趣話題

除了用於深度神經網絡加速的模型壓縮之外,由於教師架構上知識轉移的自然特性,知識蒸餾還可以用於其他問題。最近,知識蒸餾已應用於數據隱私和安全性,深度模型的對抗攻擊,跨模態,多個域,災難性遺忘,加速深度模型的學習,神經結構搜索的效率,自我監督和數據增強。另一個有趣的例子是,知識從小型教師網絡向大型學生網絡的轉移可以加速學生的學習。這與傳統的知識蒸餾有很大不同。大型模型從未標記的數據中學習的特征表示也可以通過蒸餾來監督目標模型。為此,將知識蒸餾擴展到其他目的和應用可能是有意義的未來方向。

知識蒸餾的學習類似於人類的學習。將知識轉移推廣到經典和傳統的機器學習方法是可行的。例如,基於知識蒸餾的思想,傳統的兩階段分類適用於單老師單學生問題。此外,知識蒸餾可以靈活地部署到各種學習方案中,例如對抗學習,自動機器學習,終身學習,和強化學習。因此,將來將知識蒸餾與其他學習方案整合起來以應對實際挑戰將是有用的。

本文分享自微信公眾號 - AI異構(gh_ed66a0ffe20a),作者:許柯

原文出處及轉載信息見文內詳細說明,如有侵權,請聯系 yunjia_community@tencent.com 刪除。

原始發表時間:2020-12-20

本文參與騰訊雲自媒體分享計划,歡迎正在閱讀的你也加入,一起分享。


免責聲明!

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



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