機器學習入門之旅(四)線性模型之損失函數的迭代演算法
本節是上一節的延續,主要介紹一下損失函數的概率解釋,以及梯度下降和牛頓法兩種可以用於極值求解的優化演算法。
1. 損失函數的概率解釋
對於線性回歸模型,為什麼最小化損失函數J是一種合理的選擇?
假設目標變數和輸入的關係如下:
其中,代表偏差,可能是一些模型未覆蓋的因素導致的偏差或者隨機雜訊,並且進一步假設它們服從高斯分佈且獨立同分布,。
即:
表示給定情況下 的條件分佈。注意w是參數,並非隨機變數,因此不能表示成。
給定X(design matrix,包含所有的)和參數w,採用極大似然法來求取Y的分佈:
因此,最大化即為最小化,即最小二乘法的損失函數。需要注意的是,的大小對最終參數w的選擇沒有影響。
2. 梯度下降法(Gradient descent)
梯度下降法是一種求取函數的局部極小值的迭代演算法, 每一步沿當前點的負梯度的方向按一定比例下降。
按照導數的定義:
由公式可見,處的導數反映了函數在該點的瞬時變化速率,或者叫做在處的斜率。推廣到多維函數中,就有了梯度的概念,梯度是一個向量組合,反映了多維圖形中變化速率最快的方向。
也就是說,多元可微函數,在處下降最快的方向即為。當在足夠小時,對於可以保證 。根據這個結論,為求得函數的局部最小值,我們從初始位置開始,進行減去的迭代操作得到,,,……,可以得到,因此將有可能收斂至預期的局部最小值。其中,每次迭代時的步長並不一定要固定不變。
如果F是凸函數,局部最小值即為其全局最小值。
回到本篇開頭,我們試圖最小化J(w),採用梯度下降法:
即:
上述方法稱為批梯度下降(Batch Gradient Descent),在迭代過程中,每次更新ω時均要遍歷整個數據集,如果樣本數量m很大時收斂過程可能非常慢。
隨機梯度下降演算法(Stochastic Gradient Descent),每次只採用一個樣本(或一部分樣本)來更新ω,需要注意外層循環Loop,因為只遍歷一次樣本,不見得會收斂。
Loop {
for i=1 to m {
(for every j)}
}
3. 牛頓法
牛頓法就是求解函數零值位置的一種優化演算法。
對於定義在實數域的函數,其導數為,選取初始點,求出該點的導數(即切線的斜率),延長使其與x軸相交,以相交點的x值作為下次迭代的值,因此,迭代的更新規則為:
至於求解函數極值的過程中,我們經常轉化為求解其導數為零的問題。比如極大似然法時,求解似然函數的極大值:
令,採用牛頓法,更新規則為:
推薦閱讀: