1 BP神經(jīng)網(wǎng)絡概述
BP 神經(jīng)網(wǎng)絡是一類基于誤差逆向傳播 (BackPropagation, 簡稱 BP) 算法的多層前饋神經(jīng)網(wǎng)絡,BP算法是迄今最成功的神經(jīng)網(wǎng)絡學習算法。現(xiàn)實任務中使用神經(jīng)網(wǎng)絡時,大多是在使用 BP 算法進行訓練。值得指出的是,BP算法不僅可用于多層前饋神經(jīng)網(wǎng)絡,還可以用于其他類型的神經(jīng)網(wǎng)絡,例如訓練遞歸神經(jīng)網(wǎng)絡。但我們通常說 “BP 網(wǎng)絡” 時,一般是指用 BP 算法訓練的多層前饋神經(jīng)網(wǎng)絡。
2 神經(jīng)網(wǎng)絡的前饋過程
神經(jīng)網(wǎng)絡結構示意圖
上述過程,即為該神經(jīng)網(wǎng)絡的前饋 (forward propagation) 過程,前饋過程也非常容易理解,符合人正常的邏輯,具體的矩陣計算表達如
3 逆向誤差傳播 (BP過程)
我們的任務就是:給定了一組數(shù)據(jù)集,其中包含了輸入數(shù)據(jù)和輸出的真實結果,如何尋找一組最佳的神經(jīng)網(wǎng)絡參數(shù),使得網(wǎng)絡計算得到的推測值能夠與真實值吻合程度最高?
3.1 模型的損失函數(shù)
為了達到這個目標,這也就轉換為了一個優(yōu)化過程,對于任何優(yōu)化問題,總是會有一個目標函數(shù) (objective function),在機器學習的問題中,通常我們稱此類函數(shù)為:損失函數(shù) (loss function),具體來說,損失函數(shù)表達了推測值與真實值之間的誤差。抽象來看,如果把模型的推測以函數(shù)形式表達為?(這里的函數(shù)字母使用 h 是源于“假設 hypothesis“ 這一單詞),對于有m個訓練樣本的輸入數(shù)據(jù)而言,其損失函數(shù)則可表達為:
那么在該問題中的損失函數(shù)是什么樣的呢?拋開線性組合函數(shù),我們先著眼于最終的激活函數(shù),也就是的值,由于 sigmoid 函數(shù)具有很好的函數(shù)性質,其值域介于 0 到 1 之間,當自變量很大時,趨向于 1,很小時趨向于 0,因此,該模型的損失函數(shù)可以定義如下:
不難發(fā)現(xiàn),由于是分類問題,真實值只有取 0 或 1 兩種情況,當真實值為 1 時,輸出值a越接近 1,則 loss 越?。划斦鎸嵵禐?0 時,輸出值越接近于 0,則 損失函數(shù)越小 (可自己手畫一下函數(shù)的曲線)。因此,可將該分段函數(shù)整合為如下函數(shù):
該函數(shù)與上述分段函數(shù)等價。如果你了解Logistic Regression 模型的基本原理,那么損失函數(shù)這一部分與其完全是一致的,現(xiàn)在,我們已經(jīng)確定了模型的損失函數(shù)關于輸出量a的函數(shù)形式,接下來的問題自然就是:如何根據(jù)該損失函數(shù)來優(yōu)化模型的參數(shù)。
3.2 基于梯度下降的逆向傳播過程 (關于損失函數(shù)的逆向求導)
這里需要一些先修知識,主要是需要懂得梯度下降 (gradient descent)這一優(yōu)化算法的原理,這里我就不展開闡述該方法,不了解的讀者可以查看我之前的這篇較為簡單清晰的關于梯度下降法介紹的文章 ->[link]。由于如果將神經(jīng)網(wǎng)絡的損失函數(shù)完全展開將會極為繁瑣,這里我們先根據(jù)上面得到的關于輸出量a的損失函數(shù)來進行一步步的推導。
BP 的核心點在于逆向傳播,本質上來說,其實是將模型最終的損失函數(shù)進行逆向求導的過程,首先,我們需要從輸出層向隱含層的進行求導,也就是需要求得,這里就需要用到求導方法里的?鏈式求導法則。我們先求得 2 個必要的導數(shù):
-
神經(jīng)網(wǎng)絡
+關注
關注
42文章
4771瀏覽量
100760 -
機器學習
+關注
關注
66文章
8418瀏覽量
132628 -
BP算法
+關注
關注
0文章
8瀏覽量
7162
原文標題:BP 神經(jīng)網(wǎng)絡 —— 逆向傳播的藝術
文章出處:【微信號:AI_shequ,微信公眾號:人工智能愛好者社區(qū)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論