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