【Pytorch神经网络理论篇】 17 循环神经网络结构:概述+BP算法+BPTT算法
1 循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)概述
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是一個具有記憶功能的網(wǎng)絡(luò)模型。它可以發(fā)現(xiàn)樣本彼此之間的相互關(guān)系。它多用于處理帶有序列特征的樣本數(shù)據(jù)。
1.1 生物大腦中的循環(huán)神經(jīng)網(wǎng)絡(luò)
當(dāng)獲得“我找你來玩游”信息后,大腦的語言模型會自動預(yù)測后一個字為“戲”,而不是“樂”“泳”等其他字。
每個預(yù)測的結(jié)果都會放到下個輸入里面進(jìn)行運算,與下一次的食人魚一起來生成下一次的結(jié)果。
鏈?zhǔn)降?、有順序地存儲信息”很?jié)省空間,對于中間狀態(tài)的序列,大腦沒有選擇直接記住,而是存儲計算方達(dá)。當(dāng)我們需要取值時,直接將具體的數(shù)據(jù)輸入,通過計算得出相應(yīng)的給果。
1.2 循環(huán)神經(jīng)網(wǎng)絡(luò)的應(yīng)用領(lǐng)域
對于序列化的特征任務(wù),適合用循環(huán)神經(jīng)網(wǎng)路來解決。這類任務(wù)包括情感分析、關(guān)鍵字提取、語音識別、機(jī)器翻譯和股票分析等。
1.3 循環(huán)神經(jīng)網(wǎng)絡(luò)的正向傳播過程
假設(shè)有3個時序t1,t2,t3,如圖7-26所示,循環(huán)神經(jīng)網(wǎng)絡(luò)的處理過程可以分解成以下3個步驟:
(1)開始時t1通過自己的輸入權(quán)重和0作為輸入,生成了out1;
(2)out1通過自己的權(quán)重生成了h1,然后和t2與經(jīng)過輸入權(quán)重轉(zhuǎn)化后一起作為輸入,生成了out2;
(3)out2通過同樣的隱藏層權(quán)重生成了h2,然后和t3經(jīng)過輸入權(quán)重轉(zhuǎn)化后一起作為輸入,生成了out3。
使得模型的結(jié)果既有該樣本之前序列的信息,又含有該樣本身的數(shù)據(jù)信息,從而使網(wǎng)絡(luò)具有記憶功能。
2 BP算法與BPTT算法的原理剖析
2.1 BP算法==》卷積神經(jīng)網(wǎng)絡(luò)
假設(shè)有一個包含一個隱藏層的神經(jīng)網(wǎng)絡(luò),隱藏層只有一個節(jié)點。該神經(jīng)網(wǎng)絡(luò)在BP算法中具體的實現(xiàn)過程如下。
(1)有一個批次的數(shù)據(jù),含有3個數(shù)據(jù)A、B、C,批次中每個樣本有兩個數(shù)(x1、x2)通過權(quán)重(w1、w2)來到隱藏層H并生成批次h,如圖7-27中w1和w2所在的兩條直線方向。
(2)該批次的h通過隱藏層權(quán)重p1生成最終的輸出結(jié)果y。
(3)y與最終的標(biāo)簽p比較,生成輸出層誤差loss(y,p)。
(4)loss(y,p)與生成y的導(dǎo)數(shù)相乘,得到DeL_y。DeL_y為輸出層所需要的修改值。
(5)將h的轉(zhuǎn)置與DeL_y相乘得到DeL_p1,這是源于h與p1相乘得到的y(見第2步.
(6)最終將該批次的DeL_p1,求和并更新到p1。
(7)同理,再將誤差反向傳遞到上一層:計算Del_h。得到Del_h后再計算權(quán)重(w1,w2)的Del值并更新。
2.2 BPTT算法(BP算法+序列序列)==》循環(huán)神經(jīng)網(wǎng)絡(luò)
在圖7-28中,同樣是一個批次的數(shù)據(jù)ABC,按順序進(jìn)入循環(huán)神經(jīng)網(wǎng)絡(luò)。正向傳播的實例是,B正在進(jìn)入神經(jīng)網(wǎng)絡(luò)的過程,可以看到A的h參與了進(jìn)來,一起經(jīng)過p1生成了B的y。因為C還沒有進(jìn)入,為了清晰,所以這里用灰色(虛線方框)來表示。
當(dāng)所有塊都進(jìn)入之后,會將p標(biāo)簽與輸出進(jìn)行Del_y的運算。由于C塊中的y值是最后生成的,因此我們先從C塊開始對h的輸出傳遞誤差Del_h。
圖7-28中的反向傳播是表示C塊已經(jīng)反向傳播完成,開始B塊反向傳播的狀態(tài),可以看到B塊Del_h是由B塊的Del_y和C塊的Del_h(圖7-28中的fur _Del_h)通過計算得來的。
2.3 對比
這就是與BP算法不同的地方(在BP算法中Del_h直接與自己的Del_y相關(guān),不會與其他的值有聯(lián)系)。作為一個批次的數(shù)據(jù),正向傳播時是沿著4BC的順序升當(dāng)反向傳播時,就按照正向傳播的相反順序接照每個節(jié)點的CBA順序,挨個計算并傳遞梯度。
2.4 代碼代補充? P149
總結(jié)
以上是生活随笔為你收集整理的【Pytorch神经网络理论篇】 17 循环神经网络结构:概述+BP算法+BPTT算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unknown encoder ‘lib
- 下一篇: Anaconda 镜像源操作(查看配置删