首頁>技術>

在深度學習的“國度”,會將訓練好的模型,用自己蒸餾一下,就能提高效能,是不是很神奇,這裡面的原理到底是什麼呢,這要從模型整合開始說起。

在現在的標準技術下,例如過引數化、batch-normalization和新增殘差連線,“現代”神經網路訓練 —— 至少對於影象分類任務和許多其他任務來說 —— 通常是相當穩定的。但在一篇新論文“Towards Understanding Ensemble, Knowledge Distillation, and Self-Distillation in Deep Learning“中,我們專注於研究神經網路在訓練過程中純粹由於隨機化產生的差異。於是引發了以下問題:除了測試準確性上的微小偏差外,從不同隨機初始化中訓練出來的神經網路是否學習了非常不同的函式?如果是這樣,差異從何而來?我們如何減少這種差異,使神經網路更穩定,甚至更好?這些問題並非微不足道,它們與深度學習中廣泛使用的三種技術有關。

深度學習的三個“秘密”神秘之處1:整合

使用不同隨機種子的學習網路F1,…F10 —— 儘管具有非常相似的測試效能 —— 被觀察到與非常不同的函式相關聯。實際上,使用一種著名的技術叫做整合(ensemble),只需對這些獨立訓練的網路的輸出進行無加權的平均,就可以在許多深度學習應用中獲得測試時效能的巨大提升。(參見下面的圖1。)這意味著單個函式F1,…F10必須是不同的。然而,為什麼整合的效果會突然提高呢?另外,如果一個人直接訓練(F1+⋯+F10)/10,為什麼效能提升會消失?

神秘之處2:知識蒸餾

儘管整合在提高測試時效能方面非常出色,但在推理時間(即測試時間)上,它的速度會慢10倍:我們需要計算10個神經網路的輸出,而不是一個。當我們在低能耗、移動環境中部署這樣的模型時,這是一個問題。為了解決這個問題,提出了一種叫做知識蒸餾的開創性技術。也就是說,知識蒸餾只需要訓練另一個單獨的模型就可以匹配整合的輸出。在這裡,對貓影象的整合輸出(也稱為“dark knowledge”)可能是類似“80% cat + 10% dog + 10% car”,而真正的訓練標籤是“100% cat”。(參見下面的圖2。)

事實證明,經過訓練的單個模型,在很大程度上,可以匹配10倍大的整合測試時的表現。然而,這導致了更多的問題。為什麼與真實的標籤相比,匹配整合的輸出能給我們更好的測試精度?此外,我們是否可以對知識蒸餾後的模型進行整合學習以進一步提高測試精度?

知識蒸餾:讓單個模型去學習多個檢視

在這項新工作中,我們繼續展示知識蒸餾的工作原理。在現實生活中,一些汽車影象可能比其他影象看起來“更像貓”:例如,一些汽車影象的前燈看起來像貓的眼睛。當這種情況發生時,整合模型可以提供有意義的dark knowledge:例如,“汽車影象X有10%像一隻貓。”

現在來看看關鍵的觀察結果。當訓練一個單獨的神經網路模型時,如果“前照燈”檢視沒有被學習,那麼即使剩餘的檢視仍然可以正確地將影象X標記為一輛車,它們也不能用來匹配“dark knowledge”影象X是10%像一隻貓。換句話說,在知識蒸餾過程中,個體模型被迫學習每一個可能的檢視特徵,以匹配整合的效能。請注意,深度學習中知識提煉的關鍵是,作為神經網路的單個模型正在進行特徵學習,因此能夠學習整合的所有特徵。這與我們在實踐中觀察到的情況是一致的。

神秘之處3:自蒸餾

注意,知識蒸餾至少直觀上是有意義的:教師整合模型的測試準確率為84.8%,所以單個學生模型的測試準確率可以達到83.8%。下面的現象,被稱為自蒸餾(或“Be Your Own Teacher”),是完全令人驚訝的 ——透過對同一架構的單個模型執行知識蒸餾,測試的準確性也可以得到提高。(請參見上面的圖2。) 考慮一下這個問題:如果訓練一個單獨的模型只能得到81.5%的測試準確率,那麼為什麼“再次訓練同一個模型把自己當作老師”突然可以把測試準確率提高到83.5%呢?

自蒸餾:隱式地結合整合和知識蒸餾

在這項新工作中,我們還為知識自蒸餾提供了理論支援(參見圖3)。訓練一個單個模型以匹配另一個相同單個模型的輸出(但使用不同的隨機種子),以某種方式提高了效能。

在較高的層次上,我們把自蒸餾看作是整合蒸餾和知識蒸餾更緊密的結合。當從隨機初始化學習單個模型F2以匹配單獨訓練的單個模型F1的輸出時,可以期望F2根據它自己的隨機初始化學習特徵的子集。除此之外,F2也有動機去學習F1已經學習過的特徵子集。換句話說,人們可以把這個過程看作是“整合學習兩個單獨的模型F1和F2,並將其蒸餾為F2。最終的學習模型F2可能不一定涵蓋資料集中所有的可學習檢視,但它至少有潛力學習所有可以透過整合學習覆蓋兩個單獨模型的檢視。這就是測試時效能提升的來源。

17
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • AI視覺組仙人一步之高階玩法——從Python迴歸C語言