【Coursera】吳恩達 deeplearning.ai 05.序列模型 第一週 迴圈序列模型 課程筆記
迴圈序列模型
為什麼選擇序列模型
在語音識別、音樂生成、情感分類、DNA序列分析、機器翻譯、視訊識別、命名實體識別等任務中,共同特點是輸入X和/或輸出Y都是序列。
數學符號
例如,對於命名實體識別的問題:
- 對於輸入序列,用 來表示,其中 表示 位置的單詞。
- 對於輸出序列用 來表示。
- 表示輸入序列長度, 表示輸出序列長度,在本例中 。
- 表示第 個樣本輸入的第 個位置的值, 表示第 個訓練樣本的輸入序列長度。
- 表示第 個樣本的輸出第 個位置的值, 表示第 個訓練樣本的輸出序列長度。
怎樣表現句子裡的某一個單詞:
one-hot編碼:在詞典中,該詞的編碼為1,其餘位置編碼為0,形成該詞的向量。
迴圈神經網路模型
無法選擇標準的神經網路的原因:
- 在不同的樣本中,輸入輸出長度都是可變的。
- 不共享跨文字不同位置學習的功能。
迴圈神經網路RNN
在每一個時間步中,迴圈神經網路傳遞一個啟用值到下一個時間步中,用於計算。對於零時刻,則輸入一個零向量(或者隨機初始化的)作為偽啟用值。
迴圈神經網路是從左往右掃描資料,同時每個時間步的引數也是共享的。
限制:在某一時刻的預測僅僅使用了序列中之前的輸入資訊,而沒有使用該時刻之後的輸入資訊。(解決方法:雙向迴圈神經網路BRNN)
RNN前向傳播過程如下:
其中,
表示與
相乘的用來計算
的權重,同理,
表示與
相乘的用來計算
的權重。
穿越時間的反向傳播
不同型別的迴圈神經網路
結構:
多對一:如文字輸入
一對多:如音樂生成、序列生成等(輸入一個數字等或空,輸出一段·音樂)
多對多:如機器翻譯,輸入和輸出的長度不同,因此網路分為編碼器和解碼器兩個部分。
語言模型和序列生成
訓練語料:大的英文文字 。
預處理:
- 將句子標記化(tokenize)
- 將每個單詞轉化成one-hot編碼,在句子結尾加上
標記。
- 對於訓練集中不在字典中的詞,用
代替。
RNN model
對新序列取樣
即對詞的概率分佈進行取樣,來生成一個新的單詞序列。
帶有神經網路的梯度消失
存在的問題:
RNN從左到右前向傳播,由於梯度消失的原因,後面層的輸出誤差很難影響到前面層的計算。
梯度爆炸:採用梯度修剪的方法。
梯度消失則比較棘手(下一節GRU單元)
GRU單元
GRU(Gated Recurrent Unit)門控迴圈單元,通過改變RNN的隱藏層,使其能捕捉深層連線,並改善梯度消失的問題。
用 計算記憶細胞 的更新值,用 來判斷是否需要更新。