反向傳播算法(BP算法)是目前用來(lái)訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)的最常用且最有效的算法。作為谷歌機(jī)器學(xué)習(xí)速成課程的配套材料,谷歌推出一個(gè)演示網(wǎng)站,直觀地介紹了反向傳播算法的工作原理。
反向傳播算法對(duì)于快速訓(xùn)練大型神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō)至關(guān)重要。本文將介紹該算法的工作原理。
簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)
如上圖,你會(huì)看到一個(gè)神經(jīng)網(wǎng)絡(luò),其中包含一個(gè)輸入節(jié)點(diǎn)、一個(gè)輸出節(jié)點(diǎn),以及兩個(gè)隱藏層(分別有兩個(gè)節(jié)點(diǎn))。
相鄰的層中的節(jié)點(diǎn)通過(guò)權(quán)重相關(guān)聯(lián),這些權(quán)重是網(wǎng)絡(luò)參數(shù)。
激活函數(shù)
每個(gè)節(jié)點(diǎn)都有一個(gè)總輸入x、一個(gè)激活函數(shù)f(x)以及一個(gè)輸出y=f(x)。
f(x)必須是非線性函數(shù),否則神經(jīng)網(wǎng)絡(luò)就只能學(xué)習(xí)線性模型。
常用的激活函數(shù)是S 型函數(shù):
誤差函數(shù)
目標(biāo)是根據(jù)數(shù)據(jù)自動(dòng)學(xué)習(xí)網(wǎng)絡(luò)的權(quán)重,以便讓所有輸入?的預(yù)測(cè)輸出?接近目標(biāo)?
為了衡量與該目標(biāo)的差距,我們使用了一個(gè)誤差函數(shù)常用的誤差函數(shù)是?
正向傳播
首先,我們?nèi)∫粋€(gè)輸入樣本并更新網(wǎng)絡(luò)的輸入層。
為了保持一致性,我們將輸入視為與其他任何節(jié)點(diǎn)相同,但不具有激活函數(shù),以便讓其輸出與輸入相等,即
現(xiàn)在,我們更新第一個(gè)隱藏層。我們?nèi)∩弦粚庸?jié)點(diǎn)的輸出y,并使用權(quán)重來(lái)計(jì)算下一層節(jié)點(diǎn)的輸入x。
然后,我們更新第一個(gè)隱藏層中節(jié)點(diǎn)的輸出。 為此,我們使用激活函數(shù)f(x)。
使用這兩個(gè)公式,我們可以傳播到網(wǎng)絡(luò)的其余內(nèi)容,并獲得網(wǎng)絡(luò)的最終輸出。
誤差導(dǎo)數(shù)
反向傳播算法會(huì)對(duì)特定樣本的預(yù)測(cè)輸出和理想輸出進(jìn)行比較,然后確定網(wǎng)絡(luò)的每個(gè)權(quán)重的更新幅度。 為此,我們需要計(jì)算誤差相對(duì)于每個(gè)權(quán)重的變化情況。
獲得誤差導(dǎo)數(shù)后,我們可以使用一種簡(jiǎn)單的更新法則來(lái)更新權(quán)重:
其中,是一個(gè)正常量,稱(chēng)為“學(xué)習(xí)速率”,我們需要根據(jù)經(jīng)驗(yàn)對(duì)該常量進(jìn)行微調(diào)。
[注意] 該更新法則非常簡(jiǎn)單:如果在權(quán)重提高后誤差降低了 (),則提高權(quán)重;否則,如果在權(quán)重提高后誤差也提高了 (),則降低權(quán)重。
其他導(dǎo)數(shù)
為了幫助計(jì)算,我們還為每個(gè)節(jié)點(diǎn)分別存儲(chǔ)了另外兩個(gè)導(dǎo)數(shù),即誤差隨以下兩項(xiàng)的變化情況:
反向傳播
我們開(kāi)始反向傳播誤差導(dǎo)數(shù)。 由于我們擁有此特定輸入樣本的預(yù)測(cè)輸出,因此我們可以計(jì)算誤差隨該輸出的變化情況。 根據(jù)我們的誤差函數(shù),我們可以得出:
現(xiàn)在我們獲得了,接下來(lái)便可以根據(jù)鏈?zhǔn)椒▌t得出?。
其中,當(dāng)f(x)是 S 型激活函數(shù)時(shí),
一旦得出相對(duì)于某節(jié)點(diǎn)的總輸入的誤差導(dǎo)數(shù),我們便可以得出相對(duì)于進(jìn)入該節(jié)點(diǎn)的權(quán)重的誤差導(dǎo)數(shù)。
根據(jù)鏈?zhǔn)椒▌t,我們還可以根據(jù)上一層得出。此時(shí),我們形成了一個(gè)完整的循環(huán)。
接下來(lái),只需重復(fù)前面的 3 個(gè)公式,直到計(jì)算出所有誤差導(dǎo)數(shù)即可。
結(jié)束。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4733瀏覽量
100415 -
算法
+關(guān)注
關(guān)注
23文章
4587瀏覽量
92500
原文標(biāo)題:谷歌官方:反向傳播算法圖解
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論