參考論文:Knowledge Distillation: A Survey
1.前言
???????? 近年來,深度學(xué)習(xí)在學(xué)術(shù)界和工業(yè)界取得了巨大的成功,根本原因在于其可拓展性和編碼大規(guī)模數(shù)據(jù)的能力。但是,深度學(xué)習(xí)的主要挑戰(zhàn)在于,受限制于資源容量,深度神經(jīng)模型很難部署在資源受限制的設(shè)備上。如嵌入式設(shè)備和移動(dòng)設(shè)備。因此,涌現(xiàn)出了大量的模型壓縮和加速技術(shù),知識(shí)蒸餾是其中的代表,可以有效的從大型的教師模型中學(xué)習(xí)到小型的學(xué)生模型。本文從知識(shí)類別、訓(xùn)練模式、師生架構(gòu)、蒸餾算法、性能比較和應(yīng)用等方面對(duì)知識(shí)蒸餾進(jìn)行了綜述。
???????? 提到了近年來深度學(xué)習(xí)在計(jì)算機(jī)視覺、強(qiáng)化學(xué)習(xí)和自然語言處理上的一些進(jìn)展,指出主要挑戰(zhàn)在于大模型在實(shí)際應(yīng)用中的部署。為了開發(fā)高效的深度模型,近年來的研究主要集中在深度模型的開發(fā)上:(1)深度神經(jīng)網(wǎng)絡(luò)高效快的構(gòu)建;(2)模型壓縮和加速技術(shù),主要包含以下:
- 參數(shù)剪枝和共享:該方法專注于去除模型中的不必要參數(shù) 低秩分解:
- 該方法利用矩陣分解和張量分解來識(shí)別深度神經(jīng)網(wǎng)絡(luò)的冗余參數(shù);
- 轉(zhuǎn)移緊湊型卷積濾波器:該方法通過轉(zhuǎn)移或壓縮卷積濾波器來去除不必要的參數(shù);
-
知識(shí)蒸餾(KD):該方法將知識(shí)從一個(gè)較大的深度神經(jīng)網(wǎng)絡(luò)中提取到一個(gè)較小的網(wǎng)絡(luò)中
???????? 為了解決大模型的線上部署問題,Bucilua et al. (2006)首先提出了模型壓縮,在不顯著降低精度的情況下,將大模型或模型集合中的信息轉(zhuǎn)換為訓(xùn)練小模型。在半監(jiān)督學(xué)習(xí)中,引入了完全監(jiān)督的教師模型和使用無標(biāo)記數(shù)據(jù)的學(xué)生模型之間的知識(shí)轉(zhuǎn)移。從小模型到大模型的學(xué)習(xí)后來被正式命名為為知識(shí)蒸餾(Hinton )。知識(shí)蒸餾主要思想是:學(xué)生模型模仿教師模型,二者相互競(jìng)爭(zhēng),是的學(xué)生模型可以與教師模型持平甚至卓越的表現(xiàn)。關(guān)鍵問題是如何將知識(shí)從大的教師模型轉(zhuǎn)移到小的學(xué)生模型。知識(shí)蒸餾系統(tǒng)由知識(shí)、蒸餾算法和師生架構(gòu)三個(gè)關(guān)鍵部分組成。如上圖所示。
???????? 雖然在實(shí)踐中取得了巨大的成功,但無論是理論還是經(jīng)驗(yàn)上對(duì)知識(shí)蒸餾的理解都不多。關(guān)于知識(shí)蒸餾的原理,Urner等利用無標(biāo)記數(shù)據(jù)證明了從教師模型到學(xué)生模型的知識(shí)轉(zhuǎn)移是PAC可學(xué)習(xí)的;Phuong & Lampert通過在深度線性分類器場(chǎng)景下學(xué)習(xí)蒸餾學(xué)生網(wǎng)絡(luò)的快速收斂獲得了知識(shí)蒸餾的理證明,這個(gè)論證回答了學(xué)生學(xué)習(xí)的內(nèi)容和速度,并揭示了決定蒸餾成功的因素,成功的蒸餾依賴于數(shù)據(jù)的分布、蒸餾目標(biāo)的優(yōu)化偏差和學(xué)生分類器的強(qiáng)單調(diào)性;Cheng等人量化了從深度神經(jīng)網(wǎng)絡(luò)的中間層中提取視覺概念,以解釋知識(shí)蒸餾;Ji和Zhu分別從風(fēng)險(xiǎn)界、數(shù)據(jù)效率和不完善教師三個(gè)方面對(duì)廣義神經(jīng)網(wǎng)絡(luò)知識(shí)蒸餾進(jìn)行了理論解釋;Cho和Hariharan對(duì)知識(shí)蒸餾的功效進(jìn)行了詳細(xì)的實(shí)證分析;Mirzadeh et al.的實(shí)證結(jié)果表明,由于模型能力差距的存在,模型越大的教師未必就越優(yōu)秀;Cho and Hariharan (2019)的實(shí)驗(yàn)也表明,蒸餾對(duì)學(xué)生的學(xué)習(xí)有不利影響。知識(shí)蒸餾的不同形式對(duì)知識(shí)、蒸餾和師生互動(dòng)的經(jīng)驗(yàn)評(píng)價(jià)不包括在內(nèi);知識(shí)蒸餾也被用于標(biāo)簽平滑、評(píng)估教師的準(zhǔn)確性和獲得最佳輸出層參數(shù)分布先驗(yàn)。
???????? 知識(shí)蒸餾與人的學(xué)習(xí)過程類似,基于此,近年來的一些研究拓展了教師—學(xué)生模型,發(fā)展為mutual learning、lifelong learning和self-learning。同時(shí)受到知識(shí)蒸餾在模型壓縮中的影響,知識(shí)遷移已經(jīng)被用在了壓縮數(shù)據(jù)上,如dataset distillation。
文章結(jié)構(gòu)圖
2.知識(shí)(Knowledge)
???????? 在知識(shí)蒸餾中,知識(shí)類型、蒸餾策略和師生架構(gòu)對(duì)學(xué)生模型的學(xué)習(xí)起著至關(guān)重要的作用。原始知識(shí)蒸餾使用大深度模型的對(duì)數(shù)作為教師知識(shí)(Hinton 2015),中間層的激活、神經(jīng)元或特征也可以作為指導(dǎo)學(xué)生模型學(xué)習(xí)的知識(shí),不同的激活、神經(jīng)元或成對(duì)樣本之間的關(guān)系包含了教師模型所學(xué)習(xí)到的豐富信息.此外,教師模型的參數(shù)(或?qū)优c層之間的聯(lián)系)也包含了另一種知識(shí),本節(jié)主要討論以下幾種類型的知識(shí):基于響應(yīng)的知識(shí)(response-based knowledge),基于特征的知識(shí)( feature-based knowledge), 基于關(guān)系的知識(shí)(relation-based knowledge),下圖為教師模型中不同知識(shí)類別的直觀示例。
2.1. 基于響應(yīng)的知識(shí)(Response-Based Knowledge)
???????? Response-Based Knowledge通常是指教師模型的最后一輸出層的神經(jīng)反應(yīng)。其主要思想是讓學(xué)生模型直接模仿教師模式的最終預(yù)測(cè)(logits),假定對(duì)數(shù)向量Z為全連接層的最后輸出,response-based knowledge蒸餾形式可以被描述為:
???????? LR(.) 表示散度損失(這里也可以是用交叉熵?fù)p失),如下圖所示為Response-Based 知識(shí)蒸餾模型圖。
???????? 基于響應(yīng)的知識(shí)可以用于不同類型的模型預(yù)測(cè)。例如,在目標(biāo)檢測(cè)任務(wù)中的響應(yīng)可能包含bounding box的偏移量的logits;在人類姿態(tài)估計(jì)任務(wù)中,教師模型的響應(yīng)可能包括每個(gè)地標(biāo)的熱力圖。最流行的基于響應(yīng)的圖像分類知識(shí)被稱為軟目標(biāo)(soft target)。軟目標(biāo)是輸入的類別的概率,可以通過softmax函數(shù)估計(jì)為:
???????? Zi是第i個(gè)類別的logit,T是溫度因子,控制每個(gè)軟目標(biāo)的重要性。軟目標(biāo)包含來自教師模型的暗信息知識(shí)(informative dark knowledge)。因此,軟logits的蒸餾loss可以重寫為:
????????? 通常,LR(.)使用KL散度loss(Kullback-Leibler divergence,衡量?jī)蓚€(gè)概率分布的相似性的度量指標(biāo))。優(yōu)化該等式可以使學(xué)習(xí)的logits與教師的logits相匹配。下圖為基準(zhǔn)知識(shí)蒸餾的具體架構(gòu)。
?????????? 然而,基于響應(yīng)的知識(shí)通常需要依賴最后一層的輸出,無法解決來自教師模型的中間層面的監(jiān)督,而這對(duì)于使用非常深的神經(jīng)網(wǎng)絡(luò)進(jìn)行表示學(xué)習(xí)非常重要。由于logits實(shí)際上是類別概率分布,因此基于響應(yīng)的知識(shí)蒸餾限制在監(jiān)督學(xué)習(xí)。
2.2. 基于特征的知識(shí)(Feature-Based Knowledge)
?????????? 深度神經(jīng)網(wǎng)絡(luò)善于學(xué)習(xí)到不同層級(jí)的表征,因此中間層和輸出層的都可以被用作知識(shí)來訓(xùn)練學(xué)生模型,對(duì)于最后一層的輸出和中間層的輸出(特征圖,feature map),都可以作為監(jiān)督學(xué)生模型訓(xùn)練的知識(shí),中間層的Feature-Based Knowledge對(duì)于 Response-Based Knowledge是一個(gè)很好的補(bǔ)充,其主要思想是將教師和學(xué)生的特征激活直接匹配起來。一般情況下,F(xiàn)eature-Based Knowledge知識(shí)轉(zhuǎn)移的蒸餾損失可表示為:
?????????? 其中ft(x)、fs(x)分別是教師模型和學(xué)生模型的中間層的特征圖。變換函數(shù)當(dāng)教師和學(xué)生模型的特征圖大小不同時(shí)應(yīng)用。LF(.)衡量?jī)蓚€(gè)特征圖的相似性,常用的有L1 norm、L2 norm、交叉熵等。下圖為基于特征的知識(shí)蒸餾模型的通常架構(gòu)。
?????????? 雖然基于特征的知識(shí)遷移為學(xué)生模型的學(xué)習(xí)提供了良好的信息,但如何有效地從教師模型中選擇提示層,從學(xué)生模型中選擇引導(dǎo)層,仍有待進(jìn)一步研究。由于提示層和引導(dǎo)層的大小存在顯著差異,如何正確匹配教師和學(xué)生的特征表示也需要探討。
2.3. 基于關(guān)系的知識(shí)(Response-Based Knowledge)
?????????? 基于響應(yīng)和基于特征的知識(shí)都使用了教師模型中特定層的輸出,基于關(guān)系的知識(shí)進(jìn)一步探索了不同層或數(shù)據(jù)樣本的關(guān)系。一般,將基于特征圖關(guān)系的關(guān)系知識(shí)蒸餾loss表述如下:
其中,ft和fs分別表示教師模型和學(xué)生模型的特征圖,ft^、ft 和 fs^、fs~分別是教師模型和學(xué)生模型的特征圖組(pairs)。函數(shù)表示特征組的相似性函數(shù),
?????????? 傳統(tǒng)的知識(shí)遷移方法往往涉及到單個(gè)知識(shí)蒸餾,教師的軟目標(biāo)被直接蒸餾給學(xué)生。實(shí)際上,蒸餾的知識(shí)不僅包含特征信息,還包含數(shù)據(jù)樣本之間的相互關(guān)系。這一節(jié)的關(guān)系涉及許多方面,作者的設(shè)計(jì)很靈活,建議看原論文更清楚。
3. 蒸餾機(jī)制(Distillation Schemes)
?????????? 根據(jù)教師模型是否與學(xué)生模型同時(shí)更新,知識(shí)蒸餾的學(xué)習(xí)方案可分為離線(offline distillation)蒸餾、在線(online distillation)蒸餾、自蒸餾(self-distillation)。
3.1.離線蒸餾(offline distillation)
??????????? 大多數(shù)之前的知識(shí)蒸餾方法都是離線的。最初的知識(shí)蒸餾中,知識(shí)從預(yù)訓(xùn)練的教師模型轉(zhuǎn)移到學(xué)生模型中,整個(gè)訓(xùn)練過程包括兩個(gè)階段:1)大型教師模型蒸餾前在訓(xùn)練樣本訓(xùn)練;2)教師模型以logits或中間特征的形式提取知識(shí),將其在蒸餾過程中指導(dǎo)學(xué)生模型的訓(xùn)練。教師的結(jié)構(gòu)是預(yù)定義的,很少關(guān)注教師模型的結(jié)構(gòu)及其與學(xué)生模型的關(guān)系。因此,離線方法主要關(guān)注知識(shí)遷移的不同部分,包括知識(shí)設(shè)計(jì)、特征匹配或分布匹配的loss函數(shù)。離線方法的優(yōu)點(diǎn)是簡(jiǎn)單、易于實(shí)現(xiàn)。
??????????? 離線蒸餾方法通常采用單向的知識(shí)遷移和兩階段的訓(xùn)練程序。然而,訓(xùn)練時(shí)間長(zhǎng)的、復(fù)雜的、高容量教師模型卻無法避免,而在教師模型的指導(dǎo)下,離線蒸餾中的學(xué)生模型的訓(xùn)練通常是有效的。此外,教師與學(xué)生之間的能力差距始終存在,而且學(xué)生往往對(duì)教師有極大依賴。
3.2.在線蒸餾(online distillation)
??????????? 為了克服離線蒸餾的局限性,提出了在線蒸餾來進(jìn)一步提高學(xué)生模型的性能,特別是在沒有大容量高性能教師模型的情況下。在線蒸餾時(shí),教師模型和學(xué)生模型同步更新,而整個(gè)知識(shí)蒸餾框架都是端到端可訓(xùn)練的。
? ??????????? 在線蒸餾是一種具有高效并行計(jì)算的單階段端到端訓(xùn)練方案。然而,現(xiàn)有的在線方法(如相互學(xué)習(xí))通常無法解決在線環(huán)境中的高容量教師,這使進(jìn)一步探索在線環(huán)境中教師和學(xué)生模式之間的關(guān)系成為一個(gè)有趣的話題。
3.3.自蒸餾(self-distillation)
???????? 在自蒸餾中,教師和學(xué)生模型使用相同的網(wǎng)絡(luò),這可以看作是在線蒸餾的一個(gè)特例。例如論文(Zhang, L., Song, J., Gao, A., Chen, J., Bao, C. & Ma, K. (2019b).Be your own teacher: Improve the performance of convolutional eural networks via self distillation. In ICCV.)將網(wǎng)絡(luò)深層的知識(shí)蒸餾到淺層部分。
????????? 從人類師生學(xué)習(xí)的角度也可以直觀地理解離線、在線和自蒸餾。離線蒸餾是指知識(shí)淵博的教師教授學(xué)生知識(shí);在線蒸餾是指教師和學(xué)生一起學(xué)習(xí);自我蒸餾是指學(xué)生自己學(xué)習(xí)知識(shí)。而且,就像人類學(xué)習(xí)的方式一樣,這三種蒸餾由于其自身的優(yōu)點(diǎn),可以相互補(bǔ)充。
4.教師-學(xué)生結(jié)構(gòu)(Teacher-Student Architecture)
???????在知識(shí)蒸餾中,師生架構(gòu)是形成知識(shí)轉(zhuǎn)移的一般載體。換句話說,師生結(jié)構(gòu)決定了學(xué)生模型提取教師模型中知識(shí)的質(zhì)量,用人類學(xué)習(xí)過程來描述,就是我們希望學(xué)生獲得一個(gè)不錯(cuò)的老師來獲取知識(shí)。因此,在知識(shí)的提煉過程中,如何選擇或設(shè)計(jì)合適的師生結(jié)構(gòu),是一個(gè)重要而又困難的問題。最近,在蒸餾過程中,教師和學(xué)生的模型設(shè)置幾乎是固定不變的大小和結(jié)構(gòu),從而容易造成模型容量缺口。然而,如何特別設(shè)計(jì)教師和學(xué)生的體系結(jié)構(gòu),以及為什么他們的體系結(jié)構(gòu)由這些模型設(shè)置決定,幾乎是缺失的。兩者之間模型的設(shè)置主要有以下關(guān)系:
???????知識(shí)蒸餾早期被用來壓縮模型,Hinton等人(Hinton, G., Vinyals, O. & Dean, J. (2015). Distilling the knowledge in a neural network. arXiv preprint arXiv:1503.02531.)曾將知識(shí)蒸餾設(shè)計(jì)為壓縮深度神經(jīng)網(wǎng)絡(luò)的集合。深度神經(jīng)網(wǎng)絡(luò)的復(fù)雜性主要來自于深度和寬度這兩個(gè)維度。通常需要將知識(shí)從更深、更寬的神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)移到更淺、更窄的神經(jīng)網(wǎng)絡(luò)。學(xué)生網(wǎng)絡(luò)的結(jié)構(gòu)通常有以下選擇:1)教師網(wǎng)絡(luò)的簡(jiǎn)化版本,層數(shù)更少,每一層的通道數(shù)更少;2)保留教師網(wǎng)絡(luò)的結(jié)構(gòu),學(xué)生網(wǎng)絡(luò)為其量化版本;3)具有高效基本運(yùn)算的小型網(wǎng)絡(luò);4)具有優(yōu)化全局網(wǎng)絡(luò)結(jié)構(gòu)的小網(wǎng)絡(luò);5)與教師網(wǎng)絡(luò)的結(jié)構(gòu)相同。
????????大網(wǎng)絡(luò)和小網(wǎng)絡(luò)之間容量的差距會(huì)阻礙知識(shí)的遷移。為了有效地將知識(shí)遷移到學(xué)生網(wǎng)絡(luò)中,許多方法被提出來控制降低模型的復(fù)雜性。論文(Mirzadeh, S. I., Farajtabar, M., Li, A. & Ghasemzadeh, H. (2020). Improved knowledge distillation via teacher assistant. In AAAI.)引入了一個(gè)教師助手,來減少教師模型和學(xué)生模型之間的訓(xùn)練差距。另一篇工作通過殘差學(xué)習(xí)進(jìn)一步縮小差距,利用輔助結(jié)構(gòu)來學(xué)習(xí)殘差。還有其他一些方法關(guān)注減小教師模型與學(xué)生模型結(jié)構(gòu)上的差異。例如將量化與知識(shí)蒸餾相結(jié)合,即學(xué)生模型是教師模型的量化版本。
???????以往的研究多側(cè)重于設(shè)計(jì)師生模型的結(jié)構(gòu)或師生模型之間的知識(shí)轉(zhuǎn)移方案。為了使小的學(xué)生模型與大的教師模型能夠很好地匹配,從而提高知識(shí)的蒸餾性能,需要自適應(yīng)的師生學(xué)習(xí)結(jié)構(gòu)。近年來,知識(shí)蒸餾中的神經(jīng)結(jié)構(gòu)搜索思想被提出,即在教師模式指導(dǎo)下聯(lián)合搜索學(xué)生結(jié)構(gòu)和知識(shí)轉(zhuǎn)移,將成為未來研究的熱點(diǎn)。此外,動(dòng)態(tài)搜索知識(shí)遷移機(jī)制的想法也出現(xiàn)在知識(shí)蒸餾中,例如,使用強(qiáng)化學(xué)習(xí)以數(shù)據(jù)驅(qū)動(dòng)的方式自動(dòng)去除冗余層,并尋找給定教師網(wǎng)絡(luò)的最優(yōu)學(xué)生網(wǎng)絡(luò)。
5.蒸餾算法
????????一個(gè)簡(jiǎn)單但有效的知識(shí)遷移方法是直接匹配基于響應(yīng)的、基于特征的或教師模型和學(xué)生模型之間的特征空間中的表示分布。許多不同的算法已經(jīng)被提出,以改善在更復(fù)雜的環(huán)境中傳遞知識(shí)的過程。
5.1.對(duì)抗性蒸餾(Adversarial Distillation)
????????在知識(shí)蒸餾中,教師模型很難學(xué)習(xí)到真實(shí)數(shù)據(jù)分布,同時(shí),學(xué)生模型容量小,不能準(zhǔn)確模仿教師模型。近年來,對(duì)抗訓(xùn)練在生成網(wǎng)絡(luò)中取得了成功,生成對(duì)抗網(wǎng)絡(luò)(GAN)中的鑒別器估計(jì)樣本來自訓(xùn)練數(shù)據(jù)分布的概率,而生成器試圖使用生成的數(shù)據(jù)樣本欺騙鑒別器的概率預(yù)測(cè)。受此啟發(fā),許多對(duì)抗知識(shí)蒸餾方法被提出,以使教師和學(xué)生網(wǎng)絡(luò)更好地了解真實(shí)的數(shù)據(jù)分布,如下圖所示,對(duì)抗訓(xùn)練在知識(shí)蒸餾中的應(yīng)用可以剛被分為三類。
a)訓(xùn)練一個(gè)對(duì)抗性生成器生成合成的數(shù)據(jù),將其直接作為訓(xùn)練集或用于增強(qiáng)訓(xùn)練集。
????????其中,F(xiàn)t(.)和Fs(.)分別是教師模型和學(xué)生模型的輸出;G(z)表示給定隨機(jī)輸入向量z的生成器G生成的訓(xùn)練樣本;LG是蒸餾損失,以迫使預(yù)測(cè)的概率分布與真實(shí)概率分布之間匹配,蒸餾損失函數(shù)通常采用交叉熵或KL散度。
b)使用鑒別器,利用logits或特征來分辨樣本來自教師或是學(xué)生模型。
????????代表性方法如論文(Wang, Y., Xu, C., Xu, C. & Tao, D. (2018f). Adversarial learning of portable student networks. In AAAI.),其loss可以表示為:
????????其中,G是一個(gè)學(xué)生網(wǎng)絡(luò),LGAN是生成對(duì)抗網(wǎng)絡(luò)使用的損失函數(shù),使學(xué)生和教師之間的輸出盡可能相似。
c)在線方式進(jìn)行,在每次迭代中,教師和學(xué)生共同進(jìn)行優(yōu)化。
????????利用知識(shí)蒸餾壓縮GAN,小GAN學(xué)生網(wǎng)絡(luò)通過知識(shí)遷移模仿大GAN教師網(wǎng)絡(luò)。從上述對(duì)抗性蒸餾方法中,可以得出三個(gè)主要結(jié)論:1)GAN是通過教師知識(shí)遷移來提高學(xué)生學(xué)習(xí)能力的有效工具;2)聯(lián)合GAN和知識(shí)蒸餾可以為知識(shí)蒸餾的性能生成有價(jià)值的數(shù)據(jù),克服了不可用和不可訪問的數(shù)據(jù)的限制;3)知識(shí)蒸餾可以用來壓縮GAN。
5.2.多教師蒸餾(Multi-teacher Distillation)
?????????不同的教師架構(gòu)可以為學(xué)生網(wǎng)絡(luò)提供他們自己有用的知識(shí)。在訓(xùn)練一個(gè)教師網(wǎng)絡(luò)期間,多個(gè)教師網(wǎng)絡(luò)可以單獨(dú)或整體地用于蒸餾。在一個(gè)典型的師生框架中,教師通常是一個(gè)大的模型或一個(gè)大的模型的集合。要遷移來自多個(gè)教師的知識(shí),最簡(jiǎn)單的方法是使用來自所有教師的平均響應(yīng)作為監(jiān)督信息。多教師蒸餾的一般框架如下圖所示。
??????????多個(gè)教師網(wǎng)絡(luò)通常使用logits和特征表示作為知識(shí)。除了來自所有教師的平均logits,還有其他的變體。文獻(xiàn)(Chen, X., Su, J., & Zhang, J. (2019b). A two-teacher tramework for knowledge distillation. In ISNN.)使用了兩個(gè)教師網(wǎng)絡(luò),其中一名教師將基于響應(yīng)的知識(shí)遷移給學(xué)生,另一名將基于特征的知識(shí)遷移給學(xué)生。文獻(xiàn)(Fukuda, T., Suzuki, M., Kurata, G., Thomas, S., Cui, J. & Ramabhadran,B. (2017). Effificient knowledge distillation from an ensemble of teachers. In Interspeech.))在每次迭代中從教師網(wǎng)絡(luò)池中隨機(jī)選擇一名教師。一般來說,多教師知識(shí)蒸餾可以提供豐富的知識(shí),并能針對(duì)不同教師知識(shí)的多樣性量身定制一個(gè)全方位的學(xué)生模型。然而,如何有效地整合來自多名教師的不同類型的知識(shí),還需要進(jìn)一步研究。
5.3.跨模態(tài)蒸餾(Cross-Modal Distillation)
???????在訓(xùn)練或測(cè)試時(shí)一些模態(tài)的數(shù)據(jù)或標(biāo)簽可能不可用,因此需要在不同模態(tài)間知識(shí)遷移。在教師模型預(yù)先訓(xùn)練的一種模態(tài)(如RGB圖像)上,有大量注釋良好的數(shù)據(jù)樣本,(Gupta, S., Hoffman, J. & Malik, J. (2016). Cross modal distillation for supervision transfer. In CVPR.)將知識(shí)從教師模型遷移到學(xué)生模型,使用新的未標(biāo)記輸入模態(tài),如深度圖像(depth image)和光流(optical flow)。具體來說,所提出的方法依賴于涉及兩種模態(tài)的未標(biāo)記成對(duì)樣本,即RGB和深度圖像。然后將教師從RGB圖像中獲得的特征用于對(duì)學(xué)生的監(jiān)督訓(xùn)練。成對(duì)樣本背后的思想是通過成對(duì)樣本遷移標(biāo)注(annotation)或標(biāo)簽信息,并已廣泛應(yīng)用于跨模態(tài)應(yīng)用。成對(duì)樣本的示例還有1)在人類動(dòng)作識(shí)別模型中,RGB視頻和骨骼序列;2)在視覺問題回答方法中,將圖像-問題-回答作為輸入的三線性交互教師模型中的知識(shí)遷移到將圖像-問題作為輸入的雙線性輸入學(xué)生模型中??缒B(tài)蒸餾的框架如下:
???????跨模態(tài)總結(jié)如下。其中ResK表示基于響應(yīng)的知識(shí),F(xiàn)eaK表示基于特征的知識(shí),RelK表示基于關(guān)系的知識(shí)。
5.4.基于圖的蒸餾(Graph-Based Distillation)
????????大多數(shù)知識(shí)蒸餾算法側(cè)重于將個(gè)體實(shí)例知識(shí)從教師傳遞給學(xué)生,而最近提出了一些方法使用圖來探索數(shù)據(jù)內(nèi)關(guān)系。這些基于圖的蒸餾方法的主要思想是1)使用圖作為教師知識(shí)的載體;2)使用圖來控制教師知識(shí)的傳遞?;趫D的知識(shí)可以歸類為基于關(guān)系的知識(shí)?;趫D的知識(shí)蒸餾如下圖所示:
1)使用圖作為教師知識(shí)的載體
????????文獻(xiàn)(Zhang, C. & Peng, Y. (2018). Better and faster: knowledge transfer from multiple self-supervised learning tasks via graph distillation for video classifification. In IJCAI)中,每個(gè)頂點(diǎn)表示一個(gè)自監(jiān)督的教師,利用logits和中間特征構(gòu)造兩個(gè)圖,將多個(gè)自監(jiān)督的教師的知識(shí)轉(zhuǎn)移給學(xué)校。
2)使用圖來控制知識(shí)遷移
???????文獻(xiàn)(Luo, Z., Hsieh, J. T., Jiang, L., Carlos Niebles, J.& Fei-Fei, L. (2018).Graph distillation for action detection with privileged http://modalities.In ECCV.)將模態(tài)差異納入來自源領(lǐng)域的特權(quán)信息,特權(quán)信息。引入了一種有向圖來探討不同模態(tài)之間的關(guān)系。每個(gè)頂點(diǎn)表示一個(gè)模態(tài),邊表示一個(gè)模態(tài)和另一個(gè)模態(tài)之間的連接強(qiáng)度。
5.5. 基于注意力的蒸餾(Attention-Based Distillation)
???????注意力機(jī)制能夠很好地反映神經(jīng)網(wǎng)絡(luò)中神經(jīng)元的激活情況,因此在知識(shí)蒸餾中引入了注意力機(jī)制,提高了學(xué)生模型的性能?;谧⒁饬C(jī)制的知識(shí)遷移的核心是定義注意力圖,將特征嵌入神經(jīng)網(wǎng)絡(luò)的各個(gè)層次。也就是說,利用注意力圖函數(shù)轉(zhuǎn)移特征嵌入知識(shí)。
5.6.無數(shù)據(jù)的蒸餾(Data-Free Distillation)
???????無數(shù)據(jù)蒸餾的方法提出的背景是克服由于隱私性、合法性、安全性和保密問題導(dǎo)致的數(shù)據(jù)缺失?!癲ata free”表明并沒有訓(xùn)練數(shù)據(jù),數(shù)據(jù)是新生成或綜合產(chǎn)生的。新生的數(shù)據(jù)可以利用GAN來產(chǎn)生。合成數(shù)據(jù)通常由預(yù)先訓(xùn)練過的教師模型的特征表示生成。
???????盡管無數(shù)據(jù)蒸餾在數(shù)據(jù)不可用的情況下顯示出了巨大的潛力,但如何生成高質(zhì)量的多樣化訓(xùn)練數(shù)據(jù)來提高模型的泛化能力仍然是一個(gè)非常具有挑戰(zhàn)性的任務(wù)。
5.7. 量化蒸餾(Quantized Distillation)
???????網(wǎng)絡(luò)量化通過將高精度網(wǎng)絡(luò)(如32位浮點(diǎn))轉(zhuǎn)換為低精度網(wǎng)絡(luò)(如2位和8位),降低了神經(jīng)網(wǎng)絡(luò)的計(jì)算復(fù)雜度。同時(shí),知識(shí)蒸餾的目標(biāo)是訓(xùn)練小模型,使其具有與復(fù)雜模型相當(dāng)?shù)男阅?。在師生框架下,利用量化過程提出了一些KD方法,如下圖所示;
5.8.終身蒸餾(Lifelong Distillation)
???????終身學(xué)習(xí)包括持續(xù)學(xué)習(xí)、持續(xù)學(xué)習(xí)和元學(xué)習(xí),旨在以與人相似的方式學(xué)習(xí)。它積累了以前學(xué)到的知識(shí),并將所學(xué)到的知識(shí)轉(zhuǎn)化為未來的學(xué)習(xí),知識(shí)蒸餾提供了一種有效的方法來保存和轉(zhuǎn)移學(xué)習(xí)到的知識(shí),而不會(huì)造成災(zāi)難性的遺忘。最近,越來越多的KD變體被開發(fā)出來,它們是基于終身學(xué)習(xí)的。
5.9.基于神經(jīng)架構(gòu)搜索的蒸餾(NAS-Based Distillation)
???????神經(jīng)架構(gòu)搜索(NAS),它是最流行的自動(dòng)機(jī)器學(xué)習(xí)(或AutoML)之一,旨在自動(dòng)識(shí)別深度神經(jīng)模型和自適應(yīng)學(xué)習(xí)合適的深度神經(jīng)結(jié)構(gòu)。在知識(shí)蒸餾中,知識(shí)轉(zhuǎn)移的成功不僅取決于教師的知識(shí),還取決于學(xué)生的架構(gòu)。然而,大教師模式和小學(xué)生模式之間可能存在能力差距,使得學(xué)生很難從老師那里學(xué)得好。為了解決這一問題,采用神經(jīng)結(jié)構(gòu)搜索尋找合適的學(xué)生結(jié)構(gòu)。
6.性能比較(Performance Comparison)
???????為了更好地證明知識(shí)蒸餾的有效性,總結(jié)了一些典型的KD方法在兩種流行的圖像分類數(shù)據(jù)集上的分類性能。這兩個(gè)數(shù)據(jù)集分別是CIFAR10和CIFAR100。兩者都有50000張訓(xùn)練圖像和10000張測(cè)試圖像,每一類都有相同數(shù)量的訓(xùn)練和測(cè)試圖像。為了進(jìn)行公平的比較,實(shí)驗(yàn)分類精度結(jié)果(%)的KD是直接從相應(yīng)的原始論文中獲取,本文報(bào)告了在使用不同類型的知識(shí)、蒸餾方案和教師/學(xué)生模型結(jié)構(gòu)時(shí),不同方法的性能。括號(hào)中的準(zhǔn)確率是教師模型和學(xué)生模型分別訓(xùn)練后的分類結(jié)果。
???????從上表性能比較中,可以總結(jié)出以下幾點(diǎn):
- 知識(shí)蒸餾可以在不同的深度模型上實(shí)現(xiàn);
- 通過知識(shí)蒸餾可以實(shí)現(xiàn)不同深度模型的模型壓縮 ;
- 基于協(xié)作學(xué)習(xí)的在線知識(shí)蒸餾可以顯著提高深度模型的性能;
- 自蒸餾可以很好地提高深度模型的性能 ;
- 離線和在線蒸餾方法通常分別傳遞基于特征的知識(shí)和基于響應(yīng)的知識(shí);
- 通過對(duì)高容量教師模型的知識(shí)轉(zhuǎn)移,可以提高輕量級(jí)深度模型(學(xué)生)的性能。
???????通過對(duì)不同知識(shí)蒸餾方法的性能比較,可以得出知識(shí)蒸餾是一種有效、高效的深度模型壓縮技術(shù)。
7.應(yīng)用(Applications)
???????知識(shí)蒸餾作為一種有效的深度神經(jīng)網(wǎng)絡(luò)壓縮和加速技術(shù),已廣泛應(yīng)用于人工智能的各個(gè)領(lǐng)域,包括視覺識(shí)別、語音識(shí)別、自然語言處理(NLP)和推薦系統(tǒng)。此外,知識(shí)蒸餾還可以用于其他目的,如數(shù)據(jù)隱私和作為對(duì)抗攻擊的防御。本節(jié)簡(jiǎn)要回顧了知識(shí)蒸餾的應(yīng)用。
KD in NLP
???????傳統(tǒng)的語言模型(如BERT)結(jié)構(gòu)復(fù)雜,耗費(fèi)大量的時(shí)間和資源。知識(shí)蒸餾是自然語言處理領(lǐng)域中廣泛研究的一種方法,其目的是獲得輕量級(jí)、高效、有效的語言模型。越來越多的KD方法被提出來解決大量的NLP任務(wù)。在這些基于KD的NLP方法中,大多數(shù)都屬于自然語言理解(NLU),其中許多基于自然語言理解的KD方法都被設(shè)計(jì)成任務(wù)特定蒸餾和多任務(wù)蒸餾。
???????以下是自然語言處理中知識(shí)蒸餾的一些總結(jié)。
- 知識(shí)蒸餾提供了高效、有效的輕量級(jí)語言深度模型。大容量教師模型可以將大量不同種類的語言數(shù)據(jù)中豐富的知識(shí)轉(zhuǎn)化為小容量學(xué)生模型,使學(xué)生能夠快速有效地完成許多語言任務(wù)。
- 考慮到多語言模型中的知識(shí)可以相互傳遞和共享,師生知識(shí)轉(zhuǎn)移可以輕松有效地解決多個(gè)多語言任務(wù)。
- 在深度語言模型中,序列知識(shí)可以有效地從大型網(wǎng)絡(luò)轉(zhuǎn)移到小型網(wǎng)絡(luò)中
8.總結(jié)和討論(Conclusion and Discussion)
???????本文從知識(shí)、蒸餾方案、師生體系結(jié)構(gòu)、蒸餾算法、性能比較和應(yīng)用等方面對(duì)知識(shí)蒸餾進(jìn)行了綜述,下面,主要討論了知識(shí)蒸餾面臨的挑戰(zhàn),并對(duì)知識(shí)蒸餾的未來研究提出了一些見解。
8.1.挑戰(zhàn)(Challenges)
- 不同知識(shí)來源的重要性,以及他們的整合方式,如何在一個(gè)統(tǒng)一的、互補(bǔ)的框架內(nèi)對(duì)不同類型的知識(shí)進(jìn)行建模仍然是一個(gè)挑戰(zhàn);
- 為了提高知識(shí)轉(zhuǎn)移的有效性,需要進(jìn)一步研究模型復(fù)雜度與現(xiàn)有蒸餾方案或其他新型蒸餾方案之間的關(guān)系。
- 如何設(shè)計(jì)一個(gè)有效的學(xué)生模型,或者構(gòu)建一個(gè)合適的教師模型,仍然是知識(shí)提煉中具有挑戰(zhàn)性的問題。 知識(shí)蒸餾的可解釋性。
???????盡管知識(shí)蒸餾的方法和應(yīng)用有大量的存在,但對(duì)知識(shí)蒸餾的理解,包括理論解釋和經(jīng)驗(yàn)評(píng)價(jià),仍然不足。教師和學(xué)生模型線性化的假設(shè),使得通過蒸餾研究學(xué)生學(xué)習(xí)特征的理論解釋成為可能。然而,要深刻理解知識(shí)蒸餾的概括性,特別是如何衡量知識(shí)的質(zhì)量或師生建筑的質(zhì)量,仍然是非常困難的。文章來源:http://www.zghlxwxcb.cn/news/detail-818962.html
8.2.未來方向(Future Directions)
???????為了提高知識(shí)蒸餾的性能,最重要的因素包括:什么樣的師生網(wǎng)絡(luò)架構(gòu),從教師網(wǎng)絡(luò)中學(xué)習(xí)到什么樣的知識(shí),在哪里提煉到學(xué)生網(wǎng)絡(luò)中。文章來源地址http://www.zghlxwxcb.cn/news/detail-818962.html
- 在現(xiàn)有的知識(shí)蒸餾方法中,討論知識(shí)蒸餾與其他各種壓縮方法相結(jié)合的相關(guān)著作很少;
- 知識(shí)蒸餾除了用于深度神經(jīng)網(wǎng)絡(luò)加速的模型壓縮外,由于師生結(jié)構(gòu)中知識(shí)傳遞的自然特性,知識(shí)蒸餾也可用于其他問題。比如,數(shù)據(jù)隱私、數(shù)據(jù)擴(kuò)充、對(duì)抗訓(xùn)練和多模態(tài)。
到了這里,關(guān)于【知識(shí)蒸餾】知識(shí)蒸餾(Knowledge Distillation)技術(shù)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!