由于Alpha Go的成功,強化學習始終是人們談論的焦點。現在Thomas Simonini在國外blog網站上發布了系列強化學習教程,以下是本系列的第一篇,簡單介紹了強化學習的基本概念。
An introduction to Reinforcement Learning
我們基于TensorFlow制作了一門深度強化學習的視頻課程【1】,主要介紹了如何使用TensorFlow實現強化學習問題求解。
強化學習是機器學習的一種重要分支,通過“agent ”學習的方式,得出在當前環境下所應該采取的動作,并觀察得到的結果。
最近幾年,我們見證了了許多研究領域的巨大進展,例如包括2014年的“DeepMind and the Deep Q learning architecture”【2】,2016年的“beating the champion of the game of Go with AlphaGo”【3】,2017年的“OpenAI and the PPO”【4】
在這個系列文章中,我們將關注于深度學習問題中各類不同的求解方法。包括Q-learning,DeepQ-learning,策略梯度,ActorCritic,以及PPO。
在第一篇文章中,你將會學到:
強化學習是什么,為什么說“獎勵”是最重要的思想。
強化學習的三個方法。
深度強化學習中的“深度”是什么意思?
在進入深度學習實現的主題之前,一定要把這些元素弄清楚。
強化學習背后的思想是,代理(agent)將通過與環境(environment)的動作(action)交互,進而獲得獎勵(reward)。
從與環境的交互中進行學習,這一思想來自于我們的自然經驗,想象一下當你是個孩子的時候,看到一團火,并嘗試接觸它。
火很溫暖,你感覺很開心(獎勵+1)。你就會覺得火是個好東西。
可一旦你嘗試去觸摸它。哎呦!火把你的手燒傷了(懲罰-1).你才明白只有與火保持一定距離,才會產生溫暖,才是個好東西,但如果太過靠近的話,就會燒傷自己。
這一過程是人類通過交互進行學習的方式。強化學習是一種可以根據行為進行計算的學習方法。
強化學習的過程
舉個例子,思考如何訓練agent 學會玩超級瑪麗游戲。這一強化學習過程可以被建模為如下的一組循環過程。
agent從環境中接收到狀態S0。(此案例中,這句話意思是從超級瑪麗游戲中得到的第一幀信息)
基于狀態S0,agent執行A0操作。(右移)
環境轉移至新狀態S1。(新一幀)
環境給予R1獎勵。(沒死:+1)
強化學習循環輸出狀態、行為、獎勵的序列。整體的目標是最大化全局reward的期望。
獎勵假設是核心思想
在強化學習中,為了得到最好的行為序列,我們需要最大化累積reward期望。
每個時間步的累積reward可以寫作:
等價于:
然而,在現實世界中,我們不能僅僅加入獎勵。這種獎勵來的太快,且發生的概率非常大,因此比起長期獎勵來說,更容易預測。
另一個例子中,agent 是老鼠,對手是貓,目標是在被貓吃掉之前,先吃掉最多的奶酪。
從圖中可以看到,吃掉身邊的奶酪要比吃掉貓旁邊的奶酪,要容易許多。
由于一旦被貓抓住,游戲即將結束,因此,貓身邊的奶酪獎勵會有衰減。
我們對折扣的處理如下所示(定義gamma為衰減比例,在0-1之間):
Gamma越大,衰減越小。這意味著agent 的學習過程更關注于長期的回報。
另一方面,更小的gamma,會帶來更大的衰減。這意味著我們的agent 關心于短期的回報。
衰減后的累計獎勵期望為:
每個時間步間的獎勵將與gamma參數相乘,獲得衰減后的獎勵值。隨著時間步驟的增加,貓距離我們更近,因此為未來的獎勵概率將變得越來越小。
事件型或者持續型任務
任務是強化學習問題中的基礎單元,我們可以有兩類任務:事件型與持續型。
事件型任務
在這一情況中,我們有一個起始點和終止點(終止狀態)。這會創建一個事件:一組狀態、行為、獎勵以及新獎勵。
對于超級瑪麗的情況來說,一個事件從游戲開始進行記錄,直到角色被殺結束。
持續型任務
持續型任務意味著任務不存在終止狀態。在這一案例中,agent 將學習如何選擇最好的動作,并與環境同步交互。
例如,通過agent 進行自動股票交易。在這個任務中,并不存在起始點和終止狀態,直到我們主動終止之前,agent 將一直運行下去。
蒙特卡洛與時間差分學習方法
接下來將學習兩種方法:
蒙特卡洛方法:在事件結束后收集獎勵,進而計算未來獎勵的最大期望。
時間差分學習:在每一個時間步進行估計計算。
蒙特卡洛方法
當時間結束時(agent 達到“終止狀態”),agent 將看到全部累積獎勵,進而計算它將如何去做。在蒙特卡洛方法中,獎勵只會在游戲結束時進行收集。
從一個新游戲開始,agent 將會隨著迭代的進行,完成更好的決策。
舉例如下:
如果我們在如上環境中:
總是從相同位置開始
當被貓抓到或者移動超過20步時,事件終止。
在事件的結尾,我們得到一組狀態、行為、獎勵以及新狀態。
agent 將對整體獎勵Gt求和。
基于上面的公式對V(st)求和
根據更新的認知開始新的游戲
隨著執行的事件越來越多,agent 學習的結果將越來越好。
時間查分學習:每步更新
對于時序差分學習,不需要等到每個事件終止便可以根據未來獎勵的最大期望估計進行更新。
這種方法叫做TD(0)或者單步TD方法(在每個步驟間隔進行值函數更新)。
TD方法在每一步進行值函數評估更新。在t+1時,立刻觀察到獎勵Rt+1,并得到當前的評估值V(st+1)。
TD的目標是得到評估值,并根據單步的估計值完成前一個估計值V(st)更新。
探索/開發間的平衡
在繼續了解其他細節之前,我們必須介紹一個非常重要的主題:探索與開發之間的平衡。
探索是為了發現環境的更多信息
開發是為了根據已知信息去最大化獎勵值。
記住,我們agent 的目標是為了最大化累積獎勵的期望,然而,我們可能陷入到一個常見的陷阱中。
在游戲中,老鼠可以獲得無限的小奶酪(1次獲得1個),但在迷宮的上部,有一個超大的奶酪包裹(1次可獲得1000個)。
然而,如果我們只關注于獎勵,agent 將永遠無法達到奶酪包裹處。并且,它將會僅去探索最近的獎勵來源,即使這個獎勵特別小(開發,exploitation)。
但如果agent 進行一點小小的探索工作,就有可能獲得更大的獎勵。
這就是探索與開發的平衡問題。我們必須定義出一個規則,幫助agent 去解決這個平衡。我們將在未來文章中通過不同策略去解決這一問題。
強化學習的三種方法
現在我們定義了強化學習的主要元素,接下來將介紹三種解決強化學習問題的方法,包括基于值的方法、基于策略的方法與基于模型的方法。
基于值的方法
在基于值的強化學習方法中,目標是優化值函數V(s)。
值函數的作用是,告訴我們在每個狀態下,未來最大化的獎勵期望。
值是每個狀態條件下,從當前開始,在未來所能取得的最大總回報的值。
agent 將使用值函數去在每一步選擇采用哪個狀態。
在迷宮問題中,在每一步將選擇最大值:-7,-6,-5等等。
基于策略的方法
在基于策略的強化學習方法中,我們希望能直接優化策略函數π(s)。
策略的定義是,在給定時間的agent 行為。
通過學習到策略函數,可以讓我們對每個狀態映射出最好的相關動作。
兩種策略:
確定策略:在給定狀態下總是返回相同動作。
隨機策略:輸出一個動作的概率分布。
如同我們看到的,策略直接指出了每一步的最優行為。
基于模型的方法
在基于模型的強化學習中,我們對環境建模,這意味著我們創造了環境的模型。
問題是,每種行為都需要不同的模型表示,這就是為什么在接下來的文章中并沒有提及此類方法的原因。
深度強化學習的介紹
深度強化學習采用深度神經網絡以解決強化學習問題。
在例子中,在下一篇文章我們將采用Q-learning與深度Q-learning。
你將會看到顯著地不同,在第一種方法中,我們將使用一個傳統算法那去創建Q值表,以幫助我們找到每種狀態下應采用的行為。第二種方法中,我們將使用神經網絡(得到某狀態下的近似獎勵:Q值)。
這篇文章里有很多信息,在繼續進行之前,一定要真正掌握住基礎知識。
重點:這篇文章是這一免費的強化學習博文專欄的第一部分。關于更多的資源,見此鏈接【5】.
下一次我們將基于Q-learning訓練agent 去玩FrozenLake游戲。
-
深度學習
+關注
關注
73文章
5510瀏覽量
121347 -
強化學習
+關注
關注
4文章
268瀏覽量
11274 -
tensorflow
+關注
關注
13文章
329瀏覽量
60565
原文標題:【干貨】強化學習介紹
文章出處:【微信號:AItists,微信公眾號:人工智能學家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論