從零實(shí)現(xiàn)深度學(xué)習(xí)框架系列開更!RNN從理論到實(shí)戰(zhàn)(理論篇)
來源:投稿 作者:175
編輯:學(xué)姐
本系列非常適合剛?cè)腴T深度學(xué)習(xí)的AI小白,已經(jīng)學(xué)有所得的同學(xué)也可以溫故知新!
要深入理解深度學(xué)習(xí),從零開始創(chuàng)建的經(jīng)驗(yàn)非常重要,從自己可以理解的角度出發(fā),盡量不使用外部完備的框架前提下,實(shí)現(xiàn)我們想要的模型。本系列文章的宗旨就是通過這樣的過程,讓大家切實(shí)掌握深度學(xué)習(xí)底層實(shí)現(xiàn),而不是僅做一個(gè)調(diào)包俠。
本文介紹RNN,一種用于處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)。
循環(huán)神經(jīng)網(wǎng)絡(luò)
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是包含循環(huán)連接的網(wǎng)絡(luò),即有些單元是直接或間接地依賴于它之前的。
本文我們學(xué)習(xí)一種叫做Elman網(wǎng)絡(luò)的循環(huán)網(wǎng)絡(luò),或稱為簡(jiǎn)單循環(huán)網(wǎng)絡(luò)(本文中的RNN都代表該網(wǎng)絡(luò))。隱藏層包含一個(gè)循環(huán)連接作為其輸入。即,基于當(dāng)前輸入和前一時(shí)刻隱藏狀態(tài)計(jì)算當(dāng)前隱藏狀態(tài)。


前一時(shí)刻的隱藏層提供了一種記憶(或上下文)的功能,可以提供之前的信息為未來做決定提供幫助。重要的是,這種方法理論上不需要對(duì)前文的長(zhǎng)度進(jìn)行限制,不過實(shí)際上過遠(yuǎn)的信息很難有效的保留。
前向傳播
RNN中的前向傳播(推理)過程和前饋網(wǎng)絡(luò)差不多。但在使用RNN處理一個(gè)序列輸入時(shí),需要將RNN按輸入時(shí)刻展開,然后將序列中的每個(gè)輸入依次對(duì)應(yīng)到網(wǎng)絡(luò)不同時(shí)刻的輸入上,并將當(dāng)前時(shí)刻網(wǎng)絡(luò)隱藏層的輸出也作為下一時(shí)刻的輸入。

循環(huán)網(wǎng)絡(luò)處理序列輸入的示意圖,圖片來自https://medium.com/deeplearningbrasilia/deep-learning-recurrent-neural-networks-f9482a24d010




學(xué)習(xí)


RNN的沿著時(shí)間反向傳播,圖片來自https://mmuratarat.github.io/2019-02-07/bptt-of-rnn

Elman網(wǎng)絡(luò):

Jordan網(wǎng)絡(luò):

RNN作為語言模型






這種改進(jìn),除了提升了模型困惑度之外,還顯著減少了模型所需的參數(shù)量。
我們已經(jīng)學(xué)習(xí)了RNN的基礎(chǔ)知識(shí),在實(shí)際應(yīng)用上通常不是僅使用我們學(xué)到的這種RNN。而是會(huì)使用堆疊RNN和雙向RNN。下面分別來了解它們。
堆疊NN
我們到此為止所學(xué)的例子中,RNN的輸入都是由單詞嵌入向量組成,而輸出是預(yù)測(cè)單詞有用的向量。但是,我們也可以使用一個(gè)RNN的整個(gè)輸出作為另一個(gè)RNN的輸入,通過這種方向?qū)⒍鄠€(gè)RNN網(wǎng)絡(luò)堆疊起來。

如上圖所示,我們堆疊了三個(gè)RNN。
堆疊的RNN通常優(yōu)于單層RNN。可能的一個(gè)原因是,網(wǎng)絡(luò)在不同層抽象了不同的表示。堆疊RNN的初始層產(chǎn)生的表示可以作為深層有用的抽象——這很難在單詞RNN中產(chǎn)生。但是,隨著堆疊層數(shù)的增加,訓(xùn)練成本也迅速上升。
雙向RNN
另一種應(yīng)用較多的是雙向RNN,我們上面學(xué)到的是從左到右依次處理序列中的每個(gè)元素。但在很多情況下,如果能訪問整個(gè)序列再做決定,得到的效果會(huì)更好。此時(shí)就需要雙向RNN。
一種實(shí)現(xiàn)方式時(shí)通過兩個(gè)獨(dú)立的RNN網(wǎng)絡(luò),一個(gè)按照之前的順序從左往右讀;另一個(gè)按照逆序從右往左讀。在每個(gè)時(shí)刻t tt,拼接它們生成的表示。

References
Speech and Language Processing
最近發(fā)現(xiàn)想要入門AI的同學(xué)多了起來!那本系列一定要認(rèn)真看啦!
下期會(huì)繼續(xù)更新!記得收藏哦~
也可以關(guān)注【學(xué)姐帶你玩AI】公眾號(hào)
學(xué)習(xí)更多AI干貨,還有學(xué)姐整理的論文n篇免費(fèi)領(lǐng)取!
回復(fù)“500”300+論文PDF&講解視頻速領(lǐng)!