加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 深度學(xué)習(xí)中的三個(gè)神秘之處
    • 神經(jīng)網(wǎng)絡(luò)集成 vs 特征圖集成
    • 集成 vs 減少單個(gè)模型的誤差
    • 多視圖數(shù)據(jù):新方法去證明深度學(xué)習(xí)中的集成
    • 知識(shí)蒸餾:讓單個(gè)模型去學(xué)習(xí)多個(gè)視圖
    • 自蒸餾:隱式地結(jié)合集成和知識(shí)蒸餾
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

深度學(xué)習(xí)中的3個(gè)秘密:集成,知識(shí)蒸餾和自蒸餾

04/15 20:30
2530
閱讀需 17 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

訓(xùn)練好的模型,用自己蒸餾一下,就能提高性能,是不是很神奇,這里面的原理到底是什么呢,這要從模型集成開(kāi)始說(shuō)起。

在現(xiàn)在的標(biāo)準(zhǔn)技術(shù)下,例如過(guò)參數(shù)化、batch-normalization和添加殘差連接,“現(xiàn)代”神經(jīng)網(wǎng)絡(luò)訓(xùn)練 —— 至少對(duì)于圖像分類(lèi)任務(wù)和許多其他任務(wù)來(lái)說(shuō) —— 通常是相當(dāng)穩(wěn)定的。使用標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練算法(通常是帶動(dòng)量的SGD),學(xué)習(xí)模型的表現(xiàn)一貫良好,不僅在訓(xùn)練精度方面,甚至在測(cè)試精度方面,無(wú)論在訓(xùn)練過(guò)程中使用的是哪種隨機(jī)初始化或隨機(jī)數(shù)據(jù)順序。例如,用不同的隨機(jī)種子在CIFAR-100數(shù)據(jù)集上訓(xùn)練相同的WideResNet-28-10架構(gòu)10次,平均測(cè)試精度為81.51%,而標(biāo)準(zhǔn)偏差僅為0.16%。

在一篇新論文“Towards Understanding Ensemble, Knowledge Distillation, and Self-Distillation in Deep Learning“中,我們專(zhuān)注于研究神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過(guò)程中純粹由于隨機(jī)化產(chǎn)生的差異。我們提出了以下問(wèn)題:除了測(cè)試準(zhǔn)確性上的微小偏差外,從不同隨機(jī)初始化中訓(xùn)練出來(lái)的神經(jīng)網(wǎng)絡(luò)是否學(xué)習(xí)了非常不同的函數(shù)?如果是這樣,差異從何而來(lái)?我們?nèi)绾螠p少這種差異,使神經(jīng)網(wǎng)絡(luò)更穩(wěn)定,甚至更好?這些問(wèn)題并非微不足道,它們與深度學(xué)習(xí)中廣泛使用的三種技術(shù)有關(guān)。

深度學(xué)習(xí)中的三個(gè)神秘之處

神秘之處1:集成

使用不同隨機(jī)種子的學(xué)習(xí)網(wǎng)絡(luò)F1,…F10 —— 盡管具有非常相似的測(cè)試性能 —— 被觀察到與非常不同的函數(shù)相關(guān)聯(lián)。實(shí)際上,使用一種著名的技術(shù)叫做集成(ensemble),只需對(duì)這些獨(dú)立訓(xùn)練的網(wǎng)絡(luò)的輸出進(jìn)行無(wú)加權(quán)的平均,就可以在許多深度學(xué)習(xí)應(yīng)用中獲得測(cè)試時(shí)性能的巨大提升。(參見(jiàn)下面的圖1。)這意味著單個(gè)函數(shù)F1,…F10必須是不同的。然而,為什么集成的效果會(huì)突然提高呢?另外,如果一個(gè)人直接訓(xùn)練(F1+?+F10)/10,為什么性能提升會(huì)消失?

圖1:在深度學(xué)習(xí)應(yīng)用中,集成可以提高測(cè)試精度的性能,但這種精度的提高無(wú)法通過(guò)直接訓(xùn)練模型的平均值來(lái)實(shí)現(xiàn)。

神秘之處2:知識(shí)蒸餾

盡管集成在提高測(cè)試時(shí)性能方面非常出色,但在推理時(shí)間(即測(cè)試時(shí)間)上,它的速度會(huì)慢10倍:我們需要計(jì)算10個(gè)神經(jīng)網(wǎng)絡(luò)的輸出,而不是一個(gè)。當(dāng)我們?cè)诘湍芎?、移?dòng)環(huán)境中部署這樣的模型時(shí),這是一個(gè)問(wèn)題。為了解決這個(gè)問(wèn)題,提出了一種叫做知識(shí)蒸餾的開(kāi)創(chuàng)性技術(shù)。也就是說(shuō),知識(shí)蒸餾只需要訓(xùn)練另一個(gè)單獨(dú)的模型就可以匹配集成的輸出。在這里,對(duì)貓圖像的集成輸出(也稱(chēng)為“dark knowledge”)可能是類(lèi)似“80% cat + 10% dog + 10% car”,而真正的訓(xùn)練標(biāo)簽是“100% cat”。(參見(jiàn)下面的圖2。)

事實(shí)證明,經(jīng)過(guò)訓(xùn)練的單個(gè)模型,在很大程度上,可以匹配10倍大的集成測(cè)試時(shí)的表現(xiàn)。然而,這導(dǎo)致了更多的問(wèn)題。為什么與真實(shí)的標(biāo)簽相比,匹配集成的輸出能給我們更好的測(cè)試精度?此外,我們是否可以對(duì)知識(shí)蒸餾后的模型進(jìn)行集成學(xué)習(xí)以進(jìn)一步提高測(cè)試精度?

圖2:知識(shí)蒸餾和自蒸餾也提高了深度學(xué)習(xí)的性能。

神秘之處3:自蒸餾

注意,知識(shí)蒸餾至少直觀上是有意義的:教師集成模型的測(cè)試準(zhǔn)確率為84.8%,所以單個(gè)學(xué)生模型的測(cè)試準(zhǔn)確率可以達(dá)到83.8%。下面的現(xiàn)象,被稱(chēng)為自蒸餾(或“Be Your Own Teacher”),是完全令人驚訝的 ——通過(guò)對(duì)同一架構(gòu)的單個(gè)模型執(zhí)行知識(shí)蒸餾,測(cè)試的準(zhǔn)確性也可以得到提高。(請(qǐng)參見(jiàn)上面的圖2。) 考慮一下這個(gè)問(wèn)題:如果訓(xùn)練一個(gè)單獨(dú)的模型只能得到81.5%的測(cè)試準(zhǔn)確率,那么為什么“再次訓(xùn)練同一個(gè)模型把自己當(dāng)作老師”突然可以把測(cè)試準(zhǔn)確率提高到83.5%呢?

神經(jīng)網(wǎng)絡(luò)集成 vs 特征圖集成

大多數(shù)現(xiàn)有的集成理論只適用于個(gè)體模型本質(zhì)上不同的情況(例如,使用不同變量子集的決策樹(shù))或在不同的數(shù)據(jù)集上訓(xùn)練(如bootstrapping)。在深度學(xué)習(xí)世界中,單獨(dú)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)具有相同的架構(gòu),使用相同的訓(xùn)練數(shù)據(jù) —— 它們唯一的區(qū)別在于訓(xùn)練過(guò)程中的隨機(jī)性。

也許現(xiàn)有的深度學(xué)習(xí)中最接近去匹配集成定理的是隨機(jī)特征映射的集成。一方面,將多個(gè)隨機(jī)(特定的)特征的線性模型結(jié)合在一起可以提高測(cè)試時(shí)的性能,因?yàn)樗黾恿颂卣鞯臄?shù)量。另一方面,在某些參數(shù)上,神經(jīng)網(wǎng)絡(luò)權(quán)重可以保持非常接近他們的初始化(稱(chēng)為neural tangent kernel、NTK,regime),以及由此產(chǎn)生的網(wǎng)絡(luò)僅僅是學(xué)習(xí)一個(gè)由完全隨機(jī)初始化決定的特定的特征映射的線性函數(shù)。當(dāng)將兩者結(jié)合起來(lái)時(shí),我們可以推測(cè)深度學(xué)習(xí)中的集成與隨機(jī)特征映射中的集成原理相同。這就引出了下面的問(wèn)題:

與隨機(jī)特征映射(即NTK特征映射)相比,集成/知識(shí)蒸餾在深度學(xué)習(xí)中的工作方式是否相同?

**回答:并非如此,下面圖3的實(shí)驗(yàn)證明了這一點(diǎn)。**此圖比較了深度學(xué)習(xí)中的集成和知識(shí)蒸餾與隨機(jī)特征映射的線性模型的集成和知識(shí)蒸餾。集成在兩種情況下都有效。然而,圖3中的準(zhǔn)確性清楚地表明,它們的工作原因完全不同。具體地說(shuō):

    與深度學(xué)習(xí)的情況不同,隨機(jī)特征設(shè)置下集成的優(yōu)越性能不能被蒸餾為單個(gè)模型。例如,在圖3中,neural tangent kernel(NTK)模型在CIFAR-10數(shù)據(jù)集上的集成精度達(dá)到了70.54%,但經(jīng)過(guò)知識(shí)精餾后,集成精度下降到66.01%,甚至低于個(gè)體模型的測(cè)試精度66.68%。在深度學(xué)習(xí)中,直接訓(xùn)練模型的平均值(F1+?+F10)/10與訓(xùn)練單個(gè)模型Fi相比沒(méi)有任何好處,而在隨機(jī)特征設(shè)置中,訓(xùn)練平均值的效果優(yōu)于單個(gè)模型和它們的集成。例如,在圖3中,NTK模型的集成達(dá)到了70.54%的精度,但這甚至比直接訓(xùn)練10個(gè)模型的平均的精度72.86%還要差。

圖3:集成在隨機(jī)特征映射中起作用(但原因與深度學(xué)習(xí)完全不同),而知識(shí)蒸餾在隨機(jī)特征映射中不起作用。

神經(jīng)網(wǎng)絡(luò)的原因是執(zhí)行(層次特性學(xué)習(xí)) —— 單個(gè)Fi模型,盡管使用不同的隨機(jī)初始化,仍有能力學(xué)習(xí)相同的特性集。因此,與單個(gè)網(wǎng)絡(luò)相比,它們的平均幾乎無(wú)法提供額外的能力。然而,在線性設(shè)置中,每個(gè)Fi使用一組不同的特定的特征。因此,盡管結(jié)合這些特征(使用集合或直接訓(xùn)練平均值)確實(shí)有優(yōu)勢(shì),但由于特征的稀缺性,它們不能被提煉成單個(gè)模型。

集成 vs 減少單個(gè)模型的誤差

除了隨機(jī)特征的集合外,人們還可以推測(cè),由于神經(jīng)網(wǎng)絡(luò)的高度復(fù)雜性,每個(gè)單獨(dú)的模型Fi可能學(xué)習(xí)一個(gè)函數(shù)Fi (x)=y+ξi,其中ξi是一些依賴(lài)于訓(xùn)練過(guò)程中使用的隨機(jī)性的噪聲。經(jīng)典統(tǒng)計(jì)表明,如果所有的ξi都是大致獨(dú)立的,那么對(duì)它們平均可以大大減少噪聲。因此,

“集成減少誤差”是集成可以讓性能提升的原因嗎?

答案:我們的證據(jù)表明,這種減少誤差的假設(shè)在深度學(xué)習(xí)的背景下是非常值得懷疑的:

    集成不會(huì)永遠(yuǎn)提高測(cè)試精度:當(dāng)集成超過(guò)100個(gè)單獨(dú)的模型時(shí),與集成超過(guò)10個(gè)單獨(dú)的模型相比,通常沒(méi)有區(qū)別。因此,100ξi的均值與10ξi的相比不再減少方差 —— 這表明ξi的(1)可能不是獨(dú)立的,(2)可能是有偏的,因此其均值不為零。在(1)的情況下,很難討論通過(guò)對(duì)這些算子的平均可以減少多少誤差。即使人們希望接受理想主義的信念即(1)不會(huì)發(fā)生,所有的ξi都是有偏的,用符號(hào)表示的話,F(xiàn)i(x)=y+ξ+ξi‘,其中ξ是一般性偏差,ξi '是獨(dú)立偏差。那么為什么知識(shí)蒸餾能工作呢?在集成之后,我們期望輸出可以接近y+ξ ,也就是具有一般性的偏差ξ。那么,為什么使用具有誤差ξ的輸出(也稱(chēng)為 dark knowledge)比原來(lái)訓(xùn)練的真實(shí)標(biāo)記更好呢?在圖4中,我們看到神經(jīng)網(wǎng)絡(luò)的集成學(xué)習(xí)并不總是提高測(cè)試精度——至少在輸入是類(lèi)似高斯的情況下是這樣。換句話說(shuō),在這些網(wǎng)絡(luò)中,“平均這些數(shù)據(jù)”并不會(huì)導(dǎo)致任何精度的提高。因此,我們需要更仔細(xì)地理解深度學(xué)習(xí)中的集成,而不是像“減少誤差”這樣的一般性說(shuō)法。

圖4:當(dāng)輸入為類(lèi)高斯時(shí),實(shí)驗(yàn)表明集成并沒(méi)有提高測(cè)試精度。

多視圖數(shù)據(jù):新方法去證明深度學(xué)習(xí)中的集成

由于集成不太可能在非結(jié)構(gòu)化的隨機(jī)輸入下工作(見(jiàn)圖4),我們必須查看數(shù)據(jù)中的特殊結(jié)構(gòu)以正確理解它。

在我們的新工作中,我們建議研究一種可以在許多深度學(xué)習(xí)擅長(zhǎng)的數(shù)據(jù)集中找到的共同結(jié)構(gòu)。特別是在視覺(jué)數(shù)據(jù)集中,對(duì)象通??梢允褂枚鄠€(gè)視圖進(jìn)行分類(lèi)。例如,一輛汽車(chē)的圖像可以根據(jù)前燈、車(chē)輪或窗戶(hù)分類(lèi)為一輛汽車(chē)。對(duì)于汽車(chē)在圖像中的典型視圖,我們可以觀察到所有這些特征,使用其中一個(gè)特征將其分類(lèi)為汽車(chē)就足夠了。然而,也有一些從特定角度拍攝的汽車(chē)圖像,其中一個(gè)或多個(gè)特征是缺失的。例如,一輛汽車(chē)正面朝前的圖像可能沒(méi)有車(chē)輪的特征。我們?cè)趫D5中給出了實(shí)際的例子。

圖5:CIFAR-10訓(xùn)練后的ResNet-34第23層部分通道的可視化

我們將這種結(jié)構(gòu)稱(chēng)為“多視圖”,其中每個(gè)數(shù)據(jù)類(lèi)都有多個(gè)視圖特征。在大多數(shù)數(shù)據(jù)中,幾乎所有的視角特征都會(huì)顯示出來(lái),但在一些數(shù)據(jù)中,一些視圖特征可能會(huì)丟失。(更廣義地說(shuō),“多視圖”結(jié)構(gòu)不僅表現(xiàn)在輸入像素空間中,也表現(xiàn)在中間層中)

我們發(fā)展出一個(gè)定理,表明在多視圖數(shù)據(jù)下的神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程中,網(wǎng)絡(luò)會(huì):

    根據(jù)學(xué)習(xí)過(guò)程中使用的隨機(jī)性,快速學(xué)習(xí)這些視圖特征的子集。記住少數(shù)剩余的不能使用這些視圖特性正確分類(lèi)的數(shù)據(jù)。

第一點(diǎn)意味著,不同網(wǎng)絡(luò)的集成將收集所有這些可學(xué)習(xí)的視圖特征,從而實(shí)現(xiàn)更高的測(cè)試精度。第二點(diǎn)意味著單個(gè)模型不能學(xué)習(xí)所有的視圖特性,不是因?yàn)樗鼈儧](méi)有足夠的容量,而是因?yàn)闆](méi)有足夠多的訓(xùn)練數(shù)據(jù)來(lái)學(xué)習(xí)這些視圖。大多數(shù)數(shù)據(jù)已經(jīng)用現(xiàn)有的視圖特征進(jìn)行了正確的分類(lèi),所以在這個(gè)訓(xùn)練階段它們基本上不提供梯度。

知識(shí)蒸餾:讓單個(gè)模型去學(xué)習(xí)多個(gè)視圖

在這項(xiàng)新工作中,我們繼續(xù)展示知識(shí)蒸餾的工作原理。在現(xiàn)實(shí)生活中,一些汽車(chē)圖像可能比其他圖像看起來(lái)“更像貓”:例如,一些汽車(chē)圖像的前燈看起來(lái)像貓的眼睛。當(dāng)這種情況發(fā)生時(shí),集成模型可以提供有意義的dark knowledge:例如,“汽車(chē)圖像X有10%像一只貓?!?/p>

現(xiàn)在來(lái)看看關(guān)鍵的觀察結(jié)果。當(dāng)訓(xùn)練一個(gè)單獨(dú)的神經(jīng)網(wǎng)絡(luò)模型時(shí),如果“前照燈”視圖沒(méi)有被學(xué)習(xí),那么即使剩余的視圖仍然可以正確地將圖像X標(biāo)記為一輛車(chē),它們也不能用來(lái)匹配“dark knowledge”圖像X是10%像一只貓。換句話說(shuō),在知識(shí)蒸餾過(guò)程中,個(gè)體模型被迫學(xué)習(xí)每一個(gè)可能的視圖特征,以匹配集成的性能。請(qǐng)注意,深度學(xué)習(xí)中知識(shí)提煉的關(guān)鍵是,作為神經(jīng)網(wǎng)絡(luò)的單個(gè)模型正在進(jìn)行特征學(xué)習(xí),因此能夠?qū)W習(xí)集成的所有特征。這與我們?cè)趯?shí)踐中觀察到的情況是一致的。(參見(jiàn)圖6)。

圖6:知識(shí)蒸餾已經(jīng)從集成中學(xué)習(xí)了大多數(shù)視圖特征,因此在知識(shí)蒸餾后對(duì)模型進(jìn)行集成學(xué)習(xí)不會(huì)提供更多的性能提升。

自蒸餾:隱式地結(jié)合集成和知識(shí)蒸餾

在這項(xiàng)新工作中,我們還為知識(shí)自蒸餾提供了理論支持(參見(jiàn)圖3)。訓(xùn)練一個(gè)單個(gè)模型以匹配另一個(gè)相同單個(gè)模型的輸出(但使用不同的隨機(jī)種子),以某種方式提高了性能。

在較高的層次上,我們把自蒸餾看作是集成蒸餾和知識(shí)蒸餾更緊密的結(jié)合。當(dāng)從隨機(jī)初始化學(xué)習(xí)單個(gè)模型F2以匹配單獨(dú)訓(xùn)練的單個(gè)模型F1的輸出時(shí),可以期望F2根據(jù)它自己的隨機(jī)初始化學(xué)習(xí)特征的子集。除此之外,F(xiàn)2也有動(dòng)機(jī)去學(xué)習(xí)F1已經(jīng)學(xué)習(xí)過(guò)的特征子集。換句話說(shuō),人們可以把這個(gè)過(guò)程看作是“集成學(xué)習(xí)兩個(gè)單獨(dú)的模型F1和F2,并將其蒸餾為F2。最終的學(xué)習(xí)模型F2可能不一定涵蓋數(shù)據(jù)集中所有的可學(xué)習(xí)視圖,但它至少有潛力學(xué)習(xí)所有可以通過(guò)集成學(xué)習(xí)覆蓋兩個(gè)單獨(dú)模型的視圖。這就是測(cè)試時(shí)性能提升的來(lái)源。

總結(jié)

在這項(xiàng)工作中,我們盡我們所知,展示了第一個(gè)理論證明,有助于理解集成在深度學(xué)習(xí)中的工作原理。我們也提供了實(shí)證證據(jù)來(lái)支持我們的理論和我們的“多視角”數(shù)據(jù)假設(shè)。我們認(rèn)為,我們的框架可以適用于其他情況。例如,使用隨機(jī)裁剪的數(shù)據(jù)增強(qiáng)可以被視為增強(qiáng)網(wǎng)絡(luò)學(xué)習(xí)“多視圖”的另一種方式。我們希望,在實(shí)踐中,我們關(guān)于神經(jīng)網(wǎng)絡(luò)如何在訓(xùn)練過(guò)程中提取特征的新理論觀點(diǎn),也可以幫助設(shè)計(jì)新的原則和方法,以提高神經(jīng)網(wǎng)絡(luò)的測(cè)試精度,并有可能與模型集成的測(cè)試精度相匹配。

英文原文:https://www.microsoft.com/en-us/research/blog/three-mysteries-in-deep-learning-ensemble-knowledge-distillation-and-self-distillation/

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
ATXMEGA128A1-CUR 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, PBGA100, 9 X 9 MM, 1.20 MM HEIGHT, 0.80 MM PITCH, GREEN, CBGA-100
$10.58 查看
ATXMEGA256D3-AUR 1 Microchip Technology Inc IC MCU 8BIT 256KB FLASH 64TQFP
$6.07 查看
PIC32MX575F512L-80I/PT 1 Microchip Technology Inc 32-BIT, FLASH, 80 MHz, RISC MICROCONTROLLER, PQFP100, 12 X 12 MM, 1 MM HEIGHT, LEAD FREE, PLASTIC, TQFP-100

ECAD模型

下載ECAD模型
$8.67 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

針對(duì)嵌入式人工智能,物聯(lián)網(wǎng)等專(zhuān)業(yè)技術(shù)分享和交流平臺(tái),內(nèi)容涉及arm,linux,android等各方面。

Arm64 ?;厮?>
				</a>
							</li>
						<li id=
  • Linux BSP實(shí)戰(zhàn)課(中斷篇):中斷控制器的驅(qū)動(dòng)實(shí)現(xiàn)
  • 查看更多