1
本文作者: AI研習(xí)社-譯站 | 2018-06-04 16:11 |
雷鋒網(wǎng)按:本文為雷鋒字幕組編譯的技術(shù)博客,原標(biāo)題 Step-by-step walkthrough of RNN Training - Part II,作者為 Eniola Alese。
翻譯 | 陳濤 整理 | 凡江
RNN 的反向傳播是為了計(jì)算出關(guān)于損失函數(shù)的梯度值
讀者可以在這里看到本文的 Part I(http://www.ozgbdpf.cn/news/201805/ZMeniGUPBZ50lyvk.html)。
單個(gè) RNN 單元的反向傳播
RNN 中反向傳播的目的是計(jì)算出最終的損失值 L 分別對權(quán)值矩陣(W_xh,W_ah,W_ao)和偏置向量(b_h,b_o)的偏導(dǎo)數(shù)值。
推導(dǎo)出所需的導(dǎo)數(shù)值非常簡單,我們只需要利用鏈?zhǔn)椒▌t就能計(jì)算出它們。
第一步:為了計(jì)算代價(jià),需要先定義損失函數(shù)。一般根據(jù)具體手中的任務(wù)來選擇該損失函數(shù)。在這個(gè)例子里,對于多分類輸出問題,我們采用交叉熵?fù)p失函數(shù) L?t?,其具體計(jì)算過程如下:
第二步:接下來我們開始往后計(jì)算損失函數(shù) L?t? 對預(yù)測輸出值的激活值 ??t? 的偏導(dǎo)數(shù)值。因?yàn)樵谇跋騻鞑ミ^程中 softmax 函數(shù)以多分類的輸出值作為輸入,因此下面的偏導(dǎo)數(shù)值
的計(jì)算分為兩種情況:分類 i 時(shí)和分類 k 時(shí):
第三步:接著利用分類 i 時(shí)和分類 k 時(shí)的偏導(dǎo)數(shù)值
,可以計(jì)算出損失函數(shù) L?t? 對預(yù)測輸出值 o?t? 的偏導(dǎo)數(shù)值:
第四步:利用偏導(dǎo)數(shù)值
及鏈?zhǔn)椒▌t,計(jì)算出損失函數(shù) L?t? 對輸出過程中的偏置向量 b_o 的偏導(dǎo)數(shù)值:
第五步:利用偏導(dǎo)數(shù)值
及鏈?zhǔn)椒▌t,計(jì)算出損失函數(shù) L?t? 對隱層至輸出層中的權(quán)值矩陣 W_ao 的偏導(dǎo)數(shù)值:
第六步: 利用偏導(dǎo)數(shù)值
、
及鏈?zhǔn)椒▌t,計(jì)算出損失函數(shù) L?t? 對隱狀態(tài)的激活值 a?t? 的偏導(dǎo)數(shù)值:
第七步: 利用偏導(dǎo)數(shù)值
及鏈?zhǔn)椒▌t,計(jì)算出損失函數(shù) L?t? 對隱狀態(tài) h?t? 的偏導(dǎo)數(shù)值:
第八步: 利用偏導(dǎo)數(shù)值
及鏈?zhǔn)椒▌t,計(jì)算出損失函數(shù) L?t? 對隱狀態(tài)的偏置向量 b_h 的偏導(dǎo)數(shù)值:
第九步:利用偏導(dǎo)數(shù)值
及鏈?zhǔn)椒▌t,計(jì)算出損失函數(shù) L?t? 對輸入層至隱層中的偏置矩陣 W_xh 的偏導(dǎo)數(shù)值:
第十步:利用偏導(dǎo)數(shù)值
及鏈?zhǔn)椒▌t,計(jì)算出損失函數(shù) L?t? 對輸入層至隱層中的偏置矩陣 W_ah 的偏導(dǎo)數(shù)值:
隨時(shí)間反向傳播(BPTT)
就像前文中提到的前向傳播過程一樣,將循環(huán)網(wǎng)絡(luò)展開,BPTT 將沿此一直運(yùn)行著上述步驟。
主要的區(qū)別在于我們必須將每個(gè)時(shí)間步 t 的偏導(dǎo)數(shù)值累加起來,從而更新權(quán)值和偏置,這是因?yàn)檫@些參數(shù)在前向傳播的過程中是被各個(gè)時(shí)間步所共享的。
總結(jié)
在本文的第一部分和第二部分中,我們了解了循環(huán)神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中所涉及到的前向傳播和反向傳播。接下來,我們將著眼于 RNN 中所存在的梯度消失問題,并討論 LSTM 和 GRU 網(wǎng)絡(luò)的進(jìn)展。
博客原址:https://medium.com/learn-love-ai/step-by-step-walkthrough-of-rnn-training-part-ii-7141084d274b
雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。