如何理解soft target這一做法?

題主最近在研究如何壓縮一個ensemble模型。讀了hinton的distill dark knowledge的文章(http://arxiv.org/abs/1503.02531),微軟出的通過dnn提取rnn的文章(http://arxiv.org/abs/1504.01483),發現通過soft target來利用小模型提取大ensemble里的信息似乎是個蠻靠譜的想法。但是有點想法沒弄清。主要問題是:

1. 小模型可以得到原ensemble的泛化性能。但題主覺得因為原ensemble可以預測特徵空間中任意點的target,所以進行學習的小模型可以獲得更多的訓練樣本,進而得到和ensemble一樣的泛化性能。但hinton文章中說似乎通過soft target訓練的時候,哪怕給後來的模型一小部分數據(3%),也可以獲得一樣的泛化性能。同時Li的文章(INTERSPEECH 2014 Abstract: Li et al.)用了大量未標記的樣本,通過ensemble預測logit然後訓練,效果反而一般般。所以似乎是我的想法走偏了,但為什麼呢。。

2. 為什麼softtarget效果好,還有沒有別的解釋?文章看下來總感覺並沒有那麼convincing。不知其所以然。。

謝謝大家了~

----------------題主的理解是------------

訓練時只是令大小網路在一小部分數據點上輸出的函數值相匹配。那麼可能的理解是小模型自帶防過擬合功能,擬合出來的函數比較平滑所以也自帶泛化性能。如果這是對的,那麼用和原先一樣的大模型來distill會出現過擬合。這就是為什麼不會用大模型來transfer knowledge的原因么?

--------------再更新一波----------

最近看起來soft target和label smoothing有著千絲萬縷的關係。但一個是sample wise,一個是label wise。


這個問題真的很有意思,我也曾經花了很多時間思考這個問題,可以有一些思路可以和大家分享。

一句話簡言之,Knowledge Distill是一種簡單彌補分類問題監督信號不足的辦法。

傳統的分類問題,模型的目標是將輸入的特徵映射到輸出空間的一個點上,例如在著名的Imagenet比賽中,就是要將所有可能的輸入圖片映射到輸出空間的1000個點上。這麼做的話這1000個點中的每一個點是一個one hot編碼的類別信息。這樣一個label能提供的監督信息只有log(class)這麼多bit。然而在KD中,我們可以使用teacher model對於每個樣本輸出一個連續的label分布,這樣可以利用的監督信息就遠比one hot的多了。

另外一個角度的理解,大家可以想像如果只有label這樣的一個目標的話,那麼這個模型的目標就是把訓練樣本中每一類的樣本強制映射到同一個點上,這樣其實對於訓練很有幫助的類內variance和類間distance就損失掉了。然而使用teacher model的輸出可以恢復出這方面的信息。具體的舉例就像是paper中講的, 貓和狗的距離比貓和桌子要近,同時如果一個動物確實長得像貓又像狗,那麼它是可以給兩類都提供監督。

綜上所述,KD的核心思想在於"打散"原來壓縮到了一個點的監督信息,讓student模型的輸出盡量match teacher模型的輸出分布。其實要達到這個目標其實不一定使用teacher model,在數據標註或者採集的時候本身保留的不確定信息也可以幫助模型的訓練。

當然KD本身還有很多局限,比如當類別少的時候效果就不太顯著,對於非分類問題也不適用。我們目前有一些嘗試試圖突破這些局限性,提出一種通用的Knowledge Transfer的方案。希望一切順利的話,可以早日成文和大家交流。 :-)


我覺得可以從大模型對原始的標定空間進行data augmentation來理解hinton的dark knowledge。

圖片樣本的標定一般都是離散的,就是一張圖只有一個類別的標定。但是很多時候類別之間有很大的相似性,這個相似性信息並沒有被離散的標定體現出來。比如說一個圖片分類資料庫有貓,狗,自行車,卡車,汽車等類別,圖片的標定只給了這張圖A是狗,這張圖B是卡車,而並沒有給出圖A裡面的狗會更像貓,圖B裡面的卡車會更像汽車。

大模型通過傳統的cross entropy loss,訓練過程中其實是可以把訓練數據裡面類別之間的關聯性信息學習出來。比如說在testing的時候,給張狗的圖片,模型的output probability可能是狗0.9,貓0.09,卡車0.005,汽車0.005,圖片更容易被錯分到貓那一類。knowledge distillation的大致做法是把所有訓練樣本都再feeforward一遍訓練好的大模型,那麼原本圖片樣本的離散標定,就變為一個大模型預測出來的類別probability,這個probability更好地表徵了類與類之間的相似性。其實這可以看成是利用訓練好的大模型對原始的標定空間進行了一次data augmentation(不過這個augmentation是發生在label space,而不是圖片本身)。這裡論文里還提了對probability降低temperature等trick,其實是想使得類與類之間的關聯信息更明顯。

小模型因為有了大模型幫忙提取出的標定空間的更多關聯信息,所以能更好的進行學習。可以預見,小模型的performance並不會超過大模型,但是會比原來在離散標定空間上面訓練的效果好。

題外話:我必須得再感慨一下geoffrey hinton的超人洞察力。dark knowledge,dropout等簡單有效的trick都是神來之筆。


感謝@老記的邀請。這部分的實驗我做了很多,還是有不少理解的。

給沒用過該方法的朋友簡單介紹:

這是一種深層神經網路的訓練方法。

一、什麼是distillation (或者用Hinton的話說,dark knowledge)(論文Distilling the Knowledge in a Neural Network)

1、訓練大模型:先用hard target,也就是正常的label訓練大模型。

2、計算soft target:利用訓練好的大模型來計算soft target。也就是大模型「軟化後」再經過softmax的output。

3、訓練小模型,在小模型的基礎上再加一個額外的soft target的loss function,通過lambda來調節兩個loss functions的比重。

4、預測時,將訓練好的小模型按常規方式(右圖)使用。

二、什麼是generalized distillation(privileged information和distillation的結合)(論文:Unifying distillation and privileged information)

區別僅在於大模型不再由同小模型一樣的vector訓練,而擁有額外信息的features。這時大模型叫做老師模型,小模型叫做學生模型,兩個模型的大小不再是重點。重點是訓練模型的input vector所含有的信息量。

三、為何要軟化,為何好用的初步解釋

由於我發過基於generalized distillation的application論文(Articulatory and spectrum features integration using generalized distillation framework),這裡先給一個我用過的ppt的一頁。(ppt其中提到的論文是Recurrent Neural Network Training with Dark Knowledge Transfer)

信息量:

hard target 包含的信息量(信息熵)很低,

soft target包含的信息量大,擁有不同類之間關係的信息(比如同時分類驢和馬的時候,儘管某張圖片是馬,但是soft target就不會像hard target 那樣只有馬的index處的值為1,其餘為0,而是在驢的部分也會有概率。)

軟化:

問題是像左圖的紅色0.001這部分,在cross entropy的loss function中對於權重的更新貢獻微乎其微,這樣就起不到作用。把soft target軟化(整體除以一個數值後再softmax),就可以達到右側綠色的0.1這個數值。

這張ppt是一般的解釋。如果想了解更深刻的話,請看深層神經網路 · 超智能體關於深層為什麼比淺層有效的解釋,從中找到為什麼要one hot vector編碼,然而接著往下看。

四、進一步解釋

我假設你已經看完了深層神經網路 · 超智能體關於深層為什麼比淺層有效的解釋,並找到了為什麼要one hot vector編碼

那你應該看到了很多關於學習的關鍵。拿其中兩句來說:學習是將變體拆成因素附帶關係的過程;變體(variation)越少,擬合難度越低,熵越低。

在神經網路的隱藏層中可以通過加入更多隱藏層節點來擬合變體,降低熵和擬合難度。

然而有兩個瓶頸,就是輸入層和輸出層是由數據限制的。輸入層的瓶頸也可以來靠稀疏表示來彌補一些(是神經網路之外的額外一層)。而輸出層的瓶頸就可以靠soft target來彌補。

原因在於即便是輸出層也是有變體的。如何消除這一層的變體?

舉個例子,如果要分類10個不同物體的圖片,完全可以只輸出一個節點,用一維輸出來表示。得到1就是第一個物體,得到9就是第9個物體。但是這樣做的話,輸出層的這一個節點就有10個變體,會使建模時的熵增加。但是若用10個節點來分別表示,那麼每個節點就只有一個可能的取值(也就是沒有變體),熵就可以降到最低。可是問題又來了,如何確保這10個類就是所有變體?該問題是和caffe 每個樣本對應多個label?的問題是類似的,並沒有把所有變體都攤開。

如何解決這種分類問題:

五分類問題

樣本1: 2,3(樣本1屬於第二類和第三類)

樣本2: 1,3,4(樣本2屬於第一類,第三類和第四類)

既屬於第二類又屬於第三類的樣本就和既像驢又像馬的樣本圖片一樣。

一種解決方式是重新編碼,比如把屬於2,3類的數據對應一個新的label(該label表示既是2又是3)。

把所有變體全部攤開,比如有n個類,輸出層的節點個數會變成2^n-1(-1是排除哪一類都不是的情況)。

soft target也有類似的功效,就是 @Naiyan Wang的答案中提到的「一句話簡言之,Knowledge Distill是一種簡單彌補分類問題監督信號不足的辦法」。在上述的問題中僅僅是「是 or 不是」,所以編碼的基底為2,形成2^n。soft target的基底就不是2了,而是0-1的實數個,還要保證所有類的總和為1(我數學底子差,不知道該怎麼計算這個個數)。

soft target是加入了關於想要擬合的mapping的prior knowledge,降低了神經網路的搜索空間,從而獲得了泛化(generalization)能力。

加入prior knowledge也是設計神經網路的核心

五、實驗現象

soft target的作用在於generalization。同dropout、L2 regularization、pre-train有相同作用。

這其實也是我要在知乎Live深層學習入門誤區想要分享內容的一部分。

簡單說

dropout是阻礙神經網路學習過多訓練集pattern的方法

L2 regularization是強制讓神經網路的所有節點均攤變體的方法。

pretrain和soft target的方式比較接近,是加入prior knowledge,降低搜索空間的方法。

證據:

1,Recurrent Neural Network Training with Dark Knowledge Transfer中還測試了用pretrain soft target的方式來加入prior knowledge,效果還比distillation的方式好一點點(畢竟distillation會過分限制網路權重的更新走向)

2,我才投的期刊論文有做過兩者的比較。當沒有pretrain的時候用distillation,效果會提升。但是當已經應用了pretrain後還用distillation,效果基本不變(有稍微稍微的變差)

3,Distilling the Knowledge in a Neural Network我記得好像並沒有提到是否有用dropout和L2也來訓練small model。我的實驗結果是:

如果用了dropout和L2,同樣feature vector的soft target來訓練的distillation不會給小模型什麼提升(往往不如不用。有額外feature vector的soft target的會提升)。

如果不用dropout和L2,而單用distillation,那麼就會達到dropout和L2類似的泛化能力,些許不如dropout。

也就是說dropout和L2還有pretrain還有distillation其實對網路都有相同功效。是有提升上限的。Unifying distillation and privileged information論文是沒有用dropout和L2,我看過他的實驗代碼。如果用了dropout和L2,提升不會像圖表顯示的那麼大。

4,你注意Hinton的實驗結果所顯示提升也是十分有限。壓縮網路的前提是神經網路中的節點是由冗餘的,而關於壓縮神經網路的研究,我建議是從每層中權重W的分析入手。有很多關於這方面的論文。


推薦題主可以去看一下東南大學耿新老師做的label distribution learning的文章。


其實這是秉承原始的深度學習思想,最開始的深度學習就是一層一層的rbm往上摞,其實每摞一次都是一次distill,越往下是越soft的target。那麼推廣這種思想本質,脫離這種具體形式,就是原文所說的了。

我認為題主說的小模型和大模型,大小不是關鍵,模型訓練難度才是關鍵,要從這個角度看,或許題主的困惑就解決了。


說明提高學生成績,不只是告訴學生答案,還要把解題過程講清楚。

啟發是,解題過程越詳細,是不是學生成績越好呢?


試了很多遍,在分類問題上一點好一點,但是還沒有比label smoothing work.


借這個問個問題:怎麼理解Distilling the Knowledge in a Neural Network那篇文章中的用soft targets來防止專家模型過擬合?我納悶的是This means that the effective size of its training set is much smaller and it has a strong tendency to overfit on its special classes。那麼應該附加special class的soft target來防止overfit on its special classes。但是文中用的是we can make it retain nearly all of its knowledge about the non-special classes by training it with soft targets for the non-special classes in addition to training it with hard targets.


推薦閱讀:

神經網路的歷史?
卷積神經網路中用1*1 卷積有什麼作用或者好處呢?
如何看待指出 神經網路的訓練罪魁禍首是退化一文?
在神經網路中weight decay起到的做用是什麼?momentum呢?normalization呢?
如何通俗的理解spike and slab prior?

TAG:機器學習 | 神經網路 | 深度學習DeepLearning |