強(qiáng)化學(xué)習(xí)是機(jī)器學(xué)習(xí)領(lǐng)域的一個分支优质,通過不斷的與環(huán)境交互牲证,不斷的積累經(jīng)驗,最后讓Agent學(xué)會如何在目標(biāo)環(huán)境中取得最高的得分锤窑。在本篇文章中璧针,筆者將介紹一些強(qiáng)化學(xué)習(xí)的基礎(chǔ)知識,文章中不會涉及任何數(shù)學(xué)公式渊啰。
強(qiáng)化學(xué)習(xí)的基本過程
強(qiáng)化學(xué)習(xí)RL的整個過程就好比一個游戲玩家去探索一款新的游戲探橱,通過一次一次的與游戲交互,學(xué)會一套操作得到最高分绘证。
玩家是怎么探索游戲的呢隧膏?首先玩家觀察游戲的場景,往往是游戲當(dāng)前的圖像嚷那。然后胞枕,玩家輸入一套操作作用于游戲,然后游戲會給玩家一個反饋魏宽,比如得分腐泻,之后游戲轉(zhuǎn)換到下一個場景决乎。最后,玩家通過得分來判斷自己的操作的優(yōu)劣,如果分?jǐn)?shù)增加,那么下一次遇到整個場景的時候就繼續(xù)使用這一套操作爹谭,如果分?jǐn)?shù)減少畜伐,那么就換一套操作。整個過程不斷反復(fù),玩家最終學(xué)會一套操作來拿到最高分。
在強(qiáng)化學(xué)習(xí)中玩家一般被稱為智能體(Agent)而游戲被稱為環(huán)境(Environment),智能體根據(jù)環(huán)境的狀態(tài)(State)彤侍,通過一個策略函數(shù),輸出一個行為(Action)逆趋,將行為作用于環(huán)境盏阶,環(huán)境再給予智能體獎勵(Reward),同時環(huán)境會轉(zhuǎn)移到下一個狀態(tài)闻书。最終名斟,找到一個最優(yōu)的策略,使得智能體可以盡可能多的獲得來自環(huán)境的獎勵魄眉。整個過程如下圖所示:
Model-based和Model-free
在強(qiáng)化學(xué)習(xí)領(lǐng)域砰盐,對于強(qiáng)化學(xué)習(xí)模型的分類可以分為Model-based和Model-free。這里的Model-based和Model-free坑律,很多人給翻譯成了有模型和無模型岩梳,筆者不贊成這種翻譯,容易造成誤導(dǎo)晃择。事實上無論是Model-based還是Model-free冀值,他們都具有算法模型。
兩者的不同之處在于宫屠,前者會觀察環(huán)境的狀態(tài)列疗,模擬環(huán)境的工作機(jī)制,可以理解為創(chuàng)建一個虛擬的環(huán)境浪蹂。通過這個虛擬的環(huán)境抵栈,預(yù)測動作可能造成的環(huán)境狀態(tài)的變化以及可能收集到的獎勵,再通過動態(tài)規(guī)劃的方式找出一條最優(yōu)路徑乌逐,即最優(yōu)的動作決策竭讳。說的直白一點就是Model-based類的強(qiáng)化學(xué)習(xí)模型會通過模仿環(huán)境创葡,在腦海里先演算一下采取某種動作之后會造成環(huán)境怎樣變化浙踢,環(huán)境變化之后再采取某種動作,如此反復(fù)灿渴,最后找出一個最優(yōu)的決策洛波,最后再落實到真實環(huán)境中胰舆。就好比下象棋的時候,玩家會在腦海里先思考自己下某一步棋之后蹬挤,對手會如何反應(yīng)缚窿,對手反應(yīng)之后自己應(yīng)該如何應(yīng)對,思考n步之后的情況焰扳,找出最有優(yōu)勢的一套下棋步驟再去落子一樣倦零。
因此,在判斷模型是Model-based還是Model-free吨悍,只需要思考扫茅,該模型是否能預(yù)測往后n步的環(huán)境狀態(tài)。
由于Model-based模型需要創(chuàng)建一個虛擬的環(huán)境育瓜,可以理解為需要了解環(huán)境的運(yùn)作機(jī)制葫隙,所以筆者傾向于將Model-based翻譯為環(huán)境相關(guān)性模型。而Model-free模型不需要了解環(huán)境的運(yùn)作機(jī)制躏仇,所以筆者傾向于翻譯為環(huán)境無關(guān)性模型恋脚。
基于概率和基于值
強(qiáng)化學(xué)習(xí)的模型有兩種流派,一種是基于值的模型焰手,另一種是基于概率的模型糟描。兩者的區(qū)別在于,模型到底如何去選擇哪種動作册倒,即策略函數(shù)的輸出蚓挤。
基于值的模型,在接受到環(huán)境的狀態(tài)信息之后驻子,會輸出動作空間中每一個動作反饋到環(huán)境中可能得到的獎勵灿意,一般取得到獎勵最大的那個動作即可〕绾牵基于值的模型缤剧,往往用于解決離散型動作空間的情況。經(jīng)典的模型有基于Q-learning算法得到的DQN域慷,Double-DQN等模型荒辕。
基于概率的模型,在接受到環(huán)境的狀態(tài)信息之后犹褒,會直接輸出動作空間中抵窒,采取每一個動作的概率,之后根據(jù)動作空間的概率分布作采樣叠骑,得到一個或者一組動作李皇。基于概率的模型宙枷,往往用于解決連續(xù)型動作空間的情況掉房。經(jīng)典模型有Policy Gradient算法以及Actor-crictic模型等等茧跋。
離散型動作空間和連續(xù)型動作空間
這里講一下什么是離散型動作空間,什么是連續(xù)型動作空間卓囚。離散型動作空間很好理解瘾杭,比如玩游戲時,控制角色前后左右移動哪亿,就是一個離散的行為粥烁,就是這么確定的一組行為。連續(xù)型動作空間指的是例如汽車方向盤轉(zhuǎn)動的角度蝇棉,可選范圍可以是0~360度页徐,甚至可以更細(xì)化一些,細(xì)化到什么粒度無法確定银萍。
其實將連續(xù)型動作空間按某種粒度切分变勇,例如將0~360度劃分為0,1,...,360,那么其實也可以作為離散值贴唇。那么為什么還要提出基于概率的模型來解決這個問題呢搀绣?原因在于,即使通過某種粒度將連續(xù)型動作劃分成離散值戳气,但是劃分之后的動作空間會相當(dāng)大链患,預(yù)測每一個動作的值很耗費(fèi)計算資源,其次采樣也變得很耗時瓶您。而輸出動作分布之后麻捻,則可以根據(jù)分布進(jìn)行隨機(jī)采樣,得出一個或者一組動作呀袱。當(dāng)然贸毕,連續(xù)型動作空間的采樣也很費(fèi)時,不過DeepMind已經(jīng)提出了DDPG模型來解決了這個問題夜赵。
回合更新和單步更新
在強(qiáng)化學(xué)習(xí)模型的訓(xùn)練過程中明棍,更新模型參數(shù)的方式有兩種,一種是回合更新寇僧,另一種是單步更新摊腋。單步更新意味著,在每一次模型和環(huán)境交互之后嘁傀,立即更新參數(shù)兴蒸。另一種是執(zhí)行完一個行為序列,即多個交互之后细办,將梯度收集在一起橙凳,再作更新。這就好比玩游戲,回合更新指的是在一個游戲回合之后進(jìn)行參數(shù)更新痕惋,單步更新指的是在每一步進(jìn)行參數(shù)更新。
實際上娃殖,在進(jìn)行模型訓(xùn)練的時候值戳,會傾向于選擇可以單步更新的模型,因為單步更新的效率比回合更新要高一些炉爆。
在線學(xué)習(xí)和離線學(xué)習(xí)
在線學(xué)習(xí)和離線學(xué)習(xí)針對的是在強(qiáng)化學(xué)習(xí)模型在訓(xùn)練過程中交互數(shù)據(jù)的使用方式堕虹。在線學(xué)習(xí)的強(qiáng)化學(xué)習(xí)模型,會在一個交互之后芬首,立即用本次交互得到的經(jīng)驗進(jìn)行訓(xùn)練赴捞。而離線學(xué)習(xí)的強(qiáng)化學(xué)習(xí)模型,往往是先將多個交互的經(jīng)驗存儲起來郁稍,然后在學(xué)習(xí)的時候赦政,從存儲的經(jīng)驗中取出一批交互經(jīng)驗來學(xué)習(xí)。
在線學(xué)習(xí)看起來好像和單步更新差不多耀怜,離線學(xué)習(xí)好像也和回合更新差不多恢着,但實際上毫無關(guān)聯(lián),不能混淆财破。在線學(xué)習(xí)模型掰派,可以采用回合更新的方式,即在回合中每次交互之后的時候?qū)⑻荻扔嬎愫米罅。4嫫饋砻蚁郏睾辖Y(jié)束之后批量更新。離線學(xué)習(xí)模型也可以采用單步更新的方式俊性,每一個交互產(chǎn)生之后略步,就從存儲的經(jīng)驗中拿出一批數(shù)據(jù)計算梯度,更新參數(shù)定页,這一過程稱為經(jīng)驗回放纳像。
數(shù)據(jù)相關(guān)性
這里的數(shù)據(jù)指的是智能體與環(huán)境交互而得來的經(jīng)驗。那么什么是數(shù)據(jù)相關(guān)性呢拯勉?數(shù)據(jù)相關(guān)性指的是數(shù)據(jù)之間的依賴關(guān)系竟趾。在強(qiáng)化學(xué)習(xí)的過程中,環(huán)境當(dāng)前所處的狀態(tài)宫峦,往往由上一個狀態(tài)轉(zhuǎn)移過來岔帽,環(huán)境未來的狀態(tài),也是由當(dāng)前狀態(tài)轉(zhuǎn)移過去的导绷。因此犀勒,數(shù)據(jù)之間有著時間上的依賴。
在線學(xué)習(xí)模型中,這種相關(guān)性導(dǎo)致了對交互經(jīng)驗的利用不充分贾费,一份交互經(jīng)驗往往只會學(xué)習(xí)一次钦购,或者比較少的幾次。這種情況下褂萧,模型并不能充分完成經(jīng)驗的學(xué)習(xí)押桃。離線學(xué)習(xí)模型的提出,就是為了解決這一問題导犹。通過將交互經(jīng)驗存儲起來唱凯,通過經(jīng)驗回放的方式進(jìn)行學(xué)習(xí),一份經(jīng)驗可以學(xué)習(xí)多次谎痢,這樣就可以讓模型充分利用現(xiàn)有的經(jīng)驗磕昼。
到此,強(qiáng)化學(xué)習(xí)的一些基本概念介紹完成了节猿。強(qiáng)化學(xué)習(xí)涉及到的領(lǐng)域知識非常多票从,筆者根據(jù)自己所了解的知識,總結(jié)了以上基本概念滨嘱,歡迎批評指正纫骑。
Reference
https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/1-1-B-RL-methods/