$30 off During Our Annual Pro Sale. View Details »

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

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

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

[email protected]
PRO

April 25, 2022
Tweet

Other Decks in Technology

Transcript

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

    View Slide

  2. 有記憶的 RNN
    11.

    View Slide

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

    View Slide

  4. 數學軟體應⽤ 230
    RNN 的特⾊
    x
    1
    ̂
    y
    1
    x
    2
    ̂
    y
    2
    ⼀般的神經網路⼀筆輸入
    和下⼀筆是沒有關係的...

    View Slide

  5. 數學軟體應⽤ 231
    RNN 的特⾊
    也就是說輸入的順序變
    了, 輸出還是⼀樣的!
    x
    1
    ̂
    y
    1
    x
    2
    ̂
    y
    2

    View Slide

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

    View Slide

  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

    View Slide

  8. 數學軟體應⽤ 234
    設計遞歸層
    RNN 核⼼遞歸層, 我們基本上只要決定...
    就這樣神經網
    路三⼤架構我
    全都會設計了
    啊!
    要⽤幾個 RNN 神經元!
    這和 DNN 的狀況⼀樣, 實在太簡單了啊!

    View Slide

  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

    View Slide

  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
    個輸入的標準全連結神經網路!

    View Slide

  11. 數學軟體應⽤ 237
    我們使⽤的符號
    符號說明。
    wx
    ij
    wh
    ij
    hi
    t t 時的第 i 個
    hidden state
    對輸入的權重
    對 h i d d e n
    state 的權重

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  15. 數學軟體應⽤ 241
    計算⼀層的「總刺激」
    (WX)T ⋅ x
    t
    + (WH)T ⋅ h
    t−1
    + b
    b =
    [
    b
    1
    b
    2
    ]
    計算「總刺激」
    的部份。
    偏值

    View Slide

  16. 數學軟體應⽤ 242
    Hidden States 公式完整版
    最後美美的公式
    (?) 長這樣。
    h
    t
    = σ [(WX)T ⋅ x
    t
    + (WH)T ⋅ h
    t−1
    + b]

    View Slide

  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
    )

    View Slide

  18. 數學軟體應⽤ 244
    簡化的表⽰
    注意 為了讓⼤家更容易瞭解, 我們會⽤較簡單的圖⽰。請
    注意輸入都是個向 、會有權 ; 輸出都是純 。
    x
    t
    bk

    View Slide

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

    View Slide

  20. 數學軟體應⽤ 246
    簡化的表⽰
    對同⼀層第 k 個 cell,
    就⼀個輸出。
    輸入通常是向量
    h
    t−1
    x
    t
    第 k 號 RNN Cell
    bk
    hk
    t
    hidden state

    View Slide

  21. 數學軟體應⽤ 247
    簡化的表⽰
    標準 RNN ⼀個
    Cell 的輸出
    h
    t−1
    x
    t
    bk
    hk
    t
    hk
    t
    = σ [(Wx)Tx
    t
    + (Wh)Th
    t−1
    + bk
    ]

    View Slide

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

    View Slide

  23. 數學軟體應⽤ 249
    簡化的表⽰
    hk
    t
    = σ(x
    t
    , h
    t−1
    )
    很多⽂章喜歡表⽰成這樣。
    h
    t−1
    x
    t
    hk
    t
    強調 hiden state
    因 決定。
    x
    t
    , h
    t−1

    View Slide

  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

    View Slide

  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

    View Slide

  26. 數學軟體應⽤ 252
    Hidden states 是 點!
    ̂
    yt = f(x
    t
    , h
    t−1
    )
    x
    t
    ̂
    y
    t
    甚⾄整個神經網路
    ⼀起來!
    RNN 層

    View Slide

  27. RNN 的罩⾨
    12.

    View Slide

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

    View Slide

  29. 數學軟體應⽤ 255
    RNN 的訓練 BPTT
    RNN 的訓練有個很炫的名
    字, 叫 backpropagation
    through time (BPTT), 其
    實和⼀般神經網路的訓練
    沒有什麼不同!

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  34. 救了 RNN 的兩⼤天王
    13.

    View Slide

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

    View Slide

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

    View Slide

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

    LSTM
    多⼀個「cell 狀態」
    h
    t−1
    x
    t
    hk
    t
    Ck
    t
    下次會當「⾃⼰ cell」
    的輸入再傳進來。

    View Slide

  38. 數學軟體應⽤ 264
    Gate
    控制閥
    要概念!

    View Slide

  39. 數學軟體應⽤ 265
    Gate 只是⼀個控制閥
    輸出 0 到 1 間的⼀個數
    sigmoid
    h
    t−1
    x
    t
    bk
    hk
    t
    只是決定「閥」
    要開多⼤!

    View Slide

  40. 數學軟體應⽤ 266
    LSTM ⼀共有
    三個 gates!

    View Slide

  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 裡的⼩神經元。

    View Slide

  42. 數學軟體應⽤ 268
    插播
    tanh
    sigmoid

    View Slide

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

    View Slide

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

    View Slide

  45. 數學軟體應⽤ 271
    LSTM 再⼀次
    編號 k 的

    LSTM
    多出來的 cell state
    是屬於這個 cell 的
    ⼀個 cell 的
    output 還是會和
    同⼀層分享
    h
    t−1
    x
    t
    hk
    t
    Ck
    t

    View Slide

  46. 數學軟體應⽤ 272
    LSTM 準備要更新的部份 (如⼀般 RNN)
    「新的」準備要更新的
    h
    t−1
    x
    t
    ˜
    C k
    t

    View Slide

  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
    )

    View Slide

  48. 數學軟體應⽤ 274
    真要弄得那麼
    複雜!?
    要忘多少和要
    記多少難道不
    能⼀起...

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  53. 數學軟體應⽤ 279
    GRU 真正計算 hidden state 的⽅式
    hk
    t
    = zk
    t
    hk
    t−1
    + (1 − zk
    t

    hk
    t

    View Slide

  54. 數學軟體應⽤ 280
    說⽤ RNN, 其實是⽤ LSTM/GRU
    現在說到 RNN, 其實包括原始
    RNN, LSTM, GRU 等各種變形。
    特別要叫原始的 RNN, 我們習慣叫
    它 Vanilla RNN, 在 TensorFlow
    中是 SimpleRNN。

    View Slide

  55. 數學軟體應⽤ 281
    為什麼 LSTM/GRU 可以救 RNN?
    LSTM 有效的原因是如 ResNet
    有那種 bypass 的味道...

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  60. 數學軟體應⽤ 286
    為什麼 LSTM/GRU 可以救 RNN?
    ℱ(x) = ℋ(x) − x
    已經學到的
    ⽬標

    View Slide

  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

    View Slide

  62. RNN 的應⽤⽅式
    14.

    View Slide

  63. 數學軟體應⽤ 289
    要應⽤: 對話機器⼈
    ሣ࿩ػثਓ
    目前的字 下一個字
    f ( ) =
    RNN 最 要的應⽤之⼀, ⼤概
    就是可以⽤⾃然語⾔交談的對
    話機器⼈。
    我們前⾯有說過, 函數學習機
    就是要⽤前⼀個字 (詞), 去預
    測下⼀個字 (詞)。

    View Slide

  64. 數學軟體應⽤ 290
    要應⽤: 對話機器⼈
    f
    ⽬前的字 下⼀個字
    上次遞歸層輸出
    的 hidden state
    f(w
    t−1
    ) = w
    t

    View Slide

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

    View Slide

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

    View Slide

  67. 數學軟體應⽤ 293
    要應⽤: 對話機器⼈
    字1
    字2
    回1
    EOS 回1
    回2
    回k
    EOS
    相信⼤家還記得, 對話機器⼈的原理。
    h
    1
    h
    2
    h
    T
    s
    1
    s
    2
    s
    k−1

    View Slide

  68. 數學軟體應⽤ 294
    其實對話機器⼈模式可以做更多!
    輸入不⼀定要⽂字, 是影片
    (⼀張⼀張的圖) 也是可以
    的! 輸出還是可以為⽂字,
    最常⾒的⼤概是讓電腦說
    影片中發⽣什麼事。

    View Slide

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

    View Slide

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

    View Slide

  71. 數學軟體應⽤ 297
    AI 莎⼠比亞
    電腦覺得⾃⼰
    是莎⼠比亞!
    潘達洛斯:
    唉,我想他應該過來接近⼀天
    當⼩的⼩麥變成從不吃的時候,
    誰是他的死亡鏈條和⾂⺠,
    我不應該睡覺。
    第⼆位參議員:
    他們遠離了我⼼中產⽣的這些苦難,
    當我滅亡的時候,我應該埋葬和堅強
    許多國家的地球和思想。

    View Slide

  72. 數學軟體應⽤ 298
    直接⽣中⽂不⾏嗎?
    《紅樓夢》⽣成器!

    View Slide

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

    View Slide

  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+

    View Slide

  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。

    View Slide

  76. 數學軟體應⽤ 302
    RNN 預測全壘打數
    f
    輸入 15 維向量, 輸出 5 維向量 (區間)。
    一層 LSTM 隱藏層。
    輸出層做 softmax。
    訓練時每次用 10 年資料。
    神經網路函數學習機的設計:

    View Slide

  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 月預測)

    View Slide

  78. 數學軟體應⽤ 304
    RNN 基本運⽤型式
    One-to-Many
    例子 ⽣成⽂章

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  84. 數學軟體應⽤ 310
    Bidirectional RNN
    = 1 = 2 = − 1 =
    1 2 −1
    1 2 −1
    反向也做個 RNN

    View Slide

  85. 數學軟體應⽤ 311
    Bidirectional RNN
    下一層可以合併, 也可
    以做其他處理。

    View Slide