機器學習(十一)神經網絡模型之代價函數及利用反向傳播算法實現梯度下降算法

機器學習(十一)神經網絡模型之代價函數及利用反向傳播算法實現梯度下降算法

前言

上篇博文已經詳細解釋了什麼是神經網絡,以及如何理解一個神經網絡模型的計算過程,並利用反向傳播算法實現了神經網絡模型中預測函數的獲得。那麼和邏輯迴歸以及線性迴歸一樣,得到了預測函數,下一步就是利用梯度下降法求解預測函數中的參數,來使得預測函數儘可能的接近樣本數據,最終得到完整的預測函數hθ(x),那麼在使用梯度下降法時,我們需要完成兩步操作,首先是獲得代價函數,之後是求解代價函數的偏微分,進而執行梯度下降法。本文將講解神經網絡中的代價函數,以及對代價函數求偏微分的方法–向後傳播算法。

一、神經網絡模型的代價函數

1、假設對於多分類問題的一種神經網絡模型如下:
在這裏插入圖片描述
2、假設針對上面神經網絡的訓練樣本爲{(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))}
3、符號定義
L:代表神經網絡模型的總層數,比如上圖神經網絡模型中L=4;
Sl:第l層神經元的個數(不包括偏差單元),比如上圖神經網絡模型中S1=3,S2=5,S3=5,S4=SL=4;
4、邏輯迴歸中帶正則項的代價函數如下:
在這裏插入圖片描述
5、與上面邏輯迴歸中帶正則項的代價函數類似,我們可以得到神經網絡中帶正則項的神經網絡代價函數如下:
在這裏插入圖片描述
其中,hθ(x)爲矢量,(hθ(x))i代表第i個輸出神經元;

二、反向傳播算法

1、神經網絡模型的代價函數得到後,我們需要根據代價函數執行梯度下降法求得預測函數中的參數,對於梯度下降法,如果想要求得minJ(θ),我們需要求J(θ),以及θij關於J(θ)的偏導數。而反向傳播算法就是用來求取θij關於J(θ)的偏導數。對於本文中的神經網絡模型,假設只有一個訓練樣本,具體算法如下:
A:利用向前傳播算法求出每層的激活函數值向量a(i)
在這裏插入圖片描述
B:利用向後傳播算法求出每層的誤差向量δ(i),進而求出θij關於J(θ)的偏導數。
在這裏插入圖片描述
C、上面B步驟是對於只有一個訓練樣本的特色情況的推算,對於普遍情況的向後傳播算法如下:
訓練集:{(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))}
在這裏插入圖片描述
求出θij關於J(θ)的偏導數後,便可以執行梯度下降法了。

三、反向傳播計算結果是否正確的檢驗

1、反向傳播計算的是θij關於J(θ)的偏導數,這個反向傳播的過程確實比較複雜,爲了保證你寫的反向傳播代碼是正確的,我們可以採用另一種過程比較簡單但效率遠不及反向傳播的方法計算θij關於J(θ)的偏導數,然後將兩者進行對比,來估算自己的反向傳播代碼是否正確。
對於如下的J(θ)圖形,如果我們求θ關於J(θ)的偏導數,我們可以通過極限的方式進行計算
在這裏插入圖片描述
通過上圖我們可以求得在這裏插入圖片描述,其中ε爲趨向於0的無窮小
.
.
.

2、對於神經網絡中的參數θ={θ1,θ2,θ3,…,θn},可以求的θj對J(θ)的偏導數如下
在這裏插入圖片描述
之後對比該數學方法得到的偏導數與向後傳播得到的偏導數結果,如果基本相等,則證明你的向後傳播算法是正確的,一旦驗證完成,立刻註釋上面數學方法計算偏導數的代碼,因爲這種方法效率很低,會大幅度拖慢算法效率,僅僅用它來測試一次你的向後傳播算法是否正確就可以了。

四、神經網絡參數初始值的選擇

對於邏輯迴歸和線性迴歸我們可以直接將參數θ全部初始化爲0,但是對於神經網絡我們不能把參數全部初始化爲0,具體原因不再解釋,對於神經網絡參數的初始化我們可以使用選取[-ε,ε]之間的隨機數,ε是趨向於0的極小值

五、神經網絡訓練過程總結

1、選擇神經網絡模型:輸入的神經元個數就是分類問題的特徵要素個數,輸出神經元的個數就是待分類的個數;
2、隨機初始化權重(參數)θ
3、向前傳播算法得到預測函數hθ(x)
4、得到hθ(x)的代價函數J(θ)
5、向後傳播計算每個參數對J(θ)的偏導數
6、梯度檢驗向後傳播計算的偏導數是否正確
7、關閉梯度檢驗
8、用梯度下降法或者其它高級算法求的最小化J(θ)的參數值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章