后向傳播(backpropagation)算法介紹

參考鏈接

一、引入

后向傳播算法在Learning representations by back-propagating errors這篇文章中被提到。
這個(gè)算法和鏈?zhǔn)椒▌t結(jié)合用于有效地訓(xùn)練神經(jīng)網(wǎng)絡(luò)。在每次對(duì)網(wǎng)絡(luò)的前向傳播之后,后向傳播算法進(jìn)行后向傳播以調(diào)整模型(model)參數(shù)(權(quán)重和偏差)。

二、神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu)介紹

1.神經(jīng)網(wǎng)絡(luò)定義

以下定義了一個(gè)4層神經(jīng)網(wǎng)絡(luò)。它的輸入層有4個(gè)神經(jīng)元,隱藏層有4個(gè)神經(jīng)元,輸出層有一個(gè)神經(jīng)元。

一個(gè)簡(jiǎn)單的4層神經(jīng)網(wǎng)絡(luò)圖示

2.輸入層

上圖中紫色的神經(jīng)元是輸入層,代表了輸入數(shù)據(jù)(可以是標(biāo)量或者向量甚至是多維矩陣。

輸入x_i

第一套activation(a)其實(shí)就是輸入的值。“activation”是執(zhí)行了激活函數(shù)之后的神經(jīng)元的值。

3.隱藏層

隱藏層神經(jīng)元的值,是基于z^l (第l層的權(quán)重)和a^l(第l層的激活)進(jìn)行計(jì)算的。對(duì)第二層和第三層,有以下公式:

  • l=2
z^2和a^2的公式
  • l=3
z^3和a^3的公式

a^2 和 a^3是用激活函數(shù)f來計(jì)算的。相關(guān)閱讀鏈接
注意以上的x,z,a,b是不含下標(biāo)的。因?yàn)樗械膮?shù)值都隱藏在了每一層的對(duì)應(yīng)矩陣的具體參數(shù)(含下標(biāo))中。以第二層(隱藏層)和其參數(shù)為例:
W^1是尺寸為(n,m)的權(quán)重矩陣,n為輸出神經(jīng)元的數(shù)目,m為輸入神經(jīng)元的數(shù)目。對(duì)我們的神經(jīng)網(wǎng)絡(luò)來說,n=2,m=4。

W^1公式

權(quán)重矩陣公式中,下標(biāo)的第一個(gè)數(shù)字對(duì)應(yīng)下一層的神經(jīng)元的需要,第二個(gè)數(shù)字代表上一層的神經(jīng)元序號(hào)。
x是尺寸為(m,1)的輸入向量,m是輸入神經(jīng)元的數(shù)目。在我們的例子中,m=4。

x

b^1是尺寸為(n,1)權(quán)重向量。n為當(dāng)前層的神經(jīng)元的數(shù)目。在我們的例子中,n=2。

b^1

進(jìn)而有以下公式:

z^2的公式

z^2 能由 (z_1)^2 和 (z_2)^2 來表示。 (z_1)^2 和 (z_2)^2 是網(wǎng)絡(luò)輸入和對(duì)應(yīng)權(quán)重的乘積之和。

4. 輸出層

輸出s

類似地,我們用矩陣表達(dá)式來簡(jiǎn)化公式。把矩陣表達(dá)式具體化就可以得到更具體的運(yùn)算過程。

三、前向傳播(forward propagation)和結(jié)果評(píng)價(jià)(evaluation)

上面的公式其實(shí)就詮釋了前向傳播。以下是一個(gè)總體概覽,公式顏色和神經(jīng)元的顏色對(duì)應(yīng):

overview of 前向傳播

前向傳播的最后一步是對(duì)比預(yù)測(cè)結(jié)果(predicted output) s和期待結(jié)果(expected output) y,損失函數(shù)(cost function)可以計(jì)算出對(duì)比的結(jié)果。

損失函數(shù)

基于C的值,模型能去感知需要調(diào)整多少參數(shù)以接近預(yù)期輸出y。這個(gè)調(diào)整是通過后向傳播算法實(shí)現(xiàn)的。
損失函數(shù)介紹總結(jié)
MSE
cross-entropy交叉熵

四、后向傳播(backpropagation)和梯度計(jì)算

1. 后向傳播算法

根據(jù)后向傳播最原始的論文,后向傳播的定義如下:

repeatedly adjusts the weights of the connections in the network so as to minimize a measure of the difference between the actual output vector of the net and the desired output vector.

the ability to create useful new features distinguishes back-propagation from earlier, simpler methods…

也就是說,后向傳播算法通過調(diào)整網(wǎng)絡(luò)的權(quán)重和偏差來最小化損失函數(shù)。調(diào)整的程度取決于損失函數(shù)的梯度。

2. 梯度計(jì)算

為什么要計(jì)算梯度?
為了回答這個(gè)問題,我們先來復(fù)習(xí)如下微積分理論:
函數(shù)C(x_1, x_2, …, x_m) 在點(diǎn)x(即(x_1, x_2, …, x_m))處的梯度是x對(duì)函數(shù)C的偏微分組成的向量。

C在x處的導(dǎo)數(shù)公式

函數(shù)C的導(dǎo)數(shù)度量了函數(shù)的輸出對(duì)改變輸入x的敏感程度??梢岳斫鉃椋瑢?dǎo)數(shù)告訴我們C的走向。

梯度展現(xiàn)了我么需要改變多少x以最小化C。
計(jì)算梯度常常需要用到鏈?zhǔn)椒▌t。

對(duì)某一個(gè)權(quán)重 (w_jk)^l ,梯度計(jì)算如下:

某一個(gè)權(quán)重*(w_jk)^l*的導(dǎo)數(shù)

sidenote: 對(duì)上面公式的理解,C是損失函數(shù),損失函數(shù)對(duì)權(quán)重求導(dǎo)反應(yīng)了權(quán)重的改變量將會(huì)如何影響損失函數(shù)。z是這一層的激活前輸出,具體是該權(quán)重和上一層的輸入相乘再相應(yīng)偏差相加計(jì)算得到的對(duì)應(yīng)神經(jīng)元的值;a是上一層的輸出(激活后的輸出)。

類似地,對(duì)某一個(gè)偏差的導(dǎo)數(shù) (b_j)^l 的導(dǎo)數(shù)計(jì)算:

某一個(gè)偏差的導(dǎo)數(shù)*(b_j)^l*的導(dǎo)數(shù)

兩個(gè)公式中的共同部分是“局部梯度”(local gradient),表達(dá)如下:

local gradient

局部梯度能通過鏈?zhǔn)椒▌t很容易地計(jì)算出來。

梯度能最優(yōu)化模型參數(shù):(w沿著C對(duì)w的導(dǎo)數(shù)下降的方向改變能達(dá)到最小化C的效果)

梯度下降算法

梯度下降算法(gradient descent)

  • 初始化w和b
  • 上述公式中的e是學(xué)習(xí)率。學(xué)習(xí)率決定了梯度的影響程度
  • w和b是代表權(quán)重和偏差的矩陣。w和b對(duì)函數(shù)C的微分可以由每一個(gè)獨(dú)立的權(quán)重和偏差對(duì)C的偏導(dǎo)數(shù)計(jì)算出來。
  • 終止條件(Termination condition)是損失函數(shù)被最小化了。

五、 梯度下降算法的例子

我們?nèi)タ瓷鲜錾窠?jīng)網(wǎng)絡(luò)的最底層。我們以計(jì)算C對(duì)W_22的導(dǎo)數(shù)為例。

后向傳播算法的可視化

(W_22)^2 連接了 (a_2)^2 和 (z_2)^3,因此計(jì)算權(quán)重需要我們把鏈?zhǔn)椒▌t應(yīng)用于 (z_2)^3 and (a_2)^3:

C對(duì)W_22的導(dǎo)數(shù)

第二個(gè)式子的第二項(xiàng)即 (a_2)^2,第一項(xiàng)可以用鏈?zhǔn)椒▌t分解成兩項(xiàng)。
這里是推導(dǎo)過程,但是可以總結(jié)為:對(duì)反向傳播到(a_2)^2前的每一個(gè)神經(jīng)元的值逐一求偏導(dǎo)。
C對(duì) (a_2)3 的導(dǎo)數(shù)的計(jì)算需要知道C的函數(shù)表達(dá)式。C是依賴于 (a_2)3 的,因此對(duì)導(dǎo)數(shù)的計(jì)算應(yīng)該是很直接的。
sidenote:這里舉個(gè)例子,如果C=S-Y=(W^3)*(a_2)3-Y,那么C對(duì) (a_2)3 的導(dǎo)數(shù)就是(W^3)。

額外閱讀材料:Stanford’s NLP series where Richard Socher gives 4 great explanations of backpropagation.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容