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


Abstract:

在機器學習領域,ensemble learning是一種普遍適用的用來提升模型表現的方法, 將通過ensemble learning訓練出的模型稱為cubersome model, 但在這種情況下,模型通常很大(即參數較多,復雜度較高),以至於在模型部署階段所需要的計算資源極為昂貴,尤其是對於一些以大型神經網絡作為子學習器的集成模型。

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

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,它會用到temperature of the final softmax,通過調整temperature,可以使cubersome model產生一個suitably soft set of targets,此target可以在cross entropy的值的層面上對於one-hot vector和probabilities vector有一個較好的區分,從而使small model得以繼續訓練。

用來訓練small model的transfer set可以由unlabeled data或original training set組成。在訓練small model時,促使small model盡可能進行正確分類的同時,讓其logits盡可能接近通過cubersome model獲得的soft targets。

2 Distillation

在神經網絡模型中,softmax function將logits, \(z_i\)轉化為class probabilities vector, 記為(\(q_1\), \(q_2\), ... , \(q_n\))。每類所對應的概率記為\(q_i\), 計算方法為:

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

其中\(T\)Temperature,常用取值為1。當使用更大的T時,會生成softer probability distribution over classes

最簡單的distillation的形式是,使cubersome model以較大的temperature值計算probability distribution,並以此作為transfer set中的soft target來訓練small model,通過這種方式來轉移cubersome model中的knowledge到distilled model(small model),在訓練distilled model時需要使用相同的temperature值,但在完成訓練之后,應在預測階段使用tmeperature=1

在將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個節點), 仍然可以得到相似的表現。

4 Summary


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM