Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【深度學習】08 強化學習
Search
[email protected]
May 30, 2022
Technology
0
350
【深度學習】08 強化學習
2022 政大應數「數學軟體應用」深度學習課程 08
[email protected]
May 30, 2022
Tweet
Share
More Decks by
[email protected]
See All by
[email protected]
Contrastive Self-Supervised Learning
yenlung
0
420
【深度學習】07 生成模式和 GAN
yenlung
0
370
【深度學習】06 RNN 實務與 Transformers
yenlung
0
320
【深度學習】05 有記憶的神經網路 RNN
yenlung
0
140
【深度學習】04 圖形辨識的天王 CNN
yenlung
0
250
【深度學習】03 神經網路是怎麼學的
yenlung
0
180
【深度學習】02 AI 就是問個好問題
yenlung
0
190
咖啡沖煮簡介
yenlung
0
1.2k
深度學習入門
yenlung
0
380
Other Decks in Technology
See All in Technology
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
スクラム成熟度セルフチェックツールを作って得た学びとその活用法
coincheck_recruit
1
140
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
380
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
300
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
380
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
100
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
750
CysharpのOSS群から見るModern C#の現在地
neuecc
2
3.2k
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
530
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Producing Creativity
orderedlist
PRO
341
39k
Site-Speed That Sticks
csswizardry
0
23
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
For a Future-Friendly Web
brad_frost
175
9.4k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
The World Runs on Bad Software
bkeepers
PRO
65
11k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Transcript
政⼤應數。數學軟體應⽤ 蔡炎龍 強化學習 政治⼤學應⽤數學系 深度學習入⾨ 08.
RL 強化學習 23.
數學軟體應⽤ 520 強化學習 Reinforcement Learning 打造 AlphaGo 的神奇魔法
數學軟體應⽤ 521 要實例: AI 玩電動 為題的論⽂, 基本上就是教電腦玩 Atari 的遊戲。 DeepMind
Deep Q- Learning ” “ Human-level Control Through Deep Reinforcement learning 2015 年 Nature 出現⼀篇
數學軟體應⽤ 522 要實例: AI 玩電動 AI 勝過⼈類 (超過 50%) 電腦好會玩!
數學軟體應⽤ 523 要實例: AlphaGo AlphaGo 的故事 2017 年台灣⼈⼯智慧年會 AlphaGo 創始⼈之⼀黃⼠傑博⼠演講
博⼠班時期開發 Erica, 拿到電腦圍棋世界冠軍!
數學軟體應⽤ 524 要實例: AlphaGo AlphaGo Lee AlphaGo Master AlphaGo Zero
中國烏鎮 圍棋會 4:1 擊敗世界 棋王李世乭 神秘⾼⼿網 路 60 連勝 與柯潔對奕, ⼈⼯智慧與 完全⾃學的 ⼈⼯智慧, 擊 2016.3 2016.12.29 ―2017.1.4 2017.5 2017.10
數學軟體應⽤ 525 強化學習基本架構 Agent (電腦) 環境 動作 action 獎勵 reward
r t
數學軟體應⽤ 526 要學哪個函數呢? 我們以玩打磚塊為例 有幾個不 同想法!
數學軟體應⽤ 527 Policy Based π 左 1 Policy Based 右
or 狀態 S t policy function 前⾯說過, 這函 數可能很難準 備訓練資料! 動作 a t 不動 or
數學軟體應⽤ 528 Value Based 2 Value Based Q 評分 +
動作 (通常估計 reward) Value function 真的學成了, 我們 也可會知道最好 的動作是什麼!
數學軟體應⽤ 529 Value Based π(S) = arg max a Q(S,
a) 就是把所有的動作 都帶入 函數, 看 哪個最⾼分! Q 左 假設某個狀態下的 Q 值 右 停 3.2 8 4
數學軟體應⽤ 530 Deep Q-Learning Q θ 深度強化學習最常⾒的 Deep Q-Learing, 就是⽤神經網路把
函數學起來! Q S t a t Q 值
數學軟體應⽤ 531 Deep Q-Learning 大問題 訓練資料怎麼來?
深度學習原理與實務 532 A Painless Q-Learning Tutorial http://mnemstudio.org/path- finding-q-learning-tutorial.htm ⽬標就是要從某間房 間逃脫到外⾯。
數學軟體應⽤ 533 Reward 設計 1 2 3 4 5 0
100 100 100 0 0 0 0 0 0 0 0 0 0
數學軟體應⽤ 534 Reward 設計 r(St , at ) 我們需要指定 狀態
動作
數學軟體應⽤ 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
數學軟體應⽤ 536 Q 函數 我們想要找到估計某個 state, 做了 某個動作,最後 reward 會是多少。
數學軟體應⽤ 537 Q 函數 π(S) = arg maxa Q(S, a)
記得 Q 函數找到了,我們在每個狀態都很 容易可以決定最好的動作!
數學軟體應⽤ 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
深度學習原理與實務 539 接著我們的⼯作就是 ⼀直玩⼀直玩, 然後不 斷更新 Q matrix。
數學軟體應⽤ 540 Q Matrix Q(St , at ) = r(St
, at ) + γ max a Q(St+1 , a) Q 的更新公式, γ 是我們⾃⼰設的, 這裡設為 0.8。
數學軟體應⽤ 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
數學軟體應⽤ 542 Greedy Policy 不要忘了我們動作都是依 Q 來選的。 π(S) = arg
maxa Q(S, a) 現在⼤家都是 0, 為何你 會選到 5? 問題1 Greedy Policy
數學軟體應⽤ 543 Greedy Policy 還沒訓練好, 會不會都傾 向往同⼀個、可能不是 最好的⽅向走? 問題2
數學軟體應⽤ 544 ε-Greedy Policy 有 ε 的機率是⽤亂數選動作。 ε ⼤⼩有時是會調整的 (訓練越久越⼩)。
數學軟體應⽤ 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
數學軟體應⽤ 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
數學軟體應⽤ 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
數學軟體應⽤ 548 Q 最終版 1 2 3 4 5 0
500 100 400 500 320 320 320 400 400 400 400 320 256 每次往 Q 值最⼤的⽅向走
數學軟體應⽤ 549 Deep Q-Learning 簡單的說, 就是我們會讓電腦⾃⼰去玩, 然 後部份的情況我們知道 值是多少。(雖 然開始玩得很差,
這 值可能很沒⽤) 然後⽤這些知道的 值當訓練資料, 完整 的 函數⽤深度學習的⽅式學起來! Q Q Q Q 簡單的說就是⾃⼰⽣訓練資 料⾃⼰學, 所以應該叫 self- supervised learning! LeCun
數學軟體應⽤ 550 玩了以後就有⼀些訓練資料 Q θ [(S 1 , a 1
), Q 1 ], [(S 2 , a 2 ), Q 2 ], … 雖然⼤部份的情況 我們都沒碰過, 不 過就⽤⼀個神經網 路把它學起來!
數學軟體應⽤ 551 訓練資料的 Q 值 認真想想, 訓練資 料的 Q 值不太好
算... Q(S t , a t ) = r t + r t+1 + ⋯ + r T 常常寫成 G t 缺點是要完整的 episode (完整玩⼀次的過程) 蒙地卡羅 Monte-Carlo (MC) 法
數學軟體應⽤ 552 訓練資料的 Q 值 我們常常會乘上⼀ 個 discount 。 γ
Q(S t , a t ) = r t + γ ⋅ r t+1 + ⋯ + γT−t ⋅ r T 這樣不管在級數的收斂啦, 對 未來比較沒有那麼確定的狀況 啦等等, 都考 進去。 蒙地卡羅 Monte-Carlo (MC) 法
數學軟體應⽤ 553 訓練資料的 Q 值 這裡假設我們後 ⾯都⽤「最佳 的」玩。 Q(S t
, a t ) = r t + γ ⋅ max a∈ {Q(S t+1 , a)} 認真想想, 這個時間點的 值, 基本上就是立即得到的 , 加上下⼀次的 值。 t Q r t Q Temporal-Difference (TD) 法
數學軟體應⽤ 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
數學軟體應⽤ 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
數學軟體應⽤ 556 仔細想想, 這是「⾃⼰學⾃⼰」的過程 為了⽅便, 我們把上次 參數的狀態叫 , 現在 正要更新的叫
。 θ− θ Q θ Q θ− 舊版 更新版
數學軟體應⽤ 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 間的⼀個數。 γ
數學軟體應⽤ 558 仔細想想, 這是「⾃⼰學⾃⼰」的過程 Q θ 有這些訓練資料, 我 們就可以好好去訓練 我們的神經網路了!
做 gradient descent 時就是 ⽤舊版 ⽣出的訓練資料! Q
數學軟體應⽤ 559 Greedy Policy π(S) = arg max a Q(S,
a) 當 函數學成時, 我們完完全全 讓電腦依 函數決定最好的動 作, 這叫 greedy policy! Q Q 讓電腦去玩, ⽣訓 練資料時其實還 有件事要注意。
數學軟體應⽤ 560 -Greedy Policy ε 這裡還有個問題... 開始的時候, 電腦要依什麼 規則玩? 不要忘了我們的
函數還爛得不得了啊... Q
數學軟體應⽤ 561 -Greedy Policy ε 取⼀個 , 我們每次要做個動作 時, 取⼀個
0 到 1 間的亂數 。 ε ∈ [0,1] r { r > ε r ≤ ε Greedy Policy (⽤ 函數決定) Q 亂亂玩! 開始的時候 設⼤⼀ 點。 ε
數學軟體應⽤ 562 我們真的不能直接學 Policy 嗎? 畢竟 Q-Learning 還是有個缺點, 就 是無限多個
(比如連續的) 動作選擇, 就很難做到。 (注意不是不是 函數本⾝不能訓練, ⽽是很難⽤來選最佳動作。) Q
數學軟體應⽤ 563 我們真的不能直接學 Policy 嗎? π θ 我不知道任何情況 的正確答案, 但是我
就是要學這個函數! 左 右 停 糟糕, 好熟悉的句⼦...
數學軟體應⽤ 564 我們真的不能直接學 Policy 嗎? 想想其實我們⽬標很清楚 (要極⼤化 reward), 是不是可以把我們的⽬標, 放在...
呃, ⽬標函數? Gradient Policy
數學軟體應⽤ 565 Gradient Policy π θ 左 右 停 J(θ)
就是設計個和 π 有關的⽬標函數!
數學軟體應⽤ 566 Gradient Policy J(θ) = V πθ 簡單啦, 就是最⼤
化我們的 state value!
數學軟體應⽤ 567 Gradient Policy 我不會算啊... J(θ) = V πθ 問題是...
數學軟體應⽤ 568 Gradient Policy 如果說我們有個遊戲的過程片段 trajectory (常常就是⼀個 episode, 但 epsode
⼀般是要完整從頭到尾)。 τ = {S 1 , a 1 , r 1 , S 2 , a 2 , r 2 , …, S T , a T , r T }
數學軟體應⽤ 569 Gradient Policy R(τ) = T ∑ t=1 r
t 可是, 這和我們 的 π 無關啊! 我們好像就會算這系列動作的得 分, ⽬標是要最⼤化...
數學軟體應⽤ 570 Gradient Policy ⼀個想法是, 我們神經網路做得 和真的⼀樣, 那會得這麼多分。 所以得分⾼就越像越好... R(τ)
⋅ T ∑ t=1 − log π θ (a t |S t ) 然後就可以做 gradient descent!
數學軟體應⽤ 571 Gradient Policy 最後我們好幾個實際的 trajectory 就加總。另外就是我 們可以考慮計分更細膩。 R(τ) ⋅
T ∑ t=1 − log π θ (a t |S t )
數學軟體應⽤ 572 Actor-Critic 甚⾄再訓練個 value function! T ∑ t=1 −
Q θ′ (S t , a t )log π θ (a t |S t )
數學軟體應⽤ 573 總之, 不知道答案我們也可以學! 不管是 Deep Q Learning, 或是 Policy
Gradient, 我們都是在沒 有⼈為準備訓練資料的情況, 讓電 腦⾃⼰去學習!
數學軟體應⽤ 574 範例: ETF ⾃動交易系統 陳非霆 卷積深度 Q-學習之 ETF ⾃動交易系統
Q θ 我也會買賣股票!
數學軟體應⽤ 575 範例: ETF ⾃動交易系統 選定一支 ETF 開始 20,000 美金
經過一年 (最後手上還有 ETF 就全賣) 使用 Deep Q-Learning 基本設定
數學軟體應⽤ 576 範例: ETF ⾃動交易系統 過去 20 天的資料 (20x6 的矩陣)
1 2 3 4 5 買 20 單位 買 10 單位 不做交易 賣 10 單位 賣 20 單位 五種 actions 狀態 S t 動作 a t
數學軟體應⽤ 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% 交易結果 * 「無腦法」正確的名稱是「買入持有策略」
數學軟體應⽤ 615 Q & A 有問題嗎?