深度学习 | 误差反向传播法
1. 計算圖
①可以進行局部計算。
②計算圖可以將中間的計算結果全部保存起來。
③可以通過反向傳播高效計算導數。
綜上,計算圖的優點是,可以通過正向傳播和反向傳播高效地計算各個變量的導數值。
2. 鏈式法則
如果某個函數由復合函數表示,則該復合函數的導數可以用構成復合函數的各個函數的導數的乘積表示。
最左邊是反向傳播的結果。
3. 反向傳播
3.1 加法節點的反向傳播
加法節點的反向傳播只乘以1,所以輸入的值會原封不動地流向下一個節點。
3.2 乘法節點的反向傳播
考慮z=xy:
乘法的反向傳播會將上游的值乘以正向傳播時的輸入信號的“翻轉值”后傳遞給下游。翻轉值表示一種翻轉關系,如圖所示,正向傳播時信號是x的話,反向傳播時則是y;正向傳播時信號是y的話,反向傳播時則是x。
加法的反向傳播只是將上游的值傳給下游,
并不需要正向傳播的輸入信號。但是,乘法的反向傳播需要正向傳播時的輸入信號值。因此,實現乘法節點的反向傳播時,要保存正向傳播的輸入信號。
4. 簡單層的實現
我們把要實現的計算圖的乘法節點稱為“乘法層”(MulLayer),加法節點稱為“加法層”(AddLayer)。
5. 激活函數層的實現
5.1 ReLU層
激活函數ReLU(Rectified Linear Unit)由下式表示:
求出y關于x的導數:
如果正向傳播時的輸入x大于0,則反向傳播會將上游的值原封不動地傳給下游。反過來,如果正向傳播時的x小于等于0,則反向
傳播中傳給下游的信號將停在此處。
ReLU層的作用就像電路中的開關一樣。正向傳播時,有電流通過的話,就將開關設為 ON;沒有電流通過的話,就將開關設為 OFF。
反向傳播時,開關為ON的話,電流會直接通過;開關為OFF的話,則不會有電流通過。
5.2 Sigmoid層
sigmoid函數式:
除了“×”和“+”節點外,還出現了新的“exp”和“/”節點。“exp”節點會進行y = exp(x)的計算,“/”節點會進行y=1/x的計算。
反向傳播的流程:
反向傳播的輸出為 ,這個值會傳播給下游的節點。
因此,Sigmoid層的反向傳播,只根據正向傳播的輸出就能計算出來:
6. Affine/Softmax層的實現
6.1 Affine層
幾何中,仿射變換包括一次線性變換和一次平移,分別對應神經網絡的加權和運算與加偏置運算。
6.2 批版本的Affine層
前面介紹的Affine層的輸入X是以單個數據為對象的。現在我們考慮N個數據一起進行正向傳播的情況,也就是批版本的Affine層。
6.3 Softmax-with-Loss 層
神經網絡的推理通常不使用 Softmax層。
神經網絡的學習階段則需要 Softmax層。
softmax函數記為Softmax層,交叉熵誤差記為Cross Entropy Error層。這里假設要進行3類分類,從前面的層接收3個輸入(得分)。如圖5-30所示,Softmax層將輸入(a1, a2, a3)正規化,輸出(y1, y2,y3)。Cross Entropy Error層接收Softmax的輸出(y1, y2, y3)和教師標簽(t1, t2, t3),從這些數據中輸出損失L。
Softmax層的反向傳播得到了(y1 ? t1, y2 ? t2, y3 ? t3)這樣“漂亮”的結果。由于(y1, y2, y3)是Softmax層的輸出,(t1, t2, t3)是監督數據,所以(y1 ? t1, y2 ? t2, y3 ? t3)是Softmax層的輸出和教師標簽的差分。神經網絡的反向傳播會把這個差分表示的誤差傳遞給前面的層,這是神經網絡學習中的重要性質。
7. 誤差反向傳播法的實現
神經網絡學習的步驟:
前提
神經網絡中有合適的權重和偏置,調整權重和偏置以便擬合訓練數據的
過程稱為學習。神經網絡的學習分為下面4個步驟。
步驟1(mini-batch)
從訓練數據中隨機選擇一部分數據。
步驟2(計算梯度)
計算損失函數關于各個權重參數的梯度。
步驟3(更新參數)
將權重參數沿梯度方向進行微小的更新。
步驟4(重復)
重復步驟1、步驟2、步驟3。
計算梯度的兩種方法:一種是基于數值微分的方法,另一種是解析性地求解數學式的方法。
數值微分雖然實現簡單,但是計算要耗費較多的時間。和需要花費較多時間的數值微分不同,誤差反向傳播法可以快速高效地計算梯度。
數值微分的優點是實現簡單,因此,一般情況下不太容易出錯。而誤差反向傳播法的實現很復雜,容易出錯。所以,經常會比較數值微分的結果和誤差反向傳播法的結果,以確認誤差反向傳播法的實現是否正確。確認數值微分求出的梯度結果和誤差反向傳播法求出的結果是否一致(嚴格地講,是非常相近)的操作稱為梯度確認(gradient check)。
小結
? 通過使用計算圖,可以直觀地把握計算過程 ?計算圖的節點是由局部計算構成的。局部計算構成全局計算。 ?計算圖的正向傳播進行一般的計算。通過計算圖的反向傳播,可以計算各個節點的導數。 ?通過將神經網絡的組成元素實現為層,可以高效地計算梯度*(反向傳播法)。 ?通過比較數值微分和誤差反向傳播的結果,可以確認誤差反向傳播的實現是否正確(梯度確認)。總結
以上是生活随笔為你收集整理的深度学习 | 误差反向传播法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦三国游戏
- 下一篇: 梳理百年深度学习发展史-七月在线机器学习