梯度下降法和高斯牛頓法的區別在哪裡,各自的優缺點呢?
01-06
levenberg-marquardt結合了兩者,它的優缺點又體現在哪裡
最近寫作業正好用到levenberg-Marquart演算法。拋個磚怒答一發。首先梯度下降法和高斯牛頓法都是最優化方法。其區別之處在於,梯度下降法在尋找目標函數極小值時,是沿著反梯度方向進行尋找的。梯度的定義就是指向標量場增長最快的方向,在尋找極小值時,先隨便定初始點(x0,y0)然後進行迭代不斷尋找直到梯度的模達到預設的要求。但是梯度下降法的缺點之處在於:在遠離極小值的地方下降很快,而在靠近極小值的地方下降很慢。而高斯牛頓法是一種非線性最小二乘最優化方法。其利用了目標函數的泰勒展開式把非線性函數的最小二乘化問題化為每次迭代的線性函數的最小二乘化問題。高斯牛頓法的缺點在於:若初始點距離極小值點過遠,迭代步長過大會導致迭代下一代的函數值不一定小於上一代的函數值。所以在高斯牛頓法中加入了因子μ,當μ大時相當於梯度下降法,μ小時相當於高斯牛頓法。(這兒我也不明白為什麼,希望有大牛解答)。在使用Levenberg-Marquart時,先設置一個比較小的μ值,當發現目標函數反而增大時,將μ增大使用梯度下降法快速尋找,然後再將μ減小使用牛頓法進行尋找。
牛頓法並沒有一定收斂的保證,如果在當前迭代點二階近似不準確,或者,目標函數在這裡本就是線性,二階導數根本不存在,那麼牛頓法一定會ill posed,導致不收斂。可以聯想為牛頓法步長J/H在某些方向非常大(因為Hessian在這些方向接近於0的導數)而梯度下降加上line seerch是一定會往正確方向收斂的,但是速度會慢。LM可以理解為:GN二階近似的好的點,更相信GN給出的步長,GN ill posed以至於無法收斂時相信梯度下降,是一個trade off。以上僅是個人理解。
牛頓法要比梯度下降法更具有全局判斷能力梯度法從初始點的領域開始判斷,在局部進行下降,然後步步逼近極值,往往是走之字型的。牛頓法在二階導數的作用下,從函數的凸性出發,直接搜索怎樣到達極值點,也就是說在選擇方向時,不僅考慮當前坡度是否夠大,還會考慮你走了一步之後,坡度是否會變得更大。從收斂速度來看,梯度下降是線性收斂,牛頓法是超線性的,至少二階收斂~
推薦閱讀:
※使用ReLU作為激活函數還有必要用交叉熵計算損失函數嗎?
※為什麼隨機梯度下降方法能夠收斂?
※為什麼 feature scaling 會使 gradient descent 的收斂更好?
※尋找全局最小值和防止過擬合之間是不是矛盾的?