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

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

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

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

[email protected]

April 25, 2022
Tweet

Other Decks in Technology

Transcript

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

    2 ̂ y 2 ⼀般的神經網路⼀筆輸入 和下⼀筆是沒有關係的...
  2. 數學軟體應⽤ 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
  3. 數學軟體應⽤ 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 個輸入的標準全連結神經網路!
  4. 數學軟體應⽤ 237 我們使⽤的符號 符號說明。 wx ij wh ij hi t

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

    11 wx 21 wx 12 wx 22 ] RNN 層的第 k 號神經元 xt = [ x1 t x2 t ] 「正常」輸入 上次的 hidden states
  6. 數學軟體應⽤ 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
  7. 數學軟體應⽤ 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
  8. 數學軟體應⽤ 241 計算⼀層的「總刺激」 (WX)T ⋅ x t + (WH)T ⋅

    h t−1 + b b = [ b 1 b 2 ] 計算「總刺激」 的部份。 偏值
  9. 數學軟體應⽤ 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 )
  10. 數學軟體應⽤ 247 簡化的表⽰ 標準 RNN ⼀個 Cell 的輸出 h t−1

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

    t−1 ) 很多⽂章喜歡表⽰成這樣。 h t−1 x t hk t 強調 hiden state 因 決定。 x t , h t−1
  12. 數學軟體應⽤ 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
  13. 數學軟體應⽤ 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
  14. 數學軟體應⽤ 252 Hidden states 是 點! ̂ yt = f(x

    t , h t−1 ) x t ̂ y t 甚⾄整個神經網路 ⼀起來! RNN 層
  15. 數學軟體應⽤ 255 RNN 的訓練 BPTT RNN 的訓練有個很炫的名 字, 叫 backpropagation

    through time (BPTT), 其 實和⼀般神經網路的訓練 沒有什麼不同!
  16. 數學軟體應⽤ 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
  17. 數學軟體應⽤ 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
  18. 數學軟體應⽤ 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
  19. 數學軟體應⽤ 263 LSTM 特點是多了 cell state 編號 k 的
 LSTM

    多⼀個「cell 狀態」 h t−1 x t hk t Ck t 下次會當「⾃⼰ cell」 的輸入再傳進來。
  20. 數學軟體應⽤ 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 裡的⼩神經元。
  21. 數學軟體應⽤ 271 LSTM 再⼀次 編號 k 的
 LSTM 多出來的 cell

    state 是屬於這個 cell 的 ⼀個 cell 的 output 還是會和 同⼀層分享 h t−1 x t hk t Ck t
  22. 數學軟體應⽤ 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 )
  23. 數學軟體應⽤ 280 說⽤ RNN, 其實是⽤ LSTM/GRU 現在說到 RNN, 其實包括原始 RNN,

    LSTM, GRU 等各種變形。 特別要叫原始的 RNN, 我們習慣叫 它 Vanilla RNN, 在 TensorFlow 中是 SimpleRNN。
  24. 數學軟體應⽤ 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
  25. 數學軟體應⽤ 289 要應⽤: 對話機器⼈ ሣ࿩ػثਓ 目前的字 下一個字 f ( )

    = RNN 最 要的應⽤之⼀, ⼤概 就是可以⽤⾃然語⾔交談的對 話機器⼈。 我們前⾯有說過, 函數學習機 就是要⽤前⼀個字 (詞), 去預 測下⼀個字 (詞)。
  26. 數學軟體應⽤ 291 要應⽤: 對話機器⼈ f(w t−T , w t−T+1 ,

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

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

    回k EOS 相信⼤家還記得, 對話機器⼈的原理。 h 1 h 2 h T s 1 s 2 s k−1
  29. 數學軟體應⽤ 297 AI 莎⼠比亞 電腦覺得⾃⼰ 是莎⼠比亞! 潘達洛斯: 唉,我想他應該過來接近⼀天 當⼩的⼩麥變成從不吃的時候, 誰是他的死亡鏈條和⾂⺠,

    我不應該睡覺。 第⼆位參議員: 他們遠離了我⼼中產⽣的這些苦難, 當我滅亡的時候,我應該埋葬和堅強 許多國家的地球和思想。
  30. 數學軟體應⽤ 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+
  31. 數學軟體應⽤ 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。
  32. 數學軟體應⽤ 302 RNN 預測全壘打數 f 輸入 15 維向量, 輸出 5

    維向量 (區間)。 一層 LSTM 隱藏層。 輸出層做 softmax。 訓練時每次用 10 年資料。 神經網路函數學習機的設計:
  33. 數學軟體應⽤ 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 月預測)
  34. 數學軟體應⽤ 310 Bidirectional RNN = 1 = 2 = −

    1 = 1 2 −1 1 2 −1 反向也做個 RNN