1. 程式人生 > >最小二乘法和梯度下降法有哪些區別?

最小二乘法和梯度下降法有哪些區別?

https://www.zhihu.com/question/20822481

最小二乘法的目標:求誤差的最小平方和,對應有兩種:線性和非線性。線性最小二乘的解是closed-form即x=(A^T A)^{-1}A^Tb,而非線性最小二乘沒有closed-form,通常用迭代法求解。

迭代法,即在每一步update未知量逐漸逼近解,可以用於各種各樣的問題(包括最小二乘),比如求的不是誤差的最小平方和而是最小立方和。

梯度下降是迭代法的一種,可以用於求解最小二乘問題(線性和非線性都可以)。高斯-牛頓法是另一種經常用於求解非線性最小二乘的迭代法(一定程度上可視為標準非線性最小二乘求解方法)。

還有一種叫做Levenberg-Marquardt的迭代法用於求解非線性最小二乘問題,就結合了梯度下降和高斯-牛頓法。

所以如果把最小二乘看做是優化問題的話,那麼梯度下降是求解方法的一種,x=(A^T A)^{-1}A^Tb是求解線性最小二乘的一種,高斯-牛頓法和Levenberg-Marquardt則能用於求解非線性最小二乘。

具體可參考維基百科(Least squares, Gradient descent, Gauss-Newton algorithm, Levenberg-Marquardt algorithm

作者:知乎使用者
連結:https://www.zhihu.com/question/20822481/answer/23648885
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

 

-------------------------------

作者:佳禮
連結:https://www.zhihu.com/question/20822481/answer/37362968
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
 

 通常我們所說的狹義的最小二乘,指的是線上性迴歸下采用最小二乘準則(或者說叫做最小平方),進行線性擬合引數求解的、矩陣形式的公式方法。所以,這裡的「最小二乘法」應叫做「最小二乘演算法」或者「最小二乘方法」,百度百科「最小二乘法」詞條中對應的英文為「The least square method」。

  這裡,基於線性迴歸,有兩個細節比較重要:

  第一,線性迴歸的模型假設,這是最小二乘方法的優越性前提,否則不能推出最小二乘是最佳(即方差最小)的無偏估計,具體請參考高斯-馬爾科夫定理。特別地,當隨機噪聲服從正態分佈時,最小二乘與最大似然等價。

  第二,由於是線性迴歸/擬合,因此可以很容易的求出全域性最優的閉式解close form solution,也即我們通常看到的那幾個矩陣形式,給了input data可以一步到位算擬合引數,而不是像梯度下降法或者牛頓法那樣一點點地迭代優化調參最後到達極值點。

 

  而廣義的最小二乘,指的是上文提到過的最小二乘準則,本質上是一種evaluation rule或者說objective funcion,這裡的「最小二乘法」應叫做「最小二乘法則」或者「最小二乘準則」,英文可呼為LSE(least square error)

 

  舉個例子,我要優化一個深度神經網路DNN(Deep neural network)的網路引數(換言之,優化此網路對於已知資料擬合結果的正確性),可不可以用最小二乘準則去衡量某一擬合結果相對於標準答案的偏差程度呢?可以。而同時,由於DNN模型本身的複雜性,我們沒有辦法像線性擬合時那樣,在理論和公式的層面求出一個close form solution,因此需要引入所謂的BP演算法(實質上就是梯度下降法)進行引數的迭代求解。

  But(^_^),上面雖然給出了最小二乘準則+梯度下降法串聯使用的例子,但實際的擬合效果必定會比較一般,原因在於DNN這一體系相當於非線性迴歸,因此最小二乘不好,反而是logistic迴歸+最大似然=交叉熵準則Cross Entropy在DNN引數優化演算法中的更有效和廣泛一些。當然,這就是另一個話題了。



綜上:
  狹義的最小二乘方法,是線性假設下的一種有閉式解的引數求解方法,最終結果為全域性最優;
  梯度下降法,是假設條件更為廣泛(無約束)的,一種通過迭代更新來逐步進行的引數優化方法,最終結果為區域性最優;
  廣義的最小二乘準則,是一種對於偏差程度的評估準則,與上兩者不同。
 

  水平所限,歡迎討論指正。