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

【深度學習】08 強化學習

【深度學習】08 強化學習

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

4615930de72ec08f99d3227761ace0d8?s=128

yenlung@mac.com
PRO

May 30, 2022
Tweet

More Decks by yenlung@mac.com

Other Decks in Technology

Transcript

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

  2. RL 強化學習 23.

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

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

    Deep Q- Learning ” “ Human-level Control Through Deep Reinforcement learning 2015 年 Nature 出現⼀篇
  5. 數學軟體應⽤ 522 要實例: AI 玩電動 AI 勝過⼈類 (超過 50%) 電腦好會玩!

  6. 數學軟體應⽤ 523 要實例: AlphaGo AlphaGo 的故事 2017 年台灣⼈⼯智慧年會
 AlphaGo 創始⼈之⼀黃⼠傑博⼠演講

    博⼠班時期開發 Erica, 拿到電腦圍棋世界冠軍!
  7. 數學軟體應⽤ 524 要實例: AlphaGo AlphaGo Lee AlphaGo Master AlphaGo Zero

    中國烏鎮 圍棋會 4:1 擊敗世界 棋王李世乭 神秘⾼⼿網 路 60 連勝 與柯潔對奕, ⼈⼯智慧與 完全⾃學的 ⼈⼯智慧, 擊 2016.3 2016.12.29 ―2017.1.4 2017.5 2017.10
  8. 數學軟體應⽤ 525 強化學習基本架構 Agent (電腦) 環境 動作 action 獎勵 reward

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

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

    or 狀態 S t policy function 前⾯說過, 這函 數可能很難準 備訓練資料! 動作 a t 不動 or
  11. 數學軟體應⽤ 528 Value Based 2 Value Based Q 評分 +

    動作 (通常估計 reward) Value function 真的學成了, 我們 也可會知道最好 的動作是什麼!
  12. 數學軟體應⽤ 529 Value Based π(S) = arg max a Q(S,

    a) 就是把所有的動作 都帶入 函數, 看 哪個最⾼分! Q 左 假設某個狀態下的 Q 值 右 停 3.2 8 4
  13. 數學軟體應⽤ 530 Deep Q-Learning Q θ 深度強化學習最常⾒的 Deep Q-Learing, 就是⽤神經網路把

    函數學起來! Q S t a t Q 值
  14. 數學軟體應⽤ 531 Deep Q-Learning 大問題 訓練資料怎麼來?

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

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

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

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

  20. 數學軟體應⽤ 537 Q 函數 π(S) = arg maxa Q(S, a)

    記得 Q 函數找到了,我們在每個狀態都很 容易可以決定最好的動作!
  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
  22. 深度學習原理與實務 539 接著我們的⼯作就是 ⼀直玩⼀直玩, 然後不 斷更新 Q matrix。

  23. 數學軟體應⽤ 540 Q Matrix Q(St , at ) = r(St

    , at ) + γ max a Q(St+1 , a) Q 的更新公式, γ 是我們⾃⼰設的, 這裡設為 0.8。
  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
  25. 數學軟體應⽤ 542 Greedy Policy 不要忘了我們動作都是依 Q 來選的。 π(S) = arg

    maxa Q(S, a) 現在⼤家都是 0, 為何你 會選到 5? 問題1 Greedy Policy
  26. 數學軟體應⽤ 543 Greedy Policy 還沒訓練好, 會不會都傾 向往同⼀個、可能不是 最好的⽅向走? 問題2

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

  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
  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
  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
  31. 數學軟體應⽤ 548 Q 最終版 1 2 3 4 5 0

    500 100 400 500 320 320 320 400 400 400 400 320 256 每次往 Q 值最⼤的⽅向走
  32. 數學軟體應⽤ 549 Deep Q-Learning 簡單的說, 就是我們會讓電腦⾃⼰去玩, 然 後部份的情況我們知道 值是多少。(雖 然開始玩得很差,

    這 值可能很沒⽤) 然後⽤這些知道的 值當訓練資料, 完整 的 函數⽤深度學習的⽅式學起來! Q Q Q Q 簡單的說就是⾃⼰⽣訓練資 料⾃⼰學, 所以應該叫 self- supervised learning! LeCun
  33. 數學軟體應⽤ 550 玩了以後就有⼀些訓練資料 Q θ [(S 1 , a 1

    ), Q 1 ], [(S 2 , a 2 ), Q 2 ], … 雖然⼤部份的情況 我們都沒碰過, 不 過就⽤⼀個神經網 路把它學起來!
  34. 數學軟體應⽤ 551 訓練資料的 Q 值 認真想想, 訓練資 料的 Q 值不太好

    算... Q(S t , a t ) = r t + r t+1 + ⋯ + r T 常常寫成 G t 缺點是要完整的 episode (完整玩⼀次的過程) 蒙地卡羅 Monte-Carlo (MC) 法
  35. 數學軟體應⽤ 552 訓練資料的 Q 值 我們常常會乘上⼀ 個 discount 。 γ

    Q(S t , a t ) = r t + γ ⋅ r t+1 + ⋯ + γT−t ⋅ r T 這樣不管在級數的收斂啦, 對 未來比較沒有那麼確定的狀況 啦等等, 都考 進去。 蒙地卡羅 Monte-Carlo (MC) 法
  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) 法
  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
  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
  39. 數學軟體應⽤ 556 仔細想想, 這是「⾃⼰學⾃⼰」的過程 為了⽅便, 我們把上次 參數的狀態叫 , 現在 正要更新的叫

    。 θ− θ Q θ Q θ− 舊版 更新版
  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 間的⼀個數。 γ
  41. 數學軟體應⽤ 558 仔細想想, 這是「⾃⼰學⾃⼰」的過程 Q θ 有這些訓練資料, 我 們就可以好好去訓練 我們的神經網路了!

    做 gradient descent 時就是 ⽤舊版 ⽣出的訓練資料! Q
  42. 數學軟體應⽤ 559 Greedy Policy π(S) = arg max a Q(S,

    a) 當 函數學成時, 我們完完全全 讓電腦依 函數決定最好的動 作, 這叫 greedy policy! Q Q 讓電腦去玩, ⽣訓 練資料時其實還 有件事要注意。
  43. 數學軟體應⽤ 560 -Greedy Policy ε 這裡還有個問題... 開始的時候, 電腦要依什麼 規則玩? 不要忘了我們的

    函數還爛得不得了啊... Q
  44. 數學軟體應⽤ 561 -Greedy Policy ε 取⼀個 , 我們每次要做個動作 時, 取⼀個

    0 到 1 間的亂數 。 ε ∈ [0,1] r { r > ε r ≤ ε Greedy Policy (⽤ 函數決定) Q 亂亂玩! 開始的時候 設⼤⼀ 點。 ε
  45. 數學軟體應⽤ 562 我們真的不能直接學 Policy 嗎? 畢竟 Q-Learning 還是有個缺點, 就 是無限多個

    (比如連續的) 動作選擇, 就很難做到。 (注意不是不是 函數本⾝不能訓練, ⽽是很難⽤來選最佳動作。) Q
  46. 數學軟體應⽤ 563 我們真的不能直接學 Policy 嗎? π θ 我不知道任何情況 的正確答案, 但是我

    就是要學這個函數! 左 右 停 糟糕, 好熟悉的句⼦...
  47. 數學軟體應⽤ 564 我們真的不能直接學 Policy 嗎? 想想其實我們⽬標很清楚 (要極⼤化 reward), 是不是可以把我們的⽬標, 放在...

    呃, ⽬標函數? Gradient Policy
  48. 數學軟體應⽤ 565 Gradient Policy π θ 左 右 停 J(θ)

    就是設計個和 π 有關的⽬標函數!
  49. 數學軟體應⽤ 566 Gradient Policy J(θ) = V πθ 簡單啦, 就是最⼤

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

  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 }
  52. 數學軟體應⽤ 569 Gradient Policy R(τ) = T ∑ t=1 r

    t 可是, 這和我們 的 π 無關啊! 我們好像就會算這系列動作的得 分, ⽬標是要最⼤化...
  53. 數學軟體應⽤ 570 Gradient Policy ⼀個想法是, 我們神經網路做得 和真的⼀樣, 那會得這麼多分。 所以得分⾼就越像越好... R(τ)

    ⋅ T ∑ t=1 − log π θ (a t |S t ) 然後就可以做 gradient descent!
  54. 數學軟體應⽤ 571 Gradient Policy 最後我們好幾個實際的 trajectory 就加總。另外就是我 們可以考慮計分更細膩。 R(τ) ⋅

    T ∑ t=1 − log π θ (a t |S t )
  55. 數學軟體應⽤ 572 Actor-Critic 甚⾄再訓練個 value function! T ∑ t=1 −

    Q θ′ (S t , a t )log π θ (a t |S t )
  56. 數學軟體應⽤ 573 總之, 不知道答案我們也可以學! 不管是 Deep Q Learning, 或是 Policy

    Gradient, 我們都是在沒 有⼈為準備訓練資料的情況, 讓電 腦⾃⼰去學習!
  57. 數學軟體應⽤ 574 範例: ETF ⾃動交易系統 陳非霆 卷積深度 Q-學習之 ETF ⾃動交易系統

    Q θ 我也會買賣股票!
  58. 數學軟體應⽤ 575 範例: ETF ⾃動交易系統 選定一支 ETF 開始 20,000 美金

    經過一年 (最後手上還有 ETF 就全賣) 使用 Deep Q-Learning 基本設定
  59. 數學軟體應⽤ 576 範例: ETF ⾃動交易系統 過去 20 天的資料
 (20x6 的矩陣)

    1 2 3 4 5 買 20 單位 買 10 單位 不做交易 賣 10 單位 賣 20 單位 五種 actions 狀態 S t 動作 a t
  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% 交易結果 * 「無腦法」正確的名稱是「買入持有策略」
  61. 數學軟體應⽤ 615 Q & A 有問題嗎?