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
410
【深度學習】07 生成模式和 GAN
yenlung
0
370
【深度學習】06 RNN 實務與 Transformers
yenlung
0
310
【深度學習】05 有記憶的神經網路 RNN
yenlung
0
140
【深度學習】04 圖形辨識的天王 CNN
yenlung
0
240
【深度學習】03 神經網路是怎麼學的
yenlung
0
180
【深度學習】02 AI 就是問個好問題
yenlung
0
180
咖啡沖煮簡介
yenlung
0
1.2k
深度學習入門
yenlung
0
370
Other Decks in Technology
See All in Technology
AWS CodePipelineでコンテナアプリをデプロイした際に、古いイメージを自動で削除する
smt7174
1
100
GitHub Universe: Evaluating RAG apps in GitHub Actions
pamelafox
0
180
ガバメントクラウド単独利用方式におけるIaC活用
techniczna
3
270
チームを主語にしてみる / Making "Team" the Subject
ar_tama
4
310
小規模に始めるデータメッシュとデータガバナンスの実践
kimujun
3
590
【若手エンジニア応援LT会】AWS Security Hubの活用に苦労した話
kazushi_ohata
0
170
わたしとトラックポイント / TrackPoint tips
masahirokawahara
1
240
IaC運用を楽にするためにCDK Pipelinesを導入したけど、思い通りにいかなかった話
smt7174
1
110
APIテスト自動化の勘所
yokawasa
7
4.2k
CAMERA-Suite: 広告文生成のための評価スイート / ai-camera-suite
cyberagentdevelopers
PRO
3
270
LeSSに潜む「隠れWF病」とその処方箋
lycorptech_jp
PRO
2
120
生成AIとAWS CDKで実現! 自社ブログレビューの効率化
ymae
2
330
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
We Have a Design System, Now What?
morganepeng
50
7.2k
What's new in Ruby 2.0
geeforr
342
31k
BBQ
matthewcrist
85
9.3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Practical Orchestrator
shlominoach
186
10k
Embracing the Ebb and Flow
colly
84
4.4k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
7.9k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
The Cult of Friendly URLs
andyhume
78
6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
9
680
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 有問題嗎?