【論文閱讀】Deep Mutual Learning


文章:Deep Mutual Learning

出自CVPR2017(18年最佳學生論文)

文章鏈接:https://arxiv.org/abs/1706.00384

代碼鏈接:https://github.com/YingZhangDUT/Deep-Mutual-Learning







主要貢獻:

提出了一種簡單且普遍適用的方法,通過在相同/不同的未預訓練的網絡中進行相互蒸餾,來提高深層神經網絡的性能。通過這種方法,我們可以獲得比靜態教師從強網絡中提取的網絡性能更好的緊湊網絡.

和有教師指導的蒸餾模型相比,相互學習策略具有以下優點:1)隨着學生網絡的增加其效率也得到提高;2)它可以應用在各種各樣的網絡中,包括大小不同的網絡;3)即使是非常大的網絡采用相互學習策略,其性能也能夠得到提升

由於是學生網絡相互學習,而不是傳統知識萃取,文章也說明了兩個以上網絡共同學習的策略,並從熵值的角度給出理論支持。


知識蒸餾的內容不再贅述,https://blog.csdn.net/nature553863/article/details/80568658 整理得非常完善。


網絡結構及損失函數:

 

 

個網絡由常規的有監督學習損失和擬態損失來共同訓練。擬態損失是指是每個學生的后驗類別要和其他學生的類別概率相一致。(擬態在生物學中是指一個動物在進化的過程中會獲得與成功物種相似的特征,成功混淆掠食者的認知,從而靠近擬態物種)

如圖一所示,同個輸入,分別經過Net1Net2兩個網絡(和孿生網絡不同,這里權重不共享),得到兩個logits記為z1,z2(所說文章中有明確提到這里的zsoftmax之后的,但是我整的時候取得卻是softmax之前的),經過softmax得到預測的軟分布p1,p2。送入KL散度計算這兩個分布的相似性作為擬態損失。與label比較計算標簽損失。

注意,上式表示的是:假設p2是數據的真實分布,p1是數據的理論分布,即是讓p1的分布更接近p2的分布。這個別搞反了,畢竟KL散度有幾個性質:1)不對稱性:盡管KL散度從直觀上是個度量或距離函數,但它並不是一個真正的度量或者距離,因為它不具有對稱性,即D(P||Q)!=D(Q||P)(恩,還有非負和不滿足三角不等,這兩個在這沒用就不寫了)。所幸,KL散度求出的值是在0-1之間(分布完全相同則為0),比一般的L1,L2損失更適合擬合分布的損失。但是,如果兩個分配P,Q離得很遠,完全沒有重疊的時候,那么KL散度值是沒有意義的,這在學習算法中是比較致命的,這就意味這這一點的梯度為0。梯度消失了。(說實話,文中沒有給出其他度量下的結果,我試了KL變為JSL1L2這幾種分布度量,結果十分相近,KL或許不是最合適的)


網絡Net1的總損失為:


 

 

其中:









網絡Net2的總損失為:




優化步驟:

相互學習策略在每一個基於小批量的模型更新步驟和整個培訓過程中執行。在每次迭代中,我們計算兩個模型的預測,並根據另一個模型的預測更新兩個網絡的參數。兩個網絡的優化是迭代進行的,直到收斂。優化細節總結在算法1中。

 

 

恩,這個很簡單,就不翻譯了。就是固定一個網絡更新另一個,循環交替直至收斂。


擴展到更多的網絡(理論上你想要幾個,只要機器夠牛逼都行):

 

提出的相互學習策略可以擴展到更多的學生網絡,假設有K個學生網絡,其損失目標函數變為:



添加了系數k-1,以確保培訓主要由對真實標簽的監督學習指導.擬態損失為與其他所有網絡概率分布相似性的平均值。恩,之后的實驗都默認使用這一種哈。


另一個學習策略是將所有其他K-1網絡的集合作為單個教師,以提供平均的分布概率,這非常類似於蒸餾方法,θk的目標函數可以寫成:

擬態損失為與其他所有網絡概率分布平均值的相似性。

_~。這個大家可以類比多分類問題中一個多分類器與多個二分類器。大家可能下意識的以為后一種策略會有更高的精度,但事實恰恰相反,文章最后倒是有給出理由,后面再說吧。


實驗部分:

兩個數據集,一個是cifar100,一個是行人再檢測的maket1501。參數設置什么的文章有給,我不列出來了,反正只要你設定的不是太離譜,都可以得到好結果。

Independent表示單個網絡運行結果,DML-Independent,恩,就是DML的結果減去Independent的結果,普遍提升1.5個點(機器問題只試了resnet的,的確能提升這么多)。

 

這是和知識蒸餾進行對比,當然了,是最原始的histon2014的那版。

 

 

 

這個,算消融實驗,只是結果太好了,作者就和其他方法進行了對比。single-query表示單索引,multi-query表示多索引,百度下或問做再檢測的朋友是啥子。

 

 

這個是擴展到N個網絡的結果,恩,之前不是說了兩種擴展方法嗎,這里都是第一種。左邊這個圖呢,不是有N個網絡嘛,N個網絡分別得到N個精度,然后取平均,就得到左圖了(應該是湊字數用的吧,應該沒人會這么做吧,好浪費的,投票不行嗎)。右圖表示基於所有成員的連接特征進行匹配,精度明顯隨網絡的增多而增加。


理論:

最后作者回答了為什么這樣聯合學習能提升精度。《Entropy-sgd: Biasing gradient descent into wide valleys》這篇文章大家有興趣的可以去瞅瞅,個人認為解釋了我的某些疑惑。通常情況下有很多的解決方案能夠讓訓練誤差變為0,然而有些解決方法的泛化能力要強一點。因為梯度下降法找打的最優點不是在狹小的谷底內,而是在寬闊的峽谷中,當我們加入相對熵以后能夠讓網絡找到更小的值,從而實現更優的結果。

對於DML模型和獨立模型,比較了在每個模型參數中加入獨立高斯噪聲和可變標准差σ后,學習模型的訓練損失。發現兩個損失基本是相同的,但是在加入這個擾動后,獨立模型的訓練損失相比DML模型的損失會增加得多。這表明DML模型已經找到了一個更廣泛的極小值,這有望提供更好的泛化性能。


在提出的DML策略中,每個學生都是由隊列中的所有其他學生單獨教授的,不管隊列中有多少學生。一種替代的DML策略稱為ensemble策略,要求每個學生匹配隊列中所有其他學生的聯合預測。人們可以合理地期望這種ensemble方法會更好。由於集合預測比單個預測更好,因此它應該提供一個更清晰、更強的教學信號——更像常規蒸餾。在實踐中,聯合教學(ensemble)比依次單獨教學(peer)的效果更差。通過對聯合ensemble教學信號的分析,與依次單獨peer教學相比,ensemble目標在真標簽上的峰值要比peer目標明顯得多,從而使DML的預測熵值大於DML-E。因此,雖然集成的噪聲平均特性對於做出正確的預測是有效的,但它實際上不利於提供一個教學信號,其中secondary probabilities在總體信號中是突出的,具有高熵的后驗代表這模型訓練的更魯棒的解決方案。(大家聯想一下軟標簽與硬標簽的不同。)

 

 

當然,文中也有說明How a Better Minima is Found,但是沒有看明白,對前置知識(《Entropy-sgd: Biasing gradient descent into wide valleys》與《Regularizing neural networks by penalizing confident output distributions》)沒有足夠的了解,翻譯一下原文:當要求每個網絡匹配其對等網絡的概率估計時,如果給定網絡預測為零,而其教師/對等網絡預測為非零,則會受到嚴重懲罰。因此,DML的總體效果是,當每個網絡獨立地將一個小的mass放在一組小的secondary probabilities上時,DML中的所有網絡都傾向於聚合它們對secondary probabilities的預測,i)將更多的mass放在secondary probabilities上,以及ii)將非零mass置於更明顯的secondary probabilities上。通過比較圖中由DML培訓的CIFAR-100上的resnet-32獲得的top5與獨立培訓的resnet-32模型的概率來說明這一影響。對於每個訓練樣本,根據模型產生的后驗概率對top5進行排序。在這里,我們可以看到,對於獨立學習來說,將mass分配到top1下的概率比DML學習要快得多。這可以用DML訓練模型和獨立訓練模型的所有訓練樣本的平均熵值來量化,分別為1.70990.2602。因此,我們的方法與基於熵正則化的方法有聯系,以尋找寬的極小值,但通過對“合理”的選擇的相互概率匹配,而不是盲目的高熵偏好。

 

寫在最后:個人認為適用范圍挺廣的,效果提升也很明顯,也還留了許多可以改進的點。知識蒸餾的想法是通過教師網絡提供的軟標簽,給予學生網絡硬標簽所不能表達的新的信息量(類似與貓更像狗而不是蛋糕)。而文中說的聯合學習的方式也提供了更多的信息量。或許有的同學會認為,這是學習了更魯棒的特征,而不是蘊含了更多的信息量,恩,不相信的朋友不妨試一下把KL(logits)換成KLfeatures)看下結果。全連接fc之后為logits,之前為features

 


免責聲明!

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



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