【GiantPandaCV導語】本文介紹的是韓松團隊針對欠擬合問題提出的一種解決方案,在代價可接受範圍內能夠提升小模型的性能。
引入
專用於解決小型網絡模型欠擬合 帶來的問題,通過引入更大的模型包圍住小模型從而得到額外的監督信息。欠擬合情況下使用正則化方法進行處理會導致性能更差。
NetAug適用場景:
-
數據集量比較大
-
模型參數量相對而言比較小
-
由於模型容量有限導致的欠擬合問題
問題明確
- 與知識蒸餾區別:
知識蒸餾相當於學習一個soft label(或者說learned label smoothing), 而NetAug主要強調處理欠擬合問題,通過增強小模型的模型寬度來獲取更多監督信息。
- 與普通正則化方法區別:
正則化方法有數據增強方法(Cutout,Mixup,AutoAug,RandAug)和Dropout系列(Dropout,StochasticDepth, SpatialDropout,DropBlock)。與這些解決過擬合正則化方法不同,NetAug主要關注欠擬合問題,進行數據增強反而會導致欠擬合問題。
核心方法
如上圖所示,訓練的過程中會引入比原先小模型更寬的一系列網絡,用寬網絡的監督信號來增強小模型的學習。
第一項是訓練單個小網絡需要的loss, 第二項是寬網絡帶來的輔助監督信息,其中$\alpha_i
$是縮放係數
寬網絡獲取方式:augmentation factor r和diversity factor s兩個係數。
-
r 是用於選擇最寬的邊界,假設基礎寬度爲w,那麼寬度選擇範圍爲【w, rxw】
-
s則是控制採樣頻率,從w到rxw等距採樣s個寬模型。
訓練過程:
實際訓練過程權重更新如下:
每次權重更新只訓練小網絡和單個寬網絡,這樣可以降低計算代價,並且通過實驗發現,沒必要同時採樣多個寬網絡進行訓練,那樣會導致性能的下降。
通過以上改進爲欠擬合小模型帶來了一定的收益,同時訓練開銷僅增大了17%
實驗
首先,論文爲了證明NetAug和蒸餾方法是不相等的(正交),設計了一系列實驗。
最優模型實際上是同時使用了知識蒸餾和NetAug的方案。
爲了證明NetAug作用在欠擬合模型,設計了以下實驗:
ProxylessNAS Mobile, MCUNet,MobileNetv2都是小模型,在這些小模型上使用NetAug均可以取得不錯的提升。但是在比較大的模型ResNet50上,不存在欠擬合的問題,所以起到了反作用。
爲了證明NetAug和其他正則化方法不同,設計了以下實驗。
可以發現,在使用KD情況下加入正則化會導致性能下降。
但是使用KD情況下,採用NetAug會使得精度進一步提升。
在目標檢測算法中應用:
總結
針對過擬合有很多耳熟能詳的處理策略,比如Dropout,數據增強,增加數據,控制模型複雜度,正則化等。
而針對模型容量不足帶來的欠擬合問題,通常採用的是增加模型容量,或者增加特徵表示。
本文針對欠擬合問題提出了一種更優的解法,在保證模型大小不變的情況下,提升小模型的實際性能,具有很高的價值(缺點是實現起來比較複雜)。