從這一節開始,將介紹神經網絡的相關內容。
博客不以介紹基本概念爲主,而是注重一些淺顯的推到和證明過程,以幫助理解。
如果你對神經網絡一竅不通,你應該去看神經網絡與深度學習
該博客可以看做是對於該文章的摘要。
概念圖
上述圖片顯示了神經網絡的數據流動。
其中的每一個圓圈表示一個神經元。
一般對於神經元的描述如下:
一個神經元有幾個輸入和一個輸出,多個輸入和其權重相乘後在相加,其和通過和一個權重比較來決定輸出的值。
用公式來表示就是:
即x爲輸入,w爲權重,b是一個實數,代表偏置,
如果你閱讀過前面機器學習的內容機器學習(二):邏輯迴歸或者機器學習(四):損失函數,就知道了可以使用躍階函數和sigmoid函數作爲判斷輸出值的標準,並會明白一般我們喜歡使用sigmoid函數。
同樣的,一般來說,神經網絡也採用sigmoid函數作爲從輸入到輸出的決定標準。
代價函數
義同損失函數,我們需要一個標準來優化神經網絡。
神經網絡的代價函數如下:
y是對應於x的label,a是對應於x的神經網絡輸出值。
a是用過一系列的矩陣相乘,和sigmoid函數計算出來的。
目標是使得C(w,b)最小,其中w,b是參數變量,參考前一篇博客機器學習(三):梯度下降法,我們將使用梯度下降方法。
若能得到
那麼接下來的重點就是對於中間的結果,如何求解梯度了。
反向傳播(backpropagation)
在介紹這一節前,將詳細規定一下各參數。
一個神經網絡中的所有參數如下:
從
則第
爲了簡潔,可以使用矩陣的表示形式:
同時引入一箇中間變量:
下面將開始反向傳播中梯度的推導。
梯度推導
再推倒前,先引入一箇中間結果,因爲最後的形式會用到這個中間結果,即:
該定義可以理解爲第
公式1
注意到這裏的
公式2
根據公式1,可以求得最後一層的誤差,那麼知道知道了各層誤差間的關係,就能求得所有層的誤差項了。
然後展開,因爲知道z之間的前後關係(具體過程可能有點複雜,這裏先不貼出詳細的推到了),因此可以找出最後的化簡結果:
公式3
因爲
同理可得:
公式4
到最後根據公式3和公式4,終於可以得到梯度的公式了。
因爲梯度的推到是從後往前,因此稱爲反向傳播。