一個(gè)機(jī)器人向前邁了一大步然后跌倒了。下一次它就往前走一小步并可以保持平衡了。機(jī)器人就像這樣嘗試了很多次,最終它成功學(xué)會(huì)了正確的步伐大小并能夠穩(wěn)定地行走了。
我們看到的上述例子被稱(chēng)為增強(qiáng)學(xué)習(xí)。它將一個(gè)機(jī)器人的動(dòng)作跟結(jié)果直接聯(lián)系起來(lái),而不需要學(xué)習(xí)復(fù)雜的機(jī)器人動(dòng)作跟結(jié)果的關(guān)系。機(jī)器人基于動(dòng)作帶來(lái)的獎(jiǎng)勵(lì)(保持平衡)和懲罰(跌倒)來(lái)學(xué)習(xí)如何行走。這種反饋被稱(chēng)作對(duì)“做”或者“不做”某一種動(dòng)作的“增強(qiáng)”。
在圍棋中也可以找到使用增強(qiáng)學(xué)習(xí)的例子。如果計(jì)算機(jī)將它的白子放在某個(gè)位置,然后被黑子包圍并丟失了該位置。那么該位置的走子方式就被懲罰。在多次被懲罰以后,當(dāng)該位置有黑子包圍時(shí)計(jì)算機(jī)就會(huì)避免將白子放到這個(gè)位置。
增強(qiáng)學(xué)習(xí)的一個(gè)簡(jiǎn)單定義就是學(xué)習(xí)基于獎(jiǎng)勵(lì)或懲罰的最佳動(dòng)作。
在增強(qiáng)學(xué)習(xí)中有三個(gè)概念:狀態(tài)、動(dòng)作和回報(bào)?!盃顟B(tài)”是描述當(dāng)前情況的。對(duì)一個(gè)正在學(xué)習(xí)行走的機(jī)器人來(lái)說(shuō),狀態(tài)是它的兩條腿的位置。對(duì)一個(gè)圍棋程序來(lái)說(shuō),狀態(tài)是棋盤(pán)上所有棋子的位置。
“動(dòng)作”是一個(gè)智能體在每個(gè)狀態(tài)中可以做的事情。給定一個(gè)機(jī)器人兩條腿的狀態(tài)或位置,它可以在一定距離內(nèi)走幾步。通常一個(gè)智能體只能采取有限或者固定范圍內(nèi)的動(dòng)作。例如一個(gè)機(jī)器人的步幅只能是0.01米到1米,而圍棋程序只能將它的棋子放在19×19路棋盤(pán)(361個(gè)位置)的某一位置。
當(dāng)一個(gè)機(jī)器人在某種狀態(tài)下采取某種動(dòng)作時(shí),它會(huì)收到一個(gè)回報(bào)。這里的術(shù)語(yǔ)“回報(bào)”是一個(gè)描述來(lái)自外界的反饋的抽象概念?;貓?bào)可以是正面的或者負(fù)面的。當(dāng)回報(bào)是正面的時(shí)候,它對(duì)應(yīng)于我們常規(guī)意義上的獎(jiǎng)勵(lì)。當(dāng)回報(bào)是負(fù)面的時(shí)候,它就對(duì)應(yīng)于我們通常所說(shuō)的懲罰。
這些概念看起來(lái)都很簡(jiǎn)單直接:我們一旦知道了狀態(tài),就可以去選擇一個(gè)(希望)能帶來(lái)正面回報(bào)的動(dòng)作。然而現(xiàn)實(shí)卻復(fù)雜的多。
舉一個(gè)機(jī)器人通過(guò)學(xué)習(xí)穿越迷宮的例子。當(dāng)機(jī)器人向右移動(dòng)一步時(shí)它到達(dá)一個(gè)活路的位置,然而當(dāng)它向左移動(dòng)一步時(shí)也到達(dá)一個(gè)活路的位置。機(jī)器人連續(xù)向左走了三步后它撞到了墻。回想起來(lái)在位置1采取向左行走是一個(gè)壞主意(壞動(dòng)作)。那么機(jī)器人是如何在每個(gè)位置(狀態(tài))利用回報(bào)信息來(lái)學(xué)習(xí)穿越迷宮的(這是最終目標(biāo))?
“真正”的增強(qiáng)學(xué)習(xí)或者當(dāng)前用作機(jī)器學(xué)習(xí)方法的增強(qiáng)學(xué)習(xí)版本,都關(guān)注自己的長(zhǎng)期回報(bào)而不僅僅是當(dāng)前的即時(shí)回報(bào)。
長(zhǎng)期回報(bào)是在一個(gè)智能體跟外界交互時(shí)通過(guò)許多試錯(cuò)中學(xué)習(xí)到的。一個(gè)走迷宮的機(jī)器人會(huì)記住它撞到的每面墻。最后它會(huì)記住進(jìn)入死胡同之前那些行走動(dòng)作。它還會(huì)記住成功通過(guò)迷宮的行走路徑(行走動(dòng)作的序列)。增強(qiáng)學(xué)習(xí)的基本目標(biāo)就是學(xué)習(xí)一個(gè)有長(zhǎng)期回報(bào)的動(dòng)作序列。智能體是通過(guò)跟外界交互并觀察每個(gè)狀態(tài)下的回報(bào)來(lái)學(xué)習(xí)動(dòng)作序列的。
智能體是如何知道期望的長(zhǎng)期受益?秘密在于Q表(Q函數(shù))。Q表是一個(gè)用于 “回報(bào)”與每個(gè)“狀態(tài)-動(dòng)作”組的對(duì)應(yīng)關(guān)系的查找表。此表中的每個(gè)單元格記錄了一個(gè)稱(chēng)為Q值的數(shù)值。它表示智能體在特定狀態(tài)下采取這個(gè)動(dòng)作時(shí)得到的長(zhǎng)期回報(bào),以及隨后選擇可能的最佳路徑。
智能體是如何學(xué)習(xí)這個(gè)長(zhǎng)期回報(bào)Q值的?事實(shí)證明智能體不需要解一個(gè)復(fù)雜的數(shù)學(xué)方程。它只需要一個(gè)簡(jiǎn)單的被稱(chēng)為Q學(xué)習(xí)的過(guò)程來(lái)學(xué)習(xí)所有的Q值。增強(qiáng)學(xué)習(xí)的本質(zhì)就是學(xué)習(xí)采取動(dòng)作時(shí)的Q值。
Q學(xué)習(xí):一種常用的增強(qiáng)學(xué)習(xí)方法
Q學(xué)習(xí)是最常用的增強(qiáng)學(xué)習(xí)方法,其中Q代表某種動(dòng)作的長(zhǎng)期回報(bào)價(jià)值。 Q學(xué)習(xí)是通過(guò)觀察來(lái)學(xué)習(xí)Q值的。
Q學(xué)習(xí)的過(guò)程是:
開(kāi)始時(shí)智能體會(huì)把每個(gè)“狀態(tài)-動(dòng)作”組的Q值初始化為0。更精確的描述為對(duì)所有的狀態(tài)s和動(dòng)作a:Q(s,a)=0。這從本質(zhì)上說(shuō)我們不知道關(guān)于每個(gè)“狀態(tài)-動(dòng)作”組的長(zhǎng)期回報(bào)信息。
在智能體開(kāi)始學(xué)習(xí)后,它會(huì)在狀態(tài)s下采取動(dòng)作a并獲得回報(bào)r。它的狀態(tài)會(huì)變成狀態(tài)s’。智能體會(huì)用以下公式更新Q(s,a):
Q(s,a) = (1-學(xué)習(xí)速率)*Q(s,a)+學(xué)習(xí)速率*(r+折扣率*max_a(Q(s’,a)))
學(xué)習(xí)速率是介于0到1之間的數(shù)值。它是新回報(bào)信息和舊回報(bào)信息之間的權(quán)衡權(quán)重。假設(shè)該智能體接下來(lái)都一直采取最佳的動(dòng)作,新的長(zhǎng)期回報(bào)就是當(dāng)前回報(bào)r加上下一個(gè)狀態(tài)s’及以后所有狀態(tài)下的未來(lái)回報(bào)。未來(lái)回報(bào)會(huì)用一個(gè)介于0到1之間的折扣率來(lái)打折,這意味著未來(lái)回報(bào)沒(méi)有當(dāng)前回報(bào)的影響大。
在該更新方法中,Q值包含了過(guò)去的回報(bào)信息并把未來(lái)的動(dòng)作也考慮進(jìn)來(lái)。注意假設(shè)往后我們一直都走最優(yōu)的路徑,我們使用最大化的Q值作為新的狀態(tài)。當(dāng)智能體到達(dá)所有狀態(tài)并嘗試了不同的動(dòng)作時(shí),它最終可以為所有可能的“狀態(tài)-動(dòng)作“組學(xué)習(xí)一個(gè)最優(yōu)的Q值。然后它可以推斷出長(zhǎng)期來(lái)說(shuō)每個(gè)狀態(tài)下的最優(yōu)動(dòng)作。
以下是一個(gè)機(jī)器人走迷宮的簡(jiǎn)單例子:

圖1. 一個(gè)機(jī)器人通過(guò)學(xué)習(xí)穿越迷宮的路徑
機(jī)器人從迷宮的左下角開(kāi)始。每個(gè)位置(狀態(tài))由數(shù)字表示。有上下左右四種動(dòng)作可以選擇,但在某些狀態(tài)下動(dòng)作的選擇是有限制的。例如在狀態(tài)1(初始狀態(tài)),機(jī)器人只有兩種選擇:上或右。在狀態(tài)4機(jī)器人有3種選擇:左、右或上。當(dāng)機(jī)器人碰到墻時(shí),它會(huì)收到回報(bào)值-1。當(dāng)它到達(dá)一個(gè)活路位置時(shí),它會(huì)收到回報(bào)值100。注意這種一次性的回報(bào)值跟Q值是非常不同的。事實(shí)上我們是這樣計(jì)算Q值的:
Q(4,左) = 0.8*0+0.2*(0+0.9*Q(1,右))
Q(4,右) = 0.8*0+0.2*(0+0.9*Q(5,上))
其中學(xué)習(xí)效率為0.2而折扣率為0.9。狀態(tài)1的最佳動(dòng)作是向右,狀態(tài)5的最佳動(dòng)作是向上。Q(1,右)和Q(5,上)有不同的值是因?yàn)樗鼜臓顟B(tài)1比從狀態(tài)5到達(dá)出口需要走更多步。由于我們會(huì)對(duì)未來(lái)的回報(bào)打折扣,所以我們會(huì)把為實(shí)現(xiàn)目標(biāo)多走的步數(shù)打折扣,因此Q(5,上)會(huì)比Q(1,右)的值更高。從而Q(4,右)比Q(4,左)的值更大,所以狀態(tài)4的最佳動(dòng)作是向右。
Q學(xué)習(xí)需要智能體不斷嘗試來(lái)遍歷所有可能的“狀態(tài)-動(dòng)作”組。只有那時(shí)智能體才能夠?qū)@個(gè)世界有個(gè)完整的印象。Q值表示采取最佳動(dòng)作序列時(shí)的最優(yōu)值。這個(gè)動(dòng)作序列也被稱(chēng)為“策略”。
我們面臨的一個(gè)根本問(wèn)題是:當(dāng)智能體在一個(gè)給定的環(huán)境中探索可能的動(dòng)作時(shí),它有可能學(xué)習(xí)所有的Q值嗎?換句話說(shuō)這樣的學(xué)習(xí)是否可行?如果外界能對(duì)智能體的動(dòng)作做出反饋的話,答案是肯定。換句話說(shuō),狀態(tài)是基于動(dòng)作而改變的。這樣的假設(shè)被稱(chēng)為馬爾科夫決策過(guò)程(MDP)。這一過(guò)程假設(shè)下一狀態(tài)是由之前的狀態(tài)和采取的動(dòng)作決定的。基于這一假設(shè),所有可能的狀態(tài)最終都會(huì)到達(dá)并且可以確定每個(gè)“狀態(tài)-動(dòng)作”組的長(zhǎng)期回報(bào)值(Q值)。
想象一下我們生活在一個(gè)隨機(jī)的世界中,我們的行為對(duì)接下來(lái)發(fā)生的事沒(méi)有影響。那么增強(qiáng)學(xué)習(xí)(Q學(xué)習(xí))就會(huì)失效了,經(jīng)過(guò)多次嘗試以后,我們不得不認(rèn)輸放棄。幸運(yùn)的是我們的世界更具有可預(yù)測(cè)性。例如當(dāng)一個(gè)圍棋選手將棋子放在棋盤(pán)上的某個(gè)位置時(shí),下一輪時(shí)棋子的位置就很明確了。我們的智能體跟外界環(huán)境交互并通過(guò)行動(dòng)來(lái)塑造外界環(huán)境。智能體在某種狀態(tài)下的動(dòng)作的確切影響通常是直接明了的。新?tīng)顟B(tài)是可以立即觀測(cè)到的。機(jī)器人可以知道它應(yīng)該在哪里結(jié)束學(xué)習(xí)。
增強(qiáng)學(xué)習(xí)的常用技術(shù)
增強(qiáng)學(xué)習(xí)的基本技術(shù)是探索與利用。智能體在狀態(tài)s中對(duì)于每個(gè)動(dòng)作a學(xué)習(xí)Q(s,a)的值。由于智能體需要得到一個(gè)高的回報(bào)值,它可以基于當(dāng)前的回報(bào)信息來(lái)選擇能夠得到最高回報(bào)值的動(dòng)作(利用),或者不斷嘗試新的動(dòng)作以期望能有更高的回報(bào)(探索)。當(dāng)一個(gè)智能體在線(實(shí)時(shí))學(xué)習(xí)時(shí),這兩種策略的平衡是非常重要的。這是因?yàn)橹悄荏w在實(shí)時(shí)學(xué)習(xí)時(shí)必須使自己能夠維持生存(如探索一個(gè)洞穴或者在戰(zhàn)斗中對(duì)抗時(shí)),并能找到最佳動(dòng)作。當(dāng)一個(gè)智能體離線學(xué)習(xí)時(shí)(這意味著不是實(shí)時(shí)的),這種策略平衡不需要過(guò)多考慮。在機(jī)器學(xué)習(xí)術(shù)語(yǔ)中,離線學(xué)習(xí)意味著一個(gè)智能體不需要跟外界環(huán)境交互就可以處理信息。在這種情況下當(dāng)智能體嘗試(探索)許多不同的動(dòng)作時(shí),不用擔(dān)心后果,失?。ㄏ褡驳揭欢聣蛘咴谝粋€(gè)游戲中被打?。┑拇鷥r(jià)會(huì)很低。
Q學(xué)習(xí)的性能取決于訪問(wèn)所有“狀態(tài)-動(dòng)作“組以學(xué)習(xí)正確的Q值的數(shù)量。這在狀態(tài)量比較少的時(shí)候是可以輕易實(shí)現(xiàn)的。然而在現(xiàn)實(shí)世界中,狀態(tài)的數(shù)量可能非常大,特別是當(dāng)系統(tǒng)中有多個(gè)智能體時(shí)。例如在迷宮游戲中,一個(gè)機(jī)器人最多有1000個(gè)狀態(tài)(位置)。當(dāng)它跟另外一個(gè)機(jī)器人比賽時(shí)狀態(tài)數(shù)量會(huì)增長(zhǎng)到1000000,這里的狀態(tài)表示兩個(gè)機(jī)器人的聯(lián)合位置(1000×1000)。
當(dāng)狀態(tài)空間很大時(shí),等待我們?cè)L問(wèn)完所有的“狀態(tài)-動(dòng)作”組是沒(méi)有效率的方法。有一種更快速的方法叫做蒙特卡羅方法。在統(tǒng)計(jì)學(xué)中,蒙特卡羅方法通過(guò)重復(fù)采樣得到一個(gè)平均值。在增強(qiáng)學(xué)習(xí)中,蒙特卡羅方法用于在重復(fù)觀察相同的“狀態(tài)-動(dòng)作”組之后計(jì)算Q值。這種方法將Q值Q(s,a)定義為多次訪問(wèn)相同的“狀態(tài)-動(dòng)作”組(s,a)后的平均回報(bào)。這種方法不需要使用學(xué)習(xí)速率或折扣率。它只依賴(lài)于大量的模擬。由于其簡(jiǎn)便性,這種方法變的非常流行。它已經(jīng)被AlphaGo用于跟自己對(duì)弈很多次以后來(lái)學(xué)習(xí)最佳走子方式。
減少狀態(tài)數(shù)的另外一種方法是使用神經(jīng)網(wǎng)絡(luò),其中輸入是狀態(tài)而輸出是動(dòng)作或者是跟每個(gè)動(dòng)作相關(guān)聯(lián)的Q值。深度神經(jīng)網(wǎng)絡(luò)能夠通過(guò)隱藏層極大地簡(jiǎn)化狀態(tài)表示。在這篇關(guān)于應(yīng)用于Atari游戲的深度增強(qiáng)學(xué)習(xí)的《Nature》論文中,整個(gè)游戲局面通過(guò)一個(gè)卷積神經(jīng)網(wǎng)絡(luò)映射以確定Q值。
增強(qiáng)學(xué)習(xí)善于做什么?
增強(qiáng)學(xué)習(xí)在關(guān)于外界信息是非常有限的情況時(shí)的場(chǎng)景是有用的:特別是沒(méi)有給定的世界地圖。這時(shí)我們不得不通過(guò)跟外界環(huán)境交互來(lái)學(xué)習(xí)我們的動(dòng)作:需要不斷地試錯(cuò)。例如圍棋程序不能計(jì)算所有可能的狀態(tài)(10^170種)。宇宙的年齡只有10^17秒,這意味著計(jì)算機(jī)即使可以在一秒內(nèi)計(jì)算十億(10^9)種可能的局面(狀態(tài)),圍棋程序也要用比宇宙年齡更長(zhǎng)的時(shí)間來(lái)完成計(jì)算。
由于我們不能列出所有可能的情況(并相應(yīng)的優(yōu)化我們的動(dòng)作),因此我們需要通過(guò)行作的過(guò)程來(lái)學(xué)習(xí)。一旦采取了某個(gè)動(dòng)作,我們可以立即觀察結(jié)果并改變下一次的動(dòng)作。
最近的應(yīng)用
傳統(tǒng)上增強(qiáng)學(xué)習(xí)主要應(yīng)用于機(jī)器人控制和簡(jiǎn)單的棋類(lèi)游戲,例如西洋雙路棋。最近增強(qiáng)學(xué)習(xí)跟深度學(xué)習(xí)相結(jié)合的方法有很強(qiáng)勁的勢(shì)頭,它可以在狀態(tài)數(shù)非常多的時(shí)候簡(jiǎn)化狀態(tài)。當(dāng)前增強(qiáng)學(xué)習(xí)的應(yīng)用包括:
1. 圍棋游戲
最成功的例子是AlphaGo,它是一個(gè)贏了排名世界第二的人類(lèi)圍棋選手的計(jì)算機(jī)程序。AlphaGo使用增強(qiáng)學(xué)習(xí)并基于當(dāng)前棋盤(pán)局面來(lái)學(xué)習(xí)下一步走子方式。棋盤(pán)局面通過(guò)卷積神經(jīng)網(wǎng)絡(luò)被簡(jiǎn)化,之后產(chǎn)生走子方式作為輸出。
2. 電腦游戲
最近在Atari游戲中應(yīng)用到了增強(qiáng)學(xué)習(xí)。
3. 機(jī)器人控制
機(jī)器人可以使用增強(qiáng)學(xué)習(xí)來(lái)學(xué)習(xí)走路、跑步、跳舞、飛行、打乒乓球或者堆樂(lè)高。
4. 在線廣告
計(jì)算機(jī)程序可以使用增強(qiáng)學(xué)習(xí)選擇在正確的時(shí)間或者以正確的格式向用戶(hù)顯示廣告。
5. 對(duì)話生成
會(huì)話智能體會(huì)基于前瞻性的長(zhǎng)期回報(bào)來(lái)選擇要說(shuō)的句子。這使得對(duì)話更具有吸引力并能持續(xù)時(shí)間更長(zhǎng)。例如程序回答“你多大了”這個(gè)問(wèn)題時(shí)可以說(shuō)“我16歲了,你為什么要問(wèn)這個(gè)問(wèn)題?”,而不是只說(shuō)”我16歲了”。
增強(qiáng)學(xué)習(xí)入門(mén)
OpenAI提供了一個(gè)增強(qiáng)學(xué)習(xí)的基準(zhǔn)工具包OpenAI Gym。它包含示例代碼,可以幫助初學(xué)者入門(mén)。其中CartPole問(wèn)題是一個(gè)有趣的入門(mén)問(wèn)題,很多學(xué)習(xí)者都提交了他們關(guān)于這個(gè)問(wèn)題的代碼和相關(guān)文檔。
AlphaGo及其應(yīng)用增強(qiáng)學(xué)習(xí)的成功提高了人們對(duì)這種方法的興趣。強(qiáng)化學(xué)習(xí)通過(guò)跟深度學(xué)習(xí)相結(jié)合已經(jīng)成為許多應(yīng)用的強(qiáng)大工具。增強(qiáng)學(xué)習(xí)的時(shí)代到來(lái)了!
Junling Hu
Junling Hu是人工智能和數(shù)據(jù)科學(xué)領(lǐng)域的權(quán)威專(zhuān)家,并擔(dān)任即將舉辦的《人工智能前沿會(huì)議》的主席。她是三星公司數(shù)據(jù)挖掘總監(jiān),并她領(lǐng)導(dǎo)了大規(guī)模和實(shí)時(shí)數(shù)據(jù)產(chǎn)品的數(shù)據(jù)挖掘解決方案的端到端實(shí)現(xiàn)。在加入三星之前,Hu博士在PayPal和eBay帶領(lǐng)了一支數(shù)據(jù)科學(xué)團(tuán)隊(duì),在市場(chǎng)、營(yíng)銷(xiāo)和客戶(hù)流失預(yù)測(cè)方面構(gòu)建了各種預(yù)測(cè)模型。在加入eBay之前,Hu博士在Bosch研究中心的一個(gè)數(shù)據(jù)挖掘團(tuán)隊(duì)。在加入Bosch以前,Hu博士在2000年到2003年間在羅切斯特大學(xué)擔(dān)任助理教授。Hu博士的論文有1000多次的學(xué)術(shù)引用。她是斯隆獎(jiǎng)學(xué)金的工程類(lèi)杰出女性的獲得者和國(guó)家科學(xué)基金會(huì)(NSF)頒發(fā)的CAREER獎(jiǎng)的得主。她曾兩次在國(guó)家科學(xué)基金會(huì)的評(píng)審小組中為來(lái)自美國(guó)研究所的資助申請(qǐng)?zhí)峁┻^(guò)幫助。1999年Hu博士在密歇根大學(xué)獲得了計(jì)算機(jī)科學(xué)的博士學(xué)位,主要研究人工智能領(lǐng)域,特別是增強(qiáng)學(xué)習(xí)。


更多內(nèi)容可以參考Strata北京2017的相關(guān)議題。