之前的序列學(xué)習(xí)中假設(shè)的目標(biāo)是在給定觀測(cè)的情況下對(duì)下一個(gè)輸出進(jìn)行建模,然而也存在需要后文預(yù)測(cè)前文的情況。
9.4.1 隱馬爾可夫模型中的動(dòng)態(tài)規(guī)劃
數(shù)學(xué)推導(dǎo)太復(fù)雜了,略。
9.4.2 雙向模型
雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(bidirectional RNNs)添加了反向傳遞信息的隱藏層,以便更靈活地處理此類信息。
9.4.2.1 定義
前向和反向隱狀態(tài)的更新如下:
H → t = ? l ( X t W x h ( f ) + H → t ? 1 W h h ( f ) + b h ( f ) ) H ← t = ? l ( X t W x h ( b ) + H ← t ? 1 W h h ( b ) + b h ( b ) ) \overrightarrow{\boldsymbol{H}}_t=\phi_l(\boldsymbol{X}_t\boldsymbol{W}^{(f)}_{xh}+\overrightarrow{\boldsymbol{H}}_{t-1}\boldsymbol{W}^{(f)}_{hh}+\boldsymbol^{(f)}_h)\\ \overleftarrow{\boldsymbol{H}}_t=\phi_l(\boldsymbol{X}_t\boldsymbol{W}^{(b)}_{xh}+\overleftarrow{\boldsymbol{H}}_{t-1}\boldsymbol{W}^{(b)}_{hh}+\boldsymbol^{(b)}_h) Ht?=?l?(Xt?Wxh(f)?+Ht?1?Whh(f)?+bh(f)?)Ht?=?l?(Xt?Wxh(b)?+Ht?1?Whh(b)?+bh(b)?)
參數(shù)字典:
-
H → t , H ← t ∈ R n × h \overrightarrow{\boldsymbol{H}}_t,\overleftarrow{\boldsymbol{H}}_t\in\R^{n\times h} Ht?,Ht?∈Rn×h 表示前向和反向隱狀態(tài)
- h h h 表示隱藏單元數(shù)目
-
W x h ( f ) , W h h ( f ) , W x h ( b ) , W h h ( b ) ∈ R h × h \boldsymbol{W}^{(f)}_{xh},\boldsymbol{W}^{(f)}_{hh},\boldsymbol{W}^{(b)}_{xh},\boldsymbol{W}^{(b)}_{hh}\in\R^{h\times h} Wxh(f)?,Whh(f)?,Wxh(b)?,Whh(b)?∈Rh×h 表示權(quán)重參數(shù)
-
b h ( f ) , b h ( b ) ∈ R 1 × h \boldsymbol^{(f)}_h,\boldsymbol^{(b)}_h\in\R^{1\times h} bh(f)?,bh(b)?∈R1×h 表示偏重參數(shù)
接下來,將前向隱狀態(tài) H → t \overrightarrow{\boldsymbol{H}}_t Ht? 和反向隱狀態(tài) H ← t \overleftarrow{\boldsymbol{H}}_t Ht? 連接起來,獲得需要送入輸出層的隱狀態(tài) H t ∈ R n × 2 h \boldsymbol{H}_t\in\R^{n\times 2h} Ht?∈Rn×2h。
最后,輸出層計(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?
參數(shù)字典:
-
O t ∈ R n × q \boldsymbol{O}_t\in\R^{n\times q} Ot?∈Rn×q 表示輸出層輸出
- q q q 表示輸出單元數(shù)目
-
W h q ∈ R 2 h × q \boldsymbol{W}_{hq}\in\R^{2h\times q} Whq?∈R2h×q 表示權(quán)重矩陣
-
b q ∈ R 1 × q \boldsymbol_q\in\R^{1\times q} bq?∈R1×q 表示偏置
9.4.2.2 模型的計(jì)算成本及其應(yīng)用
在訓(xùn)練期間,能夠利用過去和未來的數(shù)據(jù)來估計(jì)現(xiàn)在空缺的詞;而在測(cè)試期間,只有過去的數(shù)據(jù),因此精度將會(huì)很差。下面的實(shí)驗(yàn)將說明這一點(diǎn)。
另外,雙向循環(huán)神經(jīng)網(wǎng)絡(luò)的計(jì)算速度非常慢。其主要原因是網(wǎng)絡(luò)的前向傳播需要在雙向?qū)又羞M(jìn)行前向和后向遞歸,并且網(wǎng)絡(luò)的反向傳播還依賴于前向傳播的結(jié)果。因此,梯度求解將有一個(gè)非常長(zhǎng)的鏈。
雙向?qū)拥氖褂迷趯?shí)踐中非常少,并且僅僅應(yīng)用于部分場(chǎng)合。例如,填充缺失的單詞、詞元注釋(例如,用于命名實(shí)體識(shí)別)以及作為序列處理流水線中的一個(gè)步驟對(duì)序列進(jìn)行編碼(例如,用于機(jī)器翻譯)。
9.4.3 雙向循環(huán)神經(jīng)網(wǎng)絡(luò)的錯(cuò)誤應(yīng)用
import torch
from torch import nn
from d2l import torch as d2l
# 加載數(shù)據(jù)
batch_size, num_steps, device = 32, 35, d2l.try_gpu()
train_iter, vocab = d2l.load_data_time_machine(batch_size, num_steps)
# 通過設(shè)置“bidirective=True”來定義雙向LSTM模型
vocab_size, num_hiddens, num_layers = len(vocab), 256, 2
num_inputs = vocab_size
lstm_layer = nn.LSTM(num_inputs, num_hiddens, num_layers, bidirectional=True)
model = d2l.RNNModel(lstm_layer, len(vocab))
model = model.to(device)
# 訓(xùn)練模型
num_epochs, lr = 500, 1
d2l.train_ch8(model, train_iter, vocab, lr, num_epochs, device)
perplexity 1.1, 62244.4 tokens/sec on cuda:0
time travellerererererererererererererererererererererererererer
travellerererererererererererererererererererererererererer
練習(xí)
(1)如果不同方向使用不同數(shù)量的隱藏單位, H t \boldsymbol{H}_t Ht? 的形狀會(huì)發(fā)生怎樣的變化?
如果一個(gè)是 H → t ∈ R n × h 1 \overrightarrow{\boldsymbol{H}}_t\in\R^{n\times h_1} Ht?∈Rn×h1?,另一個(gè)是 H ← t ∈ R n × h 2 \overleftarrow{\boldsymbol{H}}_t\in\R^{n\times h_2} Ht?∈Rn×h2? 那么最后拼接出的 H t ∈ R n × ( h 1 + h 2 ) \boldsymbol{H}_t\in\R^{n\times (h_1+h_2)} Ht?∈Rn×(h1?+h2?)。
(2)設(shè)計(jì)一個(gè)具有多個(gè)隱藏層的雙向循環(huán)神經(jīng)網(wǎng)絡(luò)。
不會(huì),略。
(3)在自然語(yǔ)言中一詞多義很常見。例如,“bank”一詞在不同的上下文“i went to the bank to deposit cash”和“i went to the bank to sit down”中有不同的含義。如何設(shè)計(jì)一個(gè)神經(jīng)網(wǎng)絡(luò)模型,使其在給定上下文序列和單詞的情況下,返回該單詞在此上下文中的向量表示?哪種類型的神經(jīng)網(wǎng)絡(luò)架構(gòu)更適合處理一詞多義?文章來源:http://www.zghlxwxcb.cn/news/detail-723141.html
那必然是雙向循環(huán)網(wǎng)絡(luò)。文章來源地址http://www.zghlxwxcb.cn/news/detail-723141.html
到了這里,關(guān)于《動(dòng)手學(xué)深度學(xué)習(xí) Pytorch版》 9.4 雙向循環(huán)神經(jīng)網(wǎng)絡(luò)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!