從老虎機(jī)講起,從頭開(kāi)始深度強(qiáng)化學(xué)習(xí)

0 評(píng)論 5231 瀏覽 9 收藏 18 分鐘

本文筆者將對(duì)深度RL領(lǐng)域的各個(gè)核心部分做出一個(gè)任何人都可以讀懂的概述,對(duì)深度RL主要使用的許多算法的一個(gè)全面總結(jié)。

最近,我在北京的O’Reilly AI大會(huì)上做了一個(gè)演講,是關(guān)于我們?cè)贜LP世界里學(xué)到的一些有趣的經(jīng)驗(yàn)。當(dāng)時(shí),我很幸運(yùn)地參加了Unity Technologies舉辦的關(guān)于“從頭開(kāi)始深度強(qiáng)化學(xué)習(xí)”的課程。我覺(jué)得這個(gè)由Arthur Juliani主講的課程,干貨極多,下面我把主要內(nèi)容分享出來(lái)。

在與各公司的交流中,我們發(fā)現(xiàn)有趣的深度RL應(yīng)用、工具和成果在增多。同時(shí),深度RL的運(yùn)作機(jī)制和應(yīng)用,比如下圖所示的AlphaGo,通常深?yuàn)W而晦澀。

從頭開(kāi)始強(qiáng)化學(xué)習(xí)

一部關(guān)于深度DL最著名應(yīng)用之一的紀(jì)錄片

在本文中,我將對(duì)此領(lǐng)域的各個(gè)核心部分做出一個(gè)任何人都可以讀懂的概述。

很多圖片都是來(lái)自那個(gè)演講的幻燈片,也有新的。所有的解釋和觀(guān)點(diǎn)都是我自己的。有任何不清楚的,可以通過(guò)這里聯(lián)系我。

深度強(qiáng)化學(xué)習(xí)的興起

人們對(duì)深度RL領(lǐng)域有著極大的研究興趣,例如:學(xué)習(xí)玩Atari游戲,擊敗Dota 2職業(yè)選手,戰(zhàn)勝?lài)骞谲?。傳統(tǒng)的深度學(xué)習(xí)側(cè)重于識(shí)別(這張圖片里有“停車(chē)”標(biāo)志嗎?),與之相反,深度RL增加了影響環(huán)境的動(dòng)作的維度(目標(biāo)是什么?我如何達(dá)成?)。

例如:在對(duì)話(huà)系統(tǒng)中,傳統(tǒng)的深度學(xué)習(xí)關(guān)心的是對(duì)給出的問(wèn)題如何學(xué)到正確的回答。但是,深度強(qiáng)化學(xué)習(xí)則著眼于一系列正確的語(yǔ)句,并從中得到一個(gè)積極的結(jié)果,比如,一個(gè)滿(mǎn)意的客戶(hù)。

這使得深度RL對(duì)于那些需要計(jì)劃和應(yīng)變的行業(yè),如制造業(yè)或自動(dòng)駕駛,格外有吸引力。

然而,行業(yè)應(yīng)用落后于飛速發(fā)展的技術(shù)研究成果。一個(gè)主要原因是深度RL通常需要一個(gè)代理進(jìn)行無(wú)數(shù)次摸索后,才能學(xué)到有用的東西,速成的辦法是使用模擬環(huán)境。這個(gè)教程使用Unity來(lái)建立一個(gè)訓(xùn)練代理的環(huán)境。

這個(gè)由Arthur Juliani和Leon Chen主持的研習(xí)會(huì),其目標(biāo)是讓每個(gè)一學(xué)員在4小時(shí)內(nèi)成功訓(xùn)練多個(gè)深度DL算法。這簡(jiǎn)直是天方夜譚!

以下是對(duì)深度RL主要使用的許多算法的一個(gè)全面總結(jié)。

從老虎機(jī)到電子游戲:RL綜述

深度RL能用來(lái)?yè)魯∪祟?lèi)圍棋頂尖高手。但要想知道如果實(shí)現(xiàn)的,你必須先從簡(jiǎn)單問(wèn)題入手,掌握幾個(gè)基本概念。

1. 一切始自老虎機(jī)

從頭開(kāi)始強(qiáng)化學(xué)習(xí)

第一個(gè)游戲問(wèn)題:我們知道哪個(gè)箱子里最有可能有獎(jiǎng)品嗎?

假設(shè)每一輪你有4個(gè)箱子可選,每個(gè)箱子都有不同平均回報(bào),你的目標(biāo)是在給定的輪數(shù)后,拿到的回報(bào)總金額最高——這是一個(gè)經(jīng)典的游戲,名叫“多臂賭博機(jī)”。我們從這個(gè)游戲開(kāi)始研究,這個(gè)游戲的難點(diǎn)在于平衡探索和獲利,探索讓我們知道哪種情形才是好的,獲利是探索到的知識(shí)去選擇最好的老虎機(jī)。

這里,我們要使用一個(gè)值函數(shù)來(lái)映射我們的動(dòng)作與預(yù)期的獎(jiǎng)品,這個(gè)函數(shù)叫Q函數(shù)。

首先,我們把所有Q值初始化為相等值。然后,我們每做一個(gè)動(dòng)作(選取一個(gè)箱子),根據(jù)這個(gè)動(dòng)作導(dǎo)致的回報(bào)的好壞,更新這個(gè)動(dòng)作對(duì)應(yīng)的Q值。這樣,我們就能得到一個(gè)好的值函數(shù)。我們用一個(gè)能學(xué)習(xí)到4個(gè)候選箱子的概率分布(使用softmax)的神經(jīng)網(wǎng)絡(luò)(從一個(gè)非常淺的開(kāi)始)來(lái)逼近Q函數(shù)。

值函數(shù)能讓我們?cè)u(píng)估我們動(dòng)作的好壞,而策略決定了我們最終采取哪個(gè)動(dòng)作。

憑直覺(jué),我們會(huì)使用能選擇出Q值最高的動(dòng)作的策略。在實(shí)際應(yīng)用中,這種做法表現(xiàn)很差,因?yàn)樵谖覀兺ㄟ^(guò)試錯(cuò)取得足夠經(jīng)驗(yàn)之前,起初所預(yù)估的Q值都是很不靠譜的。這促使我們?cè)诓呗灾屑舆M(jìn)一種機(jī)制,以增加探索的成分。

方法之一是使用?貪心算法,它是由隨機(jī)選取一個(gè)具有?概率的動(dòng)作構(gòu)成。開(kāi)始時(shí),總是隨機(jī)選擇動(dòng)作,讓?接近1,然后逐步降低?,并進(jìn)一步了解哪些箱子是好的。最終,我們確定出最好的箱子。

在實(shí)踐中,相比要么選擇一個(gè)我們認(rèn)為最好的動(dòng)作,要么隨機(jī)選一個(gè)動(dòng)作,我們應(yīng)該需要一個(gè)更巧妙的辦法。一個(gè)廣泛采用的方法叫Boltzmann Exploration,它是通過(guò)加入隨機(jī)因子來(lái)調(diào)整基于我們當(dāng)前對(duì)于箱子好壞的預(yù)估的概率。

2. 增加不同的狀態(tài)

從頭開(kāi)始強(qiáng)化學(xué)習(xí)

這里,不同的背景顏色代表不同的平均箱內(nèi)獎(jiǎng)勵(lì)。

前面的例子僅描述了一種情形——即我們總是從面前的4個(gè)箱子中進(jìn)行選取,而在現(xiàn)實(shí)中,是有多種情形的。

下面,我們把這種情況加入到我們的環(huán)境中來(lái)。

現(xiàn)在,每一輪中,箱子的背景色在3種顏色中交替顯示,表示箱子不同的平均值。這意味著,我們所學(xué)習(xí)的Q函數(shù),不僅取決于動(dòng)作(我們所選的箱子),還取決于具體狀態(tài)(什么樣的背景色)。這種類(lèi)型的游戲叫作上下文多臂賭博機(jī)。

很奇怪,我們?nèi)匀荒苡们笆龅姆椒?。只要在神?jīng)網(wǎng)絡(luò)中加多一個(gè)稠密層,用來(lái)輸入當(dāng)前狀態(tài)的矢量就行了。

3. 了解動(dòng)作的后續(xù)結(jié)果

從頭開(kāi)始強(qiáng)化學(xué)習(xí)

這里,我們是藍(lán)色方塊,嘗試學(xué)習(xí)如何到達(dá)綠色方塊,而不碰到紅色方塊。

有一個(gè)關(guān)鍵因素使得我們的游戲比大多數(shù)都簡(jiǎn)單,在大部分環(huán)境中,比如上面那個(gè)迷宮,我們采取的行動(dòng)對(duì)狀態(tài)世界是有影響的。我們向上移動(dòng)一格,可能得到獎(jiǎng)勵(lì),也可能得不到,但是下一輪,我們將處于不同的狀態(tài)。這就是為什么我們要引入“計(jì)劃”。

首先,我們把Q函數(shù)定義為我們當(dāng)前狀態(tài)的即時(shí)獎(jiǎng)勵(lì),加上我們做完所有動(dòng)作后所期望的折扣獎(jiǎng)勵(lì)。如果我們的Q函數(shù)對(duì)狀態(tài)的預(yù)測(cè)準(zhǔn)確的話(huà),這種方法是管用的。那么,我們?cè)鯓幼龀鰷?zhǔn)確的預(yù)測(cè)呢?

我們用一個(gè)叫時(shí)序差分(TD)學(xué)習(xí)的方法來(lái)生成一個(gè)好的Q函數(shù)。其要點(diǎn)是只看未來(lái)的有限步驟,例如:TD(1)只用后續(xù)的兩個(gè)狀態(tài)來(lái)評(píng)估獎(jiǎng)勵(lì)。

很奇怪,我們可以用TD(0),只看當(dāng)前狀態(tài),預(yù)測(cè)下一輪的獎(jiǎng)勵(lì),效果很不錯(cuò)。網(wǎng)絡(luò)結(jié)構(gòu)是一樣的,但是我們需要進(jìn)到下一步才能發(fā)現(xiàn)錯(cuò)誤。接著,我們用這個(gè)錯(cuò)誤來(lái)反向傳播梯度,就像傳統(tǒng)的深度學(xué)習(xí)那樣,然后更新預(yù)測(cè)值。

3+. Monte Carlo介紹

Monte Carlo預(yù)測(cè)是另一個(gè)用來(lái)預(yù)測(cè)我們的動(dòng)作是否成功的方法。它的原理是用當(dāng)前策略把所有步驟走完(在上圖中,成功到達(dá)綠色方塊或者因碰到紅色方塊而以失敗告終),并用結(jié)果來(lái)更新每一個(gè)經(jīng)過(guò)的狀態(tài)的預(yù)測(cè)值。這樣我們可以在全部步驟完成后一次性傳播預(yù)測(cè)值,而不用每步都做。代價(jià)是在預(yù)測(cè)值中引入了噪聲,因?yàn)楠?jiǎng)勵(lì)的路徑太長(zhǎng)。

4. 很少離散的世界

從頭開(kāi)始強(qiáng)化學(xué)習(xí)

前面講的方法都是先把有限數(shù)量的狀態(tài)和行動(dòng)進(jìn)行映射,然后用神經(jīng)網(wǎng)絡(luò)來(lái)逼近預(yù)測(cè)值。

在那個(gè)迷宮例子中,一共有49個(gè)狀態(tài)(方塊)和4個(gè)行動(dòng)(相鄰的4個(gè)移動(dòng)方向)。在本圖的情形中,我們嘗試學(xué)習(xí)如何讓一個(gè)球在一個(gè)二維托盤(pán)中保持平衡,每一時(shí)刻我們都要決定托盤(pán)是要朝左還是朝右傾斜。這里,狀態(tài)空間變成連續(xù)的了(托盤(pán)的角度,球的位置)。好消息是,我們還是可以用神經(jīng)網(wǎng)絡(luò)進(jìn)行函數(shù)逼近!

關(guān)于策略無(wú)關(guān)(off-policy)和策略相關(guān)(on-policy)學(xué)習(xí)的提醒:我們先前用的是策略無(wú)關(guān)方法,即我們可以用任何方式來(lái)生成數(shù)據(jù)(比方說(shuō)?貪心算法),并從中學(xué)習(xí)。而策略相關(guān)方法,只能從由策略產(chǎn)生的行動(dòng)中去學(xué)習(xí)(記住,策略是我們用來(lái)決定如何行動(dòng)的方法)。這會(huì)限制學(xué)習(xí)過(guò)程,因?yàn)椴呗灾斜仨毲度胩剿鞣椒?,但是也使得結(jié)果與推理相關(guān)聯(lián),令學(xué)習(xí)效率更高。

我們要采用的方法叫“策略梯度”,是策略相關(guān)的。先前,我們就每一個(gè)狀態(tài)的每一個(gè)動(dòng)作學(xué)習(xí)到了值函數(shù)Q,并在此基礎(chǔ)上生成了策略。

在香草梯度策略中,我們?nèi)耘f使用Monte Carlo預(yù)測(cè),但是我們使用損失函數(shù)增加選取到能獲獎(jiǎng)的行動(dòng)的概率,然后直接從損失函數(shù)中學(xué)習(xí)策略。因?yàn)槲覀兪且蕾?lài)策略來(lái)學(xué)習(xí)的,所以不能用類(lèi)似?貪心算法(其包含隨機(jī)選擇)那樣的方法來(lái)使代理探索整個(gè)環(huán)境。我們用來(lái)強(qiáng)化探索的方法叫熵正則化,它能增加概率預(yù)測(cè)的寬度,從而在探索空間時(shí)采用更冒險(xiǎn)的做法。

4+. 利用深度學(xué)習(xí)進(jìn)行表達(dá)

在實(shí)踐中,許多最新型的RL模型要求學(xué)習(xí)一個(gè)策略和若干預(yù)測(cè)值。用深度學(xué)習(xí)的方法來(lái)實(shí)現(xiàn)的話(huà),是讓兩者成為從同一個(gè)主干神經(jīng)網(wǎng)絡(luò)產(chǎn)生的兩組分離的結(jié)果,這樣做更易于讓神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到好的表達(dá)方式。

可用的方法之一是Advantage Actor Critic(A2C)。 我們直接用策略梯度(上面定義的)來(lái)學(xué)習(xí)策略,同時(shí)用一種叫Advantage的東西學(xué)習(xí)值函數(shù)。我們不是基于獎(jiǎng)勵(lì)來(lái)更新值函數(shù)的,而是基于“優(yōu)勢(shì)(advantage)”。所謂“優(yōu)勢(shì)”,是指跟用舊的值函數(shù)的預(yù)測(cè)結(jié)果相比,一個(gè)動(dòng)作變得更好或更壞的度量。這使學(xué)習(xí)的效果的穩(wěn)定性?xún)?yōu)于簡(jiǎn)單Q學(xué)習(xí)和“香草策略梯度”。

5. 從屏幕中直接學(xué)習(xí)

從頭開(kāi)始強(qiáng)化學(xué)習(xí)

模型的輸入就是上面圖片的像素!

對(duì)于這些方法來(lái)說(shuō),使用深度學(xué)習(xí)還有一個(gè)優(yōu)勢(shì),那就是深度神經(jīng)網(wǎng)絡(luò)在感知類(lèi)任務(wù)中表現(xiàn)優(yōu)秀。一個(gè)人在玩游戲時(shí),他接收到的信息并不是一連串狀態(tài),而是一幅圖像(通常是屏幕、棋盤(pán)或者周?chē)h(huán)境)。

基于圖像的學(xué)習(xí)綜合了卷積神經(jīng)網(wǎng)絡(luò)(CNN)和RL。在本場(chǎng)景中,我們輸入原始圖像而不是特征,并在架構(gòu)中加入一個(gè)2層CNN,其它都不用改。我們甚至可以檢查一下激活函數(shù),看看網(wǎng)絡(luò)識(shí)別到了什么,它是如何確定值和策略的。

在下面的例子中,我們可以看到網(wǎng)絡(luò)用當(dāng)前的得分和遠(yuǎn)處的障礙建立當(dāng)前的狀態(tài)值,同時(shí)根據(jù)附近的障礙決定如何行動(dòng),很利索!

從頭開(kāi)始強(qiáng)化學(xué)習(xí)

檢查CNN的激活函數(shù),看看對(duì)于值預(yù)測(cè)(左)和策略預(yù)測(cè)(右),哪些是重要因素?

順便提一句,我隨手玩了一下現(xiàn)成的代碼,發(fā)現(xiàn)圖像學(xué)習(xí)對(duì)于超參數(shù)特別敏感。比如:稍微改變一下折扣率,即使是一個(gè)玩具應(yīng)用,神經(jīng)網(wǎng)絡(luò)也無(wú)法學(xué)習(xí)了。這個(gè)問(wèn)題是大家都知道的,但親身體驗(yàn)一下也蠻有意思的。

6. 微妙動(dòng)作

從頭開(kāi)始強(qiáng)化學(xué)習(xí)

到目前為止,我們已經(jīng)嘗試過(guò)了狀態(tài)空間是連續(xù)和離散的兩種場(chǎng)景。

然而,我們探討的所有這些場(chǎng)景的動(dòng)作空間都是離散的:向四個(gè)方向之一進(jìn)行移動(dòng),或者向左向右傾斜托盤(pán)。理論上,類(lèi)似自動(dòng)駕駛等應(yīng)用,我們需要學(xué)習(xí)連續(xù)的動(dòng)作,比如在0-360度之間轉(zhuǎn)動(dòng)方向盤(pán)。在這種叫“3D球世界”的場(chǎng)景里,我們可以沿著托盤(pán)的每一個(gè)軸傾斜任意角度。這給了我們執(zhí)行動(dòng)作更多的控制,但也使動(dòng)作空間大了很多。

為解決這個(gè)問(wèn)題,我們通過(guò)高斯分布來(lái)逼近可能的選擇。我們學(xué)習(xí)到高斯分布的均值和方差之后,就可以學(xué)習(xí)所有可能動(dòng)作的概率分布,以及我們從這個(gè)分布中抽樣出來(lái)的策略。原理很簡(jiǎn)單。

7. 勇敢者的下一步

因?yàn)橐恍└拍畹娜笔?,使得上面講的算法稱(chēng)不上最好的。讓人覺(jué)得有意思的是,在概念上,最優(yōu)秀的機(jī)器人和游戲算法與我們討論的那些相隔并不遙遠(yuǎn)。

并行:A3C是最廣泛使用的方法。它在actor critic中加入一個(gè)異步步驟,允許算法并行運(yùn)行,使得解決一些有趣問(wèn)題所花費(fèi)的時(shí)間處于可接受范圍。進(jìn)化式算法的并行能力更強(qiáng),其性能令人鼓舞。

課程式學(xué)習(xí):在很多情況下,幾乎不可能在隨機(jī)動(dòng)作中獲得獎(jiǎng)勵(lì)。由于學(xué)不到有用的東西,讓探索階段很難搞。在這種情況下,我們可以簡(jiǎn)化問(wèn)題,先解決容易的,再用基本模型對(duì)付越來(lái)越復(fù)雜的場(chǎng)景。

記憶:例如用LSTM,我們能記住過(guò)去發(fā)生的事情,并在游戲進(jìn)程中一步步做出決策。

基于模型的RL:在算法進(jìn)行學(xué)習(xí)時(shí),有多種方法可以建立一個(gè)世界模型。因此,它們可以基于運(yùn)作簡(jiǎn)單而又回報(bào)很高的動(dòng)作,推測(cè)出世界運(yùn)行的規(guī)則。AlphaZero包括一個(gè)非常清晰的含有計(jì)劃的模型,這篇論文讓我覺(jué)得十分振奮。

總結(jié)就到這里,我希望內(nèi)容是充實(shí)、有趣的!

 

本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :Reinforcement Learning from scratch

作者:Emmanuel Ameisen

翻譯:AI小山

原文鏈接:https://blog.insightdatascience.com/reinforcement-learning-from-scratch-819b65f074d8

本文來(lái)源于人人都是產(chǎn)品經(jīng)理合作媒體 @雷鋒網(wǎng),翻譯@AI小山

題圖來(lái)自Unsplash,基于CC0協(xié)議。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!