上文:
自然語言處理NLP(1)
自然語言處理NLP(2)
Gated RNN & LSTM
-
簡單RNN存在的問題
隨著時間的回溯,簡單RNN不能避免梯度消失或者梯度爆炸
-
梯度裁剪
用來解決梯度爆炸問題
code:
g:所有參數梯度的和;threshold:閾值
-
Gated RNN
用來解決梯度消失問題
Gated RNN框架下的兩種結構:LSTM GRU
-
LSTM (Long Short-Term Memory:長短期記憶)長時間維持短期記憶
僅輸出隱藏狀態向量h,記憶單元c對外不可見
- ht = tanh(Ct)
-
Gated 門:用來控制數據的流動,門的開合程度是自動從數據中學習到的,有專門的權重參數用于控制門的開合程度,這些權重參數也是通過學習被更新,sigmoid函數用于求門的開合程度
-
輸出門
對tanh(Ct)施加門,因為這個門管理下一個隱藏狀態ht的輸出,所以這個門稱為輸出門output gate
輸出門的開合程度由xt和ht-1求出 sigmoid函數用于求門的開合程度:
-
遺忘門
對記憶但會員Ct-1添加一個忘記不必要記憶的門,這個門稱為遺忘門 forget gate
遺忘門的開合程度:
-
新的記憶單元
遺忘門從上一時刻的記憶單元刪除了應該忘記的,現在我們還想向這個記憶單元添加一些應當記住的,為此我們添加新的tanh節點
g:向記憶單元添加的新信息
將g加到上一時刻的Ct-1上,從而形成新的記憶
-
輸入門
對這個新的記憶單元g添加門,這個門稱為輸入門 input gate
輸入門的開合程度:
-
使用LSTM的語言模型
Embedding -> LSTM -> Affine -> Softmax with Loss
-
改進
-
LSTM的多層化
我們可以疊加多個LSTM層,從而學習更加復雜的模式(在PTB數據集上學習語言模型的情況下,LSTM的層數為2~4時,結果比較好)
-
Dropout抑制過擬合
常規Dropout:在深度方向(垂直方向)上插入Dropout層
變分Dropout:用在時間方向上
-
權重共享 weight tying
Embedding層和Affine層的權重共享,可以減少需要學習的參數數量
-
基于RNN生成文本
-
如何生成下一個新單詞?
概率性的選擇:根據概率分布進行選擇,這樣概率高的單詞容易被選到,概率低的單詞難以被選到。然后再把選中的詞當作輸入,再次選擇下一個新的單詞
-
seq2seq模型:Encoder-Decoder模型 編碼器-解碼器模型
編碼器對輸入數據進行編碼,解碼器對被編碼的數據進行解碼
編碼:就是將任意長度的文本轉換為一個固定長度的向量
seq2seq由兩個LSTM層構成:編碼器的LSTM和解碼器的LSTM。LSTM層的隱藏狀態是編碼器和解碼器的橋梁,在正向傳播時,編碼器的編碼信息通過LSTM層的隱藏狀態傳遞給解碼器;反向傳播時,解碼器的梯度通過這個橋梁傳遞給編碼器
-
seq2seq改進
-
反轉輸入數據 Reverse
反轉輸入數據的順序,反轉數據后梯度的傳播可以更加平滑
-
偷窺 Peeky
將集中了重要信息的編碼器的輸出h分配給解碼器的其他層
-
-
seq2seq的應用
-
聊天機器人 chatgpt
-
算法學習
-
自動圖像描述
編碼器從LSTM換成CNN
-
Attention 注意力機制
Attention從數據中學習兩個時序數據之間的對應關系,計算向量之間的相似度,輸出這個相似度的加權和向量
-
結構
Attention層放入LSTM和Affine層之間
hs:LSTM中各個時刻的隱藏狀態向量被整合為hs
-
雙向RNN
讓LSTM從兩個方向進行處理:雙向LSTM
各個單詞對應的隱藏狀態向量可以從左右兩個方向聚集信息,這些向量就編碼了更均衡的信息
-
Attention層的不同使用
- Attention層放入LSTM和Affine層之間(垂直方向)
- Attention層放入上一時刻的LSTM層、Affine層和當前時刻的LSTM層之間(時間方向)
-
seq2seq的深層化 & skip connection
為了讓帶Attention的seq2seq具有更強的表現力,加深LSTM層
在加深層時使用到的一個技巧是殘差連接(skip connection / residual connection / shortcut):是一種跨層連接的簡單技巧
-
Attention應用
-
GNMT 谷歌神經機器翻譯系統
-
Transformer
Attention is all you need
Transformer不用RNN,而用Attention進行處理:self-Attention
-
NTM Neural Turing Machine 神經圖靈機
計算機的內存操作可以通過神經網絡復現:
在rnn的外部配置一個存儲信息的存儲裝置,使用Attention向這個存儲裝置讀寫必要的信息
-
GRU
GRU:Gated Recurrent Unit 門控循環單元
-
結構
GRU相比于LSTM的結構,取消了記憶單元的使用,只使用隱藏狀態
r:reset門:決定在多大程度上忽略過去的隱藏狀態
h~:新的隱藏狀態(下列第三個式子)
z:update門:更新隱藏狀態
(1-z)· ht-1:forget門
z · h~:input門