1. 梯度下降法的缺點
由於處理的資料有不同的量綱和量綱單位,導致不同維度資料之間尺度差異很大,如下圖(左)所示,目標函數的等高線是橢圓形的。這樣在通過最小化目標函數尋找最優解的過程中,梯度下降法所走的路線是鋸齒狀的,需要經過的迭代次數過多,嚴重影響了演算法的效率。
為瞭解決這個問題,可以對資料進行歸一化,例如採用min-max標準化將輸入資料範圍統一到[0,1]之間:
x∗=x−minmax−min x^*=\frac{x-min}{max-min}
處理後的結果如上圖(右)所示,經過很少次數的迭代就可以達到目標函數的最低點,極大提高演算法的執行效率。
2. 牛頓法
資料歸一化是從資料預先處理的角度解決梯度下降法迭代次數過多這個問題的,若從目標函數最佳化的角度去思考,可以用牛頓法替代梯度下降法,從而提高參數最優值的求解速度。
有n個變數的函數 J(θ) J(\theta)的一階導數為:
∂J∂θ=[∂J∂θ1,∂J∂θ2,...,∂J∂θn] \frac{\partial J}{\partial \theta}=[\frac{\partial J}{\partial \theta_1},\frac{\partial J}{\partial \theta_2},...,\frac{\partial J}{\partial \theta_n}]
二階導數(也稱為Hessian矩陣)為:
目標函數 J(θ) J(\theta)的包含二階導數的泰勒展開式為:
J(θ+Δθ)=J(θ)+ΔθT∂J(θ)∂θ+12ΔθT∂2J(θ)∂θ2Δθ J(\theta+\Delta\theta)=J(\theta)+\Delta\theta^T\frac{\partial J(\theta)}{\partial \theta}+\frac{1}{2}\Delta\theta^T\frac{\partial^2 J(\theta)}{\partial \theta^2}\Delta\theta
將 J(θ+Δθ) J(\theta+\Delta\theta)看做 Δθ \Delta\theta的函數的話,其最小值在其偏導數等於0處取得: