本文由作者林洋港授權網易雲社區發布。
一、 L-BFGS是什么
L-BFGS是解無約束非線性規划問題最常用的方法,具有收斂速度快、內存開銷少等優點,在機器學習各類算法中常有它的身影。簡單的說,L-BFGS和梯度下降、SGD干的同樣的事情,但大多數情況下收斂速度更快,這點在大規模計算中很重要。下圖是深度學習Autoencoder模型不同優化方法的比較。
二、 L-BFGS“之前”的那些方法
這里的“之前”並不是說L-BFGS問世之前就已經存在的方法,而是指為了更好的理解L-BFGS需要了解的其他方法。無約束問題定義:
我們先從泰勒展開開始,這可以說是本文介紹的所有方法的基礎。f在的一階泰勒展開為
二階泰勒展開為
去掉最后的余項,得到
2.1 最速下降法(Gradient descent)
CD算法的一個前提條件就是f在連續可微,並且在
處的導數不為0。由公式1可知當第二項<0時f的值將下降。由Cauchy-Schwartz不等式可得
為最速下降方向。因此迭代公式為
滿足
2.2 牛頓法(Newton method)
由於f的極值點就是滿足f的導數為0,根據公式2,得到
假設Hesse矩陣可逆,由上式可得牛頓法迭代公式
牛頓法具有二次終止性的特點,即經過有限次迭代必達到極小點。例如,對於二次凸函數
A是對稱正定矩陣,取任意初始點,根據公式3有
顯然經過1次迭代即達到極值點。
但牛頓法要求f二次連續可微,並且Hesse矩陣滿足可逆和正定兩個條件;同時,牛頓方向
不一定每次迭代都是下降方向。
阻尼牛頓法是牛頓法的修正,與牛頓法的區別是迭代公式增加了牛頓方向上的一維搜索,即
其中
是一維搜索得到的步長,滿足
2.3 擬牛頓法(Quasi-Newton Method)
牛頓法每次迭代都需要計算處的Hesse矩陣的逆,同時Hesse矩陣也不一定是正定的。人們又提出了擬牛頓法,其基本思想是用不包含二階導數的矩陣來近似Hesse矩陣的逆。將f在
處展開成2階泰勒級數並取近似,即
設Hesse矩陣可逆,可得
設近似矩陣為根據上述,必須滿足
公式7稱為擬牛頓條件。的不同構造方法,決定了不同的擬牛頓方法。
當時n階對稱正定矩陣時,滿足牛頓條件的
也必須是n階對稱正定矩陣。因此
的一般構造策略為:
取為任意n階對稱正定矩陣(通常為單位矩陣I),然后通過下式求出
稱為校正矩陣。
DFP算法將校正矩陣定義為:
至此,根據公式4、5、6、7、10、11可以由得出
並且不需要每次迭代計算Hesse矩陣。
BFGS算法用矩陣近似公式8中的Hesse矩陣
,從而得到
將q與p互換,分別取代
由DFP公式可以得到
令,從而得到BFGS公式:
從公式11和公式12可以看出,擬牛頓法每次迭代只需要根據前次迭代的即可以計算出
,不需要求出Hesse矩陣的逆。
2.4 L-BFGS(limited-memory BFGS)
BFGS算法中每次迭代計算需要前次迭代得到的矩陣,該矩陣的存儲空間至少為N(N+1)/2,N為特征維數,對於高維的應用場景,需要的存儲空間將是非常巨大的。L-BFGS的基本思想就是通過存儲前m次迭代的少量數據來替代前一次的
矩陣。令y=q,s=p,公式12可以改寫成
公式13展開並取前m項的近似,可得
由於ρ、V、s、y這些變量都最終可以由q、p兩個向量計算得到,因此,我們只需存儲最后m次的q、p向量即可算出加上對角陣H0,總共需要存儲2*m+1個N維向量(實際應用中m一般取4到7之間的值,因此需要存儲的數據遠小於Hesse矩陣)。
注:公式4中步長的確定需要使用一維搜索,顧名思義,一維搜索就是沿着直線方向尋找使得目標函數值最小的參數值。一維搜索具體又分為精確一維搜索和非精確一維搜索,具體可參看相關文獻。
三、 其他相關方法
由於L-BFGS是建立在目標函數的2階泰勒展開基礎上的,其前提條件就是函數的2階導不為0。在機器學習中一般如果用L2正則都是可以滿足這個條件的。如果用的是L1正則,則目標函數可能出現2階導為0的情況。對於使用L1正則的情況,可以使用OWL-QN方法(Orthant-Wise Limited-memory Quasi-Newton),它是基於L-BFGS修改的。
據說百度首創了Shooting算法,收斂速度比L-BFGS快得多,目前還不知道怎么做的。
此外,Chih-Jen Lin(LIBSVM作者)提出的信賴域牛頓方法(Trust Region Newton Method),其收斂速度也比L-BGFS快,他開發的另一個針對大規模線性分類的軟件LIBLINEAR用的就是這種優化方法。
此外,Chih-Jen Lin(LIBSVM作者)提出的信賴域牛頓方法(Trust Region Newton Method),其收斂速度也比L-BGFS快,他開發的另一個針對大規模線性分類的軟件LIBLINEAR用的就是這種優化方法。
免費領取驗證碼、內容安全、短信發送、直播點播體驗包及雲服務器等套餐
更多網易技術、產品、運營經驗分享請訪問網易雲社區。
相關文章:
【推薦】 Spring Boot 學習系列(07)—properties文件讀取
【推薦】 HTTP/2部署使用