機器學習(二) 梯度下降法

2021-10-01 04:22:40 字數 2423 閱讀 5860

前言:在上篇博文機器學習(一)中,最後我們提到,通過計算代價函式j(θ)是否收斂於最小值來確定假設函式的引數θ,進而訓練出機器學習中的線性回歸演算法,那麼如何來找到使得j(θ)最小話的引數θ呢,本篇博文將介紹一種常用的方法,梯度下降法來確定引數θ值。

一、對於單特徵線性回歸,梯度下降法的演算法如下:

repeat untile θ no change

其中 α是步長常量,關於這個步長的選擇不同的訓練樣本有不同的選擇,如何選擇合適的α值,一般就是通過不斷的嘗試,最終找到乙個合適值,至於什麼樣的α值是合適什麼樣的是不合適,後面我們會講到。

注意上面迴圈中的θj一定要同步更新,即正確的過程如下:

repeat untile θ no change

錯誤的過程如下:

repeat untile θ no change

二、直觀理解梯度下降法的工作原理

為了便於理解,我首先假設線性回歸的假設函式hθ(x)=θ0+θ1x中引數θ0=0;,則我們得到簡單的假設函式是hθ(x)=θ1x

1、假設我有m=3個訓練集,分別是(1,1)(2,2),(3,3),它的樣本資料分布圖如下:

2、我們的代價函式如下:

3、我們可以假設若干個θ1的值,然後近似繪製出代價函式的圖形,比如

取θ1=0.5,可以得到j(θ1)=( (0.51-1)2+(0.52-2)2 +(0.5*3-3)2 ) / (2 * 3) =0.375;

即代價函式的乙個值為(0.5,0.375);以此類推,可以得到多個代價函式的座標對(1,0),(1.5,0.375),(0,2.3),從而得出代價函式的近似圖形,如下圖所示

4、從代價函式的圖形中可以直觀的看出,當θ1=1時j(θ1)收斂到最小值,這也是我們的目標,因此,我們訓練到假設函式為hθ(x)=x;它與訓練集的擬合效果如下圖

由此最簡單的乙個例子,可以看出,我們直觀上訓練出了與樣本資料擬合度很高的假設函式

5、那麼梯度下降法是怎麼找到使得代價函式最小的θ1呢?我們上面提到梯度下降法的演算法是

其中是代價函式的偏導數,如果對導數和偏導數有過學習都知道,某點的導數其實是某點的斜率,從第3步得到的代價函式圖可以知道:

如果θ1在θ1=1的右側,則偏導數為正數,那麼梯度下降法中,θ1=θ1-α*(正數),則θ1向左移動,即向θ1=1的位置移動;

如果θ1在θ1=1的左側,則偏導數為負數,那麼梯度下降法中,θ1=θ1-α*(負數),則θ1向右移動,即向θ1=1的位置移動;

那麼如果選取的α值,即步數值,也就是θ1每次移動的步子大小,比較合適的話,那麼最終通過多次梯度下降,一定能夠收斂於使得代價函式值最小的θ1

注意:由第5步分析梯度下降法的工作原理,我們也知道選取乙個合適的α值是多麼重要,

如果選取的α值過大,那麼可能導致在接近θ1=1的時候,由於跨度過大直接跨過了最優解,甚至會導致代價函式不能收斂,就是梯度下降法處於死迴圈狀態;

但如果選取的α值過小,雖然可以得到最優的θ1,但是效率會降低,因為步數太小,每次就下降一點點,那麼下降到最優的θ1將會經過很多步驟。

那麼如何選取乙個合適的α值,這一點需要經驗也許不斷的嘗試,後面會講解如何不斷嘗試,然後得到乙個比較合適的α值。

三、求解梯度下降演算法

以hθ(x)=θ0+θ1*x為例,可得如下推導:

機器學習(三) 梯度下降法

本部落格大部分參考了這篇博文 在微積分裡面,對多元函式的引數求 偏導數,把求得的各個引數的偏導數以向量的形式寫出來,就是梯度。比如函式f x,y 分別對x,y求偏導數,求得的梯度向量就是 f x f y 簡稱gr adf x,y 或者 f x,y 如果是3個引數的向量梯度,就是 f x f y,f ...

機器學習一(梯度下降法)

最近偶觸python,感ctrl c和ctrl v無比順暢,故越發膨脹。怒拾起python資料分析一pdf讀之,不到百頁,內心惶恐,嘆 臥槽,這都tm是啥,甚是迷茫。遂感基礎知識薄弱,隨意搜了機器學習教程,小看一翻。此文給出課件中幾個演算法,自己都不知道對不對,感覺還可以吧。本文以線性回歸為例,在給...

機器學習演算法(四) 梯度下降法

在對模型優化時,希望通過梯度下降法使得模型的損失函式降低。目前主要的梯度下降法有sgd momentum adagrad rmsprop adam幾種,接下來將詳細討論這幾種方法以及他們的優缺點。隨機選取乙個樣本的損失來近似整體樣本的平均損失,sgd在進行引數更新時的計算方式為 t t 1 gt t...