這篇文章初看和,差點以為是model ,看到后面發現是針對卷積神經網絡的訓練方法,而且這個方法比較簡單,但文章通過大量的分析和實驗,驗證了提出的訓練方法非常有效,在cifar、、VQA、 上漲點很多,個人覺得paper /做的非常好, study做的非常充分,是我目前看過的中最好的一篇文章。
先來看效果圖,用新的訓練方法,測試準確率遠遠超過了標準的訓練方法,是不是?
下面看看在 上的測試結果,RePr在-FPN上有4.1個點的提升,在-FPN有2.8個點的提升,可以說是非常明顯了。
卷積神經網絡在視覺任務中取得了SOTA性能,我們會為不同的任務單獨設計不同的網絡結構,雖然網絡結構不同卷積神經網絡有沒有正則化,但使用的優化方法都是一樣的,而且這些優化方法將網絡權重視為單獨的個體,沒有考慮彼此之前的相關性。而事實上,網絡權重之間是有很大聯系的。為了獲取最好的性能,網絡經常過參數化(over-)。然而即使是過參數化的網絡,也會存在很多冗余的參數。model 證明了一個大的網絡可以通過丟棄一部分參數權重得到一個性能損失不大的小網絡,從而實現網絡壓縮和加速。
因此文章提出了一個新的訓練方法。既然網絡中有些參數權重是多余,那我們訓練的時候把他們丟棄(),接著訓練剩下的網絡,為了不損失模型的,然后再把丟棄的參數拿回來,效果是不是會好一點呢?基于這個想法,文章作者任務有幾個重要的點:一是哪些權重,而是如何再把丟棄的權重拿回來讓他們發揮更大的作用。本文的一個貢獻在于提出了一個,用于選擇哪些丟棄。同時作者指出,即使是一個參數很少( under- )的網絡,也會出現學到冗余的參數的情況,這不僅僅在多參數的網絡中存在,原因就在于訓練過程低效。
特征之間的相關性越高,其泛化性能越差。為了降低特征之間的相關性卷積神經網絡有沒有正則化,有人提出了各種方法,比如在損失函數中加入特征相關性的項,在優化目標函數的時候使的模型自動學習出低相關的特征,然而并沒有什么效果。還有通過分析不同層的特征并進行聚類,這種方法在實際中不可行因為計算量巨大。還有人嘗試過loss添加正則項讓模型學習到相互正交的權重,最后也發現收效甚微。實驗發現,僅僅通過正則化項讓網絡自動學習到正交的權重是不夠的,文章提出的訓練方法其實已經隱式地起到了正則化效果,并且對模型的收斂沒有任何影響。
為了說明即使是參數少的模型,由于訓練的低效,也會存在大量冗余的卷積核,通過一個比較小的卷積神經網絡,作者可視化了不同層的卷積核對性能的影響,如下圖右,的大部分卷積核對性能的影響僅僅只有1%,即使是淺層的,也存在大量不重要的權重。
新的訓練方法:RePr
訓練過程如下:方式比較簡單,先訓練整個網絡,根據 drop掉30%的,再訓練剩下的網絡,再把drop的拿回來,用于現有正交的方式初始化。迭代這個過程N次。
算法中最重要的其實這個,即如何選出需要drop的。
文章寫的很明白,一個layer的多個卷積核可以用一個表示,也就是
,先對
歸一化,再與自己的轉置相乘得到
,這是一個
大小的,第i行表示其他對第i個的,可以看成是相關性,如果是正交性的越大,那么這個值就越小,一行的數值之和越小,說明其他與這個相關性越低。因此可以通過這個sum來對進行rank。
同時文章還說明了,計算這個是在一個layer內,但rank是在所有layer進行的,目的是為了不讓layer這個因數影響的rank,避開layer的差異性,同時也不引入過多的超參。
文章一個值得稱贊的點就是 study部分做的非常詳細而充分。文章做了大量的對比實驗,對該方法涉及的參數進行了討論,并對比了不同的的影響,同時也比較了、 ,指出該方法不僅和他們有很大區別,與他們結合還能得到更好的結果。
作者做了大量實驗,驗證該方法在,,上都能取得很好的性能。
這是RePr早其他task上的表現,VQA上有不同程度的漲點,效果明顯。
上漲點達到了 4.1個點, 2.8個點,可是說是非常明顯了。
總的來說,這是一篇看起來真正做work的paper,做法簡單有效,實驗充分合理,相信很多人會去復現這篇paper,有些超參還是需要調一調的,具體效果如何還需要看實際情況,特別是部分,如果真的work,未來會成為刷SOTA的一個標配。
幾個疑問的點:
為何文章中說、的設計是為了減低之間的相關性?
對部分work比較感興趣,希望知道更多的細節。