Towards Oracle Knowledge Distillation with NAS

【GiantPandaCV導語】本文介紹的如何更好地集成教師網絡,從而更好地提取知識到學生網絡,提升學生網絡的學習能力和學習效率。從方法上來講是模型集成+神經網絡結構搜索+知識蒸餾的綜合問題,在這裏使用簡單的NAS來降低教師網絡與學生網絡之間的差距。

背景介紹

解決的問題?

  • 希望從集成的教師網絡中提取知識到學生網絡,從而提升學習能力和學習效率。

  • model ensemble + NAS + KD

  • Motivation: This is motivated by the fact that knowledge distillation is less effective when the capacity gap (e.g., the number of parameters) between teacher and student is large as discussed in (Mirzadeh et al. 2019).

如何解決?

  • 提出了OD(Oracle Knowledge Distillation)的方法,我們的方法解決了教師和學生之間固有的模型能力問題,旨在通過縮小教師模型的能力差距,使其在蒸餾過程中受益最大化。

  • 使用NAS技術來增強有用的架構和操作,這裏搜索的網絡適用於蒸餾學生網絡。

  • 提出了Oracle KD Loss來實施模型搜索,同時使用集成的教師網絡進行蒸餾。

具體如何組織集成教師網絡?搜索對象是教師網絡?如何動態處理模型capacity?

  • 靈感:動態的組織整個過程的學習,教師網絡容量大,學生網絡容量小,可以讓容量大的表徵遷移到容量小的模型。

  • 搜索對象是學生網絡,學生網絡是可以動態變化的,從而可以適應教師網絡的容量。而教師網絡在整個過程中是不進行訓練的。

Oracle KD Loss

Independent Ensemble(IE) 將網絡集成的方式有:

  • Simple model average: 在不同的seed下訓練同一個網絡,並將最終的logits平均起來。

  • Majority voting: 投票法

Oracle KD認爲這種將所有的教師網絡都利用的方法並不一定合適,比如可能模型的子集可以預測正確模型,如上圖所示,就可以選擇子集的模型進行預測,所以需要實現一個模型選擇過程

提出Oracle KD Loss來提升集成教師的性能。

上述公式表達意思是:u是一個指標,判斷該模型是否正確分類,如果正確分類,那就將其作爲教師網絡進行蒸餾,否則使用普通的CrossEntropy來學習。

Optimal Model Search for KD

爲解決教師網絡和學生網絡之間存在的容量不匹配問題,提出了Knowledge Distillation framework with Architecture Search (KDAS)策略。

這裏使用NAS只是在原有backbone上進行微調,並不是從頭開始選擇模型(搜索對象要比backbone略大一些)。

搜索空間設計:

  • identity operation

  • 3x3 conv

  • 5x5 conv

  • 3x3 深度可分離conv

  • 5x5 深度可分離conv

  • maxpool

  • avgpool

優化方法:

使用REINFORCE強化學習算法結合LSTM控制器採樣網絡,動態控制子網的容量。

實驗結果

使用ResNet32x5作爲教師網絡,使用ResNet32作爲學生網絡,

這個圖比較的是memory-accuracy的trade off:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章