二階隨機優化算法小結

二階隨機優化算法

標籤(空格分隔): L-BFGS NewSample Lissa


最近看了幾篇二階優化算法,現在總結一下,以便日後查閱.就是這樣

二階算法

二階優化算法又稱爲牛頓法,牛頓法是微積分學中, 通過迭代以求解可微函數f的零點的一種算法,而在最優化中,牛頓法通常被運用於求解一個二次可微函數f的一階導數f’的零點x, 同時也是f的駐點。 因此從另一個角度而言,應用於最優化中的牛頓法是求解函數 f(x)的最小值或最大值的一種算法。

二階算法都是從牛頓法演變而來,關於牛頓法詳情可以參考我另外一篇博客

傳統二階算法缺陷

傳統的二階優化方法如牛頓法,主要有兩個缺陷,一個是需要計算Hessian矩陣,需要O(np^2) 的複雜度,另外一個便是計算Hessian的逆矩陣需要O(p^3 )的複雜度。而在p維度很高的時候,傳統二階優化法顯然不能夠適用。

隨機算法

隨機梯度下降類算法以及其改進SVRG、SAGA等算法的提出,大大降低了算法迭代一次所需要的時間。在最近的相關研究中,隨機一階優化算法已經在機器學習優化模型中佔據主導支配地位,這很大是由於它能夠在大規模的模型訓練中提供可負擔的線性計算成本。對一階優化算法提升起到主要貢獻的研究工作,其中包括adaptive regularization, variance reduction,dual coordinate ascent。與之對比,二階優化算法由於每次迭代需要計算一次Hessian矩陣以及Hessian的逆,其一次迭代過高的計算複雜性和消耗大量內存導致不能夠適用於大規模的機器學習應用之中。

近期,讓二階算法適用於大規模機器學習中,有了相關進展工作。其中主要典型的研究工作有(包括但不侷限於以下):1.Stochastic L-BFGS 2. NewSamp 3.LiSSA。他們都是從不同角度解決二階方法的侷限性,下面將分別介紹這三種方法。

NewSamp

A Newton method via sub-sampling and eigenvalue thresholding

這裏的NewSamp核心想法就是對Hessain子採樣(sub-sampling)以及低秩矩陣近似(low-rank approximation),這裏爲什麼可以低秩近似?需要先對奇異值含義有所理解,可以參考知乎問題
奇異值的物理意義是什麼?

NewSamp算法分析

NewSamp他實質是基於子採樣的牛頓法,是一個很簡潔的算法。
1. 首先,NewSamp通過子採樣避免對所有樣本求Hessian。
2. 對於Hessian求逆. 牛頓法主要通過發掘Hessian的中所包含的曲率信息達到加速效果,由於重要的二階曲率信息一般包含在最大的若干個特徵值以及其對應的特徵向量中。因而對於Hessian求逆的問題,NewSamp採用低秩矩陣近似技術來得到Hessian矩陣逆的近似。假如目標函數是凸函數,那麼對應的Hessian矩陣特徵值便是非負,對稱的Hessian矩陣的奇異值和特徵值相同,因而算法NewSamp採用截斷SVD分解獲得前k大的特徵值以及對應特徵向量, 然後快速得到Hessian的逆。

貢獻

NewSamp的最主要貢獻,是在提供良好收斂效果的同時提供了理論保證。

算法過程

NewSamp

這裏作者並沒有直接套用最基本的rank-r approximation

To construct the curvature matrix [Qt]−1, instead of using the basic rank-r approximation, we fill its 0 eigenvalues with the (r+1)-th eigenvalue of the sub-sampled Hessian which is the largest eigenvalue below the threshold.

這裏如果我沒有理解錯的話,應該是讓奇異值小於(r+1)以後的奇異值都變爲第(r+1)個奇異值,黃色高亮部分就是這句話優雅的數學表達形式

這裏的投影操作實際可以不用,用了只會效果更好,作者在後面的理論證明中直接跳過了投影這個操作

實驗結果

表現最好的那個就是NewSamp
NewSamp2

Stochastic L-BFGS算法

the limited-memory version of the classic BFGS algorithm

在牛頓法的迭代中, 需要計算Hessian矩陣的逆矩陣這一計算比較複雜,考慮用一個n階矩陣Gk 近似代替Hk1 。這就是擬牛頓法中基本想法,BFGS算法是最流行的擬牛頓算法。但是BFGS算法需要存儲上一次迭代中的Hessian,這消耗大量內存,因而改良版的基於Hessian-vector的Limited BFGS算法提出。.最新的論文A Linearly-Convergent Stochastic L-BFGS Algorithm中加入了variance reduction隨機優化, 讓它能夠處理一些稍大規模的優化問題,並且以較好的線性收斂

算法分析

在SVRG和SAGA算法提出後,隨機算法各方面性能有了顯著提升,基於L-BFGS的隨機優化算法也相應提出,其在部分數據上的實驗效果不亞於SVRG等主流算法。

個人感覺Stochastic L-BFGS主要由以下三點保證了他的優勢:

  • 基於BFGS的擬牛頓法的良好算法性能
  • 基於Hessian-vector思想而不必存儲Hessian矩陣以及減少計算複雜度.
  • 基於Variance Reduce的隨機梯度估計矯正。

但是他有明顯的劣勢,有很多參數需要設置。這裏有一個值得關注的地方, SLBFGS算法他的Hessian是一個類似於增量不斷更新的, 並且和方差約減後的梯度相乘

算法流程

每m次計算一次全梯度,來減少variance
每L次算法更新一次Hessian矩陣,這裏的更新利用了過去M次(Sj, Yj)的曲率信息
Sr記錄過去2L次的平均方向
Yr是Sr和Hessian矩陣相乘得出的
L-BFGS

這裏黃色高亮的部分就是variance reduction,這裏可以說是L-BFGS加入了variance reduction,也反過來說是variance reduction加入了二階信息,而這裏採用了隨機優化後的L-BFGS

Lissa

LiSSA: Algorithm 1 is a practical stochastic second-order algorithm based on a novel estimator of the Hessian inverse, leading to an efficient approximate Newton step (Equation 1). The estimator is based on the well known Taylor approximation of the inverse

Lissa 核心想法是通過Taylor來近似逆從而對Hessain逆進行採樣
Taylor approximation

算法分析

LiSSA是一個具有實際應用價值的二階隨機算法,他爲二階優化算法提出一種新穎的思路。NewSamp是對通過子採樣估計出一個較爲精確的Hessian,然後通過矩陣分解得出Hessian的逆的近似。隨機版本的L-BFGS則是基於擬牛頓思路,通過構造得出滿足擬牛頓條件並和原Hessian的逆儘可能接近的矩陣。但是LiSSA則是通過對Hessian的逆的泰勒展開式,得出Hessian逆與Hessian的等式,再通過對Hessian的進行採樣估計,來直接估計出Hessian的逆。LiSSA的思路完全不同於上述兩種算法,同時LiSSA算法採用Hessian-vector product對形式因而對廣義線性模型具有更加明顯的優勢。

算法流程

算法

這裏S1表示採樣數量的多少
S2表示一個採樣中Taylor近似的深度
這裏的X[i,j]表示的是梯度和 Hessain逆估計的乘積,是一個向量

高亮的部分其實就是之前Hessain逆的Taylor近似的遞推形式,原理如下
遞推

這裏遞推初始化是梯度, 相當於在原來的遞推式子上面都乘以了梯度, 最後得出的就是迭代量,擬牛頓法中的p

這裏用X向量可以簡化運算

Lissa的另外一種理解

理解

這裏通過y=xxt1 以及替換f(x)中的x, 並在點xt1 泰勒展開得到上式中的Q(y)表達式, 那麼原本的求f(x)最小值等價於Q(y)最小值
Q(y)相當於是對f(x)的二階近似, 此處轉化爲對Q(y)的求最值, 然後這是一個二次函數, 我們可以用一般梯度下降算法對此處求最值, 也就是yti+1 的迭代式,這裏他的形式和Lissa的迭代形式很像, 所以可以看做是Lissa的一種理解, 也可以理解Lissa能夠獲得線性收斂率的原因

二階優化的問題

這裏是師兄對我提的問題,我覺得很有意思,需要理解才行

爲什麼二階方法快

圖解
Deep learning via Hessian-free optimization中有簡單提到, 當解處於一個類似於平原的時候, 普通梯度下降如果仍舊以原來的步伐走, 那麼需要很久才能走出來, 如果此時乘以一個Hessain的逆, 那麼可以想象這裏的Hessain表示曲率. Hessain曲率偏小, 他的必然就會放大步伐

相反,如果梯度變化太快,如果仍舊原步伐, 很可能就來到一個很差的點, 乘以Hessain的逆,可以放慢步伐

文章中都說是考慮進來了曲率信息 是怎麼考慮的?

Hessian矩陣是如何攜帶曲率信息的額?

參考文獻
1. 《統計學習方法》 -李航
2. Second-Order Stochastic Optimization for Machine Learning in
Linear Time
3. Second-Order Stochastic Optimization for Machine Learning in
Linear Time
4. A Linearly-Convergent Stochastic L-BFGS Algorithm
5. Deep learning via Hessian-free optimization

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章