出處: Michael Nielsen的《Neural Network and Deep Learning》,本節譯者:哈工大SCIR本科生 王宇軒
目錄
1、使用神經網路識別手寫數字
2、反向傳播演算法是如何工作的
- 熱身:一個基於矩陣的快速計算神經網路輸出的方法
- 關於損失函式的兩個假設
- Hadamard積
- 反向傳播背後的四個基本等式
- 四個基本等式的證明(選讀)
- 反向傳播演算法
- 什麼時候反向傳播演算法高效
- 反向傳播演算法再理解
3、改進神經網路的學習方法
4、神經網路能夠計算任意函式的視覺證明
5、為什麼深度神經網路的訓練是困難的
6、深度學習
反向傳播等式為我們提供了一個計算代價函式梯度的方法。下面讓我們明確地寫出該演算法:
1、輸入 :計算輸入層相應的啟用函式值。
2、正向傳播:對每個,計算和。
3、輸出誤差 :計算向量。
4、將誤差反向傳播:對每個計算
5、輸出:代價函式的梯度為和
通過以上演算法就能看出它為什麼叫反向傳播演算法。我們從最後一層開始,反向計算錯誤向量。在神經網路中反向計算誤差可能看起來比較奇怪。但如果回憶反向傳播的證明過程,會發現反向傳播的過程起因於代價函式是關於神經網路輸出值的函式。為了瞭解代價函式是如何隨著前面的權重和偏移改變的,我們必須不斷重複應用鏈式法則,通過反向的計算得到有用的表示式。
練習
- 修改一個神經元后的反向傳播
假設我們修改了正向傳播網路中的一個神經元,使得該神經元的輸出為,其中是一個非sigmoid函式的函式。在這種情況下我們應該怎樣修改反向傳播演算法?
- 線性神經元的反向傳播
假設我們在整個神經網路中用代替常用的非線性方程。重新寫出這種情況下的反向傳播演算法。
正如我在上文中已經說過的,反向傳播演算法對每個訓練樣本計算代價函式的梯度。在實際情況中,經常將反向傳播演算法與諸如隨機梯度下降的學習演算法共同使用,在隨機梯度下降演算法中,我們需要計算一批訓練樣本的梯度。給定一小批(mini-batch)個訓練樣本,下面的演算法給出了基於這些訓練樣本的梯度下降學習步驟:
1、輸入一組訓練樣本
2、對每個訓練樣本 :設定相應的輸入啟用值並執行以下步驟:
- 正向傳播:對於每個,計算和。
- 輸出誤差:計算向量。
- 將誤差反向傳播:對每個,計算。
3、梯度下降:對每個,分別根據法則和更新權重和偏移。
當然,為了在實際應用時實現隨機梯度下降,你還需要一個用於生成小批(mini-batches)訓練樣本的外部迴圈和一個用於逐步計算每一輪迭代的外部迴圈。為了簡潔,這些都被省略了。
下一節我們將介紹“反向傳播演算法程式碼”
本文來源於哈工大SCIR