數據挖掘day28、29-CS229-WEEK4 Neural Networks:Learning

本節主要是介紹神經網絡的反向傳播算法。
深度學習中文講義

1、代價函數(Cost function)

令k爲輸出層的個數,當k>=3時,使用多元表達。所以,神經網絡的代價函數一般形式,需要對k個輸出求和,如下
在這裏插入圖片描述
注意到正則化項,由j=1開始,因爲類似x0x_0之類的項,通常都不做正則化。
在這裏插入圖片描述

2、選擇神經網絡框架

1、輸入和輸出都是確定的。
2、一般採用一個隱藏層,如果有多個隱藏層,其維度一般一樣多。
3、隱藏單元和隱藏層越多越好,但是計算量變大。

3、隨機初始化

隨機初始化權重,不能爲了0,也不能一樣。
比如一般可以使用在0附近正態分佈的值N(0,0.1)\mathcal{N}(0,0.1)
在實踐中,會有一種比隨機值初始化更好的方法。叫做Xavier/He 初始化,對權重(weights)進行的初始化如下
在這裏插入圖片描述

4、前向傳播(forward propagation)

1、從左至右,一步一步,計算所有hΘ(x(i)h_{\Theta}(x^{(i)}
2、計算代價函數 J(Θ)J(\Theta)n

5、反向傳播(back propagation)

由前面計算的hΘ(x(i)h_{\Theta}(x^{(i)},與y(i)y^{(i)}之間的差誤差δ(i)\delta^{(i)}
然後一步一步從右往左反向計算所有的δ\deltaδ(3)\delta^{(3)}δ(2)\delta^{(2)},不計算δ(1)\delta^{(1)}

δ(4)=a(4)y\delta^{(4)}=a^{(4)}-y
δ(3)=(Θ(3))δ(4).g(z(3))\delta^{(3)}=(\Theta^{(3)})\delta^{(4)}. *g'(z^{(3)}) 其中 g(z(3))=a(3).(1a(3))g'(z^{(3)})=a^{(3)}. *(1-a^{(3)})
δ(2)=(Θ(2))δ(3).g(z(2))\delta^{(2)}=(\Theta^{(2)})\delta^{(3)}. *g'(z^{(2)}) 其中 g(z(2))=a(2).(1a(2))g'(z^{(2)})=a^{(2)}. *(1-a^{(2)})

而,Θij(l)J(Θ)=aj(l)δi(l+1)\frac{\partial }{\partial \Theta_ij^{(l)}}J(\Theta)=a_j^{(l)}\delta_i^{(l+1)}
寫成向量的形式是:
例如:Θ(4)J(Θ)=a(3)δ(4)=(a(4)y)(a(3))T\frac{\partial }{\partial \Theta^{(4)}}J(\Theta)=a^{(3)}\delta^{(4)}=(a^{(4)}-y)(a^{(3)})^T
在這裏插入圖片描述

6、梯度檢測

第一次計算出偏導數(梯度)之後,要對計算值進行驗算,驗證算法是否正確。
通過對θ\theta增加微小量ϵ\epsilon進行近似。
在這裏插入圖片描述
驗證之後,記得將驗證算法關閉。

7、優化

例如使用梯度下降算法(或其他算法),對權重進行優化。

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