牛頓法等利用二階梯度信息的方法在深度學習中很少有應(yīng)用,我們更喜歡直接使用一階梯度信息求解最優(yōu)參數(shù)。本論文提出了一種新型基于二階信息的最優(yōu)化方法,它的內(nèi)存占用與帶動量的 SGD 一樣小,但當收斂速度卻比只使用一階信息的最優(yōu)化方法快。
1 引言
隨機梯度下降(SGD)和反向傳播 [9] 是現(xiàn)今深度網(wǎng)絡(luò)訓練的算法核心。深度學習的成功證明了這種組合的有效性,它已經(jīng)成功地運用在各種具有大型數(shù)據(jù)集和極深網(wǎng)絡(luò)的不同任務(wù)中。
然而,盡管 SGD 有很多優(yōu)點,但這種一階方法的收斂速度(就迭代次數(shù)而言)還有很大的改進區(qū)間。盡管單次 SGD 迭代的計算速度非??觳⑶以趦?yōu)化開始時有迅速的進展,但很快,優(yōu)化就會進入一個緩慢提升的階段。這可以歸因于迭代進入了目標函數(shù)錯誤縮放的參數(shù)空間中。在這種情況下,快速的進展需要在參數(shù)空間內(nèi)不同的方向上采用不同的步長,而 SGD 無法實現(xiàn)這種迭代。
諸如牛頓法及其變體的二階方法根據(jù)目標函數(shù)的局部曲率重新調(diào)整梯度,從而消除了這個問題。對于 R 中的標量損失,這種調(diào)整采用 H?1J 的形式,其中 H 是黑塞矩陣(Hessian matrix;二階導數(shù))或者是目標空間中局部曲率的一個近似,J 是目標函數(shù)的梯度。事實上,它們可以實現(xiàn)局部尺度不變性,并在梯度下降停滯 [24] 的地方取得顯著進展。盡管在其它領(lǐng)域它們是無可比擬的,但一些問題阻礙了它們在深度模型中的應(yīng)用。首先,因為黑塞矩陣的參數(shù)數(shù)量以二次形式增長,且通常有著數(shù)百萬的參數(shù),故而對它求逆或存儲它是不現(xiàn)實的。其次,由于隨機抽樣,任何黑塞矩陣的估計都必然產(chǎn)生噪聲和病態(tài)的條件數(shù),因而經(jīng)典的求逆方法如共軛梯度對于黑塞矩陣是不穩(wěn)健的。
在本文中,我們提出了一種新的算法,它可以克服這些困難并使得二階優(yōu)化適用于深度學習。我們特別展示了如何去避免存儲黑塞矩陣或其逆矩陣的任何估計值。反之,我們將牛頓更新,即 H?1J 的計算看成是求解一個能通過梯度下降法求解的線性系統(tǒng)。通過交叉求解步驟和參數(shù)更新步驟,求解這個線性系統(tǒng)的成本會隨著時間推移被攤銷。此外,與共軛梯度法不同,梯度下降的選擇使其對噪聲穩(wěn)健。我們提出的方法增加了很小的開銷,因為一個黑塞矩陣向量積可通過兩步自動微分的現(xiàn)代網(wǎng)絡(luò)實現(xiàn)。有趣的是,我們證明了我們的方法等價于帶有一個額外項的動量 SGD(也稱為重球法),這個額外項能計算曲率。因此,我們將該方法命名為 CURVEBALL。與其他方法不同,我們方法的總內(nèi)存占用與動量 SGD 一樣小。
圖 1:已知解決方案的問題。左:不同求解器的 Stochastic Rosenbrock 函數(shù)軌跡(較深的陰影區(qū)域表示較高的函數(shù)值)。右:針對軌跡圖繪制的損失函數(shù)與迭代數(shù)之間的關(guān)系。
表 1:在小數(shù)據(jù)集上優(yōu)化器的比較。對于每一個優(yōu)化器,我們展示了解決問題所需迭代數(shù)的平均值 ± 標準差。對于隨機 Rosenbrock 函數(shù),U[λ1, λ2] 表示來自 U[λ1, λ2] 的噪聲(詳見 4.1)。
圖 2:不同優(yōu)化器在不同數(shù)據(jù)集和網(wǎng)絡(luò)上的性能對比。在一系列實際設(shè)置下,包括大型數(shù)據(jù)集(ImageNet)、是否使用批量歸一化和過度參數(shù)化的模型(ResNet),我們的方法似乎表現(xiàn)十分良好。
表 2:不同模型和優(yōu)化方法的最佳百分比誤差(訓練/驗證誤差)。CURVEBALL λ 表示使用了重新調(diào)整的參數(shù) λ(第 3 節(jié))。括號內(nèi)的數(shù)字表示帶有額外 Dropout 正則化(比例 0.3)的驗證誤差。前 3 列在是在 CIFAR - 10 上訓練的,第 4 列是在 ImageNet - 100 上訓練的。
圖 3:訓練誤差 vs. 訓練時間(基于 CIFAR - 10 模型)。
論文:Small steps and giant leaps: Minimal Newton solvers for Deep Learning(小改進,大飛躍:深度學習中的最小牛頓求解器)
論文地址:https://arxiv.org/abs/1805.08095
我們提出了一種能直接替換現(xiàn)今深度學習求解器的快速二階方法。與隨機梯度下降法(SGD)比,它只需要在每次迭代時進行 2 次額外的前向自動微分操作,同時它的運算成本與 2 次標準前向傳播相當且易于實現(xiàn)。我們的方法解決了現(xiàn)有二階求解器長期存在的問題,即在每次迭代時需要對黑塞矩陣的近似精確求逆或使用共軛梯度法,而這個過程既昂貴又對噪聲敏感。相反,我們提出保留逆黑塞矩陣投影梯度的單個估計,并在每次迭代時更新一次。這個估計值有著相同的維度,并與 SGD 中常用的動量變量相似。黑塞矩陣的估計是變動的。我們首先驗證我們的方法—CurveBall 在一些已知閉式解的小問題(帶噪聲的 Rosenbrock 函數(shù)和退化的 2 層線性網(wǎng)絡(luò))上的有效性,而這是現(xiàn)今深度學習解釋器仍在努力的地方。我們接著在 CIFAR、ImageNet 上訓練一些大型模型,包括 ResNet,VGG-f 網(wǎng)絡(luò),我們的方法在沒有調(diào)整超參數(shù)的情況下,表現(xiàn)出更快的收斂性。最后,所有的代碼已經(jīng)開源。