1. 程式人生 > >吳恩達機器學習(第十章)---神經網路的反向傳播演算法

吳恩達機器學習(第十章)---神經網路的反向傳播演算法

一、簡介

我們在執行梯度下降的時候,需要求得J(θ)的導數,反向傳播演算法就是求該導數的方法。正向傳播,是從輸入層從左向右傳播至輸出層;反向傳播就是從輸出層,算出誤差從右向左逐層計算誤差,注意:第一層不計算,因為第一層是輸入層,沒有誤差。

二、如何計算

\delta^l_j為第l層,第j個的誤差。

以上圖為例,\delta^4_j=a^4_j-y_j(y理想應該得到的結果,a是計算得到的啟用項)

 \delta^3_j=(\theta^{(3)})^T\delta^4_j.*g'(z^3) -----g'(z^3)=a^3.*(1-a^3)           

\delta^2_j=(\theta^{(2)})^T\delta^3_j.*g'(z^2)-----g'(z^2)=a^2.*(1-a^2)

\frac{\partial }{\partial \theta^{l}_{ij}}=a^l_{i}\delta^{(l+1)}_{j}(忽略正則項)

計算過程

三、梯度檢驗

用斜率的計算方法來檢驗梯度下降進行的是否正確

\frac{d}{d\theta}J(\theta)=\frac{J(\theta+\varepsilon )-J(\theta-\varepsilon )}{2\varepsilon }

拓展可得 \frac{d}{d\theta_j}J(\Theta)=\frac{J(\theta_1...+\theta_j+\varepsilon+...+\theta_n )-J(\theta_1...+\theta_j-\varepsilon +...+\theta_n)}{2\varepsilon }

(當j取1的時候,第一個θ_1就不存在,取n也一樣)。

如果\frac{d}{d\theta}J(\theta)\approx \frac{\partial}{\partial \theta}J(\theta)說明梯度下降執行正確。

四、隨機初始化

在初始化θ的時候,對θ向量要隨機初始化,不能直接全部初始化為0。