1
雷鋒網(wǎng)按:本期地平線資深算法工程師、增強(qiáng)學(xué)習(xí)專家穆黎森將為大家?guī)碓鰪?qiáng)學(xué)習(xí)簡(jiǎn)介(一),本講內(nèi)容主要涉及增強(qiáng)學(xué)習(xí)基本概念及Deep Q Learning的相關(guān)內(nèi)容。
傳送門:干貨 | 算法工程師入門第二期——穆黎森講增強(qiáng)學(xué)習(xí)(二)
今天我很榮幸有機(jī)會(huì)在這里,跟大家分享增強(qiáng)學(xué)習(xí)(Reinforcement Learning,RL)這個(gè)話題。這次分享,我希望能達(dá)到三方面的目的:
第一,希望沒有相關(guān)背景的同學(xué)能夠?qū)L有一定的了解,所以我會(huì)介紹一些基礎(chǔ)的概念。
第二,希望對(duì)有機(jī)器學(xué)習(xí)算法背景的同學(xué),如果對(duì)增強(qiáng)學(xué)習(xí)感興趣的話,能了解到RL近期的一些進(jìn)展。
第三,對(duì)我而言也是對(duì)于相關(guān)知識(shí)的整理。
這次分享主要包括以下三個(gè)環(huán)節(jié):
關(guān)于增強(qiáng)學(xué)習(xí)的一些基本概念;
Deep Q Learning。DQN這個(gè)工作成功地把深度學(xué)習(xí)應(yīng)用在了RL領(lǐng)域,所以會(huì)單獨(dú)介紹一下;
在Deep Q Learning之后,近期的一些進(jìn)展。
機(jī)器學(xué)習(xí)
首先,什么是增強(qiáng)學(xué)習(xí),它和監(jiān)督學(xué)習(xí)有什么不同?
他們都有學(xué)習(xí)這個(gè)詞,那什么是機(jī)器學(xué)習(xí)呢?根據(jù)Tom M. Mitchell的表述:為了完成某個(gè)任務(wù)(Task)的計(jì)算機(jī)程序,如果隨著某種形式的經(jīng)驗(yàn)(Experience)的增加,在某個(gè)表現(xiàn)度量(Performance measure)的衡量下,表現(xiàn)越來越好,我們就可以說,這是一個(gè)機(jī)器學(xué)習(xí)的程序。
所以這里,機(jī)器學(xué)習(xí)的三個(gè)特征元素:T:Task, E: Experience, P: Performance measure。先舉一個(gè)反例。
假設(shè)現(xiàn)在需要完成的任務(wù)是,根據(jù)下班的時(shí)刻,預(yù)測(cè)回家花在路上的時(shí)間。我們知道,高峰期會(huì)堵車,回家時(shí)間會(huì)長(zhǎng)一些;如果加班到晚上,路上會(huì)更通暢一些。這時(shí)候,我寫了一個(gè)程序來完成這個(gè)任務(wù):f(t)=1.0 – 0.5 * (t-18) / 6
t 為時(shí)刻,取值[18,24];返回值表示小時(shí)數(shù)。很明顯,只要輸入確定,這個(gè)程序(算法)的輸出就確定了;所以,是不具有學(xué)習(xí)的能力的。究其原因,是算法中沒有任何可以改變的部分。所以,我可以寫另外一個(gè)程序:f(t)=a – b * (t-18) / 6
其中,a,b是兩個(gè)變量,如果我們的算法能讓f(t)在執(zhí)行了多次預(yù)測(cè)后,不斷調(diào)整a,b的值,使之結(jié)果結(jié)果越來越接近真實(shí)的值,那么,這個(gè)算法是具有學(xué)習(xí)的能力的。 所以,通常機(jī)器學(xué)習(xí)的算法程序,其中需要有一部分是可以隨著Experience而自動(dòng)調(diào)整的。這些可改變的部分,通常屬于算法模型(Model)的一部分。
這里引入模型(Model)的概念。對(duì)于比較復(fù)雜的任務(wù),完美完成這個(gè)任務(wù)的真實(shí)的函數(shù)我們通常不知道,既不知道他的參數(shù),甚至也不知道他的結(jié)構(gòu)。那我們就對(duì)這個(gè)函數(shù)的結(jié)構(gòu)做一個(gè)假設(shè),叫做模型(Model),比如說我們假設(shè)它是一個(gè)用神經(jīng)網(wǎng)絡(luò)(neural network)可以去解決的問題,然后用這個(gè)模型來逼近我們想要的真實(shí)函數(shù)。這個(gè)Model里通常會(huì)有很多的參數(shù),也就是可以改變的自由度。這些自由度就組成了一個(gè)空間,我們需要做的就是在這個(gè)空間里面去尋找,到底哪一個(gè)參數(shù)組合能讓這個(gè)Model最接近我們想要的真實(shí)函數(shù)。
在很多機(jī)器學(xué)習(xí)的算法中,學(xué)習(xí)的過程,就是尋找模型的最優(yōu)參數(shù)的過程。
監(jiān)督學(xué)習(xí)
我們來看第一個(gè)任務(wù)的例子,圖像分類(Image Classification)。我們知道,如果有標(biāo)注好的數(shù)據(jù)集,就可以用監(jiān)督學(xué)習(xí)的方法來完成這個(gè)任務(wù)。那么在這里,機(jī)器學(xué)習(xí)的三個(gè)元素:
T: Task 是把每張圖片標(biāo)注一個(gè)合適的label;
E: Experience是很多已經(jīng)標(biāo)注好的圖像的數(shù)據(jù)集;
P: Performance Measure 就是標(biāo)注的準(zhǔn)確度,比如Precision、Recall這些CV領(lǐng)域的衡量標(biāo)準(zhǔn)。
監(jiān)督學(xué)習(xí)怎么解決這個(gè)問題呢?首先,建立一個(gè)模型(Model),model的輸入是圖像,輸出是圖像的分類標(biāo)簽。然后,對(duì)于標(biāo)注好的圖像,用另外一個(gè)函數(shù)去衡量model的輸出與正確的輸出之前的差距,這個(gè)函數(shù)通常被叫做損失函數(shù)(loss function)。于是,改進(jìn)model的表現(xiàn)的問題,就轉(zhuǎn)化成了一個(gè)優(yōu)化問題:通過改變model的參數(shù),讓loss function值越來越接近極小值。優(yōu)化問題(optimization)又是一個(gè)比較大的話題,就可以用各種各樣的數(shù)值方法去求解。從優(yōu)化問題的角度來講,監(jiān)督學(xué)習(xí)的特點(diǎn)就是loss function由model輸出和正確輸出之間的差別直接構(gòu)造而來。
增強(qiáng)學(xué)習(xí)
我們來看第二個(gè)任務(wù)的例子,玩游戲。這個(gè)任務(wù)的目標(biāo)是得到盡量高的分?jǐn)?shù)。在這個(gè)任務(wù)里,通常不再有“標(biāo)注好的數(shù)據(jù)”以供使用:在第一個(gè)局面下,應(yīng)該往左;在第四個(gè)局面下,應(yīng)該往右,等等。這種情況下,我們可以用增強(qiáng)學(xué)習(xí)的方法來完成這個(gè)任務(wù)。機(jī)器學(xué)習(xí)的三個(gè)元素:
T: Task是游戲結(jié)束時(shí),得到盡量高的分?jǐn)?shù);
E: Experience 是不斷的嘗試玩這個(gè)游戲;
P: Performance measure 就是最后獲取的分?jǐn)?shù)。
可以看到上述兩個(gè)例子之間的區(qū)別。相似的問題還有很多:
例如下圍棋,或者很多棋牌類游戲到最后一刻決定輸贏的時(shí)候,我才知道我是贏(得分+1),還是輸(得分-1),但是中間也許并不是每時(shí)每刻都有一個(gè)直接的信號(hào)告訴我應(yīng)該下在哪里;
例如駕駛,成功到達(dá)了目標(biāo),中間有沒有發(fā)生事故或者違反交通規(guī)則,就算成功完成了這個(gè)任務(wù)(+1),中間也許并不是每時(shí)每刻都有一個(gè)專家來指導(dǎo)當(dāng)前應(yīng)該怎么前進(jìn);
例如機(jī)器人控制, 機(jī)械臂成功抓取到物體就算完成(+1),但是事先并不知道每個(gè)時(shí)間點(diǎn),每種情況下,機(jī)械臂的每一個(gè)電機(jī)應(yīng)該輸入的電壓是多少。
根據(jù)剛才的例子,我們提煉出增強(qiáng)學(xué)習(xí)的一般過程中,所涉及到的模塊:
Agent,包括了我們需要學(xué)習(xí)的model,他是通過輸入的狀態(tài)(State)輸出一個(gè)行為(Action),通過這個(gè)action和環(huán)境(Environment)去交互,收集到獎(jiǎng)勵(lì)(Reward);學(xué)習(xí)的目標(biāo)是需要去最大化累積的回饋。
可以看到,在一般性的定義下:
T: Task就是為了執(zhí)行某個(gè)任務(wù),在某個(gè)特定環(huán)境下得到一個(gè)最優(yōu)或者說比較優(yōu)的策略。
E: Experience就是我不斷地去和環(huán)境交互,所得到的交互結(jié)果,單次的交互我們把它叫做Transition,連續(xù)的交互序列也叫做Trajectory。一條完整的trajectory是從初始狀態(tài)出發(fā),到結(jié)束狀態(tài)(如果有的話)為止。無結(jié)束狀態(tài)的任務(wù),trajectory可以無限延續(xù);有結(jié)束狀態(tài)的任務(wù)也被稱為Episodic task。
P: Performance Measure: 在RL里,通常使用的Performance Measure叫做Discounted Future Reward。
Discounted Future Reward
Discounted Future Reward 定義如下:
也就是最后一行。我們希望Agent能給出一個(gè)策略(Policy):在某個(gè)state下,輸出action,使得收到的Discounted Future Reward 最大化。
通常γ會(huì)選取一個(gè)小于1大于0的值。如果取0的話,相當(dāng)于策略只用考慮當(dāng)前一步能收集到的獎(jiǎng)勵(lì)而不顧及長(zhǎng)期回報(bào);如果取1的話,則不好處理持續(xù)(無限長(zhǎng))的決策序列問題。
Policy, Value, Transition Model
增強(qiáng)學(xué)習(xí)中,比較重要的幾個(gè)概念:
Policy 就是我們的算法追求的目標(biāo),可以看做一個(gè)函數(shù),在輸入state的時(shí)候,能夠返回此時(shí)應(yīng)該執(zhí)行的action或者action的概率分布。
Value,價(jià)值函數(shù),表示在輸入state,action的時(shí)候,能夠返回在 state下,執(zhí)行這個(gè)action能得到的Discounted future reward的(期望)值。
Transition model是說環(huán)境本身的結(jié)構(gòu)與特性:當(dāng)在state執(zhí)行action的時(shí)候,系統(tǒng)會(huì)進(jìn)入的下一個(gè)state,也包括可能收到的reward。
所以很顯然,以上三者互相關(guān)聯(lián)。如果能得到一個(gè)好的Policy function的話,那算法的目的已經(jīng)達(dá)到了。 如果能得到一個(gè)好的Value function的話,那么就可以在這個(gè)state下,選取value值高的那個(gè)action, 自然也是一個(gè)較好的策略。如果能的到一個(gè)好的transition model的話,一方面,有可能可以通過這個(gè)transition model直接推演出最佳的策略;另一方面,也可以用來指導(dǎo)policy function或者value function 的學(xué)習(xí)過程。
所以,增強(qiáng)學(xué)習(xí)的方法,大體可以分為三類:
Value-based RL,值方法。顯式地構(gòu)造一個(gè)model 來表示值函數(shù)Q,找到最優(yōu)策略對(duì)應(yīng)的Q 函數(shù),自然就找到了最優(yōu)策略。
Policy-based RL,策略方法。顯式地構(gòu)造一個(gè)model來表示策略函數(shù),然后去尋找能最大化discounted future reward的。
Model-based RL,基于環(huán)境模型的方法。先得到關(guān)于environment transition的model,然后再根據(jù)這個(gè)model去尋求最佳的策略。
以上三種方法并不是一個(gè)嚴(yán)格的劃分,很多RL算法同時(shí)具有一種以上的特性。
Bellman Equation
根據(jù)以上R(Discounted Future Reward),Q的定義,我們可以得到Bellman Equation:
Bellman Equation 是RL中非常基礎(chǔ)的一個(gè)公式。因?yàn)閷?duì)于Value Based method 來說,Bellman Equation 給出了一個(gè)迭代改進(jìn)Q函數(shù)的方法:
而對(duì)于Policy Based Method 來說, 通常需要通過采樣的方式對(duì)Q值進(jìn)行估計(jì);在各種各樣的估計(jì)方法中,Bellman Equation也扮演了重要的角色。
Value Based Method
這里給出一個(gè)值方法的算法的例子:Q learning
Policy Based Method
這里給出策略方法的一個(gè)例子:policy gradient
所謂策略梯度,是指當(dāng)策略函數(shù)可微的時(shí)候,通過找到一個(gè)合適的loss function來使得策略函數(shù)的模型可以用基于梯度的優(yōu)化方法來迭代改進(jìn)。關(guān)于loss function的構(gòu)造有很多種形式,上面的例子是比較基礎(chǔ)的形式,這里就不展開了,不過其基本的效果是,讓策略函數(shù)傾向于輸出“更好的”action:對(duì)于隨機(jī)策略來說,即意味著增大能獲得更大的期望Q值的action的概率。
回顧一下之前舉的Q learning的例子。最早的Q-learning使用一個(gè)表格來表示Q函數(shù):對(duì)于每一個(gè)state, action對(duì),保存一個(gè)對(duì)應(yīng)的Q值。Q learning的過程就是迭代修改這個(gè)表格的過程??梢园l(fā)現(xiàn),當(dāng)state數(shù)量非常多,或者不再可枚舉、維度非常高的情況下,表格就不適用了;需要用更經(jīng)濟(jì)的model來模擬這個(gè)表格。
深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network),在計(jì)算機(jī)視覺領(lǐng)域已經(jīng)被證明是一個(gè)非常強(qiáng)大的函數(shù)擬合工具,可以用來表達(dá)非常復(fù)雜的視覺處理函數(shù),來處理高維的圖像輸入。基于DNN的方法已經(jīng)成為計(jì)算機(jī)視覺中很多問題的最好的解決方法。所以,是否能將更強(qiáng)的工具DNN,引入RL領(lǐng)域,來解決更困難的問題呢?
Deep Q learning 這個(gè)工作就是將DNN/CNN引入RL來作為Q函數(shù)的model。
DNN的loss function 定義如下:
這個(gè)loss function也是由Bellman equation得出,其中
也被稱為Temporal Difference,TD??梢钥闯觯@也是一個(gè)迭代的過程:通過當(dāng)前的Q函數(shù)的輸出和環(huán)境中收集到的獎(jiǎng)勵(lì)r,來得到新的修正后的Q值。
新的挑戰(zhàn)
但是,神經(jīng)網(wǎng)絡(luò)的引入,也引發(fā)了新的問題。
第一個(gè)問題是神經(jīng)網(wǎng)絡(luò)的計(jì)算代價(jià)較大,所以對(duì)函數(shù)的形式從上圖左邊所示調(diào)整為右邊,一次計(jì)算就能得出這個(gè)state下所有action的Q值。
第二個(gè)問題是,在RL中,agent和environment交互所得到的transition序列的數(shù)據(jù)不是獨(dú)立同分布的;而對(duì)于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練來說,訓(xùn)練數(shù)據(jù)采樣的獨(dú)立同分布是非常有必要的。所以,這里引入了一個(gè)replay memory的機(jī)制,將transition保存到一定大小的replay memory中,然后從中重新采樣。這樣,樣本之間的相關(guān)性就小很多了。
第三個(gè)問題是,由于新的Q值是由原來的Q值計(jì)算而來,更新后的神經(jīng)網(wǎng)絡(luò)又用來計(jì)算新一輪的Q值,對(duì)于神經(jīng)網(wǎng)絡(luò)來說,相當(dāng)于不斷擬合一個(gè)移動(dòng)的目標(biāo)值,可能會(huì)產(chǎn)生一種正反饋效應(yīng),讓訓(xùn)練的過程變得發(fā)散。解決這個(gè)問題的手段是,增加一個(gè)目標(biāo)網(wǎng)絡(luò)target用來計(jì)算新的Q值,讓這個(gè)目標(biāo)網(wǎng)絡(luò)隔一段時(shí)間更新成當(dāng)前的網(wǎng)絡(luò)參數(shù),所以,target網(wǎng)絡(luò)在兩次更新之間保持不變,網(wǎng)絡(luò)擬合目標(biāo)的移動(dòng)問題也得到了緩解。
在DQN這個(gè)工作中,使用了卷積神經(jīng)網(wǎng)絡(luò)(CNN)來處理圖像的輸入,最后輸出游戲的動(dòng)作指令;成功地實(shí)現(xiàn)了僅根據(jù)觀察游戲的屏幕輸出和獎(jiǎng)勵(lì)來學(xué)會(huì)玩游戲的過程。
這里,相鄰的4幀被合并到一起,作為一個(gè)state,這樣,神經(jīng)網(wǎng)絡(luò)有機(jī)會(huì)從多幀抽取信息,比如屏幕上物體的運(yùn)動(dòng)速度。
可以看到,在不少游戲上,DQN都達(dá)到了人類的操作水平。
未完待續(xù)
(下一講內(nèi)容敬請(qǐng)關(guān)注《大牛講堂》專欄)
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。