淺談
REINFORCEMENT
LEARNING
(上)
OROZCO HSU
2019-11-28
1
課程說明
• REINFORCEMENT LEARNING (上)
– 介紹原理與應用
– 討論 Q-Function/ Q-Value 與 Policy
• REINFORCEMENT LEARNING (中)
– 利用 CNN 自動抓取特徵值
– 透過 DQN 逼進最佳決策
• REINFORCEMENT LEARNING (下)
– 以監督式學習模型為基礎,搭配 DQN 進行最佳
Action 值
2
大綱
• Reinforcement Learning 介紹與應用
• Q-learning
• Deep Q-Network (淺談)
3
下載練習檔
• 下載
– https://github.com/orozcohsu/2019-ntunhs-rl-01.git
4
REINFORCEMENT LEARNING
介紹與應用
5
REINFORCEMENT LEARNING
• 強化學習 (RL)
– 關注的是做出好決策
• 監督式學習和非監督式學習
– 關注的是做出預測
6
REINFORCEMENT LEARNING
• 監督式學習(supervised learning)
– 是由人給定標記好的資料,讓機器學習正確答案並作為推論根據。
這種學習方法是立基於人的標記,資料標記過程需要花費大量時間
與資源,機器只能根據已標記的特徵來學習,完成指定的任務,如
語音轉文字、分類圖像、物件辨識等
• 強化學習(Reinforced Learning)
– 透過獎勵與懲罰的機制,讓機器在虛擬情境中不斷試錯(trial and
error),累積經驗來學習。這種學習方式在競技比賽裡表現良好、
甚至能勝過人類,但學習效率極低
– 舉例來說,人類在15分鐘內能領略的任一款Atari遊戲,機器卻平均
要花83小時才能學會,在臉書研發的虛擬圍棋遊戲ELF OpenGo中,
更要用2000個GPU訓練14天,更別提要訓練200年才學得會的星海爭
霸遊戲(StarCraft)
7
REINFORCEMENT LEARNING
• 三位大神的加持
– Hinton、Bengio、LeCun 在Nature上發表的 Deep
Learning 綜述一文最後也將 Deep Reinforcement
Learning 作為未來 Deep Learning 的發展方向
– AlphaGo 横空出世,將進一步推動 Deep Reinforcement
Learning 的發展
8
REINFORCEMENT LEARNING
9
Agent 的目標是藉由與 Environment 不斷互動及獲得 Reward,學會最佳
Policy,即是 Agent 根據身處的 State 決定進行最佳 Action 的策略
REINFORCEMENT LEARNING
• 知道了整個過程,任務的目標就出來了,那就是要能得到盡可能多
的Reward
• 獲取Reward就是一個量化的標準,Reward越多,就表示執行的越好
• 每個時間片段,Agent都是根據當前個觀察來確定下一步的動作
• 觀察 Observation的集合就作為Agent的所處的State
10
REINFORCEMENT LEARNING
• 狀態State和動作Action存在映射關係,也就是一個State可以對應
一個Action,或者對應不同動作的機率
• 機率最高的就是最值得執行的動作
• 而狀態State到動作Action的過程就稱為一個策略Policy
11
OPENAI GYM
• 特斯拉CEO埃隆·馬斯克(Elon Musk)和創業孵化器Y Combinator總
裁山姆·奧特曼(Sam Altman)創建了人工智慧公司OpenAI,並表示
將開源其研究成果分享給研究人工智慧的每一個人
• 是一家非盈利性人工智慧研究公司,我們都在致力於進行非監督式
學習和強化學習的研究。我們的使命和長期目標是以將最大限度地
造福全人類的方式發展人工智慧
• 將如何讓AI研究者更容易地設計、疊代、優化他們下一代的應用程式
12
OPENAI GYM
• 人們可以將他們在這些環境中的訓練結果發布到OpenAI網站上並分享
他們的代碼
• 這個網站的目的是讓人們能簡單地疊代並優化他們的RL算法,並對什
麼算法才是有效的算法有一個概念
• 小作品
– https://www.facebook.com/orozco.hsu/videos/10156372337251631/?t=1
13
Multi-Agent Hide and Seek
https://www.youtube.com/watch?v=kopoLzvh5jY
其他模擬環境
• MuJoCo
– http://mujoco.org/
14
其他模擬環境
• Rllab
– https://github.com/rll/rllab
15
其他模擬環境
• DeepMind Lab
– https://deepmind.com/research/publications/deepmind-lab
16
其他模擬環境
• TORCS
– https://sourceforge.net/projects/torcs/
17
其他模擬環境
• PySC2
– https://github.com/deepmind/pysc2
18
應用
• 用於業務管理問題,例如以利潤最高為考量,如何決定一家商店應
該持有多少庫存商品?
– 搭配既有的預測模型,進行自變數的值該多少?
• 機器人控制問題上(Robot Process Automation),這個領域最近有了
非常快速的發展
19
玩遊戲
• 由DeepMind在NIPS 2013提出DQN
– Deep Q-Network 算法
• 將純圖像輸入,透過機器學習來玩遊戲
– https://www.youtube.com/watch?v=V1eYniJ0Rnk
– https://www.youtube.com/watch?v=5GMDbStRgoc
20
延伸閱讀
• Playing Atari with Deep Reinforcement Learning
– https://arxiv.org/abs/1312.5602
• 使用增強式學習法改善一個簡易的臺灣股價指數期貨當沖交易系統
– https://www.csie.ntu.edu.tw/~lyuu/theses/thesis_r96922100.pdf
• AI 交易模型
– https://www.stockfeel.com.tw/ai%E4%BA%A4%E6%98%93%E6%A8
%A1%E5%9E%8B%E2%80%8A-
%E2%80%8A%E5%BC%B7%E5%8C%96%E5%AD%B8%E7%BF%92/
• Python 財務程式分析設計
– https://www.datacamp.com/community/tutorials/finance-python-
trading
21
Q-LEARNING
22
練習環境
• 開啟Anaconda,並且建立python練習環境
• 套件安裝
– python3.7
– numpy
– matplotlib
– gym
• pip install gym
– pyopengl
– jupyter
23
練習環境
• 完成後執行,你可以看到一個簡單的倒立擺動畫,儘
管很快就跑飛了,因為沒有控制演算法
• 這個例子僅僅是為了你檢測下Gym是否安裝成功
• 開啟:
– 北護_gym1.ipynb
24
遊戲說明
• 遊戲: CartPole-v0
• 種類: 經典遊戲
• Obs features:
• Actions:
25
• Episode termination:
• Pole Angle is more than ±12°
• Cart Position is more than ±2.4
(center of the cart reaches the
edge of the display)
• Episode length is greater than
200
遊戲說明
• 遊戲的step函數返回訊息
– Observation 、 Reward 、 Done 、 Info
• Observation: 描述一個環境的狀態
• Reward: 執行行為產生的回報
• Done: 判斷是否到了需要重新定義環境的狀態
• Info: debug用的資訊
• 開啟:
– 北護_gym2.ipynb
26
遊戲說明
• 自建Action參考的Policy
– 如果柱子向左(角度<0),則小車左移保持平衡,否則右移
• 讓 Agent 根據經驗學習
– Q-learning with Q-table
• 開啟:
– 北護_gym3.ipynb
• 作業:
– 請參考完成一個程式畫出滑車如何利用Q-Table來保持平衡
– 作業名稱: 北護_RL_homework1.ipynb
27
Q-LEARNING WITH Q-TABLE
• 為了學習在某個State之下做出好的Action我們定義所謂的Q-function
– 表示: Q(s,a)
• 根據身處的State,進行Action,預期未來會得到的總Reward
– 求出最佳Q-function => Q*(s, a)
• Agent 在任何State 之下,只要挑選能最大化未來總Reward的Action,
即能在任務中獲得最大 Reward
• 找到最佳的Q-function 的過程正是 Q-learning
28
Q-LEARNING WITH Q-TABLE
• 學習Q-function前,要先知道如何表示Q-function,不難發現Q-
function 有遞迴特質,可以用遞迴表示:
• 即是當前Reward和進入下一個State後所能獲得最大 Discount Reward
– max_a’ Q(s’, a’) 的和
• 這邊的 γ 稱為Discount Factor,可以說是對未來Reward的重視程度
– γ越低,表示Agent 覺得未來獲得的Reward太遙遠,不足以在當前State
的決策過程中佔有太大份量,也越重視當前所獲得的Reward
29
Q-LEARNING WITH Q-TABLE
• 接著Agent要藉由一次次跟Environment 互動中獲得的Reward來學
習Q-function
• 起初Agent一無所知時,Q-function 的參數都是隨機的
• 接著從跟Environment互動的每一步,慢慢更新參數,逼近我們要
的最佳Q-function
30
Q-LEARNING WITH Q-TABLE
• 上述公式中Learned value是每次Action 帶來的新資訊
• 不建議直接取代舊資訊,而是每次更新α這麼多比率的新資訊,
保留(1-α)比率的舊資訊,最終逐漸收斂
31
Q-LEARNING WITH Q-TABLE
• ε-greedy是一種在 Exploration 和 Exploitation 間取得平衡的方法
• Exploration是讓Agent大膽嘗試不同Action,確保能夠吸收新知
• Exploitation是讓Agent保守沿用現有Policy,讓學習過程收斂
• 方法很簡單:
– ε 是隨機選擇Action的機率,所以平均上有 ε 機率的時間 Agent會嘗試
新Action
– (1 - ε)機率的時間Agent會根據現有Policy 做決策
• 我們的目標是學習到最佳Q-function,過程中以ε-greedy方法與
Environment 互動,從中獲得Reward以更新Q-table裡的Q-value
32
參考: https://zh.wikipedia.org/wiki/%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95
Q-LEARNING WITH Q-TABLE
• 將每個State-Action pair的Q-value存在table裡,直接查找或更新,即
是所謂Q-table
• 不過這個方法的壞處是table大小有限,不適用於State和Action過多的
任務
• Q-table就是一個以State和Action儲存Q-value表格,不過在State和
Action有限且不過多的情況下,這個表格才有可能被建立
– 例如 CartPole 問題中State只有四個 feature,每個的值都在有限範圍內
(或是可以固定在有限範圍),Action更只有兩個值
• 但現實世界中,Q-table又大又複雜,用深度學習網路去逼近
Q-function,即DQN,如此一來就不會有容量限制了
33
Q-LEARNING WITH Q-TABLE
• 如果我們的State來自遊戲畫面,或圍棋棋盤呢?
– 可以選擇根據任務原理,很辛苦又可能徒勞無功的把環境簡化成幾
個有效的 feature 當作State
– 或是選擇用DQN幫我們提取feature並逼近我們要的Q-function
• 深度學習網路就是藉由不斷被餵食 input-output pair 後,最終逼
近 input-output 對應關係的 function
– 即 f(input) = output
– 轉成 policy π(state) = Action 的形式
34
DEEP Q-NETWORK
35
DEEP Q-NETWORK
• 由 Neural Network 取代 Q-table 的
好處是,Neural Network 可以搭配
不同變形,從龐大的State、space
中自動提取特徵
• 經典Atari即是以CNN直接以遊戲畫
面的raw pixel下去訓練
• 這是 Q-table 辦不到的
• 開啟:
– 北護_gym4.ipynb
36
額外參考
37
基本假設條件
• 一開始不知道最優的策略是甚麼,因此往往從隨機的策略開始,使
用隨機的策略進行試驗,就可以得到一系列的狀態、動作、反饋
• 這就是一系列的樣本,RL算法就是需要根據這些樣本來改進策略,
從而使得樣本中的Reward更好
38
基本假設條件
• RL研究建立在經典物理學的範疇上,時間是可以分割成一個一個
時間切片,並且有先後順序:
• RL的世界,輸入與輸出的值都要是確定的
• 例如: 有一個機械手臂練習丟骰子,以擲出6點作為目標。但無論
機械手臂如何調整其關節的角度及扭矩,擲出的點數永遠都是隨機
的
39
馬可夫性質
• 維基百科
– 當一個隨機過程在給定現在狀態及所有過去狀態情況下,其未來狀態
的條件機率分布僅依賴於當前狀態;換句話說,在給定現在狀態時,
它與過去狀態(即該過程的歷史路徑)是條件獨立的,那麼此隨機過
程即具有馬可夫性質。具有馬可夫性質的過程通常稱之為馬可夫過程
• Agent是因為環境的變化,進而做出選擇,且儘可能地讓選擇的價值
最大,而非去預測環境會怎麼變化
– 玩牌時不會預測得到什麼牌,而是針對拿到的牌決定出牌策略
40
馬可夫決策過程
MARKOV DECISION PROCESS
• 馬可夫決策過程與狀態、動作有關
• 如果狀態與動作是有限的,那就稱為有限馬可夫決策過程 (finite
MDP)
– 給定一組MDP,我們就可以預測下一組動作 (根據當前的狀態和轉
移到的機率)
– 透過迭代,最終可以預測出所有可能的未來
– 也稱為 State-Action pair
41
馬可夫決策過程
MARKOV DECISION PROCESS
• 在一個狀態s下所採取的動作a,並且會得到下一個狀態s’與回饋r
• 我們如果知道了轉移機率P,也就是我們稱為的模型,有了模型
就可以預測了,R是回饋,λ是discount factor折扣因子,一般小於
1,所以當下的回饋比較重要,隨時間越久,越不重要
42
Gt:總獎勵(R1+R2+….RT,T=最終時間步驟)
價值函數
VALUE FUNCTION
• 實際上,除非整個過程結束,否則我們無法獲取所有回饋組合,
來計算每個狀態的回饋
• 因此,引入一個概念,價值函數Value Function,用來表示一
個狀態未來的潛在價值
• 狀態價值函數
43
vπ(s) 表示在狀態 s 底下的策略 π 所表示出的狀態(狀態價值函數),我們從狀態 s
依據策略 π 進行決策所會獲得的價值的期望E
價值函數
VALUE FUNCTION
• 動作價值函數
• 價值函數 vπ(s) 我們將 Gt 進行展開,展開到最後
44
優化價值函數
OPTIMAL VALUE FUNCTIONS
• 強化學習問題的本質在於決定出一個最好的策略
而價值函數定義出了策略的價值,因此我們可以有許多策略
• 假設我們有兩個策略 π、π’,如果 vπ(s) ≥ vπ′(s) 我們可以說策略 π
是最好的
• 在每個狀態下我們可以說至少有一個策略 π 的價值 >= 其他的策
略,表示為 π∗
45
優化價值函數
OPTIMAL VALUE FUNCTIONS
• 每個狀態底下都會有一個最佳的動作存在,表示為 v∗
• 也有最佳的動作價值函數,q∗
• 狀態動作對(State-Action pair)來說,要表示出在狀態 s 底下選擇 a
的期望回報,我們可以將 q∗ 由 v∗ 表示出來
46
優化價值函數
OPTIMAL VALUE FUNCTIONS
• 再次說明,狀態價值函數是State對應多種Action的Reward的期望
值。動作價值函數是執行完Action之後得到的Reward
• 以上表示,表明value function是可以通過迭代進行計算的
47
MULTI-ARM BANDITS
• 今天你有一千個硬幣可以去一間店玩拉霸機,假設你已經玩到
500次了,那麼接下來,你該如何選擇動作?
48
MULTI-ARM BANDITS
• 貪婪行為 (Greedy action)
– 繼續選擇獎勵最大的那次動作
– 稱之為 Exploiting(利用)
• 如果不是貪婪行為
– 稱之為 Exploring(探索)
• 透過Exploiting,我們可以保證這一次的動作獎勵是最大的,但長
遠來看,我們可以會因為沒有探索而失去得到更好獎勵的機會
49
策略POLICY
• 訓練的過程中,我們必須要決定出一個機率,讓他決定何時該
Exploiting,何時該Exploring
• 在一般的情況下,我們總是選擇目前已知會得到最大回報的貪婪
行為,但每隔一段時間,就會選擇該去進行其他未知的動作
• 我們用 ε 來表示機率,稱之為:ε-greedy
ε 越大,就表示進行Exploring的次數可能越多
50
策略POLICY
51
策略POLICY
• 引出價值函數,對於獲取最優的策略Policy這個目標,有3種常用
的方法
– 值接優化策略,使得回饋更高
– 通過估計value function來間接獲得優化策略。例如: 既然我知道每一
種狀態的優劣,那們我就知道應該怎麼選擇了,而這種選擇就是我
們想要的策略
– 融合上述兩種,稱為Actor-Critic算法
• DQN就是基於value function的算法
52
策略POLICY
• 能計算動作價值函數是不夠的,因為我們需要的是最優策略,求
解最優策略等於就是求解最優的value function
– Policy-Based
– Model-Based
• 一個就是值接計算策略函數,一個是估計模型,也就是計算出狀
態轉移函數,從而整各MDP過成得解
53
策略POLICY
• 動態規劃(DP)指的是給出一組完美的環境模型後可以算出優化策
略的方法
• 動態規劃將問題分為好幾個子問題,並將他儲存成方案
• 動態規劃因為受限於需要模型所以實務上比較難用
54
策略POLICY
• Policy Iteration一般分成兩個步驟
– Policy Evaluation 策略評估,目的是更新value function,也就是基於
當前策略的價值進行更好的估計
– Policy Improvement 策略改進,使用 greedy policy 產生新的樣本用於
第一步的策略評估
55
TEMPORAL-DIFFERENCE LEARNING
• TD-learning 結合了動態規劃以及蒙特卡羅兩者的優點
• 動態規劃(DP)的很大缺點就是必須要有模型(model-based),但蒙
特卡羅以及TD-learning則不需要,也就是說這兩者都是model-free
的模型
• Monte Carlo Learning
– 適用於情境(episodes)方面的學習
– 從經驗中學習,不需要知道模型為何
56
蒙特卡羅的策略函數是由每次結束(episodes)狀態所獲得的獎勵來更新的,透過不斷的修正,最終可以使策略函數越來越準確
TEMPORAL-DIFFERENCE LEARNING
• TD-learning可以算是蒙特卡羅的強化版
• 蒙特卡羅每次更新時必須要等到一個episodes的結束,所以相對
的效率會較差,而TD-learning則不需要
•
特色就是在每一次狀態結束時就立即更新策略
57
ON-POLICY及OFF-POLICY
• On-policy意即從同一策略的經驗中學來並改進
• Off-policy則是從其他地方學習來,就像真的在學習一樣
• Sarsa
– On-policy的學習方法,我們必須要能夠對當前的 s 以及 a 進行估計,
也就是得到動作價值函數 qπ(s,a)
58
ON-POLICY及OFF-POLICY
• Q-Learning是一種Off-policy的學習方法
• off-policy的優點就在於,可以重複利用舊有的策略,來不停的試
驗
• 差異在於Q-Learning直接計算所有並貪婪的選擇最大的動作價值
函數 Q
59
Q-LEARNING
• 要確定如何存儲Q值,最簡單的想法就是用矩陣
• 一個State、一個Action對應一個Q值
• Q值想像為一個很大的表格
60
Q-LEARNING
• Step 1:初始化Q矩陣,預設為0
• Step 2:開始學習,根據當前Q矩陣及 方法獲取
Action
• 比如當前處在狀態s1,那麼在s1欄位中,每一個Q值都是0,這
個時候怎麼選擇都可以
61
Q-LEARNING
• 假設我們選擇a2動作,然後得到的Reward是1,並且進入到s3狀態,
接下來我們就要根據以下公式計算
• 假設計算結果是1,於是更新Q值
• 計算結果如下
62
Q-LEARNING
• Step 3:繼續進入下一次動作,這次的狀態s3,假設選擇動作a3,
然後得到1的Reward,狀態變成s1,那麼我們同樣進行更新
• 於是Q table就變成
63
Q-LEARNING
• 反覆上述作法,Q值在試驗的同時返覆更新,直到收斂
• 接下来,我們將Q-Learning拓展到DQN
• 現實生活中有很多狀態,因此使用表格(Q-Table)來表示Q(s,a) 幾
乎是不可行的,因為狀態實在太多,表格根本存不下,因此稱為
維度災難
64
維度災難
• 輸入原始圖像數據 (210X160)
• 輸出幾個按鍵動作
• 電腦玩Atari遊戲,這種情況下,有多少種狀態?
• 如果每一秒鐘的狀態都不一樣,那們每一個像素有256種選擇,狀
態共有:
• 因此我們要對狀態維度進行壓縮,也就是找出價直函數近似值
– Value Function Approximation
65
價值函數近似值
VALUE FUNCTION APPROXIMATION
• 就是用一個函數來表示Q(s,a)
• f可以是任意類型的函數,比如線性函數,
66
價值函數近似值
VALUE FUNCTION APPROXIMATION
• 通過函數表示,我們就可以不管State到底是多大的維度,反正最
後都通過矩陣運算降維輸出:
• 近似的原因是我們並不知道Q的得實際分佈情況:
67
用 來統一表示函數 f 的參數
價值函數近似值
VALUE FUNCTION APPROXIMATION
• 對於Atari遊戲而言,這是一個高維狀態輸入(原始圖像),低維度動
作輸出
• 輸出的值,就是每一個動作的Q值,也就是輸出一個向量:
• 輸出是一個值,只不過是包含了所有動作的Q值之向量:
• 因此,只要輸入狀態s,而且還同時可以得到所有的動作Q值,這也
將更方便進行Q-Learning中動作的選擇與Q值得更新
68
Q值、深度學習網路化
• 我們用一個深度學習網路表示這個函數f
• 以DQN為例,輸入是經過處理的4個連續的84x84圖像,然後經過兩
個卷積層,兩個全連接層,最後輸出包含每一個動作Q值的向量
• 深度學習網路表示Q值非常簡單,Q值也就是變成用Q網路(Q-
Network)
69
DQN 演算法
• 使用深度學習網路的目地是讓損失函數最小化,也就是標籤和網
路輸出的偏差
• 目標是讓損失函數最小化,我們需要有標籤的樣本
• 通過反向傳播,使用梯度下降的方法來更新深度學習網路的參數
70
DQN 演算法
• Q-Learning算法當中,Q值的更新依靠是利用Reward和Q計算
出來的目標Q值
• 因此將目標Q值作為標籤
– 目標就是讓Q值趨進於目標Q值
– 訓練的損失函數就是
71
DQN 演算法
72

Reinforcement-Learning