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

【深度學習】08 強化學習

【深度學習】08 強化學習

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

[email protected]

May 30, 2022
Tweet

Other Decks in Technology

Transcript

  1. 政⼤應數。數學軟體應⽤
    蔡炎龍
    強化學習
    政治⼤學應⽤數學系
    深度學習入⾨
    08.

    View full-size slide

  2. RL 強化學習
    23.

    View full-size slide

  3. 數學軟體應⽤ 520
    強化學習 Reinforcement Learning
    打造 AlphaGo 的神奇魔法

    View full-size slide

  4. 數學軟體應⽤ 521
    要實例: AI 玩電動
    為題的論⽂, 基本上就是教電腦玩
    Atari 的遊戲。
    DeepMind
    Deep Q-
    Learning

    “ Human-level Control Through
    Deep Reinforcement learning
    2015 年 Nature 出現⼀篇

    View full-size slide

  5. 數學軟體應⽤ 522
    要實例: AI 玩電動
    AI 勝過⼈類
    (超過 50%)
    電腦好會玩!

    View full-size slide

  6. 數學軟體應⽤ 523
    要實例: AlphaGo
    AlphaGo 的故事
    2017 年台灣⼈⼯智慧年會

    AlphaGo 創始⼈之⼀黃⼠傑博⼠演講
    博⼠班時期開發 Erica,
    拿到電腦圍棋世界冠軍!

    View full-size slide

  7. 數學軟體應⽤ 524
    要實例: AlphaGo
    AlphaGo
    Lee
    AlphaGo
    Master
    AlphaGo
    Zero
    中國烏鎮
    圍棋會
    4:1 擊敗世界
    棋王李世乭
    神秘⾼⼿網
    路 60 連勝
    與柯潔對奕,
    ⼈⼯智慧與
    完全⾃學的
    ⼈⼯智慧, 擊
    2016.3
    2016.12.29
    ―2017.1.4 2017.5 2017.10

    View full-size slide

  8. 數學軟體應⽤ 525
    強化學習基本架構
    Agent
    (電腦)
    環境
    動作 action
    獎勵 reward
    r
    t

    View full-size slide

  9. 數學軟體應⽤ 526
    要學哪個函數呢?
    我們以玩打磚塊為例
    有幾個不
    同想法!

    View full-size slide

  10. 數學軟體應⽤ 527
    Policy Based
    π

    1 Policy Based

    or
    狀態 S
    t
    policy function
    前⾯說過, 這函
    數可能很難準
    備訓練資料!
    動作 a
    t
    不動
    or

    View full-size slide

  11. 數學軟體應⽤ 528
    Value Based
    2 Value Based
    Q 評分
    +
    動作
    (通常估計
    reward)
    Value function
    真的學成了, 我們
    也可會知道最好
    的動作是什麼!

    View full-size slide

  12. 數學軟體應⽤ 529
    Value Based
    π(S) = arg max
    a
    Q(S, a)
    就是把所有的動作
    都帶入 函數, 看
    哪個最⾼分!
    Q

    假設某個狀態下的 Q 值
    右 停
    3.2 8 4

    View full-size slide

  13. 數學軟體應⽤ 530
    Deep Q-Learning
    Q
    θ
    深度強化學習最常⾒的 Deep Q-Learing,
    就是⽤神經網路把 函數學起來!
    Q
    S
    t
    a
    t
    Q 值

    View full-size slide

  14. 數學軟體應⽤ 531
    Deep Q-Learning
    大問題
    訓練資料怎麼來?

    View full-size slide

  15. 深度學習原理與實務 532
    A Painless Q-Learning Tutorial
    http://mnemstudio.org/path-
    finding-q-learning-tutorial.htm
    ⽬標就是要從某間房
    間逃脫到外⾯。

    View full-size slide

  16. 數學軟體應⽤ 533
    Reward 設計
    1
    2 3
    4
    5
    0
    100
    100
    100
    0
    0 0
    0 0
    0
    0
    0
    0
    0

    View full-size slide

  17. 數學軟體應⽤ 534
    Reward 設計
    r(St
    , at
    )
    我們需要指定
    狀態
    動作

    View full-size slide

  18. 數學軟體應⽤ 535
    Reward Matrix
    0 1 2 3 4 5
    0 -1 -1 -1 -1 0 -1
    1 -1 -1 -1 0 -1 100
    2 -1 -1 -1 0 -1 -1
    3 -1 0 0 -1 0 -1
    4 0 -1 -1 0 -1 100
    5 -1 0 -1 -1 0 100
    動作
    State

    View full-size slide

  19. 數學軟體應⽤ 536
    Q 函數
    我們想要找到估計某個 state, 做了
    某個動作,最後 reward 會是多少。

    View full-size slide

  20. 數學軟體應⽤ 537
    Q 函數
    π(S) = arg maxa
    Q(S, a)
    記得 Q 函數找到了,我們在每個狀態都很
    容易可以決定最好的動作!

    View full-size slide

  21. 數學軟體應⽤ 538
    Q Matrix
    0 1 2 3 4 5
    0 0 0 0 0 0 0
    1 0 0 0 0 0 0
    2 0 0 0 0 0 0
    3 0 0 0 0 0 0
    4 0 0 0 0 0 0
    5 0 0 0 0 0 0
    動作
    State
    狀況沒幾個, 很容易⽤矩陣表⽰, ⼀開始全設為 0

    View full-size slide

  22. 深度學習原理與實務 539
    接著我們的⼯作就是
    ⼀直玩⼀直玩, 然後不
    斷更新 Q matrix。

    View full-size slide

  23. 數學軟體應⽤ 540
    Q Matrix
    Q(St
    , at
    ) = r(St
    , at
    ) + γ max
    a
    Q(St+1
    , a)
    Q 的更新公式, γ 是我們⾃⼰設的, 這裡設為 0.8。

    View full-size slide

  24. 數學軟體應⽤ 541
    Q Matrix Episode 1
    0 1 2 3 4 5
    0 0 0 0 0 0 0
    1 0 0 0 0 0 100
    2 0 0 0 0 0 0
    3 0 0 0 0 0 0
    4 0 0 0 0 0 0
    5 0 0 0 0 0 0
    假設從狀態 1 開始, 例如我們選擇動作是往 5 號走。
    1
    3 5
    100
    100
    0
    0 0
    Q(1, 5) = r(1, 5) + γ · max(Q(5, 1), Q(5, 4), Q(5, 5))
    100 0.8 0 0 0

    View full-size slide

  25. 數學軟體應⽤ 542
    Greedy Policy
    不要忘了我們動作都是依 Q 來選的。
    π(S) = arg maxa
    Q(S, a)
    現在⼤家都是 0, 為何你
    會選到 5?
    問題1
    Greedy Policy

    View full-size slide

  26. 數學軟體應⽤ 543
    Greedy Policy
    還沒訓練好, 會不會都傾
    向往同⼀個、可能不是
    最好的⽅向走?
    問題2

    View full-size slide

  27. 數學軟體應⽤ 544
    ε-Greedy Policy
    有 ε 的機率是⽤亂數選動作。
    ε ⼤⼩有時是會調整的
    (訓練越久越⼩)。

    View full-size slide

  28. 數學軟體應⽤ 545
    Q Matrix
    0 1 2 3 4 5
    0 0 0 0 0 0 0
    1 0 0 0 0 0 100
    2 0 0 0 0 0 0
    3 0 80 0 0 0 0
    4 0 0 0 0 0 0
    5 0 0 0 0 0 0
    100
    0
    0
    0
    1
    3
    4
    5
    100
    100
    100
    0
    0 0
    0 0
    0
    假設從狀態 3 開始, 例如我們
    選擇動作是往 1 號走。
    Episode 2

    View full-size slide

  29. 數學軟體應⽤ 546
    Q Matrix
    0 1 2 3 4 5
    0 0 0 0 0 0 0
    1 0 0 0 0 0 100
    2 0 0 0 0 0 0
    3 0 80 0 0 0 0
    4 0 0 0 0 0 0
    5 0 0 0 0 0 0
    0
    1
    3
    4
    5
    100
    100
    100
    0
    0 0
    0 0
    0

    View full-size slide

  30. 數學軟體應⽤ 547
    Q Matrix
    0 1 2 3 4 5
    0 0 0 0 0 400 0
    1 0 0 0 320 0 500
    2 0 0 0 320 0 0
    3 0 400 256 0 400 0
    4 320 0 0 320 0 500
    5 0 400 0 0 400 500
    0
    1
    3
    4
    5
    100
    100
    100
    0
    0 0
    0 0
    0

    View full-size slide

  31. 數學軟體應⽤ 548
    Q 最終版
    1
    2 3
    4
    5
    0
    500
    100
    400
    500
    320
    320
    320
    400
    400
    400
    400
    320
    256
    每次往 Q 值最⼤的⽅向走

    View full-size slide

  32. 數學軟體應⽤ 549
    Deep Q-Learning
    簡單的說, 就是我們會讓電腦⾃⼰去玩, 然
    後部份的情況我們知道 值是多少。(雖
    然開始玩得很差, 這 值可能很沒⽤)
    然後⽤這些知道的 值當訓練資料, 完整
    的 函數⽤深度學習的⽅式學起來!
    Q
    Q
    Q
    Q
    簡單的說就是⾃⼰⽣訓練資
    料⾃⼰學, 所以應該叫 self-
    supervised learning!
    LeCun

    View full-size slide

  33. 數學軟體應⽤ 550
    玩了以後就有⼀些訓練資料
    Q
    θ
    [(S
    1
    , a
    1
    ), Q
    1
    ], [(S
    2
    , a
    2
    ), Q
    2
    ], …
    雖然⼤部份的情況
    我們都沒碰過, 不
    過就⽤⼀個神經網
    路把它學起來!

    View full-size slide

  34. 數學軟體應⽤ 551
    訓練資料的 Q 值
    認真想想, 訓練資
    料的 Q 值不太好
    算...
    Q(S
    t
    , a
    t
    ) = r
    t
    + r
    t+1
    + ⋯ + r
    T
    常常寫成 G
    t
    缺點是要完整的 episode
    (完整玩⼀次的過程)
    蒙地卡羅 Monte-Carlo (MC) 法

    View full-size slide

  35. 數學軟體應⽤ 552
    訓練資料的 Q 值
    我們常常會乘上⼀
    個 discount 。
    γ
    Q(S
    t
    , a
    t
    ) = r
    t
    + γ ⋅ r
    t+1
    + ⋯ + γT−t ⋅ r
    T
    這樣不管在級數的收斂啦, 對
    未來比較沒有那麼確定的狀況
    啦等等, 都考 進去。
    蒙地卡羅 Monte-Carlo (MC) 法

    View full-size slide

  36. 數學軟體應⽤ 553
    訓練資料的 Q 值
    這裡假設我們後
    ⾯都⽤「最佳
    的」玩。
    Q(S
    t
    , a
    t
    ) = r
    t
    + γ ⋅ max
    a∈
    {Q(S
    t+1
    , a)}
    認真想想, 這個時間點的
    值, 基本上就是立即得到的 ,
    加上下⼀次的 值。
    t Q
    r
    t
    Q
    Temporal-Difference (TD) 法

    View full-size slide

  37. 數學軟體應⽤ 554
    訓練資料的 Q 值
    (S
    t
    , a
    t
    , r
    t
    , S
    t+1
    )
    於是我們可以做
    Exprience Replay。
    Q(S
    t
    , a
    t
    ) = r
    t
    + γ ⋅ max
    a∈
    {Q(S
    t+1
    , a)}
    有⼀次我們玩到 的狀態, 做
    了 的動作, 只需要再知道當
    下的 reward , 還有下⼀次的
    狀態 是什麼, 就可以更新
    值!
    S
    t
    a
    t
    r
    t
    S
    t+1
    Q

    View full-size slide

  38. 數學軟體應⽤ 555
    訓練資料的 Q 值
    (S
    t
    , a
    t
    , r
    t
    , S
    t+1
    )
    因此就是讓電腦⼀
    直玩⼀直玩!
    Q(S
    t
    , a
    t
    ) = r
    t
    + γ ⋅ max
    a∈
    {Q(S
    t+1
    , a)}
    我們只要每步都收集到這⼩⼩
    片段, 就可以準備訓練 的資
    料。
    Q

    View full-size slide

  39. 數學軟體應⽤ 556
    仔細想想, 這是「⾃⼰學⾃⼰」的過程
    為了⽅便, 我們把上次
    參數的狀態叫 , 現在
    正要更新的叫 。
    θ−
    θ
    Q
    θ
    Q
    θ−
    舊版 更新版

    View full-size slide

  40. 數學軟體應⽤ 557
    仔細想想, 這是「⾃⼰學⾃⼰」的過程
    有了⼀筆經驗 , 我
    們會有⼀筆訓練資料是這樣...
    (S
    t
    , a
    t
    , r
    t
    , S
    t+1
    )
    Q
    θ−
    (S
    t
    , a
    t
    ) r
    t
    + γ max
    a∈
    (S
    t+1
    , a)
    再⼀次, 值是我們⾃⼰定的 discount, 通常是 0 到 1 間的⼀個數。
    γ

    View full-size slide

  41. 數學軟體應⽤ 558
    仔細想想, 這是「⾃⼰學⾃⼰」的過程
    Q
    θ
    有這些訓練資料, 我
    們就可以好好去訓練
    我們的神經網路了!
    做 gradient descent 時就是
    ⽤舊版 ⽣出的訓練資料!
    Q

    View full-size slide

  42. 數學軟體應⽤ 559
    Greedy Policy
    π(S) = arg max
    a
    Q(S, a)
    當 函數學成時, 我們完完全全
    讓電腦依 函數決定最好的動
    作, 這叫 greedy policy!
    Q
    Q
    讓電腦去玩, ⽣訓
    練資料時其實還
    有件事要注意。

    View full-size slide

  43. 數學軟體應⽤ 560
    -Greedy Policy
    ε
    這裡還有個問題...
    開始的時候, 電腦要依什麼
    規則玩?
    不要忘了我們的 函數還爛得不得了啊...
    Q

    View full-size slide

  44. 數學軟體應⽤ 561
    -Greedy Policy
    ε
    取⼀個 , 我們每次要做個動作
    時, 取⼀個 0 到 1 間的亂數 。
    ε ∈ [0,1]
    r
    {
    r > ε
    r ≤ ε
    Greedy Policy (⽤ 函數決定)
    Q
    亂亂玩!
    開始的時候 設⼤⼀
    點。
    ε

    View full-size slide

  45. 數學軟體應⽤ 562
    我們真的不能直接學 Policy 嗎?
    畢竟 Q-Learning 還是有個缺點, 就
    是無限多個 (比如連續的) 動作選擇,
    就很難做到。
    (注意不是不是 函數本⾝不能訓練,
    ⽽是很難⽤來選最佳動作。)
    Q

    View full-size slide

  46. 數學軟體應⽤ 563
    我們真的不能直接學 Policy 嗎?
    π
    θ
    我不知道任何情況
    的正確答案, 但是我
    就是要學這個函數!



    糟糕, 好熟悉的句⼦...

    View full-size slide

  47. 數學軟體應⽤ 564
    我們真的不能直接學 Policy 嗎?
    想想其實我們⽬標很清楚 (要極⼤化
    reward), 是不是可以把我們的⽬標,
    放在... 呃, ⽬標函數?
    Gradient Policy

    View full-size slide

  48. 數學軟體應⽤ 565
    Gradient Policy
    π
    θ



    J(θ)
    就是設計個和 π
    有關的⽬標函數!

    View full-size slide

  49. 數學軟體應⽤ 566
    Gradient Policy
    J(θ) = V
    πθ
    簡單啦, 就是最⼤
    化我們的 state
    value!

    View full-size slide

  50. 數學軟體應⽤ 567
    Gradient Policy
    我不會算啊...
    J(θ) = V
    πθ
    問題是...

    View full-size slide

  51. 數學軟體應⽤ 568
    Gradient Policy
    如果說我們有個遊戲的過程片段 trajectory (常常就是⼀個
    episode, 但 epsode ⼀般是要完整從頭到尾)。
    τ = {S
    1
    , a
    1
    , r
    1
    , S
    2
    , a
    2
    , r
    2
    , …, S
    T
    , a
    T
    , r
    T
    }

    View full-size slide

  52. 數學軟體應⽤ 569
    Gradient Policy
    R(τ) =
    T

    t=1
    r
    t
    可是, 這和我們
    的 π 無關啊!
    我們好像就會算這系列動作的得
    分, ⽬標是要最⼤化...

    View full-size slide

  53. 數學軟體應⽤ 570
    Gradient Policy
    ⼀個想法是, 我們神經網路做得
    和真的⼀樣, 那會得這麼多分。
    所以得分⾼就越像越好...
    R(τ) ⋅
    T

    t=1
    − log π
    θ
    (a
    t
    |S
    t
    )
    然後就可以做
    gradient descent!

    View full-size slide

  54. 數學軟體應⽤ 571
    Gradient Policy
    最後我們好幾個實際的
    trajectory 就加總。另外就是我
    們可以考慮計分更細膩。
    R(τ) ⋅
    T

    t=1
    − log π
    θ
    (a
    t
    |S
    t
    )

    View full-size slide

  55. 數學軟體應⽤ 572
    Actor-Critic
    甚⾄再訓練個 value function!
    T

    t=1
    − Q
    θ′
    (S
    t
    , a
    t
    )log π
    θ
    (a
    t
    |S
    t
    )

    View full-size slide

  56. 數學軟體應⽤ 573
    總之, 不知道答案我們也可以學!
    不管是 Deep Q Learning, 或是
    Policy Gradient, 我們都是在沒
    有⼈為準備訓練資料的情況, 讓電
    腦⾃⼰去學習!

    View full-size slide

  57. 數學軟體應⽤ 574
    範例: ETF ⾃動交易系統
    陳非霆
    卷積深度 Q-學習之
    ETF ⾃動交易系統
    Q
    θ
    我也會買賣股票!

    View full-size slide

  58. 數學軟體應⽤ 575
    範例: ETF ⾃動交易系統
    選定一支 ETF
    開始 20,000 美金
    經過一年 (最後手上還有 ETF 就全賣)
    使用 Deep Q-Learning
    基本設定

    View full-size slide

  59. 數學軟體應⽤ 576
    範例: ETF ⾃動交易系統
    過去 20 天的資料

    (20x6 的矩陣)
    1
    2
    3
    4
    5
    買 20 單位
    買 10 單位
    不做交易
    賣 10 單位
    賣 20 單位
    五種 actions
    狀態 S
    t 動作 a
    t

    View full-size slide

  60. 數學軟體應⽤ 577
    範例: ETF ⾃動交易系統
    CDQN 無腦法 CDQN 無腦法
    ETF1 17.71% 10.89% ETF11 10.76% 5.26%
    ETF2 16.53% 12.6% ETF12 10.19% 13.17%
    ETF3 16.3% 0.35% ETF13 7.8% 1.42%
    ETF4 14.4% 13.25% ETF14 6.23% 3.56%
    ETF5 14.3% 12.7% ETF15 5.73% 4.61%
    ETF6 13.91% 13.37% ETF16 3.78% -12.76%
    ETF7 13.17% 10.52% ETF17 2.85% 5.83%
    ETF8 12.35% 17.07% ETF18 1.59% -4.45%
    ETF9 11.68% 10.81% ETF19 1.07% -18.09%
    ETF10 11.09% 8.14% ETF20 -0.59% -0.75%
    交易結果
    * 「無腦法」正確的名稱是「買入持有策略」

    View full-size slide

  61. 數學軟體應⽤ 615
    Q & A
    有問題嗎?

    View full-size slide