訂閱
糾錯
加入自媒體

一文讀懂什么是知識蒸餾

前言:

知識蒸餾是一種在繁瑣的模型中提煉知識并將其壓縮為單個模型的方法,以便可以將其部署到實際應(yīng)用中。AI的教父Geoffrey Hinton和他在Google的兩個同事Oriol Vinyals和Jeff Dean于2015年引入了知識蒸餾。

知識蒸餾的簡要概述

知識蒸餾是指將笨拙的模型(教師)的學(xué)習(xí)行為轉(zhuǎn)移到較小的模型(學(xué)生),其中,教師產(chǎn)生的輸出被用作訓(xùn)練學(xué)生的“軟目標(biāo)”。通過應(yīng)用此方法,作者發(fā)現(xiàn)他們在MNIST數(shù)據(jù)集上取得了令人驚訝的結(jié)果,并表明通過將模型集成中的知識提取到單個模型中可以獲得顯著的改進(jìn)。

更多內(nèi)容請關(guān)注公眾號CV技術(shù)指南,專注于計算機(jī)視覺的技術(shù)總結(jié),最新技術(shù)跟蹤。

知識蒸餾用于圖像分類

Hinton和他的兩位合著者在論文中首先介紹了他們對圖像分類任務(wù)的知識蒸餾:在神經(jīng)網(wǎng)絡(luò)中提煉知識。

如本文所述,知識蒸餾的最簡單形式是在具有軟目標(biāo)分布的傳遞集上訓(xùn)練蒸餾模型。到目前為止,我們應(yīng)該知道有兩個目標(biāo)用于訓(xùn)練學(xué)生模型。一個是正確的標(biāo)簽(硬目標(biāo)),另一個是從教師網(wǎng)絡(luò)生成的軟標(biāo)簽(軟目標(biāo))。

因此,目標(biāo)函數(shù)是兩個不同目標(biāo)函數(shù)的加權(quán)平均值。 第一個目標(biāo)函數(shù)是學(xué)生預(yù)測和軟目標(biāo)之間的交叉熵?fù)p失,第二個目標(biāo)函數(shù)是學(xué)生輸出和正確標(biāo)簽之間的交叉熵?fù)p失。 作者還提到,最好的結(jié)果通常是通過在第二目標(biāo)函數(shù)上使用較低的權(quán)重來獲得的。

實驗結(jié)果如下所示

知識蒸餾的簡要概述

知識蒸餾的簡要概述

知識蒸餾用于目標(biāo)檢測

Guobin Chen和他的合著者在NeurIPS 2017中發(fā)表了他們的知識蒸餾與提示學(xué)習(xí)相結(jié)合的對象檢測研究,該論文通過知識蒸餾學(xué)習(xí)有效的對象檢測模型。

在他們的方法中,他們還使用提示,該提示是從教師的中間層獲得的特征圖,用于指導(dǎo)學(xué)生盡可能地了解教師的行為。 此外,為了實現(xiàn)最佳的蒸餾知識,必須有一個適應(yīng)層,該適應(yīng)層將在后面討論。 Faster-RCNN是本文實驗中使用的目標(biāo)檢測網(wǎng)絡(luò)。他們的學(xué)習(xí)方案如下圖所示:

知識蒸餾的簡要概述

目標(biāo)函數(shù)如下:

知識蒸餾的簡要概述

知識蒸餾的簡要概述

其中RCN和RPN分別代表回歸分類網(wǎng)絡(luò)和區(qū)域提議網(wǎng)絡(luò);N和M分別是RCN和RPN的批量大小;L_RCN,L_RPN和L_Hint分別是RCN,RPN和提示的損失;λ(通常為1)和γ(通常設(shè)置為0.5)是用于控制最終損耗的超參數(shù)。

Hint learning

Adriana Romero在《FitNets: Hints for Thin Deep Nets》一文中證明,通過利用教師網(wǎng)絡(luò)的中間表示作為提示來幫助學(xué)生進(jìn)行訓(xùn)練,可以提高學(xué)生網(wǎng)絡(luò)的性能。從這個意義上講,提示特征Z(從教師的中間層獲得的特征圖)和引導(dǎo)特征V(學(xué)生的中間層的特征圖)之間的損失是使用L1或L2距離計算的。

下圖顯示了從在WAYMO數(shù)據(jù)集上訓(xùn)練的預(yù)訓(xùn)練YOLOv4模型中提取的特征圖,這是我的與知識蒸餾進(jìn)行目標(biāo)檢測有關(guān)的項目之一。 在這些示例中,輸入圖像的大小調(diào)整為800x800。

知識蒸餾的簡要概述

知識蒸餾和提示學(xué)習(xí)

Hint learning的使用要求提示功能和引導(dǎo)功能應(yīng)具有相同的形狀(高度x寬度x通道)。同樣,提示特征和引導(dǎo)特征將永遠(yuǎn)不會在相似的特征空間中,因此,使用自適應(yīng)層(通常是1x1卷積層)來幫助改善知識從教師到學(xué)生的轉(zhuǎn)移。

知識蒸餾的簡要概述

下圖描述了我在目標(biāo)檢測項目中正在研究的學(xué)習(xí)方案,其中,我正在使用一個具有三個檢測級別的小型網(wǎng)絡(luò),從預(yù)先訓(xùn)練的YOLOv4中提取知識。

知識蒸餾的簡要概述

Guobin Chen在將知識蒸餾與Hint learning相結(jié)合進(jìn)行目標(biāo)檢測時顯示出優(yōu)異的結(jié)果。

知識蒸餾的簡要概述

Conclusion

在這篇文章中,我簡要介紹了知識蒸餾和Hint learning。知識蒸餾被認(rèn)為是一種將繁瑣的模型集成知識轉(zhuǎn)換成較小的蒸餾模型的有效方法。Hint learning和知識蒸餾的結(jié)合是提高神經(jīng)網(wǎng)絡(luò)性能的一種非常強(qiáng)大的方案。

本文來源于公眾號CV技術(shù)指南的論文分享系列,更多內(nèi)容請掃描文末二維碼關(guān)注公眾號。

最近把公眾號(CV技術(shù)指南)所有的技術(shù)總結(jié)打包成了一個pdf,在公眾號中回復(fù)關(guān)鍵字“技術(shù)總結(jié)”可獲取。

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    掃碼關(guān)注公眾號
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯
    x
    *文字標(biāo)題:
    *糾錯內(nèi)容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網(wǎng)安備 44030502002758號