RNN相关模型研究
文章目錄
- RNN
- RNN經典算法
- N to M
- Attention機制
- RNN 改進版 LSTM
- 參考文獻
RNN
RNN有很多種。
從輸入輸出的角度有:
one to n
n to n
n to one
RNN經典算法
RNN最經典的版本是,N個輸入,對N的輸出。
中間的是隱藏層。
有 h1=f(Ux1+Wh0+b)h1 = f(Ux1 + Wh0 + b)h1=f(Ux1+Wh0+b)
- 同一次迭代,需要記住的是,h0,h1,h2…這些迭代的時候用的U,W,b都是一樣的。
對于輸出部分:
y1=Softmax(Vh1+c)y1 = Softmax(Vh1 + c)y1=Softmax(Vh1+c)
- 類似的,輸出用的V還有c對于y1,y2…來說都是一樣的。
序列等長, 這就是經典的RNN模型
- 對于序列數據,RNN提出了一個隱藏數據H。H為提取出來的特征向量。
- 對于每個序列節點x,都有一個對應的隱藏數據H。
- 每個H都是有X和前一個節點的H生成的。
hi=f(Uxi+Whi?1+b)h_i = f(Ux_i+Wh_{i-1}+b)hi?=f(Uxi?+Whi?1?+b)
- U, W, b 為共享的參數
- f 為激活函數,一般為tanh
目前還沒有輸出,輸出是直接通過H來計算出來的。
yi=Softmax(Vhi+c)y_i = Softmax(Vh_{i}+c)yi?=Softmax(Vhi?+c)
N to M
N to M需要被單獨拿出來講。這個就是Encoder-Decoder模型。
-
這個只是一個框架,中間的生成步驟,其實把RNN換成LSTM也是可以的。
-
局限性:
- 編碼和解碼的唯一聯系就是固定的語義向量c。
- 壓縮過程必然帶來的信息損失
- RNN本身機制導致,先輸入的信息被后輸入的信息給稀釋掉。
Attention機制
A這個矩陣的生成:
RNN 改進版 LSTM
LSTM(long short term memory, 長短期記憶網絡)
- 經典的RNN,由于是復合函數帶進去求導,導致反向傳播求梯度時,會將所有的梯度連乘起來,引起梯度爆炸或者是梯度消失。
- LSTM由于添加了常量C(15年之前都是C對于每個cell都是hi一個常數)
- 在15年之后,認為它不是一個常數而是可以往后求導的。
除了經典RNN中的隱藏狀態H之外,LSTM還提出了新的隱藏狀態C。
每次輸入的有兩個隱藏狀態,同時也有兩個隱藏狀態輸出
- 遺忘門
ft=σ(Wf?[ht?1,xt]+bf)f_t = \sigma(W_f·[h_{t-1}, x_t] + b_f) ft?=σ(Wf??[ht?1?,xt?]+bf?)
- 記憶門
it=σ(Wi?[ht?1,xt]+bi)i_t = \sigma(W_i·[h_{t-1}, x_t] + b_i) it?=σ(Wi??[ht?1?,xt?]+bi?)
C~t=tanh(WC?[ht?1,xt]+bC)\widetilde C_t = tanh(W_C·[h_{t-1}, x_t] + b_C)Ct?=tanh(WC??[ht?1?,xt?]+bC?)
- 用于遠程傳播的C的更新
Ct=ft?Ct?1+C~t?itC_t =f_t * C_{t-1} + \widetilde C_t * i_tCt?=ft??Ct?1?+Ct??it?
- 輸出門(用于輸出H,而H控制輸出)
ot=σ(Wo?[ht?1,xt]+bo)o_t = \sigma(W_o·[h_{t-1}, x_t] + b_o)ot?=σ(Wo??[ht?1?,xt?]+bo?)
ht=ot?tanh(Ct)h_t = o_t * tanh(C_t)ht?=ot??tanh(Ct?)
參考文獻
總結
- 上一篇: 简单探索MNIST(Softmax回归和
- 下一篇: 无重复字符的最长子串【三种解法】--Le