本文由做者林洋港受權網易雲社區發佈。算法
L-BFGS是解無約束非線性規劃問題最經常使用的方法,具備收斂速度快、內存開銷少等優勢,在機器學習各種算法中常有它的身影。簡單的說,L-BFGS和梯度降低、SGD乾的一樣的事情,但大多數狀況下收斂速度更快,這點在大規模計算中很重要。下圖是深度學習Autoencoder模型不一樣優化方法的比較。安全
這裏的「以前」並非說L-BFGS問世以前就已經存在的方法,而是指爲了更好的理解L-BFGS須要瞭解的其餘方法。無約束問題定義:服務器
咱們先從泰勒展開開始,這能夠說是本文介紹的全部方法的基礎。f在的一階泰勒展開爲機器學習
二階泰勒展開爲函數
去掉最後的餘項,獲得微服務
2.1 最速降低法(Gradient descent)post
CD算法的一個前提條件就是f在連續可微,而且在
處的導數不爲0。由公式1可知當第二項<0時f的值將降低。由Cauchy-Schwartz不等式可得學習
爲最速降低方向。所以迭代公式爲優化
知足
code
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階對稱正定矩陣(一般爲單位矩陣
稱爲校訂矩陣。
DFP算法將校訂矩陣定義爲:
至此,根據公式四、五、六、七、十、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用的就是這種優化方法。
免費領取驗證碼、內容安全、短信發送、直播點播體驗包及雲服務器等套餐
更多網易技術、產品、運營經驗分享請訪問網易雲社區。
相關文章:
【推薦】 爲何 kubernetes 自然適合微服務