我們知道神經網絡都有損失函數。這個函數根據不同的任務有不同的定義,但是這個損失函數的目的是計算當前神經網絡建模的輸出數據與理想數據之間的距離。計算損耗後,可以根據反向傳播算法更新網絡中的各種參數,使損耗不斷降低,輸出數據更加理想。
因此,現在的任務是在知道壹個網絡的損耗之後,如何根據損耗來更新參數。具體來說,如何更新網絡節點中權重w和偏差b的值?
這裏我們用壹個全連接神經網絡來說明。
為了把這個過程講清楚,需要把神經網絡中的所有參數用文字表達清楚。定義的是W和B在網絡中的確切位置。
For表示神經網絡層中的第k個節點和神經網絡層中的第j個節點之間的權重。註意,w的下標是指示後層節點位置的第壹個位置,以及指示前層節點位置的最後壹個位置。理解了這個表達式,後面的計算就好理解了。
類似地,對於b的表示:
b的表示比w簡單,符號表示L層網絡在第j個節點的偏置。不管W或B的表示,上標表示層數。和以及是L層網絡的第j個節點的參數。因此,該節點的輸出可以表示為:
神經網絡的輸出後,會經過壹個激活函數,用激活函數來表示,激活函數後的輸出為:
此時,按照上面的符號、、、。我們可以準確地表示神經網絡中的每壹個數據。
給定壹個損失函數後,用來表示,說白了,反向傳播就是求?C/?w和?C/?b,然後乘以這個值,再減去對應的w和b,實現壹個參數更新。為什麽這樣的操作可以優化網絡,降低損耗值?
導數衍生出來的概念和速度有關。?C/?w和?C/?b對應於損耗值c相對於w和v變化的速度,如果呢?C/?如果W為正,如果W增加,C也會增加。如果預期C會減少,則W應該減少。然後呢。C/?W的絕對值越大,W對C的值的影響就越大,W稍有變化,C就變化很大。如果要優化C的縮減,W要相應縮減多少?沒有明確的答案。這裏,變化速度乘以學習率作為減小的值。通過幾輪叠代。最終希望C達到最小值點。當函數陷入極小值時,無論是局部極小值還是全局極小值,其周圍壹定是光滑的。所以在這壹點上?C/?w和?C/?b會變得很小,甚至為0,即參數不更新。目前,有各種技巧來解決函數參數在局部極小點不更新時梯度消失的問題。這不是重點。
為了便於說明,這裏定義了壹個非常簡單的損失函數c:
接下來是有趣的階段。這裏還是用上壹節?C/?w和?C/?b的解釋。如果我們想知道的話?C/?w和?C/?b的值,也就是影響C的速率的具體值,要不要找壹個中間變量?C/?。因為我們知道:
我們定義:
當我們知道了值,我們可以很容易地根據公式找到它。
使用導數的鏈式法則:
很容易推出來不是嗎?同樣,我們可以發現:
可見通過媒體很容易發現?C/?w和?C/?乙.那麽現在讓我們來理解它的含義,以及如何找出每個L層J節點的值。
根據定義:
可以看出是對C的影響(和前面說的導數和率的關系有關)。它是第壹層的第壹個神經元在進入激活函數之前的輸出。這樣我們就可以了解網絡中第壹個神經元對損耗的影響。所以,直觀的觀點是,我們先找出單個神經元對損耗值的影響,再計算神經元內部參數對損耗的影響。
好了,如果我們已經理解了為什麽引入壹個變量,以及如何用它來計算具體參數的梯度,那麽我們就可以看到如何獲取值了。我覺得反向傳播這個名字來源於計算。它是逐層遞歸的。
既然是遞歸的方式,那我們來思考壹下和的關系。如果找到這個關系,就可以默認如果知道最後壹層網絡節點的值,就可以得到倒數第二層網絡節點的值,倒數第二層,倒數第二層,倒數第三層,…等等。至此,我們的反向傳播基本完成。
所以有兩件最重要的事情:
先看問題1,根據導數的鏈式法則可以直接找到兩者的關系。具體公式如下,可以多看看字跡,思路很簡單。
我覺得這個鏈式公式還是很直觀的。如果不太好理解,可以自己畫壹個神經網絡圖,把節點之間的線連接起來,標註參數,然後推過來理解。
這裏都代表沒有被激活的神經元的輸出。表示激活函數。因為:
所以:
把上面的公式帶進來,妳可以得到:
到目前為止,已經找到了和之間的關系。
也可以簡化,按照我們壹開始的定義。
據了解,網絡前層壹個神經元對損耗的影響與網絡後層所有神經元對損耗的影響、神經元的輸出大小、神經元與後層神經元的連接權值有關,是壹種累加效應。這種理解也很直觀合理。
現在壹切都準備好了,除了第二題。就是假設網絡最後壹層是L,最後壹層怎麽算?最後壹層的價值就像壹根保險絲。壹旦啟動,我們就可以用之前推導的公式進行反向傳播(反向傳播還是很形象的吧?)。現在解決這個問題。這個問題關系到如何定義損失函數。但是我們先不考慮c的具體形式,根據壹般的鏈式法則,我們可以得到:
這裏需要註意的是最後壹層使用了什麽樣的激活函數。當計算神經元的輸出時,最後的激活函數可以與其他節點的輸出相結合。例如,softmax激活函數輸出概率值0,1。輸出大小是所有值的組合輸出。
現在讓我們考慮兩個特定的損失函數,並采用先前定義的均方誤差損失函數:
導數是:
因為sigmoid的輸出值只與輸入的x值有關。所以當量值是0。所以:
根據以上,BP有三部曲,先解決,然後,分別解決。匯總公式如下:
啟動上述反向傳輸的保險絲為最後壹層的值,計算公式為:
不同類型的激活函數根據最後壹層進行不同的處理。