深度学习 | 误差反向传播法
1. 計(jì)算圖
①可以進(jìn)行局部計(jì)算。
②計(jì)算圖可以將中間的計(jì)算結(jié)果全部保存起來(lái)。
③可以通過(guò)反向傳播高效計(jì)算導(dǎo)數(shù)。
綜上,計(jì)算圖的優(yōu)點(diǎn)是,可以通過(guò)正向傳播和反向傳播高效地計(jì)算各個(gè)變量的導(dǎo)數(shù)值。
2. 鏈?zhǔn)椒▌t
如果某個(gè)函數(shù)由復(fù)合函數(shù)表示,則該復(fù)合函數(shù)的導(dǎo)數(shù)可以用構(gòu)成復(fù)合函數(shù)的各個(gè)函數(shù)的導(dǎo)數(shù)的乘積表示。
最左邊是反向傳播的結(jié)果。
3. 反向傳播
3.1 加法節(jié)點(diǎn)的反向傳播
加法節(jié)點(diǎn)的反向傳播只乘以1,所以輸入的值會(huì)原封不動(dòng)地流向下一個(gè)節(jié)點(diǎn)。
3.2 乘法節(jié)點(diǎn)的反向傳播
考慮z=xy:
乘法的反向傳播會(huì)將上游的值乘以正向傳播時(shí)的輸入信號(hào)的“翻轉(zhuǎn)值”后傳遞給下游。翻轉(zhuǎn)值表示一種翻轉(zhuǎn)關(guān)系,如圖所示,正向傳播時(shí)信號(hào)是x的話,反向傳播時(shí)則是y;正向傳播時(shí)信號(hào)是y的話,反向傳播時(shí)則是x。
加法的反向傳播只是將上游的值傳給下游,
并不需要正向傳播的輸入信號(hào)。但是,乘法的反向傳播需要正向傳播時(shí)的輸入信號(hào)值。因此,實(shí)現(xiàn)乘法節(jié)點(diǎn)的反向傳播時(shí),要保存正向傳播的輸入信號(hào)。
4. 簡(jiǎn)單層的實(shí)現(xiàn)
我們把要實(shí)現(xiàn)的計(jì)算圖的乘法節(jié)點(diǎn)稱為“乘法層”(MulLayer),加法節(jié)點(diǎn)稱為“加法層”(AddLayer)。
5. 激活函數(shù)層的實(shí)現(xiàn)
5.1 ReLU層
激活函數(shù)ReLU(Rectified Linear Unit)由下式表示:
求出y關(guān)于x的導(dǎo)數(shù):
如果正向傳播時(shí)的輸入x大于0,則反向傳播會(huì)將上游的值原封不動(dòng)地傳給下游。反過(guò)來(lái),如果正向傳播時(shí)的x小于等于0,則反向
傳播中傳給下游的信號(hào)將停在此處。
ReLU層的作用就像電路中的開(kāi)關(guān)一樣。正向傳播時(shí),有電流通過(guò)的話,就將開(kāi)關(guān)設(shè)為 ON;沒(méi)有電流通過(guò)的話,就將開(kāi)關(guān)設(shè)為 OFF。
反向傳播時(shí),開(kāi)關(guān)為ON的話,電流會(huì)直接通過(guò);開(kāi)關(guān)為OFF的話,則不會(huì)有電流通過(guò)。
5.2 Sigmoid層
sigmoid函數(shù)式:
除了“×”和“+”節(jié)點(diǎn)外,還出現(xiàn)了新的“exp”和“/”節(jié)點(diǎn)。“exp”節(jié)點(diǎn)會(huì)進(jìn)行y = exp(x)的計(jì)算,“/”節(jié)點(diǎn)會(huì)進(jìn)行y=1/x的計(jì)算。
反向傳播的流程:
反向傳播的輸出為 ,這個(gè)值會(huì)傳播給下游的節(jié)點(diǎn)。
因此,Sigmoid層的反向傳播,只根據(jù)正向傳播的輸出就能計(jì)算出來(lái):
6. Affine/Softmax層的實(shí)現(xiàn)
6.1 Affine層
幾何中,仿射變換包括一次線性變換和一次平移,分別對(duì)應(yīng)神經(jīng)網(wǎng)絡(luò)的加權(quán)和運(yùn)算與加偏置運(yùn)算。
6.2 批版本的Affine層
前面介紹的Affine層的輸入X是以單個(gè)數(shù)據(jù)為對(duì)象的。現(xiàn)在我們考慮N個(gè)數(shù)據(jù)一起進(jìn)行正向傳播的情況,也就是批版本的Affine層。
6.3 Softmax-with-Loss 層
神經(jīng)網(wǎng)絡(luò)的推理通常不使用 Softmax層。
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)階段則需要 Softmax層。
softmax函數(shù)記為Softmax層,交叉熵誤差記為Cross Entropy Error層。這里假設(shè)要進(jìn)行3類分類,從前面的層接收3個(gè)輸入(得分)。如圖5-30所示,Softmax層將輸入(a1, a2, a3)正規(guī)化,輸出(y1, y2,y3)。Cross Entropy Error層接收Softmax的輸出(y1, y2, y3)和教師標(biāo)簽(t1, t2, t3),從這些數(shù)據(jù)中輸出損失L。
Softmax層的反向傳播得到了(y1 ? t1, y2 ? t2, y3 ? t3)這樣“漂亮”的結(jié)果。由于(y1, y2, y3)是Softmax層的輸出,(t1, t2, t3)是監(jiān)督數(shù)據(jù),所以(y1 ? t1, y2 ? t2, y3 ? t3)是Softmax層的輸出和教師標(biāo)簽的差分。神經(jīng)網(wǎng)絡(luò)的反向傳播會(huì)把這個(gè)差分表示的誤差傳遞給前面的層,這是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)中的重要性質(zhì)。
7. 誤差反向傳播法的實(shí)現(xiàn)
神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的步驟:
前提
神經(jīng)網(wǎng)絡(luò)中有合適的權(quán)重和偏置,調(diào)整權(quán)重和偏置以便擬合訓(xùn)練數(shù)據(jù)的
過(guò)程稱為學(xué)習(xí)。神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)分為下面4個(gè)步驟。
步驟1(mini-batch)
從訓(xùn)練數(shù)據(jù)中隨機(jī)選擇一部分?jǐn)?shù)據(jù)。
步驟2(計(jì)算梯度)
計(jì)算損失函數(shù)關(guān)于各個(gè)權(quán)重參數(shù)的梯度。
步驟3(更新參數(shù))
將權(quán)重參數(shù)沿梯度方向進(jìn)行微小的更新。
步驟4(重復(fù))
重復(fù)步驟1、步驟2、步驟3。
計(jì)算梯度的兩種方法:一種是基于數(shù)值微分的方法,另一種是解析性地求解數(shù)學(xué)式的方法。
數(shù)值微分雖然實(shí)現(xiàn)簡(jiǎn)單,但是計(jì)算要耗費(fèi)較多的時(shí)間。和需要花費(fèi)較多時(shí)間的數(shù)值微分不同,誤差反向傳播法可以快速高效地計(jì)算梯度。
數(shù)值微分的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,因此,一般情況下不太容易出錯(cuò)。而誤差反向傳播法的實(shí)現(xiàn)很復(fù)雜,容易出錯(cuò)。所以,經(jīng)常會(huì)比較數(shù)值微分的結(jié)果和誤差反向傳播法的結(jié)果,以確認(rèn)誤差反向傳播法的實(shí)現(xiàn)是否正確。確認(rèn)數(shù)值微分求出的梯度結(jié)果和誤差反向傳播法求出的結(jié)果是否一致(嚴(yán)格地講,是非常相近)的操作稱為梯度確認(rèn)(gradient check)。
小結(jié)
? 通過(guò)使用計(jì)算圖,可以直觀地把握計(jì)算過(guò)程 ?計(jì)算圖的節(jié)點(diǎn)是由局部計(jì)算構(gòu)成的。局部計(jì)算構(gòu)成全局計(jì)算。 ?計(jì)算圖的正向傳播進(jìn)行一般的計(jì)算。通過(guò)計(jì)算圖的反向傳播,可以計(jì)算各個(gè)節(jié)點(diǎn)的導(dǎo)數(shù)。 ?通過(guò)將神經(jīng)網(wǎng)絡(luò)的組成元素實(shí)現(xiàn)為層,可以高效地計(jì)算梯度*(反向傳播法)。 ?通過(guò)比較數(shù)值微分和誤差反向傳播的結(jié)果,可以確認(rèn)誤差反向傳播的實(shí)現(xiàn)是否正確(梯度確認(rèn))。總結(jié)
以上是生活随笔為你收集整理的深度学习 | 误差反向传播法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦三国游戏
- 下一篇: Siebel Open UI