RNN & LSTM & GRU

hands on machine learning with scikit-learn and tensorflow
reading note

CHAPTER 14: RNN

分析任意長度的序列化(sequences)數據

循環(huán)神經元

在傳統(tǒng)神經元的基礎上, 添加了上階段輸出作為本階段的一個輸入

因此, 循環(huán)神經元的輸入包含兩部分, 1)特征輸入; 2)上階段的輸出

循環(huán)神經元數據的計算公式如下(也就是多了一份輸入)

當由一層循環(huán)神經元構成時, 輸出的y為一個向量(一個神經元對應一個輸出)

其中, 黃色的框為一個cell(單元)

對應的計算公式為

注1: RNN輸入X的形式

形象一點的輸入形式

在訓練模型時, 既是對參數的更新:

  1. 使用一個或多個樣本去更新參數(SGD, MB-SGD)
  2. 每個樣本包含多個時間的輸入
  3. 每個時間的輸入為一個向量(Word Enbedding)

注2: NN, LR與樹模型的區(qū)別

  • NN和LR模型的結構是確定的, 通過樣本(一個或多個)去更新模型的參數, 來訓練模型
  • 樹模型的結構是不確定的, 因此需要全部的樣本來確定結構

輸入與輸出序列

  1. seq2seq(輸入為序列, 輸出為序列)
    1. 時間序列的預測, 序列生成
    2. 機器翻譯(Encoder2Decoder)
    3. 語音2文字
  1. seq2vec(輸入為序列, 輸出為向量(僅保留了最后的一個(輸出)狀態(tài)))
    1. 分類任務(音樂分類, 情感分類)
    2. 預測用戶下次可能觀看的電影(協(xié)同過濾)
  1. vec2seq(輸入為向量, 輸出為序列)
    1. 給圖片添加描述
    2. 輸入歌手, 創(chuàng)建播放列表
  1. encoder2decoder(輸入為序列, 輸出為序列)
    1. seq2seq的一種特殊形式
    2. 機器翻譯

訓練RNN模型

RNN的訓練技巧(BPTT)

  1. 按時間展開
  2. 反向傳播

虛線為正向預測過程, 實線為反向訓練過程(反向傳播), 每個時刻向損失函數的負梯度更新模型, 比如計算了$Y_{(2)}$的梯度, 只更新$Y_{(2)}$, 不會更新$Y_{(1)}, Y_{(0)}$; 另外, $W, b$在每個階段都是一致的(參數共享, 這也是梯度爆炸和梯度消失的原因)

參考: RNN訓練詳解

當RNN用作分類時, 直接輸出最后一個的狀態(tài)向量, 然后連接一個全連接層, 轉換為一個普通的NN模型

RNN對于長序列的訓練困難

問題: 當序列較長時, 會出現

  1. 訓練時間長(收斂困難)
    • 序列越長, 相當于展開的RNN更深, 又因為RNN權值共享, 因此容易造成梯度爆炸/消失問題
      • 解決方法: 限制序列長度, 但會丟失長期記憶
  2. 長期記憶退化, 僅保留了短期記憶

引出: 如何保存長期記憶? -> LSTM, GRU

[1] 訓練時間慢: 1. 初始化參數方法; 2. 不飽和的激活函數; 3. BN; 4. 梯度修建; 5. 更快的優(yōu)化方法.

LSTM Cell

LSTM對RNN的提升: 收斂更快, 能夠檢測出長期依賴信息

LSTM的關鍵思想: 網絡有能力學習到哪些長期信息應該被丟棄, 哪些應該被記憶

LSTM管理了兩條狀態(tài)向量, 一條為長期記憶, 一條為短期記憶

LSTM包含了四個全連接層(一個輸出, 三條控制), 三個門(遺忘門, 輸入門, 輸出門), 兩條狀態(tài)向量(長期記憶, 短期記憶)

[注1] 這里可以對logistic和tanh兩個激活函數的作用做一個思考:

  1. logistic的取值范圍[0, 1], 用于gate(控制), 控制輸出的, 相當于過濾
  2. tanh的取值范圍[-1, 1], 用于計算, 計算出輸出的

GRU Cell

LSTM的精簡版本

  1. 合并兩條狀態(tài)向量為一條狀態(tài)向量
  2. 合并了遺忘門和輸入門的計算(遺忘與輸入的對立)
  3. 沒有輸出門, 但是多了一個對狀態(tài)輸入進行過濾的門

[注] 書上的最后一個公式存在錯誤, 付上的為修改后的公式

Word Embeddings

降低維度, 使相同的詞語有相同的表示, 表示具有泛化能力, 有距離的性質

機器翻譯過程(Encoder-Decoder 網絡)

訓練過程:

  1. 對單詞進行Embedding, 轉換每個單詞為向量
  2. 訓練時輸入包含兩個部分, 一個是原始的輸入, 一個是翻譯的輸入
    1. 翻譯的輸入比原始的輸入延后一步
    2. 原始的輸入逆序(這里并不是絕對的, 逆序輸入是為了讓翻譯有總結的能力, 雙向的網絡則有更多的信息)
    3. 使用softmax計算概率, 選擇概率最高的詞語(因此這里有一個詞語個數的問題, 詞語過多會造成計算復雜(解決方法, 抽樣))

測試過程: 不再有翻譯的輸入

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末蜜暑,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子脉顿,更是在濱河造成了極大的恐慌皮假,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件论衍,死亡現場離奇詭異购裙,居然都是意外死亡析苫,警方通過查閱死者的電腦和手機晨另,發(fā)現死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門潭千,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人借尿,你說我怎么就攤上這事刨晴。” “怎么了垛玻?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵割捅,是天一觀的道長。 經常有香客問我帚桩,道長,這世上最難降的妖魔是什么嘹黔? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任账嚎,我火速辦了婚禮,結果婚禮上儡蔓,老公的妹妹穿的比我還像新娘郭蕉。我一直安慰自己,他們只是感情好喂江,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布召锈。 她就那樣靜靜地躺著,像睡著了一般获询。 火紅的嫁衣襯著肌膚如雪涨岁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天吉嚣,我揣著相機與錄音梢薪,去河邊找鬼。 笑死尝哆,一個胖子當著我的面吹牛秉撇,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼琐馆,長吁一口氣:“原來是場噩夢啊……” “哼规阀!你這毒婦竟也來了?” 一聲冷哼從身側響起瘦麸,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤姥敛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瞎暑,有當地人在樹林里發(fā)現了一具尸體彤敛,經...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年了赌,在試婚紗的時候發(fā)現自己被綠了墨榄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡勿她,死狀恐怖袄秩,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情逢并,我是刑警寧澤之剧,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站砍聊,受9級特大地震影響背稼,放射性物質發(fā)生泄漏。R本人自食惡果不足惜玻蝌,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一蟹肘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俯树,春花似錦帘腹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陋率,卻和暖如春球化,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翘贮。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工赊窥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狸页。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓锨能,卻偏偏與公主長得像扯再,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子址遇,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內容