關鍵字:代價函數,梯度下降,學習速率,batch梯度下降法
話說這個梯度下降法我們的專業課數值線性代數是有的,突然發現數值線性代數果然是有用的啊
1、梯度下降法
算法(一個形象的說法:盲人下山)
注意點:所有的參數都要同時更新
1.1 代價函數
J爲代價函數,吳恩達老師舉例:平方差代價函數
如果想求代價函數J的最小值,可以採用梯度下降法
1.2 .學習速率
這裏的參數alpha稱爲學習速率,爲正數,控制每次的步長
alpha的大小需要控制,如果太大的話最後不會收斂甚至可能發散
alpha爲常數:接近局部最優解時,不需要減小alpha,因爲到達最優解時導數越來越趨近於0,此時alpha不動,會自動越來越小,就是每一步越來越小,與我們的常識是一致的。如圖所示:
學習速率的選取:
可以畫出迭代次數與代價函數的圖像
1.良好情況下,代價函數會降低,最後趨向平穩,這個時候的alpha的選擇就比較好。
2.但是如果alpha太大,那麼圖像就像這樣
這個時候就是步長太大了,對於一個圖像爲的原函數,顯然就是步 長太大造成的錯誤
3.如果代價函數如下
那麼應該選擇較小的alpha1.3 應用:不僅可以應用於線性迴歸,也可以應用於非線性迴歸模型。
2.線性迴歸模型
線性方程 和 平方和代價函數
3、Batch梯度下降法
3.1 算法
線性迴歸模型化簡後的梯度下降法如下,這裏的J採用平方差代價函數
不斷的更新參數
分析:
右邊的圖像一個等高線圖,在同一圈上的參數對應的代價函數的值都一樣的
右圖實際上是一個3D圖,第三維是代價函數J,在最裏面的小圓點J是最小的,就像碗的碗底,這是一個凸函數,從碗底往上依次J變大,這個形狀就像一個碗
左圖的點是一些已知數據,要做的就是儘可能貼合他們,即使得J最小
藍線爲線性模型,包含參數seta1和seta2
目標:使得藍線儘可能擬合數據
過程:通過seta1 seta2不斷接近底部,代價函數達到最小,那麼擬合的效果就達到最小,對應左邊有一個最佳擬合直線
如下圖爲最終結果
3.2 總結
顯然這個方法用到了所有的數據,因爲J是根據所有的數據求來的,適用於較大的數據集
懸念:還可以用高等代數的正規劃方程組的方法求得最佳參數,此時不需要遍歷整個訓練集的樣本
4.正則化方程組(用於求得最佳參數)
這個方法可以一次性求得最佳參數,不需要經過迭代,是數值線性代數裏面的直接法而不是迭代法。
當特徵小於10000時比較適合
這是觀看吳恩達網易雲機器學習系列做的筆記
圖片來源於視頻課件