求解方程時,除了用牛頓法,可否使用梯度下降法?
01-16
求解時,我們一般會用牛頓法:
然而,假如我們把這個看成一個最優化的問題:那能否用梯度下降法來求解呢?假如可以的話,那它的形式是看起來與牛頓法的形式非常相似,不過不用求梯度的逆。所以問題來了: (如果表述有不清楚或者不準確的地方,歡迎幫忙修改問題描述。)
- 第二種方法真的可行嗎?
- 兩種方法是否有某種內在的聯繫?
- 兩種方法都是可以的。如果我沒有記錯的話,第二種formulation是MATLAB的函數fsolve裡面採用的。然後fsolve可以選擇各種不同的優化演算法(基於包括Newton和梯度下降等不同方法的演算法)作為option.詳見: Solve system of nonlinear equations
- 關於Newton方法和梯度下降法的區別,我是這樣理解的:
今天看書《應用非線性控制》slotine,發現了一個地方,特地再回來回答一下,供參考。
在自適應控制參數更新的方法中,就有專門的一個條目叫做『梯度下降法』,中文版章節是8.7.3
SDM, 我的理解是:
其中, ,(gradient)表示搜索的方向; 為搜尋的步長(例如line search),表示前進的距離。
只回答第二個問題:
兩者是有聯繫的。
SDM 是進行泰勒一階展開,然後求導(gradient)。如果只考慮一維的情況,初中數學告訴我們最小值在邊界或者在gradient = 0 的地方。
Newton method 也是泰勒展開,但是他是二階的, 其他東西都一樣。
如果Hessian能高效的求出來, Newton很快,非常快,特別快。如果不能,那麼可以嘗試quasi newton。
SDM很穩定,但是如果目標函數比較噁心,那麼速度會比較慢。
加個圖:
你可以看到,越靠近最優的點, SDM速度越慢,每次搜索前進的距離越短,效率越低。Newton method 可能只需要幾次搜索就能找到最優值。
再附一個比較:
參考: Practical Optimization - Algorithms and Engineering | Andreas Antoniou | Springer
跑題了。。。。
推薦閱讀:
※如何證明一個數的數根(digital root)就是它對9的餘數?
※程序員工作後看演算法書有用嗎?效果怎樣?
※一道阿里前端筆試題,求思路?
※什麼樣的題目解出來可以是這樣的二維碼?
※蛇形圍欄能否解決交通擁堵問題?這種設計思路說明什麼問題?