国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【深度學(xué)習(xí)筆記】6_2 循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(recurrent neural network)

這篇具有很好參考價(jià)值的文章主要介紹了【深度學(xué)習(xí)筆記】6_2 循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(recurrent neural network)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

注:本文為《動(dòng)手學(xué)深度學(xué)習(xí)》開源內(nèi)容,部分標(biāo)注了個(gè)人理解,僅為個(gè)人學(xué)習(xí)記錄,無(wú)抄襲搬運(yùn)意圖

6.2 循環(huán)神經(jīng)網(wǎng)絡(luò)

上一節(jié)介紹的 n n n元語(yǔ)法中,時(shí)間步 t t t的詞 w t w_t wt?基于前面所有詞的條件概率只考慮了最近時(shí)間步的 n ? 1 n-1 n?1個(gè)詞。如果要考慮比 t ? ( n ? 1 ) t-(n-1) t?(n?1)更早時(shí)間步的詞對(duì) w t w_t wt?的可能影響,我們需要增大 n n n。但這樣模型參數(shù)的數(shù)量將隨之呈指數(shù)級(jí)增長(zhǎng)。

本節(jié)將介紹循環(huán)神經(jīng)網(wǎng)絡(luò)。它并非剛性地記憶所有固定長(zhǎng)度的序列,而是通過(guò)隱藏狀態(tài)來(lái)存儲(chǔ)之前時(shí)間步的信息。首先我們回憶一下前面介紹過(guò)的多層感知機(jī),然后描述如何添加隱藏狀態(tài)來(lái)將它變成循環(huán)神經(jīng)網(wǎng)絡(luò)。

6.2.1 不含隱藏狀態(tài)的神經(jīng)網(wǎng)絡(luò)

讓我們考慮一個(gè)含單隱藏層的多層感知機(jī)。給定樣本數(shù)為 n n n、輸入個(gè)數(shù)(特征數(shù)或特征向量維度)為 d d d的小批量數(shù)據(jù)樣本 X ∈ R n × d \boldsymbol{X} \in \mathbb{R}^{n \times d} XRn×d。設(shè)隱藏層的激活函數(shù)為 ? \phi ?,那么隱藏層的輸出 H ∈ R n × h \boldsymbol{H} \in \mathbb{R}^{n \times h} HRn×h計(jì)算為

H = ? ( X W x h + b h ) , \boldsymbol{H} = \phi(\boldsymbol{X} \boldsymbol{W}_{xh} + \boldsymbol_h), H=?(XWxh?+bh?),

其中隱藏層權(quán)重參數(shù) W x h ∈ R d × h \boldsymbol{W}_{xh} \in \mathbb{R}^{d \times h} Wxh?Rd×h,隱藏層偏差參數(shù) b h ∈ R 1 × h \boldsymbol_h \in \mathbb{R}^{1 \times h} bh?R1×h, h h h為隱藏單元個(gè)數(shù)。上式相加的兩項(xiàng)形狀不同,因此將按照廣播機(jī)制相加。把隱藏變量 H \boldsymbol{H} H作為輸出層的輸入,且設(shè)輸出個(gè)數(shù)為 q q q(如分類問(wèn)題中的類別數(shù)),輸出層的輸出為

O = H W h q + b q , \boldsymbol{O} = \boldsymbol{H} \boldsymbol{W}_{hq} + \boldsymbol_q, O=HWhq?+bq?,

其中輸出變量 O ∈ R n × q \boldsymbol{O} \in \mathbb{R}^{n \times q} ORn×q, 輸出層權(quán)重參數(shù) W h q ∈ R h × q \boldsymbol{W}_{hq} \in \mathbb{R}^{h \times q} Whq?Rh×q, 輸出層偏差參數(shù) b q ∈ R 1 × q \boldsymbol_q \in \mathbb{R}^{1 \times q} bq?R1×q。如果是分類問(wèn)題,我們可以使用 softmax ( O ) \text{softmax}(\boldsymbol{O}) softmax(O)來(lái)計(jì)算輸出類別的概率分布。

6.2.2 含隱藏狀態(tài)的循環(huán)神經(jīng)網(wǎng)絡(luò)

現(xiàn)在我們考慮輸入數(shù)據(jù)存在時(shí)間相關(guān)性的情況。假設(shè) X t ∈ R n × d \boldsymbol{X}_t \in \mathbb{R}^{n \times d} Xt?Rn×d是序列中時(shí)間步 t t t的小批量輸入, H t ∈ R n × h \boldsymbol{H}_t \in \mathbb{R}^{n \times h} Ht?Rn×h是該時(shí)間步的隱藏變量。與多層感知機(jī)不同的是,這里我們保存上一時(shí)間步的隱藏變量 H t ? 1 \boldsymbol{H}_{t-1} Ht?1?,并引入一個(gè)新的權(quán)重參數(shù) W h h ∈ R h × h \boldsymbol{W}_{hh} \in \mathbb{R}^{h \times h} Whh?Rh×h,該參數(shù)用來(lái)描述在當(dāng)前時(shí)間步如何使用上一時(shí)間步的隱藏變量。具體來(lái)說(shuō),時(shí)間步 t t t的隱藏變量的計(jì)算由當(dāng)前時(shí)間步的輸入和上一時(shí)間步的隱藏變量共同決定:

H t = ? ( X t W x h + H t ? 1 W h h + b h ) . \boldsymbol{H}_t = \phi(\boldsymbol{X}_t \boldsymbol{W}_{xh} + \boldsymbol{H}_{t-1} \boldsymbol{W}_{hh} + \boldsymbol_h). Ht?=?(Xt?Wxh?+Ht?1?Whh?+bh?).

與多層感知機(jī)相比,我們?cè)谶@里添加了 H t ? 1 W h h \boldsymbol{H}_{t-1} \boldsymbol{W}_{hh} Ht?1?Whh?一項(xiàng)。由上式中相鄰時(shí)間步的隱藏變量 H t \boldsymbol{H}_t Ht? H t ? 1 \boldsymbol{H}_{t-1} Ht?1?之間的關(guān)系可知,這里的隱藏變量能夠捕捉截至當(dāng)前時(shí)間步的序列的歷史信息,就像是神經(jīng)網(wǎng)絡(luò)當(dāng)前時(shí)間步的狀態(tài)或記憶一樣。因此,該隱藏變量也稱為隱藏狀態(tài)。由于隱藏狀態(tài)在當(dāng)前時(shí)間步的定義使用了上一時(shí)間步的隱藏狀態(tài),上式的計(jì)算是循環(huán)的。使用循環(huán)計(jì)算的網(wǎng)絡(luò)即循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network)。

循環(huán)神經(jīng)網(wǎng)絡(luò)有很多種不同的構(gòu)造方法。含上式所定義的隱藏狀態(tài)的循環(huán)神經(jīng)網(wǎng)絡(luò)是極為常見的一種。若無(wú)特別說(shuō)明,本章中的循環(huán)神經(jīng)網(wǎng)絡(luò)均基于上式中隱藏狀態(tài)的循環(huán)計(jì)算。在時(shí)間步 t t t,輸出層的輸出和多層感知機(jī)中的計(jì)算類似:

O t = H t W h q + b q . \boldsymbol{O}_t = \boldsymbol{H}_t \boldsymbol{W}_{hq} + \boldsymbol_q. Ot?=Ht?Whq?+bq?.

循環(huán)神經(jīng)網(wǎng)絡(luò)的參數(shù)包括隱藏層的權(quán)重 W x h ∈ R d × h \boldsymbol{W}_{xh} \in \mathbb{R}^{d \times h} Wxh?Rd×h、 W h h ∈ R h × h \boldsymbol{W}_{hh} \in \mathbb{R}^{h \times h} Whh?Rh×h和偏差 b h ∈ R 1 × h \boldsymbol_h \in \mathbb{R}^{1 \times h} bh?R1×h,以及輸出層的權(quán)重 W h q ∈ R h × q \boldsymbol{W}_{hq} \in \mathbb{R}^{h \times q} Whq?Rh×q和偏差 b q ∈ R 1 × q \boldsymbol_q \in \mathbb{R}^{1 \times q} bq?R1×q。值得一提的是,即便在不同時(shí)間步,循環(huán)神經(jīng)網(wǎng)絡(luò)也始終使用這些模型參數(shù)。因此,循環(huán)神經(jīng)網(wǎng)絡(luò)模型參數(shù)的數(shù)量不隨時(shí)間步的增加而增長(zhǎng)。

圖6.1展示了循環(huán)神經(jīng)網(wǎng)絡(luò)在3個(gè)相鄰時(shí)間步的計(jì)算邏輯。在時(shí)間步 t t t,隱藏狀態(tài)的計(jì)算可以看成是將輸入 X t \boldsymbol{X}_t Xt?和前一時(shí)間步隱藏狀態(tài) H t ? 1 \boldsymbol{H}_{t-1} Ht?1?連結(jié)后輸入一個(gè)激活函數(shù)為 ? \phi ?的全連接層。該全連接層的輸出就是當(dāng)前時(shí)間步的隱藏狀態(tài) H t \boldsymbol{H}_t Ht?,且模型參數(shù)為 W x h \boldsymbol{W}_{xh} Wxh? W h h \boldsymbol{W}_{hh} Whh?的連結(jié),偏差為 b h \boldsymbol_h bh?。當(dāng)前時(shí)間步 t t t的隱藏狀態(tài) H t \boldsymbol{H}_t Ht?將參與下一個(gè)時(shí)間步 t + 1 t+1 t+1的隱藏狀態(tài) H t + 1 \boldsymbol{H}_{t+1} Ht+1?的計(jì)算,并輸入到當(dāng)前時(shí)間步的全連接輸出層。

【深度學(xué)習(xí)筆記】6_2 循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(recurrent neural network),深度學(xué)習(xí),深度學(xué)習(xí),筆記,rnn

圖6.1 含隱藏狀態(tài)的循環(huán)神經(jīng)網(wǎng)絡(luò)

我們剛剛提到,隱藏狀態(tài)中 X t W x h + H t ? 1 W h h \boldsymbol{X}_t \boldsymbol{W}_{xh} + \boldsymbol{H}_{t-1} \boldsymbol{W}_{hh} Xt?Wxh?+Ht?1?Whh?的計(jì)算等價(jià)于 X t \boldsymbol{X}_t Xt? H t ? 1 \boldsymbol{H}_{t-1} Ht?1?連結(jié)后的矩陣乘以 W x h \boldsymbol{W}_{xh} Wxh? W h h \boldsymbol{W}_{hh} Whh?連結(jié)后的矩陣。接下來(lái),我們用一個(gè)具體的例子來(lái)驗(yàn)證這一點(diǎn)。首先,我們構(gòu)造矩陣X、W_xh、HW_hh,它們的形狀分別為(3, 1)、(1, 4)、(3, 4)和(4, 4)。將XW_xhHW_hh分別相乘,再把兩個(gè)乘法運(yùn)算的結(jié)果相加,得到形狀為(3, 4)的矩陣。

import torch

X, W_xh = torch.randn(3, 1), torch.randn(1, 4)
H, W_hh = torch.randn(3, 4), torch.randn(4, 4)
torch.matmul(X, W_xh) + torch.matmul(H, W_hh)

輸出:

tensor([[ 5.2633, -3.2288,  0.6037, -1.3321],
        [ 9.4012, -6.7830,  1.0630, -0.1809],
        [ 7.0355, -2.2361,  0.7469, -3.4667]])

將矩陣XH按列(維度1)連結(jié),連結(jié)后的矩陣形狀為(3, 5)??梢?,連結(jié)后矩陣在維度1的長(zhǎng)度為矩陣XH在維度1的長(zhǎng)度之和( 1 + 4 1+4 1+4)。然后,將矩陣W_xhW_hh按行(維度0)連結(jié),連結(jié)后的矩陣形狀為(5, 4)。最后將兩個(gè)連結(jié)后的矩陣相乘,得到與上面代碼輸出相同的形狀為(3, 4)的矩陣。

torch.matmul(torch.cat((X, H), dim=1), torch.cat((W_xh, W_hh), dim=0))

輸出:

tensor([[ 5.2633, -3.2288,  0.6037, -1.3321],
        [ 9.4012, -6.7830,  1.0630, -0.1809],
        [ 7.0355, -2.2361,  0.7469, -3.4667]])

6.2.3 應(yīng)用:基于字符級(jí)循環(huán)神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型

最后我們介紹如何應(yīng)用循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)構(gòu)建一個(gè)語(yǔ)言模型。設(shè)小批量中樣本數(shù)為1,文本序列為“想”“要”“有”“直”“升”“機(jī)”。圖6.2演示了如何使用循環(huán)神經(jīng)網(wǎng)絡(luò)基于當(dāng)前和過(guò)去的字符來(lái)預(yù)測(cè)下一個(gè)字符。在訓(xùn)練時(shí),我們對(duì)每個(gè)時(shí)間步的輸出層輸出使用softmax運(yùn)算,然后使用交叉熵?fù)p失函數(shù)來(lái)計(jì)算它與標(biāo)簽的誤差。在圖6.2中,由于隱藏層中隱藏狀態(tài)的循環(huán)計(jì)算,時(shí)間步3的輸出 O 3 \boldsymbol{O}_3 O3?取決于文本序列“想”“要”“有”。 由于訓(xùn)練數(shù)據(jù)中該序列的下一個(gè)詞為“直”,時(shí)間步3的損失將取決于該時(shí)間步基于序列“想”“要”“有”生成下一個(gè)詞的概率分布與該時(shí)間步的標(biāo)簽“直”。

【深度學(xué)習(xí)筆記】6_2 循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(recurrent neural network),深度學(xué)習(xí),深度學(xué)習(xí),筆記,rnn

圖6.2 基于字符級(jí)循環(huán)神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型。

因?yàn)槊總€(gè)輸入詞是一個(gè)字符,因此這個(gè)模型被稱為字符級(jí)循環(huán)神經(jīng)網(wǎng)絡(luò)(character-level recurrent neural network)。因?yàn)椴煌址膫€(gè)數(shù)遠(yuǎn)小于不同詞的個(gè)數(shù)(對(duì)于英文尤其如此),所以字符級(jí)循環(huán)神經(jīng)網(wǎng)絡(luò)的計(jì)算通常更加簡(jiǎn)單。在接下來(lái)的幾節(jié)里,我們將介紹它的具體實(shí)現(xiàn)。

小結(jié)

  • 使用循環(huán)計(jì)算的網(wǎng)絡(luò)即循環(huán)神經(jīng)網(wǎng)絡(luò)。
  • 循環(huán)神經(jīng)網(wǎng)絡(luò)的隱藏狀態(tài)可以捕捉截至當(dāng)前時(shí)間步的序列的歷史信息。
  • 循環(huán)神經(jīng)網(wǎng)絡(luò)模型參數(shù)的數(shù)量不隨時(shí)間步的增加而增長(zhǎng)。
  • 可以基于字符級(jí)循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)創(chuàng)建語(yǔ)言模型。

注:除代碼外本節(jié)與原書此節(jié)基本相同,原書傳送門文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-838774.html

到了這里,關(guān)于【深度學(xué)習(xí)筆記】6_2 循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(recurrent neural network)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包