本節主要是介紹神經網絡的反向傳播算法。
深度學習中文講義
1、代價函數(Cost function)
令k爲輸出層的個數,當k>=3時,使用多元表達。所以,神經網絡的代價函數一般形式,需要對k個輸出求和,如下
注意到正則化項,由j=1開始,因爲類似x0之類的項,通常都不做正則化。
2、選擇神經網絡框架
1、輸入和輸出都是確定的。
2、一般採用一個隱藏層,如果有多個隱藏層,其維度一般一樣多。
3、隱藏單元和隱藏層越多越好,但是計算量變大。
3、隨機初始化
隨機初始化權重,不能爲了0,也不能一樣。
比如一般可以使用在0附近正態分佈的值N(0,0.1)
在實踐中,會有一種比隨機值初始化更好的方法。叫做Xavier/He 初始化,對權重(weights)進行的初始化如下
4、前向傳播(forward propagation)
1、從左至右,一步一步,計算所有hΘ(x(i)
2、計算代價函數 J(Θ)n
5、反向傳播(back propagation)
由前面計算的hΘ(x(i),與y(i)之間的差誤差δ(i)
然後一步一步從右往左反向計算所有的δ:δ(3)、δ(2),不計算δ(1)
δ(4)=a(4)−y
δ(3)=(Θ(3))δ(4).∗g′(z(3)) 其中 g′(z(3))=a(3).∗(1−a(3))
δ(2)=(Θ(2))δ(3).∗g′(z(2)) 其中 g′(z(2))=a(2).∗(1−a(2))
而,∂Θij(l)∂J(Θ)=aj(l)δi(l+1)
寫成向量的形式是:
例如:∂Θ(4)∂J(Θ)=a(3)δ(4)=(a(4)−y)(a(3))T
6、梯度檢測
第一次計算出偏導數(梯度)之後,要對計算值進行驗算,驗證算法是否正確。
通過對θ增加微小量ϵ進行近似。
驗證之後,記得將驗證算法關閉。
7、優化
例如使用梯度下降算法(或其他算法),對權重進行優化。