最近看到一篇博客,將LookAhead和RAdam結(jié)合產(chǎn)生了一個新的算法——Ranger,獲得了比單獨使用RAdam要好的效果。后來有人將LARS與Ranger結(jié)合,效果取得了進一步提升。最近Ranger的提出者又將GC(Gradient Centralization)方法與Ranger結(jié)合,也取得了比Ranger好的效果。這里我會分四篇文章分享我個人在閱讀這四個方法對應(yīng)的論文時的總結(jié)和體會。由于LookAhead優(yōu)化器與SWA比較相似,所以還會開辟一篇文章介紹SWA和Fast SWA優(yōu)化器。本篇文章為系列文章第四篇。
方法
Batch Normalization(BN)和Weight Standardization (WS)都可以提高模型的泛化能力和訓練速度,之前的文獻對BN和WS的理論分析指出二者都使得梯度具有更好的Lipschitz平滑性(Lipschitz smooth的介紹),并使得權(quán)重空間路徑更加平滑,從而可以提升模型訓練的穩(wěn)定性。這兩個方法分別是對激活值和權(quán)重進行Z-score標準化。從這兩個方法得到靈感,作者便嘗試是不是也可以對梯度進行Z-score標準化,以提升模型訓練效率。遺憾的是對梯度進行Z-score標準化并不能提升模型訓練的穩(wěn)定性,但是作者發(fā)現(xiàn)進行梯度中心化(Gradient Centralization, GC)處理卻能提高模型的泛化能力和訓練速度。作者分別從理論和實驗角度論證了GC有效性。GC很簡潔,可以輕易嵌入到已有優(yōu)化算法中,下圖是將GC加入到優(yōu)化過程中的流程,以及GC在卷積層和全連接層的執(zhí)行方式:
符號說明
用 表示網(wǎng)絡(luò)某一層的權(quán)重,對于全連接層來說
,對于卷積層
,
表示卷積核大小,
表示卷積核維度,
表示卷積核數(shù)量。用
表示
的第
列,用
表示目標函數(shù),用
和
分別表示目標函數(shù)
對
和
的(偏)導數(shù)。
表示某一層的輸入特征值,
表示輸出。用
表示
維單位列向量,
表示單位矩陣。
GC計算公式
根據(jù)上面的符號,可以表示GC的計算公式:
使用矩陣方式表示如下:
從上面的公式可以看出,對于卷積層,中心化操作首先是計算每個卷積核的權(quán)重梯度均值,然后用卷積核中的每個權(quán)重梯度減去這個均值得到中心化后的權(quán)重梯度,對于全連接層則是對負責計算同一激活值的權(quán)重進行中心化。下面是官方實現(xiàn)的Pytorch版GC(x為某層權(quán)重):
x.add_(-x.mean(dim = tuple(range(1,len(list(x.size())))), keepdim = True))
可以看出GC是很簡單的,這也體現(xiàn)在它很容易集成到目前以后的優(yōu)化器中,下面是將GC集成到SGD和Adam中的算法流程:
GC理論分析
泛化作用
GC使得模型具有更好的泛化效果的原因是它能夠?qū)?quán)重和特征空間進行正則化。
權(quán)重空間正則化
對上面的矩陣使用簡單的矩陣運算便可以得出下面的結(jié)論:
從上面的結(jié)論可以看出,實際上矩陣是一個投影矩陣,其將梯度投影到以
為法向量的平面(投影后的向量為
)。作者指出,之前就有研究工作證明,梯度投影會起到將權(quán)重限制在一個超平面上(或稱為黎曼流形),而GC便具有這樣的能力。從下面的圖中可以形象地看出,
時刻權(quán)重的更新方向總是在一個特定的超平面上,而這個超平面是由
決定的,即權(quán)重的更新方向一直處于該超平面上(
),其實是由初始權(quán)重
和法向量
決定,
可由下面的推導得到:將公式
中的
調(diào)整到等號左邊,等式兩邊再同時左乘
,利用上面的結(jié)論,得
,不斷做同樣的推理可得
。這說明在訓練中
一直是個常量。從數(shù)學角度解釋的話,具有GC的優(yōu)化過程是帶有對權(quán)重約束條件的優(yōu)化過程:
輸出(激活值)空間正則化
對于使用GC的SGD優(yōu)化器,對于任意輸入,權(quán)重具有下面的性質(zhì)(詳細證明見原論文):
該性質(zhì)說明,當某層(卷積層或全連接層)的輸出發(fā)生常量的強度變化(constant intensity change)時,經(jīng)過權(quán)重計算后產(chǎn)生的輸出變化只與初始權(quán)重和標量
有關(guān)(
為縮放過的初始權(quán)重向量
的均值)。當初始權(quán)重
很小的時候,該變化就會很小,那么輸出特征空間對訓練樣本變化具有一定的魯棒性(不理解怎樣的(噪聲)變化會是
樣子的?)。而實際上,不管是從頭訓練還是從ImageNet預(yù)訓練模型開始訓練,初始化的參數(shù)都是很小的,所以基本可以肯定GC具有對輸出空間正則化的效果。
加快訓練作用
之前的文獻已經(jīng)證明,BN和WS都具有可以平滑化優(yōu)化參數(shù)空間路徑的作用,從而使得訓練更加穩(wěn)定,即起到加速訓練的作用。而有關(guān)BN和WS的文獻指出, BN和WS的權(quán)重梯度和海森矩陣分別具有上界和
,這樣的上界導致原始的損失函數(shù)具有更好的Lipschitz性質(zhì),從而使得優(yōu)化過程更加平滑。作者證明GC也具有這樣的性質(zhì)(具體證明見原論文):
以上性質(zhì)說明GC也具有加速訓練的作用。
另外,作者還指出GC還具有梯度裁剪的作用,從而可以抑制梯度爆炸。
實驗效果
作者在不同的視覺任務(wù)上做了全面實驗,從而驗證GC的有效性:
Mini-ImageNet上驗證加速訓練和提高測試集泛化的作用
CIFAR100上驗證不同優(yōu)化器和不同網(wǎng)絡(luò)上的有效性
CIFAR100上驗證不同的超參配置上的有效性
大型數(shù)據(jù)集ImageNet上驗證加速訓練和提高測試集泛化的作用
細粒度分類數(shù)據(jù)集上驗證有效性
對象檢測和分割上驗證有效性
從數(shù)據(jù)上看,GC在檢測和分割上的表現(xiàn)并不是很出色,當然這也和任務(wù)的難度有關(guān)。