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

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

深度學習中的3個秘密:集成,知識蒸餾和自蒸餾

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

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

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

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

深度學習中的三個神秘之處

神秘之處1:集成

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

圖1:在深度學習應用中,集成可以提高測試精度的性能,但這種精度的提高無法通過直接訓練模型的平均值來實現(xiàn)。

神秘之處2:知識蒸餾

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

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

圖2:知識蒸餾和自蒸餾也提高了深度學習的性能。

神秘之處3:自蒸餾

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

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

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

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

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

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

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

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

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

集成 vs 減少單個模型的誤差

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

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

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

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

圖4:當輸入為類高斯時,實驗表明集成并沒有提高測試精度。

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

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

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

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

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

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

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

第一點意味著,不同網(wǎng)絡的集成將收集所有這些可學習的視圖特征,從而實現(xiàn)更高的測試精度。第二點意味著單個模型不能學習所有的視圖特性,不是因為它們沒有足夠的容量,而是因為沒有足夠多的訓練數(shù)據(jù)來學習這些視圖。大多數(shù)數(shù)據(jù)已經(jīng)用現(xiàn)有的視圖特征進行了正確的分類,所以在這個訓練階段它們基本上不提供梯度。

知識蒸餾:讓單個模型去學習多個視圖

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

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

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

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

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

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

總結(jié)

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

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

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
ATXMEGA128A4U-AU 1 Microchip Technology Inc IC MCU 8BIT 128KB FLASH 44TQFP

ECAD模型

下載ECAD模型
$4.91 查看
STM32F207ZGT6TR 1 STMicroelectronics High-performance Arm Cortex-M3 MCU with 1 Mbyte of Flash memory, 120 MHz CPU, ART Accelerator, Ethernet

ECAD模型

下載ECAD模型
$13.88 查看
MCF52258CAG66 1 Rochester Electronics LLC 32-BIT, FLASH, 66MHz, RISC MICROCONTROLLER, PQFP144, 20 X 20 MM, ROHS COMPLIANT, LQFP-144
$12.68 查看

相關推薦

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

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

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