0
本文作者: AI研習(xí)社-譯站 | 2019-05-17 10:46 |
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :
Reinforcement Learning from scratch
作者 | Emmanuel Ameisen
翻譯 | AI小山 編輯 | 醬番梨、Pita
原文鏈接:
https://blog.insightdatascience.com/reinforcement-learning-from-scratch-819b65f074d8
一部關(guān)于深度DL最著名應(yīng)用之一的紀(jì)錄片
最近,我在北京的O'Reilly AI大會上做了一個(gè)演講,是關(guān)于我們在NLP世界里學(xué)到的一些有趣的經(jīng)驗(yàn)。當(dāng)時(shí),我很幸運(yùn)地參加了Unity Technologies舉辦的關(guān)于“從頭開始深度強(qiáng)化學(xué)習(xí)”的課程。我覺得這個(gè)由Arthur Juliani主講的課程,干貨極多,下面我把主要內(nèi)容分享出來。
在與各公司的交流中,我們發(fā)現(xiàn)有趣的深度RL應(yīng)用、工具和成果在增多。同時(shí),深度RL的運(yùn)作機(jī)制和應(yīng)用,比如上圖所示的AlphaGo,通常深奧而晦澀。在本文中,我將對此領(lǐng)域的各個(gè)核心部分做出一個(gè)任何人都可以讀懂的概述。
很多圖片都是來自那個(gè)演講的幻燈片,也有新的。所有的解釋和觀點(diǎn)都是我自己的。有任何不清楚的,可以通過這里聯(lián)系我。
人們對深度RL領(lǐng)域有著極大的研究興趣,例如學(xué)習(xí)玩Atari游戲,擊敗Dota 2職業(yè)選手,戰(zhàn)勝圍棋冠軍。傳統(tǒng)的深度學(xué)習(xí)側(cè)重于識別(這張圖片里有“停車”標(biāo)志嗎?),與之相反,深度RL增加了影響環(huán)境的動作的維度(目標(biāo)是什么?我如何達(dá)成?)。例如在對話系統(tǒng)中,傳統(tǒng)的深度學(xué)習(xí)關(guān)心的是對給出的問題如何學(xué)到正確的回答。但是,深度強(qiáng)化學(xué)習(xí)則著眼于一系列正確的語句,并從中得到一個(gè)積極的結(jié)果,比如,一個(gè)滿意的客戶。
這使得深度RL對于那些需要計(jì)劃和應(yīng)變的行業(yè),如制造業(yè)或自動駕駛,格外有吸引力。然而,行業(yè)應(yīng)用落后于飛速發(fā)展的技術(shù)研究成果。一個(gè)主要原因是深度RL通常需要一個(gè)代理進(jìn)行無數(shù)次摸索后才能學(xué)到有用的東西。速成的辦法是使用模擬環(huán)境。這個(gè)教程使用Unity來建立一個(gè)訓(xùn)練代理的環(huán)境。
這個(gè)由Arthur Juliani和Leon Chen主持的研習(xí)會,其目標(biāo)是讓每個(gè)一學(xué)員在4小時(shí)內(nèi)成功訓(xùn)練多個(gè)深度DL算法。簡直是天方夜譚!以下是對深度RL主要使用的許多算法的一個(gè)全面總結(jié)。更完整的教程可參見Arthur Juliani寫的8個(gè)部分的系列,通過原文可開始閱讀。
深度RL能用來擊敗人類圍棋頂尖高手。但要想知道如果實(shí)現(xiàn)的,你必須先從簡單問題入手,掌握幾個(gè)基本概念。
1、一切始自老虎機(jī)
作為第一個(gè)游戲問題,我們能不能知道哪個(gè)箱子里最有可能有獎品
假設(shè)每一輪你有4個(gè)箱子可選,每個(gè)箱子都有不同平均回報(bào)。你的目標(biāo)是在給定的輪數(shù)后,拿到的回報(bào)總金額最高。這是一個(gè)經(jīng)典的游戲,名叫“多臂賭博機(jī)”,我們從這個(gè)游戲開始研究。這個(gè)游戲的難點(diǎn)在于平衡探索和獲利,探索讓我們知道哪種情形才是好的,獲利是探索到的知識去選擇最好的老虎機(jī)。
這里,我們要使用一個(gè)值函數(shù)來映射我們的動作與預(yù)期的獎品,這個(gè)函數(shù)叫Q函數(shù)。首先,我們把所有Q值初始化為相等值。然后,我們每做一個(gè)動作(選取一個(gè)箱子),根據(jù)這個(gè)動作導(dǎo)致的回報(bào)的好壞,更新這個(gè)動作對應(yīng)的Q值。這樣,我們就能得到一個(gè)好的值函數(shù)。我們用一個(gè)能學(xué)習(xí)到4個(gè)候選箱子的概率分布(使用softmax)的神經(jīng)網(wǎng)絡(luò)(從一個(gè)非常淺的開始)來逼近Q函數(shù)。
值函數(shù)能讓我們評估我們動作的好壞,而策略決定了我們最終采取哪個(gè)動作。憑直覺,我們會使用能選擇出Q值最高的動作的策略。在實(shí)際應(yīng)用中,這種做法表現(xiàn)很差,因?yàn)樵谖覀兺ㄟ^試錯(cuò)取得足夠經(jīng)驗(yàn)之前,起初所預(yù)估的Q值都是很不靠譜的。這促使我們在策略中加進(jìn)一種機(jī)制,以增加探索的成分。方法之一是使用?貪心算法,它是由隨機(jī)選取一個(gè)具有?概率的動作構(gòu)成。開始時(shí),總是隨機(jī)選擇動作,讓?接近1,然后逐步降低?,并進(jìn)一步了解哪些箱子是好的。最終,我們確定出最好的箱子。
在實(shí)踐中,相比要么選擇一個(gè)我們認(rèn)為最好的動作,要么隨機(jī)選一個(gè)動作,我們應(yīng)該需要一個(gè)更巧妙的辦法。一個(gè)廣泛采用的方法叫Boltzmann Exploration,它是通過加入隨機(jī)因子來調(diào)整基于我們當(dāng)前對于箱子好壞的預(yù)估的概率。
2、增加不同的狀態(tài)
這里,不同的背景顏色代表不同的平均箱內(nèi)獎勵(lì)
前面的例子僅描述了一種情形,即我們總是從面前的4個(gè)箱子中進(jìn)行選取。而在現(xiàn)實(shí)中,是有多種情形的。下面,我們把這種情況加入到我們的環(huán)境中來?,F(xiàn)在,每一輪中,箱子的背景色在3種顏色中交替顯示,表示箱子不同的平均值。這意味著,我們所學(xué)習(xí)的Q函數(shù),不僅取決于動作(我們所選的箱子),還取決于具體狀態(tài)(什么樣的背景色)。這種類型的游戲叫作上下文多臂賭博機(jī)。
很奇怪,我們?nèi)匀荒苡们笆龅姆椒?。只要在神?jīng)網(wǎng)絡(luò)中加多一個(gè)稠密層,用來輸入當(dāng)前狀態(tài)的矢量就行了。
3、了解動作的后續(xù)結(jié)果
這里,我們是藍(lán)色方塊,嘗試學(xué)習(xí)如何到達(dá)綠色方塊,而不碰到紅色方塊
有一個(gè)關(guān)鍵因素使得我們的游戲比大多數(shù)都簡單。在大部分環(huán)境中,比如上面那個(gè)迷宮,我們采取的行動對狀態(tài)世界是有影響的。我們向上移動一格,可能得到獎勵(lì),也可能得不到,但是,下一輪,我們將處于不同的狀態(tài)。這就是為什么我們要引入“計(jì)劃”。
首先,我們把Q函數(shù)定義為我們當(dāng)前狀態(tài)的即時(shí)獎勵(lì),加上我們做完所有動作后所期望的折扣獎勵(lì)。如果我們的Q函數(shù)對狀態(tài)的預(yù)測準(zhǔn)確的話,這種方法是管用的。那么,我們怎樣做出準(zhǔn)確的預(yù)測呢?
我們用一個(gè)叫時(shí)序差分(TD)學(xué)習(xí)的方法來生成一個(gè)好的Q函數(shù)。其要點(diǎn)是只看未來的有限步驟。例如,TD(1)只用后續(xù)的兩個(gè)狀態(tài)來評估獎勵(lì)。
很奇怪,我們可以用TD(0),只看當(dāng)前狀態(tài),預(yù)測下一輪的獎勵(lì),效果很不錯(cuò)。網(wǎng)絡(luò)結(jié)構(gòu)是一樣的,但是我們需要進(jìn)到下一步才能發(fā)現(xiàn)錯(cuò)誤。接著,我們用這個(gè)錯(cuò)誤來反向傳播梯度,就像傳統(tǒng)的深度學(xué)習(xí)那樣,然后更新預(yù)測值。
3+、Monte Carlo介紹
Monte Carlo預(yù)測是另一個(gè)用來預(yù)測我們的動作是否成功的方法。它的原理是用當(dāng)前策略把所有步驟走完(在上圖中,成功到達(dá)綠色方塊或者因碰到紅色方塊而以失敗告終),并用結(jié)果來更新每一個(gè)經(jīng)過的狀態(tài)的預(yù)測值。這樣我們可以在全部步驟完成后一次性傳播預(yù)測值,而不用每步都做。代價(jià)是在預(yù)測值中引入了噪聲,因?yàn)楠剟?lì)的路徑太長。
4、很少離散的世界
前面講的方法都是先把有限數(shù)量的狀態(tài)和行動進(jìn)行映射,然后用神經(jīng)網(wǎng)絡(luò)來逼近預(yù)測值。在那個(gè)迷宮例子中,一共有49個(gè)狀態(tài)(方塊)和4個(gè)行動(相鄰的4個(gè)移動方向)。在本圖的情形中,我們嘗試學(xué)習(xí)如何讓一個(gè)球在一個(gè)二維托盤中保持平衡,每一時(shí)刻我們都要決定托盤是要朝左還是朝右傾斜。這里,狀態(tài)空間變成連續(xù)的了(托盤的角度,球的位置)。好消息是,我們還是可以用神經(jīng)網(wǎng)絡(luò)進(jìn)行函數(shù)逼近!
關(guān)于策略無關(guān)(off-policy)和策略相關(guān)(on-policy)學(xué)習(xí)的提醒:我們先前用的是策略無關(guān)方法,即我們可以用任何方式來生成數(shù)據(jù)(比方說?貪心算法),并從中學(xué)習(xí)。而策略相關(guān)方法,只能從由策略產(chǎn)生的行動中去學(xué)習(xí)(記住,策略是我們用來決定如何行動的方法)。這會限制學(xué)習(xí)過程,因?yàn)椴呗灾斜仨毲度胩剿鞣椒?,但是也使得結(jié)果與推理相關(guān)聯(lián),令學(xué)習(xí)效率更高。
我們要采用的方法叫“策略梯度”,是策略相關(guān)的。先前,我們就每一個(gè)狀態(tài)的每一個(gè)動作學(xué)習(xí)到了值函數(shù)Q,并在此基礎(chǔ)上生成了策略。在香草梯度策略中,我們?nèi)耘f使用Monte Carlo預(yù)測,但是我們使用損失函數(shù)增加選取到能獲獎的行動的概率,然后直接從損失函數(shù)中學(xué)習(xí)策略。因?yàn)槲覀兪且蕾嚥呗詠韺W(xué)習(xí)的,所以不能用類似?貪心算法(其包含隨機(jī)選擇)那樣的方法來使代理探索整個(gè)環(huán)境。我們用來強(qiáng)化探索的方法叫熵正則化,它能增加概率預(yù)測的寬度,從而在探索空間時(shí)采用更冒險(xiǎn)的做法。
4+、利用深度學(xué)習(xí)進(jìn)行表達(dá)
在實(shí)踐中,許多最新型的RL模型要求學(xué)習(xí)一個(gè)策略和若干預(yù)測值。用深度學(xué)習(xí)的方法來實(shí)現(xiàn)的話,是讓兩者成為從同一個(gè)主干神經(jīng)網(wǎng)絡(luò)產(chǎn)生的兩組分離的結(jié)果,這樣做更易于讓神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到好的表達(dá)方式。
可用的方法之一是Advantage Actor Critic(A2C)。 我們直接用策略梯度(上面定義的)來學(xué)習(xí)策略,同時(shí)用一種叫Advantage的東西學(xué)習(xí)值函數(shù)。我們不是基于獎勵(lì)來更新值函數(shù)的,而是基于“優(yōu)勢(advantage)”。所謂“優(yōu)勢”,是指跟用舊的值函數(shù)的預(yù)測結(jié)果相比,一個(gè)動作變得更好或更壞的度量。這使學(xué)習(xí)的效果的穩(wěn)定性優(yōu)于簡單Q學(xué)習(xí)和“香草策略梯度”。
5、從屏幕中直接學(xué)習(xí)
模型的輸入就是上面圖片的像素!
對于這些方法來說,使用深度學(xué)習(xí)還有一個(gè)優(yōu)勢,那就是深度神經(jīng)網(wǎng)絡(luò)在感知類任務(wù)中表現(xiàn)優(yōu)秀。一個(gè)人在玩游戲時(shí),他接收到的信息并不是一連串狀態(tài),而是一幅圖像(通常是屏幕、棋盤或者周圍環(huán)境)。
基于圖像的學(xué)習(xí)綜合了卷積神經(jīng)網(wǎng)絡(luò)(CNN)和RL。在本場景中,我們輸入原始圖像而不是特征,并在架構(gòu)中加入一個(gè)2層CNN,其它都不用改!我們甚至可以檢查一下激活函數(shù),看看網(wǎng)絡(luò)識別到了什么,它是如何確定值和策略的。在下面的例子中,我們可以看到網(wǎng)絡(luò)用當(dāng)前的得分和遠(yuǎn)處的障礙建立當(dāng)前的狀態(tài)值,同時(shí)根據(jù)附近的障礙決定如何行動。很利索!
檢查CNN的激活函數(shù),看看對于值預(yù)測(左)和策略預(yù)測(右),哪些是重要因素
順便提一句,我隨手玩了一下現(xiàn)成的代碼,發(fā)現(xiàn)圖像學(xué)習(xí)對于超參數(shù)特別敏感。比如,稍微改變一下折扣率,即使是一個(gè)玩具應(yīng)用,神經(jīng)網(wǎng)絡(luò)也無法學(xué)習(xí)了。這個(gè)問題是大家都知道的,但親身體驗(yàn)一下也蠻有意思的。
6、微妙動作
到目前為止,我們已經(jīng)嘗試過了狀態(tài)空間是連續(xù)和離散的兩種場景。然而,我們探討的所有這些場景的動作空間都是離散的:向四個(gè)方向之一進(jìn)行移動,或者向左向右傾斜托盤。理論上,類似自動駕駛等應(yīng)用,我們需要學(xué)習(xí)連續(xù)的動作,比如在0-360度之間轉(zhuǎn)動方向盤。在這種叫“3D球世界”的場景里,我們可以沿著托盤的每一個(gè)軸傾斜任意角度。這給了我們執(zhí)行動作更多的控制,但也使動作空間大了很多。
為解決這個(gè)問題,我們通過高斯分布來逼近可能的選擇。我們學(xué)習(xí)到高斯分布的均值和方差之后,就可以學(xué)習(xí)所有可能動作的概率分布,以及我們從這個(gè)分布中抽樣出來的策略。原理很簡單:)。雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
7、勇敢者的下一步
因?yàn)橐恍└拍畹娜笔?,使得上面講的算法稱不上最好的。讓人覺得有意思的是,在概念上,最優(yōu)秀的機(jī)器人和游戲算法與我們討論的那些相隔并不遙遠(yuǎn):
并行:A3C是最廣泛使用的方法。它在actor critic中加入一個(gè)異步步驟,允許算法并行運(yùn)行,使得解決一些有趣問題所花費(fèi)的時(shí)間處于可接受范圍。進(jìn)化式算法的并行能力更強(qiáng),其性能令人鼓舞。
課程式學(xué)習(xí):在很多情況下,幾乎不可能在隨機(jī)動作中獲得獎勵(lì)。由于學(xué)不到有用的東西,讓探索階段很難搞。在這種情況下,我們可以簡化問題,先解決容易的,再用基本模型對付越來越復(fù)雜的場景。
記憶:例如,用LSTM,我們能記住過去發(fā)生的事情,并在游戲進(jìn)程中一步步做出決策。
基于模型的RL:在算法進(jìn)行學(xué)習(xí)時(shí),有多種方法可以建立一個(gè)世界模型,因此,它們可以基于運(yùn)作簡單而又回報(bào)很高的動作,推測出世界運(yùn)行的規(guī)則。AlphaZero包括一個(gè)非常清晰的含有計(jì)劃的模型。這篇論文讓我覺得十分振奮。
總結(jié)就到這里,我希望內(nèi)容是充實(shí)、有趣的!如果你想更多了解RL理論,請閱讀Arthur的文章,或者更進(jìn)一步研究,可以加入David Silver的UCL課程。
想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?
點(diǎn)擊【從頭開始強(qiáng)化學(xué)習(xí)】即可訪問:
https://ai.yanxishe.com/page/TextTranslation/1652
社長今日推薦:2018秋季CS294-112深度強(qiáng)化學(xué)習(xí)
UC Berkeley(加利福尼亞大學(xué)伯克利分校) CS 294-112 《深度強(qiáng)化學(xué)習(xí)課程》為官方開源最新版本,由加利福尼亞大學(xué)伯克利分校該門課程授課講師 Sergey Levine 授權(quán) AI 研習(xí)社翻譯?,F(xiàn)已更新到第五講(中英字幕)!
課程鏈接:https://ai.yanxishe.com/page/groupDetail/30
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。