循環神經網絡與應用

循環神經網絡

  • RNN :循環神經網絡,處理的是後續的輸出與之前的內容有關聯的任務。

  • RNN引入“記憶”的概念

  • “循環”2字來源於其每個源於都執行相同的任務,但是輸出依賴於輸入和“記憶”。NMT: neural machine translation

一.場景與多種應用:模仿生成論文(生成序列)

二.層級結構
在這裏插入圖片描述

  1. xtx_{t}是時間tt處 的輸入
  2. StS_t是時間tt處的“記憶”,St=f(UXt+WSt1)S_t=f(UX_t+WS_{t-1}), ff可以是tanhtanh
  3. OtO_t是時間tt處的輸出,如果是預測下個詞的話,可能是softmaxsoftmax輸出的屬於每個候選詞的概率,Ot=softmax(VSt)O_t=softmax(VS_t)
    WWUU是參數的矩陣
  • 參數複用:每個時間點上用的UU,VV,WW都是同一個參數
  • OtO_t只與StS_t有關係
    結構細節:
  • 1.可以把因狀態StS_t視作“記憶體”,捕捉了之前時間點上的信息;
  • 2.輸出OtO_t由當前時間及之前所有的“記憶”共同計算得到;
  • 3.實際應用中,StS_t並不能捕捉和保留之前所有的信息;
  • 4.不同於CNN,這裏的RNN其實整個神經網絡都共享一組參數(WW,UU,VV),極大減小了需要訓練和預估的參數量;
  • 5.圖中的OtO_t在有些任務下是不存在的,比如文本情感分析,其實只需要最後的output結果就行。

三.多種RNN
雙向RNN:1.有些情況下,當前的輸出不只依賴於之前的序列元素,還可能依賴之後的序列元素。比如從一段話踢掉部分詞,讓你補全。
直觀理解:雙向RNN疊加
在這裏插入圖片描述
深層雙向RNN和雙向RNN的區別是每一步/每個時間點我們設定多層結構
在這裏插入圖片描述
4.BPTT算法
MLP(DNN)與CNN用BP算法求偏導
BPTT和BP是一個思路,不過既然有step,就和時間t有關係
在這裏插入圖片描述
1:16:12處
5.生成模型與圖像描述

LSTM
1.長時依賴問題
(Long short-term Memory)
LSTM 是RNN的一種,大體結構幾乎一樣,區別是:1.它的“記憶細胞”被改造過;2.該記的信息會一直傳遞,不該記的會被“門”截斷。
LSTM關鍵:“細胞狀態”
細胞狀態類似於傳送帶。直接在整個鏈上運行,只有一些少量的線性交互。信息在上面流傳保持不變會很容易
LSTM怎麼控制“細胞狀態”
通過“門”讓信息選擇性通過,來去除或者增加信息到細胞狀態
包含一個sigmoid神經網絡曾和一個pointwise乘法操作
sigmoid層輸出0到1之間的概率值,描述每個部分有多少量可以通過。0代表“不允許任何量通過”,1就指“允許任何量通過”

LSTM的幾個關鍵“門”與操作
第一步:決定從“細胞狀態”中丟棄什麼信息 ==\rightarrow “忘記門”
ft=δ(Wt.[ht1,xt]+bf)f_t=\delta(W_t.[h_{t-1},x_t]+b_f)

第二步:決定放什麼新信息到“細胞狀態”中
SigmoidSigmoid 層決定什麼值需要更新
TanhTanh層創建一個新的候選值向量Ct^\hat{C_t}
上述2步是爲狀態更新做準備
it=δ(Wi.[Ht1,xt]+bi)i_t=\delta(W_i.[H_{t-1},x_t]+b_i)
Ct^=tanh(Wc.[ht1,xt]+bC)\hat{C_t}=tanh(W_c.[h_{t-1},x_t]+bC)

第三步:更新“細胞狀態”
1.更新Ct1C_{t-1}CtC_t
2.把舊狀態與ftf_t 相乘,丟棄掉我們確定需要丟棄的信息
3.加上itCt^i_t*\hat{C_t} 。這就是新的候選值,根據我們決定更新每個狀態的程度進行變化

第四步:基於“細胞狀態”得到輸出
1.首先運行一個sigmoid層來確定細胞狀態的哪個部分得到輸出
2.接着用tanh處理細胞狀態(得到一個在-1到1之間的值),再將它和sigmoid門的輸出相乘,輸出我們確定要輸出的那部分。
3.比如我們可能需要單複數信息來確定輸出“他”還是“他們”。
Ot=δ(Wo[ht1,xt],bo)O_t=\delta (W_o[h_{t-1},x_t],b_o)
ht=Ottanh(Ct)h_t=O_t*tanh(C_t)

LSTM相較於RNN會較少豬隊友的影響,本質是前者求導是加法方式,後者是乘法方式。

變種1:

  • 增加“peephole connection”
  • 讓門層也會接受細胞狀態的輸入

變種2:

  • 通過使用coupled忘記和輸入門
  • 之前是分開確定需要忘記和添加的信息,這裏是一同做出決定。
    Ct=ftCt1+(1ft)Ct^C_t=f_t*C_{t-1}+(1-f_t)*\hat{C_t}

四.GRU(Gated Recurrent Unit)

  • 將忘記門和輸入門合成來一個單一的更新門
  • 同樣還混合來細胞狀態和隱藏狀態,和其他一些改動
  • 比標準LSTM簡單

Zt=δ(Wz.[ht1,xt])Z_t=\delta(W_z.[h_{t-1,x_t}])
rt=δ(Wr.[ht1,xt])r_t=\delta(W_r.[h_{t-1},x_t])
ht^=tanh(W.[rtht1,xt])\hat{h_t}=tanh(W.[rt*h_{t-1},x_t])
ht=(1zt)ht1+ztyt^h_t=(1-z_t)*h_{t-1}+z_t*\hat{y_t}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章