1、反向傳播
簡單的理解,反向傳播的確就是復合函數的鏈式法則,但其在實際運算中的意義比鏈式法則要大的多。
鏈式求導十分冗余,因為很多路徑被重復訪問了,對於權值動則數萬的深度模型中的神經網絡,這樣的冗余所導致的計算量是相當大的。
同樣是利用鏈式法則,BP算法則機智地避開了這種冗余,它對於每一個路徑只訪問一次就能求頂點對所有下層節點的偏導值。正如反向傳播(BP)算法的名字說的那樣,BP算法是反向(自上往下)來尋找路徑的。
3、反向傳播理解舉例
一個展示反向傳播的例子。加法操作將梯度相等地分發給它的輸入。取最大操作將梯度路由給更大的輸入。乘法門拿取輸入激活數據,對它們進行交換,然后乘以梯度。
(1)加法門單元把輸出的梯度相等地分發給它所有的輸入,這一行為與輸入值在前向傳播時的值無關。這是因為加法操作的局部梯度都是簡單的+1,所以所有輸入的梯度實際上就等於輸出的梯度,因為乘以1.0保持不變。上例中,加法門把梯度2.00不變且相等地路由給了兩個輸入。
(2)取最大值門單元對梯度做路由。和加法門不同,取最大值門將梯度轉給其中一個輸入,這個輸入是在前向傳播中值最大的那個輸入。這是因為在取最大值門中,最高值的局部梯度是1.0,其余的是0。上例中,取最大值門將梯度2.00轉給了z變量,因為z的值比w高,於是w的梯度保持為0。
(3)乘法門單元相對不容易解釋。它的局部梯度就是輸入值,但是是相互交換之后的,然后根據鏈式法則乘以輸出值的梯度。上例中,x的梯度是-4.00x2.00=-8.00。
非直觀影響及其結果。注意一種比較特殊的情況,如果乘法門單元的其中一個輸入非常小,而另一個輸入非常大,那么乘法門的操作將會不是那么直觀:它將會把大的梯度分配給小的輸入,把小的梯度分配給大的輸入。在線性分類器中,權重和輸入是進行點積,這說明輸入數據的大小對於權重梯度的大小有影響。例如,在計算過程中對所有輸入數據樣本
乘以1000,那么權重的梯度將會增大1000倍,這樣就必須降低學習率來彌補。這就是為什么數據預處理關系重大,它即使只是有微小變化,也會產生巨大影響。對於梯度在計算線路中是如何流動的有一個直觀的理解,可以幫助讀者調試網絡。
轉載自:https://zhuanlan.zhihu.com/p/21407711?refer=intelligentunit
https://www.zhihu.com/question/27239198/answer/89853077