AI數學基礎37-從程式碼角度深入理解梯度下降法2

weixin_33807284發表於2018-07-06

在《AI數學基礎36-從程式碼角度深入理解梯度下降法1》我們得到了訓練資料,即101個(x,y)。回顧一下監督式機器學習基本思路:有一組樣本x,並有對應的標籤y,通過最小化代價函式(cost function),訓練出引數w和b(針對本文簡化的情況)。

第一步,為引數賦一個初始值init_w, init_b;

init_w = 0

init_b = 0

第二步,計算當前引數(w,b)代價函式(cost function)。代價函式是每個樣本(sample)的誤差(error)的平均值


10758717-4a11916fed096e1a.png
cost function

順便說一下,在機器學習中,代價函式習慣上用字母J,而不是C來表示,原因是,J代表Jacobian matrix,隱含後面要對該函式做一階偏導的意思。

代價函式Python程式碼實現如下圖所示:


10758717-093edcc15d5b0955.png

第三步,計算代價函式對(w,b)的一階偏導數,即梯度,並根據梯度更新w,b的值,公式推導如下:


10758717-609ff1a26489950e.png

對於新的w,b值,由下面的公式算出:


10758717-3a5fbc9ddef54c1d.png

其中α是學習率(learning rate)

程式碼實現如下圖所示:


10758717-cd87ba3463be4949.png
每一步計算梯度,並更新w,b值

第四步,不斷重複第三步,直到找到代價函式值最小,或者達到指定的訓練步數

實現程式碼,如下圖所示:


10758717-942bb27d9d612b84.png

以上四步,就是梯度下降法典型的實現。

我們寫一個函式,來測試一下:


10758717-5a10e0e26186ce07.png

到此,使用梯度下降法,訓練(w,b)引數,成功。

梯度下降法 vs 反向傳輸法

梯度下降法是應用非常廣的數學優化方法(mathematical optimization method), 當它應用於神經網路(Neural Network)時,又被稱為反向傳輸法(Back Propagation) ,是神經網路演算法中應用的最廣的優化策略(the most popular optimization strategy)

相關文章