當前位置:
首頁 > 最新 > 蒸餾神經網路到底在蒸餾什麼?

蒸餾神經網路到底在蒸餾什麼?

Hinton, Geoffrey, Oriol Vinyals, and Jeff Dean."Distilling the knowledge in a neural network." arXiv preprint arXiv:1503.02531 (2015)

1 引言

蒸餾神經網路[1],是14年Hinton提出來的一個概念,其最本質的思想是來源於昆蟲記裡面的故事:

「蝴蝶以毛毛蟲的形式吃樹葉積攢能量逐漸成長,最後變換成蝴蝶這一終極形態來完成繁殖。」

雖然是同一個個體,但是在面對不同環境以及不同任務時,個體的形態卻是非常不同。不同的形態是為了完成特異性的任務而產生的變化,從而使個體能夠更好的適應新的環境。

比如毛毛蟲的形態是為了更方便的吃樹葉,積攢能量,但是為了增大活動範圍提高繁殖幾率,毛毛蟲要變成蝴蝶來完成這樣的繁殖任務。蒸餾神經網路,其本質上就是要完成一個從毛毛蟲到蝴蝶的轉變。

因為在使用神經網路時,訓練時候的模型和實際應用的模型往往是相同的,就好像一直是一個毛毛蟲,既做了吃樹葉積累能量的事情,又去做繁殖這項任務,既臃腫又效率低下。

所以使用同樣形態的模型,一方面會導致模型不能針對特定性的任務來快速學習,另一方面實際應用中如果也是用訓練時非常龐大的模型會造成使用開銷負擔過重。

蒸餾神經網路想做的事情,本質上更接近於遷移學習(Transfer Learning [2]),當然也可從模型壓縮(Model Compression)[3]的角度取理解蒸餾神經網路。

Hinton的這篇論文嚴謹的數學思想推導並不複雜,但是主要是通過巧妙的實驗設計來驗證了蒸餾神經網路的可行性,所以本專題主要從蒸餾的思想以及實驗的設計來介紹蒸餾神經網路。而本文主要介紹設計思想部分。

2 設計思想

在用神經網路訓練大規模數據集時,為了處理複雜的數據分布:一種做法是建立複雜的神經網路模型,例如含有上百層的殘差網路,這種複雜的網路往往含有多達幾百萬個參數;

另一種做法往往會混合多種模型,將幾個大規模的神經網路在同一個數據集上訓練好,然後綜合(ensemble)多個模型,得到最終的分類結果。

但是這種複雜模型,一是在新的場景下重新訓練成本過高,二是由於模型過於龐大而難以大規模部署(deployment

所以,最基本的想法就是將大模型學習出來的知識作為先驗,將先驗知識傳遞到小規模的神經網路中,之後實際應用中部署小規模的神經網路。這樣做有三點依據:

大規模神經網路得到的類別預測包含了數據結構間的相似性

有了先驗的小規模神經網路只需要很少的新場景數據就能夠收斂;

Softmax函數隨著溫度變數(temperature)的升高分布更均勻

數據結構間的相似性:

神經網路模型在預測最終的分類結果時,往往是通過softmax函數產生概率分布的:

(1)

這裡將T定義為溫度參數,是一個超參數,q_i是i類的概率值大小。

比如一個大規模網路,如ImageNet這樣的大網路,能夠預測上千種類別,正確類別的概率值能夠達到0.9,錯誤類的概率值可能分布在10^-8~10^-3這個區間中。雖然每個錯誤類別的的概率值都很小,但是10^-3還是比10^-8高了五個數量級,這也反映了數據之間的相似性。

比如一隻狗,在貓這個類別下的概率值可能是0.001,而在汽車這個類別下的概率值可能就只有0.0000001不到,這能夠反映狗和貓比狗和汽車更為相似,這就是大規模神經網路能夠得到的更為豐富的數據結構間的相似信息。

將大規模神經網路的soft target作為訓練目標

由於大規模神經網路在訓練的時候雖然是通過0-1編碼來訓練的,由於最後一層往往使用softmax層來產生概率分布,所以這個概率分布其實是一個比原來的0-1 編碼硬目標(hard target)更軟的軟目標(soft target)。這個分布是由很多(0,1)之間的數值組成的。

同一個樣本,用在大規模神經網路上產生的軟目標來訓練一個小的網路時,因為並不是直接標註的一個硬目標,學習起來會更快收斂。

更巧妙的是,這個樣本我們甚至可以使用無標註的數據來訓練小網路,因為大的神經網路將數據結構信息學習保存起來,小網路就可以直接從得到的soft target中來獲得知識。

這個做法類似學習了樣本空間嵌入(embedding)信息,從而利用空間嵌入信息學習新的網路。

隨著溫度上升,軟目標分布更均勻

公式(1)中,T參數是一個溫度超參數,按照softmax的分布來看,隨著T參數的增大,這個軟目標的分布更加均勻。

因此:

首先用較大的T值來訓練模型,這時候複雜的神經網路能夠產生更均勻分布的軟目標;

之後小規模的神經網路用相同的T值來學習由大規模神經產生的軟目標,接近這個軟目標從而學習到數據的結構分布特徵;

最後在實際應用中,將T值恢復到1,讓類別概率偏向正確類別。

所以,蒸餾神經網路取名為蒸餾(Distill),其實是一個非常形象的過程。

我們把數據結構信息和數據本身當作一個混合物,分布信息通過概率分布被分離出來。首先,T值很大,相當於用很高的溫度將關鍵的分布信息從原有的數據中分離,之後在同樣的溫度下用新模型融合蒸餾出來的數據分布,最後恢復溫度,讓兩者充分融合。這也可以看成Prof. Hinton將這一個遷移學習過程命名為蒸餾的原因。

參考文獻:

[1] Hinton,Geoffrey, Oriol Vinyals, and Jeff Dean. "Distilling the knowledge in aneural network." arXiv preprint arXiv:1503.02531 (2015).

[2] Pan,Sinno Jialin, and Qiang Yang. "A survey on transfer learning." IEEE Transactionson knowledge and data engineering 22.10 (2010): 1345-1359.

[3] Buciluǎ, Cristian, Rich Caruana, andAlexandru Niculescu-Mizil. "Model compression." Proceedings of the12th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2006.

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 論文收割機 的精彩文章:

應用向:從 App Store 的排名變化,發現刷榜的水軍

TAG:論文收割機 |