文章總結:Distilling the Knowledge in a Neural Network(蒸餾神經網絡)

<font size=3.2>git

Abstract:

在機器學習領域,ensemble learning是一種廣泛適用的用來提高模型表現的方法, 將經過ensemble learning訓練出的模型稱爲cubersome model, 但在這種狀況下,模型一般很大(即參數較多,複雜度較高),以致於在模型部署階段所須要的計算資源極爲昂貴,尤爲是對於一些以大型神經網絡做爲子學習器的集成模型。網絡

其中一種潛在的解決方法是,將cubersome model中的信息(knowledge)壓縮到一個單獨的模型(single model),將此過程稱爲distilling(蒸餾)app

1 Introduction

對於目標檢測或語音識別等任務,模型訓練所花費的大部分時間及計算資源是能夠接受的,但當模型部署到生產環境中,對模型所需資源的要求則會嚴格不少。能夠經過distilling(蒸餾)來提取cubersome model中的knowledge從而使模型更易部署。對於實現distilling(蒸餾)的阻礙之一在於,knowledge是一個比較抽象的概念,能夠認爲cubersome modelknowledge體現或者隱藏在cubersome model中的模型參數中,以致於很難在改變模型結構或參數的同時保留knowledge機器學習

cubersome model學習處理多分類任務時,廣泛使用最大似然函數(最大化對數機率log probability)來做爲目標函數, 這麼作的一個反作用是,當使用softmax做爲神經網絡的輸出層時,模型會賦值給一些非正確的類別(的機率),即便這些值很小,但在這些非正確分類的類別的機率值中,其中一些會相對更顯著,這些relative probalities of incorrect answers是很重要的信息,由於它隱含了cubersome model如何泛化generalize的信息(how the cumbersome model tends to generalize)。函數

一般,object function應儘可能反映任務的真實目標。若但願模型具備較好的泛化generalize能力,則須要information about the correct way to generalize, 一般此信息是unavailable的。咱們能夠用使cubersome model得到較強泛化能力的相同的方式來訓練small model,即集成一些small model,儘管這種方式訓練出的模型比單獨的small model要強,但相比cubersome model很難保證性能接近。性能

一種直觀的轉移cubersome model泛化能力的方法(transfer the generalization ability)是,將cubersome models生成的類別機率向量(class probilities produces by the cubersome model)做爲訓練small model的soft targets,此時可使用原始的training set或者transfer set。當soft targets具備較高的熵(entropy)時,其相對於hard target能夠對每種分類場景提供更大的信息量,這使得在訓練small model的時候可使用更小的數據量、更大的學習率、(以及也許更簡單的結構)學習

以MNIST數據集爲例,檔分類的真實值爲2時,hard target爲(0, 1, 0, ... , 0),模型的分類結果可能在數字3和7所對應的類別向量的位置的值分別爲pow(10, -6)和pow(10, -9),這表示一般數字2的形態,相對於數字7,更接近數字3, 這是valuable information,它揭示了關於樣本數據的類似結構(類似度)的信息,在此處,能夠理解爲此信息能夠揭示哪些數字2的樣本更像數字3,哪些數字2的樣本更像數字7。但問題在於,非正確類別在類別向量中所對應的值爲0或一個很小的實數對transfer stage時的cross-entropy的值影響很小。關於此問題的一個解法爲,使用logits(the inputs to the final softmax)而不是類別向量probabilities vector(probabilities produced by the softmax)做爲訓練small model時的targets。訓練時的object是最小化cubersome model的logits和small model的logits之間MSE。一個更通用的解法,叫作distillation,它會用到<font color=green>temperature of the final softmax</font>,經過調整<font color=green>temperature</font>,可使cubersome model產生一個<font color=blue>suitably soft set of targets</font>,此target能夠在cross entropy的值的層面上對於one-hot vector和probabilities vector有一個較好的區分,從而使small model得以繼續訓練。ui

用來訓練small model的<font color=green>transfer set</font>能夠由unlabeled data或original training set組成。在訓練small model時,促使small model儘量進行正確分類的同時,讓其logits儘量接近經過cubersome model得到的soft targets。lua

2 Distillation

在神經網絡模型中,<font color=green>softmax function</font>將logits, $z_i$轉化爲<font color=green>class probabilities vector</font>, 記爲($q_1$, $q_2$, ... , $q_n$)。每類所對應的機率記爲$q_i$, 計算方法爲:orm

$q_i = exp(z_i/T) / (\sum_{j}exp(z_j/T))$

其中$T$爲<font color=green>Temperature</font>,經常使用取值爲1。當使用更大的T時,會生成<font color=blue>softer probability distribution over classes</font>。

最簡單的distillation的形式是,使cubersome model以較大的temperature值計算probability distribution,並以此做爲transfer set中的soft target來訓練small model,經過這種方式來轉移cubersome model中的knowledge到<font color=green>distilled model</font>(small model),在訓練distilled model時須要使用相同的temperature值,<font color=blue>但在完成訓練以後,應在預測階段使用tmeperature=1</font>。

在將correct labels加入transfer set後能夠進一步提高distilled model的表現。此時,訓練時的objective function實質兩部分的加權平均,第一部分爲distilled model和cubersome model在soft targets(使用較高temperature計算的probability distribution vector)的交叉熵(cross entropy),第二部分爲兩者關於correct label(hard targets)的交叉熵。

一般,把objective function的第二部分權重設置的相對較低能夠獲得更好的結果,這是由於,上文提到的的objective function的第一部分在求梯度以後會帶有$1/T^2$項,此時objective function的第一部分與第二部分在量級(magnitudes)上是不一樣的,故首先要確保時objective function的第一部分與第二部分對objective function的相對貢獻(relative contribution)幾乎不變(即控制此變量),方式是首先用$T^2$乘以objective function的第一部分,而後計算兩項的加權平均值。

2.1 Matching logits is a special case of distillation

在transfer set中,每一個case(unit)都會貢獻在某一方向的梯度$dC/dz_i$,對應於distilled model的每一個logit,$z_i$。若cubersome model的logits,$v_i$對應其計算的soft target probilities $p_i$(的分子部分),且使transfer learning時temperature的值爲$T$,此時對應$z_i$的梯度爲:

$\partial C / \partial z_i = (q_i - p_i) / T = (e^{z_i/T}/\sum_je^{z_j/T} - e^{v_i/T}/\sum_je^{v_j/T})/T$

當temperature的值$T$相對logits的量級較大時,由$e^x$的泰勒展開可得:

$\partial C / \partial z_i \approx ((1+z_i/T)/(N+\sum_j{z_j/T}) - (1+v_i/T)/(N+\sum_j{v_j/T}))$

若假設logits對於每一個transfer case是零均值的(即假設會對logits所對應的layer作normalization),即$\sum_j{z_j} = \sum_j{v_j} = 0$,這次上式變形爲:

$\partial C / \partial z_i \approx (z_i - v_i) / (NT^2)$

所以,當限定temperature取較大的值時且logits layer爲0均值時,distillation在logit,$z_i$上能夠等價爲最小化$1 / 2(z_i - v_i)^2$(此時可最大化$C$在$z_i$上的梯度)。

當temperature的值相對較小時,梯度會相對大,這是很好的現象,由於即便$z_i$與$v_i$很接近,依然能夠獲得相對顯著的梯度,但同時distillation將不會重點關注logits間的matching問題。另外一方面,當logit很負(very negative)時,計算probability distribution vector時其所對應項的分子,$exp(z_i/T)$會很小,這也是對distillation頗有價值的信息,若distillation將不會重點關注logits,則此部分信息很容易丟失。所以,在temperature太小時distillation momdel將沒法捕獲cubersome model中全部的知識。

綜上,temperature的值較大時有助於幫助distillation model捕獲cubersome model中更多的知識,temperature的值較小時可使logits對應的梯度相對顯著,因子temperature應取intermediate value。

3 Preliminary experiments on MNIST

實驗中使用的是兩個隱含層的神經網絡模型,每層1200個結點,激活函數爲RELU,訓練樣本空間爲60000,使用dropout和weight-constraints正則化。在驗證集上,這個網絡有67個分類偏差,小一些的且沒作dropout的網絡(800個結點)有146個分類偏差。在採用distilling的方式訓練small model後,small model在驗證集上的分類偏差數下降到74個。當進一步簡化small model時(下降到300個節點), 仍然能夠獲得類似的表現。

</font>

相關文章
相關標籤/搜索