Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【深度學習】05 有記憶的神經網路 RNN

【深度學習】05 有記憶的神經網路 RNN

2022 政大應數「數學軟體應用」深度學習課程 05

4615930de72ec08f99d3227761ace0d8?s=128

yenlung@mac.com
PRO

April 25, 2022
Tweet

More Decks by yenlung@mac.com

Other Decks in Technology

Transcript

  1. 政⼤應數。數學軟體應⽤ 蔡炎龍 有記憶的 RNN 政治⼤學應⽤數學系 深度學習入⾨ 05.

  2. 有記憶的 RNN 11.

  3. 數學軟體應⽤ 229 遞歸神經網路 RNN Recurrent Neural Networks 有「記憶」的神經網路

  4. 數學軟體應⽤ 230 RNN 的特⾊ x 1 ̂ y 1 x

    2 ̂ y 2 ⼀般的神經網路⼀筆輸入 和下⼀筆是沒有關係的...
  5. 數學軟體應⽤ 231 RNN 的特⾊ 也就是說輸入的順序變 了, 輸出還是⼀樣的! x 1 ̂

    y 1 x 2 ̂ y 2
  6. 數學軟體應⽤ 232 RNN 的特⾊ RNN 會偷偷把上⼀次的 輸出也當這⼀次的輸入。 也就是 RNN 「記得」前⾯發

    ⽣的事!
  7. 數學軟體應⽤ 233 RNN 的特⾊ 很多⼈畫成這樣, 也就是 前⾯的資訊會傳遞下去。 傳遞的神秘資訊是放在 hidden states

    裡⾯! h i h 1 h 2 h T−1 x 1 x 2 x T ̂ y 1 ̂ y 2 ̂ y T
  8. 數學軟體應⽤ 234 設計遞歸層 RNN 核⼼遞歸層, 我們基本上只要決定... 就這樣神經網 路三⼤架構我 全都會設計了 啊!

    要⽤幾個 RNN 神經元! 這和 DNN 的狀況⼀樣, 實在太簡單了啊!
  9. 數學軟體應⽤ 235 遞歸層原理 x1 t x2 t xn t h1

    t h2 t hk t x t h t 遞歸層 遞歸神經網路的特點是, 遞歸層每個 神經元的輸出我們會收集起, 來成⼀ 個向 , 我們叫 hidden state: ht ht = ht 1 ht 2 ⋮ hk t 這個 hidden state 向 下次會當成 輸入的⼀部份。 h t−1
  10. 數學軟體應⽤ 236 遞歸層原理 ht 1 = σ(w 1 xt 1

    + w 2 xt 2 + w 3 ht−1 1 + w 4 ht−1 2 + b 1 ) 我們⽤有兩個輸入, 兩個 RNN 神經 元的遞歸層來說明。 每⼀次遞歸層輸出的 2 維 hidden state, 下次會再回傳。 計算⽅式可以看出, 基本上就是 4 個輸入的標準全連結神經網路!
  11. 數學軟體應⽤ 237 我們使⽤的符號 符號說明。 wx ij wh ij hi t

    t 時的第 i 個 hidden state 對輸入的權重 對 h i d d e n state 的權重
  12. 數學軟體應⽤ 238 認真看 RNN 神經元就是⼀般的神經元 (只是有兩種輸入) (WX)T = [ wx

    11 wx 21 wx 12 wx 22 ] RNN 層的第 k 號神經元 xt = [ x1 t x2 t ] 「正常」輸入 上次的 hidden states
  13. 數學軟體應⽤ 239 認真看 RNN 神經元就是⼀般的神經元 (WX)T ⋅ x t =

    [ wx 11 x1 t + wx 21 x2 t wx 12 x1 t + wx 22 x2 t ] 同 時 算 了 兩 個神經元的! 1 號 RNN 神經元 ( ) k = 1
  14. 數學軟體應⽤ 240 Hiden States 這邊基本上也是⼀樣的! (WH)T ⋅ h t−1 =

    [ wh 11 h1 t−1 + wh 21 h2 t−1 wh 12 h1 t−1 + wh 22 h2 t−1 ] 同 時 算 了 兩 個神經元的! 1 號 RNN 神經元 ( ) k = 1
  15. 數學軟體應⽤ 241 計算⼀層的「總刺激」 (WX)T ⋅ x t + (WH)T ⋅

    h t−1 + b b = [ b 1 b 2 ] 計算「總刺激」 的部份。 偏值
  16. 數學軟體應⽤ 242 Hidden States 公式完整版 最後美美的公式 (?) 長這樣。 h t

    = σ [(WX)T ⋅ x t + (WH)T ⋅ h t−1 + b]
  17. 數學軟體應⽤ 243 簡化的表⽰ 注意 為了讓⼤家更容易瞭解, 我們會⽤較簡單的圖⽰。請 注意輸入都是個向 、會有權 ; 輸出都是純

    。 實際輸入⻑這樣 x1 t x2 t xn t wx 1k wx 2k wx nk bk σ(wx 1k x1 t + wx 2k x2 t + ⋯ + wx nk xn t + b k )
  18. 數學軟體應⽤ 244 簡化的表⽰ 注意 為了讓⼤家更容易瞭解, 我們會⽤較簡單的圖⽰。請 注意輸入都是個向 、會有權 ; 輸出都是純

    。 x t bk
  19. 數學軟體應⽤ 245 簡化的表⽰ bk h t−1 同理 h 也是這樣

  20. 數學軟體應⽤ 246 簡化的表⽰ 對同⼀層第 k 個 cell, 就⼀個輸出。 輸入通常是向量 h

    t−1 x t 第 k 號 RNN Cell bk hk t hidden state
  21. 數學軟體應⽤ 247 簡化的表⽰ 標準 RNN ⼀個 Cell 的輸出 h t−1

    x t bk hk t hk t = σ [(Wx)Tx t + (Wh)Th t−1 + bk ]
  22. 數學軟體應⽤ 248 簡化的表⽰ 事實上我們以後可能 連 bias 都不畫出來, 但意思還是⼀樣的! h t−1

    x t hk t hk t = σ [(Wx)Tx t + (Wh)Th t−1 + bk ]
  23. 數學軟體應⽤ 249 簡化的表⽰ hk t = σ(x t , h

    t−1 ) 很多⽂章喜歡表⽰成這樣。 h t−1 x t hk t 強調 hiden state 因 決定。 x t , h t−1
  24. 數學軟體應⽤ 250 Hidden states 是 點! 1 2 h2 t−1

    h t = φ(x t , h t−1 ) φ 有時會像這樣整個 RNN 層⼀起輸出。 x t x1 t x2 t x3 t h1 t−1
  25. 數學軟體應⽤ 251 Hidden states 是 點! h t = φ(x

    t , h t−1 ) φ 也就是把⼀個 RNN 層看成這樣輸入、 輸出的函數。 x t x1 t x2 t x3 t h1 t−1 h2 t−1 h t−1 h1 t h2 t h t
  26. 數學軟體應⽤ 252 Hidden states 是 點! ̂ yt = f(x

    t , h t−1 ) x t ̂ y t 甚⾄整個神經網路 ⼀起來! RNN 層
  27. RNN 的罩⾨ 12.

  28. 數學軟體應⽤ 254 RNN 的兩⼤罩⾨ 梯度消失 (或梯度爆炸) 遞迴計算

  29. 數學軟體應⽤ 255 RNN 的訓練 BPTT RNN 的訓練有個很炫的名 字, 叫 backpropagation

    through time (BPTT), 其 實和⼀般神經網路的訓練 沒有什麼不同!
  30. 數學軟體應⽤ 256 RNN 的訓練 BPTT x 3 x 4 x

    5 ̂ y 3 x m x 2 x 1 ̂ y 1 ̂ y 2 ̂ y 4 ̂ y 5 ̂ y m 我們假設我們的 RNN 函數學習機有個參數叫 , 記得每個時間 點都有這個參數在。雖然是同⼀個參數, 但依時間不同叫 。 w wt w1 w2 w3 w4 w5 wm
  31. 數學軟體應⽤ 257 RNN 的訓練 BPTT 訓練的時間我們先把整個過程看成⼀個很深的神經網路, 把每個 時間點的 看成不同的參數去調整。每⼀個參數要調多少再平 均,

    就得到 要調整的⼤⼩。 wt w w1 w2 w3 w4 w5 wm x 3 x 4 x 5 ̂ y 3 x m x 2 x 1 ̂ y 1 ̂ y 2 ̂ y 4 ̂ y 5 ̂ y m
  32. 數學軟體應⽤ 258 RNN 訓練上的問題 w1 w2 w3 w4 w5 wm

    backpropagation RNN ⾃然變成「很深的神經網路」成為⼀個訓練上的問題! ∂L ∂wm ∂w6 ∂w5 ∂w5 ∂w4 ∂w4 ∂w3 ∂w3 ∂w2 ∂w2 ∂w1 × × × × × × x 3 x 4 x 5 ̂ y 3 x m x 2 x 1 ̂ y 1 ̂ y 2 ̂ y 4 ̂ y 5 ̂ y m
  33. 數學軟體應⽤ 259 RNN 訓練上的問題 w1 w2 w3 w4 w5 wm

    backpropagation 在做 backpropagation 時, 還沒乘到最前⾯, 往往就變成 0 了! 這個問題叫梯度消失 (vanishing gradient)! ∂L ∂wm ∂w6 ∂w5 ∂w5 ∂w4 ∂w4 ∂w3 ∂w3 ∂w2 ∂w2 ∂w1 × × × × × × 0.3 0.2 0.6 0.4 0.1 0.2 x 3 x 4 x 5 ̂ y 3 x m x 2 x 1 ̂ y 1 ̂ y 2 ̂ y 4 ̂ y 5 ̂ y m
  34. 救了 RNN 的兩⼤天王 13.

  35. 數學軟體應⽤ 261 現在⼤家說到 RNN, 通常是指... LSTM GRU Long Short Term

    Memory Gated Recurrent Unit
  36. 數學軟體應⽤ 262 LSTM Long Short Term Memory RNN 系的王牌救援

  37. 數學軟體應⽤ 263 LSTM 特點是多了 cell state 編號 k 的
 LSTM

    多⼀個「cell 狀態」 h t−1 x t hk t Ck t 下次會當「⾃⼰ cell」 的輸入再傳進來。
  38. 數學軟體應⽤ 264 Gate 控制閥 要概念!

  39. 數學軟體應⽤ 265 Gate 只是⼀個控制閥 輸出 0 到 1 間的⼀個數 sigmoid

    h t−1 x t bk hk t 只是決定「閥」 要開多⼤!
  40. 數學軟體應⽤ 266 LSTM ⼀共有 三個 gates!

  41. 數學軟體應⽤ 267 LSTM 的三個 Gates 忘記⾨ h t−1 x t

    fk t 輸入⾨ h t−1 x t 輸出⾨ h t−1 x t ik t ok t 就好像三個在 LSTM cell 裡的⼩神經元。
  42. 數學軟體應⽤ 268 插播 tanh sigmoid

  43. 數學軟體應⽤ 269 Hyperbolic Tangent -1 1

  44. 數學軟體應⽤ 270 Sigmoid Function 0 1 σ(x) = 1 1

    + e−x
  45. 數學軟體應⽤ 271 LSTM 再⼀次 編號 k 的
 LSTM 多出來的 cell

    state 是屬於這個 cell 的 ⼀個 cell 的 output 還是會和 同⼀層分享 h t−1 x t hk t Ck t
  46. 數學軟體應⽤ 272 LSTM 準備要更新的部份 (如⼀般 RNN) 「新的」準備要更新的 h t−1 x

    t ˜ C k t
  47. 數學軟體應⽤ 273 真正 cell state, hidden state 的更新 Ck t

    = fk t Ck t−1 + ik t ˜ C k t 先更新 cell state。 再計算 hidden state。 hk t = ok t tanh(Ck t )
  48. 數學軟體應⽤ 274 真要弄得那麼 複雜!? 要忘多少和要 記多少難道不 能⼀起...

  49. 數學軟體應⽤ 275 GRU Gated Recurrent Unit LSTM 的簡化版

  50. 數學軟體應⽤ 276 只留兩個 Gates 雖然名稱有 gated

  51. 數學軟體應⽤ 277 GRU 的兩個 Gates 記憶⾨ h t−1 x t

    zk t 設⾨ h t−1 x t rk t
  52. 數學軟體應⽤ 278 GRU 準備要更新的部份 (如⼀般 RNN) input 可不考慮從前 rk t

    ⋅ h t−1 x t ˜ hk t
  53. 數學軟體應⽤ 279 GRU 真正計算 hidden state 的⽅式 hk t =

    zk t hk t−1 + (1 − zk t )˜ hk t
  54. 數學軟體應⽤ 280 說⽤ RNN, 其實是⽤ LSTM/GRU 現在說到 RNN, 其實包括原始 RNN,

    LSTM, GRU 等各種變形。 特別要叫原始的 RNN, 我們習慣叫 它 Vanilla RNN, 在 TensorFlow 中是 SimpleRNN。
  55. 數學軟體應⽤ 281 為什麼 LSTM/GRU 可以救 RNN? LSTM 有效的原因是如 ResNet 有那種

    bypass 的味道...
  56. 數學軟體應⽤ 282 為什麼 LSTM/GRU 可以救 RNN? 複習⼀下我們影片中 介紹過的 ResNet。

  57. 數學軟體應⽤ 283 為什麼 LSTM/GRU 可以救 RNN? ℱ(x) x +

  58. 數學軟體應⽤ 284 為什麼 LSTM/GRU 可以救 RNN? 這意思是本來某⼀層的輸出是 ℱ(x) 現在變成 ℋ(x)

    = x + ℱ(x)
  59. 數學軟體應⽤ 285 為什麼 LSTM/GRU 可以救 RNN? 這意思是本來某⼀層的輸出是 ℱ(x) 現在變成 ℋ(x)

    = x + ℱ(x) 之前學到的 還沒學到的
  60. 數學軟體應⽤ 286 為什麼 LSTM/GRU 可以救 RNN? ℱ(x) = ℋ(x) −

    x 已經學到的 ⽬標
  61. 數學軟體應⽤ 287 為什麼 LSTM/GRU 可以救 RNN? Li,H., Xu, Z., Taylor,

    G., Studer C., Goldstein T. (NeuraIPS 2018). Visualizing the Loss Landscape of Neural Nets. . without skip with skip
  62. RNN 的應⽤⽅式 14.

  63. 數學軟體應⽤ 289 要應⽤: 對話機器⼈ ሣ࿩ػثਓ 目前的字 下一個字 f ( )

    = RNN 最 要的應⽤之⼀, ⼤概 就是可以⽤⾃然語⾔交談的對 話機器⼈。 我們前⾯有說過, 函數學習機 就是要⽤前⼀個字 (詞), 去預 測下⼀個字 (詞)。
  64. 數學軟體應⽤ 290 要應⽤: 對話機器⼈ f ⽬前的字 下⼀個字 上次遞歸層輸出 的 hidden

    state f(w t−1 ) = w t
  65. 數學軟體應⽤ 291 要應⽤: 對話機器⼈ f(w t−T , w t−T+1 ,

    …, w t−1 ) = w t 因為 RNN 的特性, 事實上是這樣子的: 於是現在很喜歡把它叫做 「自迴歸」 (autoregression) 的語言模型。
  66. 數學軟體應⽤ 292 要應⽤: 對話機器⼈ P(x i ∣ w t−T ,

    w t−T+1 , …, w t−1 ) 當然, 因為基本上最後我們都是用 softmax 等方式 去預測每個字的機率, 所以大家更愛寫成這樣的 model 是在逼近這個機率分布。 其中 是我們字庫裡的 第 i 個字。 x i
  67. 數學軟體應⽤ 293 要應⽤: 對話機器⼈ 字1 字2 回1 EOS 回1 回2

    回k EOS 相信⼤家還記得, 對話機器⼈的原理。 h 1 h 2 h T s 1 s 2 s k−1
  68. 數學軟體應⽤ 294 其實對話機器⼈模式可以做更多! 輸入不⼀定要⽂字, 是影片 (⼀張⼀張的圖) 也是可以 的! 輸出還是可以為⽂字, 最常⾒的⼤概是讓電腦說

    影片中發⽣什麼事。
  69. 數學軟體應⽤ 295 其實對話機器⼈模式可以做更多! ⾃動翻譯 ⽣成⽂章 video captioning

  70. 數學軟體應⽤ 296 AI 數學家 Andrej Karpathy ⽣出代數幾何介紹 "Stacks" 的⽂字! http://karpathy.github.io/2015/05/21/rnn-effectiveness/

    電腦覺得 ⾃⼰是個 數學家!
  71. 數學軟體應⽤ 297 AI 莎⼠比亞 電腦覺得⾃⼰ 是莎⼠比亞! 潘達洛斯: 唉,我想他應該過來接近⼀天 當⼩的⼩麥變成從不吃的時候, 誰是他的死亡鏈條和⾂⺠,

    我不應該睡覺。 第⼆位參議員: 他們遠離了我⼼中產⽣的這些苦難, 當我滅亡的時候,我應該埋葬和堅強 許多國家的地球和思想。
  72. 數學軟體應⽤ 298 直接⽣中⽂不⾏嗎? 《紅樓夢》⽣成器!

  73. 數學軟體應⽤ 299 RNN 預測全壘打數 我想知道某位 MLB 選⼿新的球季可以 打幾隻全壘打?

  74. 數學軟體應⽤ 300 RNN 預測全壘打數 f 第 t-1 年資料
 
 第

    t 年全壘打數 [Age, G, PA, AB, R, H, 2B, 3B, HR, RBI, SB, BB, SO, OPS+, TB] 輸入有 15 個 features: 輸出是分五個區間: 0-9, 10-19, 20-29, 30-39, 40+
  75. 數學軟體應⽤ 301 RNN 預測全壘打數 1 3 2 4 5 10-19

    0 1 0 0 0 ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ 0-9 10-19 20-29 30-39 40+ 輸出⼀樣做 one- hot encoding。
  76. 數學軟體應⽤ 302 RNN 預測全壘打數 f 輸入 15 維向量, 輸出 5

    維向量 (區間)。 一層 LSTM 隱藏層。 輸出層做 softmax。 訓練時每次用 10 年資料。 神經網路函數學習機的設計:
  77. 數學軟體應⽤ 303 RNN 預測全壘打數 Mike Trout (LAA) 預測 30-39 實際

    33 Mookie Betts (BOS) 預測 20-29 實際 24 Jose Altuve (HOU) 預測 20-29 實際 24 Kris Bryant (CHC) 預測 30-39 (第二高 20-29) 實際 29 Daniel Murphy (WSH) 預測 20-29 實際 23 Corey Seager (LAD) 預測 20-29 實際 22 2017 預測結果 (2017 年 6 月預測)
  78. 數學軟體應⽤ 304 RNN 基本運⽤型式 One-to-Many 例子 ⽣成⽂章

  79. 數學軟體應⽤ 305 RNN 基本運⽤型式 Many-to-One 例子 情意分析

  80. 數學軟體應⽤ 306 RNN 基本運⽤型式 Many-to-Many 例子 對話機器⼈

  81. 數學軟體應⽤ 307 RNN 基本運⽤型式 Many-to-Many 例子 Slot Filling

  82. 數學軟體應⽤ 308 Bidirectional RNN 某些應⽤領域上 (如語⾳ 辨識、影片摘要),我們 希望考慮前後資訊時,就 會⽤到雙向的 RNN

    (bidirectional RNN)!
  83. 數學軟體應⽤ 309 Bidirectional RNN 我們有個「正常方向」的 RNN = 1 = 2

    = − 1 = 1 2 −1
  84. 數學軟體應⽤ 310 Bidirectional RNN = 1 = 2 = −

    1 = 1 2 −1 1 2 −1 反向也做個 RNN
  85. 數學軟體應⽤ 311 Bidirectional RNN 下一層可以合併, 也可 以做其他處理。