【數學】梯度下降,牛頓法與擬牛頓法
梯度下降
將f(x)f(x)一階泰勒展開:
f(x)=f(x0)+(x−x0)f′(x0)f(x)=f(x0)+(x−x0)f′(x0)
f(x)=f(x0)+Δxf′(x0)f(x)=f(x0)+Δxf′(x0)
如果當前處於x0x0節點,要使得前進同樣的距離使得f(x)f(x)變的最小,則Δx=−δf′(x)Δx=−δf′(x)時
f(x)=f(x0)−δf′2(x0)f(x)=f(x0)−δf′2(x0)
新的f(x)f(x)能夠取得下一步的最小值 這也是梯度下降演算法為什麼沿著梯度進行下降能夠取得最小值的證明。 用梯度下降法,每次 xn=xn−1−δf′(x)xn=xn−1−δf′(x) 在多元函式中:
xn=xn−1−δ∇f(x)xn=xn−1−δ∇f(x)
牛頓法
將f(x)f(x)二階泰勒展開:
f(x)=f(x0)+Δxf′(x0)+12Δx2f′′(x0)f(x)=f(x0)+Δxf′(x0)+12Δx2f″(x0)
因為要使得f(x)f(x)取得最小值,則f′(x)f′(x)在最小值點必為0,將上式兩邊同時求導得到【其實直接對f′(x)f′(x)進行一階泰勒展開也可以】
f′(x)=f′(x0)+Δxf′′(x0)f′(x)=f′(x0)+Δxf″(x0)
取f′(x)=0f′(x)=0得到
f′(x0)+Δxf′′(x0)=0f′(x0)+Δxf″(x0)=0
Δx=−f′(x0)f′′(x0)Δx=−f′(x0)f″(x0)
所以用牛頓法,每次取得xn=xn−1−f′(x0)f′′(x0)xn=xn−1−f′(x0)f″(x0) 在多元函式中
xn=xn−1−(∇2f(x0))−1∇f(x0)xn=xn−1−(∇2f(x0))−1∇f(x0)
其中∇2f(x0)∇2f(x0)就是f(x0)f(x0)的海森矩陣【二階梯度矩陣】
其實,牛頓法在數值分析裡面,是用來求解f(x)=0f(x)=0 的解的問題的,相較於二分法求值的一階收斂速度,牛頓法是一個二階收斂速度。 用牛頓法求解f(x)=0f(x)=0 的問題的時候,只用一階導數就好 不過在最優化問題中,需要求解的是最值點,所以找的是其f′(x)=0f′(x)=0的點,所以就用到了二階導數。
擬牛頓法
擬牛頓法直接看下面參考文獻吧 大體思路上來說用牛頓法需要計算Hessian矩陣的逆矩陣,運算複雜度太高(O(n3)O(n3)級別的)。因此,很多牛頓演算法的變形出現了,這類變形統稱擬牛頓演算法。 BFGS是用迭代法去近似計算海森矩陣。 而BFGS需要額外儲存近似的那個海森矩陣,這時L-BFGS就出現了,它每次是計算出要計算近似海森矩陣就好。詳細的看下面的參考文獻吧。