前言
22年底/23年初ChatGPT大火,在寫《ChatGPT技術(shù)原理解析》的過程中
- 發(fā)現(xiàn)ChatGPT背后技術(shù)涉及到了RL/RLHF,,于是又深入研究RL,,研究RL的過程中又發(fā)現(xiàn)里面的數(shù)學(xué)公式相比ML/DL更多
- 于此激發(fā)我一邊深入RL,一邊重修微積分,、概率統(tǒng)計(jì),、最優(yōu)化
前者成就了本篇RL極簡入門,后者成就了另兩篇數(shù)學(xué)筆記:概率統(tǒng)計(jì)極簡入門(23修訂版),、一文通透優(yōu)化算法(23修訂版)
如上篇ChatGPT筆記所說,本文最早是作為ChatGPT筆記的第一部分的,,但RL細(xì)節(jié)眾多,,如果想完全在上篇筆記里全部介紹清楚,最后篇幅將長之又長同時(shí)還影響完讀率,,為了避免因?yàn)槠拗贫鴮?dǎo)致RL很多細(xì)節(jié)闡述的不夠細(xì)致,故把RL相關(guān)的部分從上文中抽取出來獨(dú)立成本文
- 一方面,,原有內(nèi)容「第一部分 RL基礎(chǔ):什么是RL與MRP,、MDP,,和第四部分 策略學(xué)習(xí):從策略梯度到TRPO,、PPO算法」繼續(xù)完善、改進(jìn),,完善記錄見本文文末
- 二方面,,在原有內(nèi)容上新增了以下這兩部分內(nèi)容的詳細(xì)闡述:
第二部分 RL進(jìn)階之三大表格求解法:DP、MC,、TD 第三部分 價(jià)值學(xué)習(xí):從n步Sarsa算法到Q-learning,、DQN
另,本文有兩個(gè)特色
- 定位入門,。過去一個(gè)多月,,我翻遍了十來本RL中文書,以及網(wǎng)上各種RL資料
有的真心不錯(比如sutton的RL書,但此前從來沒有接觸過RL的不建議一上來就看該書,,除非你看過本文之后) 其余大部分要么就是堆砌概念/公式,,要么對已經(jīng)入門的不錯,但對還沒入門的初學(xué)者極度不友好,,比如 很多背景知識甚至公式說明,、符號說明沒有交待 且經(jīng)常有的書一套符號表示,另一本書又是另一套符號表示,,導(dǎo)致很多初學(xué)者一開始以為看懂了,,結(jié)果看到另一本書不同的符號表示后,又陷入了自我懷疑(因?yàn)槌鯇W(xué)者最開始還沒法一眼看出其實(shí)各種符號表示的本質(zhì)都是一樣的),,經(jīng)??吹迷评镬F里、不勝其煩 本文會假定大部分讀者此前從來沒有接觸過RL,,會盡可能多舉例,、多配圖、多交待,,100個(gè)臺階,,一步一步拾級而上,不出現(xiàn)任何斷層 - 推導(dǎo)細(xì)致,。本文之前,,99%的文章都不會把PPO算法從頭推到尾,本文會把PPO從零推到尾,,按照“RL-策略梯度-重要性采樣(重要性權(quán)重)-增加基線(避免獎勵總為正)-TRPO(加進(jìn)KL散度約束)-PPO(解決TRPO計(jì)算量大的問題)”的順序逐步介紹每一步推導(dǎo)
且為徹底照顧初學(xué)者,,本文會解釋/說明清楚每一個(gè)公式甚至符號,包括推導(dǎo)過程中不省任何一個(gè)必要的中間推導(dǎo)步驟,,十步推導(dǎo)絕不略成三步
總之,,大部分寫書、寫教材,、寫文章的人過了那個(gè)從不懂到懂的過程,,所以懂的人寫給不懂的人看,處處都是用已懂的思維去寫,,而不是用怎么從不懂到懂的思維 去寫,,?未來三年 奮筆疾書,不斷給更多初學(xué)者普及AI和RL技術(shù)
第一部分 RL基礎(chǔ):什么是RL與MRP,、MDP
1.1 入門強(qiáng)化學(xué)習(xí)所需掌握的基本概念
1.1.1 什么是強(qiáng)化學(xué)習(xí):依據(jù)策略執(zhí)行動作-感知狀態(tài)-得到獎勵
強(qiáng)化學(xué)習(xí)里面的概念,、公式,相比ML/DL特別多,,初學(xué)者剛學(xué)RL時(shí),,很容易被接連不斷的概念,、公式給繞暈,而且經(jīng)常忘記概念與公式符號表達(dá)的一一對應(yīng),。
為此,,我建議學(xué)習(xí)RL的第一步就是一定要扎實(shí)關(guān)于RL的一些最基本的概念、公式(不要在扎實(shí)基礎(chǔ)的階段圖快或圖圇吞棗,,不然后面得花更多的時(shí)間,、更大的代價(jià)去彌補(bǔ)),且把概念與公式的一一對應(yīng)關(guān)系牢記于心,,這很重要,。當(dāng)然,為最大限度的提高本文的可讀性,,我會盡可能的多舉例,、多配圖。
另,,RL里面存著大量的數(shù)學(xué),,考慮到可以為通俗而增加篇幅,但不為了介紹而介紹式的增加篇幅,,故
- 像高數(shù)/概率統(tǒng)計(jì)里的什么叫導(dǎo)數(shù),,期望以及什么叫概率分布、熵/香濃熵(Shannon熵)/交叉熵,、相對熵(也稱KL散度,,即KL divergence)、多元函數(shù),、偏導(dǎo)數(shù),,可以參見Wikipedia或《概率統(tǒng)計(jì)極簡入門:通俗理解微積分/期望方差/正態(tài)分布前世今生(23修訂版)》等類似筆記
- 而AI一些最基本的概念比如損失函數(shù)、梯度,、梯度下降、隨機(jī)梯度下降(SGD),、學(xué)習(xí)率等,,可以參考此篇筆記:《一文通透優(yōu)化算法:從梯度下降,、SGD到牛頓法、共軛梯度(23修訂版)》,,本文則不過多介紹
話休絮煩,,下面進(jìn)入正題,且先直接給出強(qiáng)化學(xué)習(xí)的定義和其流程,,然后再逐一拆解,、說明,。
所謂強(qiáng)化學(xué)習(xí)(Reinforcement Learning,簡稱RL),,是指基于智能體在復(fù)雜,、不確定的環(huán)境中最大化它能獲得的獎勵,從而達(dá)到自主決策的目的,。
經(jīng)典的強(qiáng)化學(xué)習(xí)模型可以總結(jié)為下圖的形式(你可以理解為任何強(qiáng)化學(xué)習(xí)都包含這幾個(gè)基本部分:智能體,、行為,、環(huán)境,、狀態(tài),、獎勵):
一般的文章在介紹這些概念時(shí)很容易一帶而過,,這里我把每個(gè)概念都逐一解釋下
- Agent,,一般譯為智能體,,就是我們要訓(xùn)練的模型,,類似玩超級瑪麗的時(shí)候操縱馬里奧做出相應(yīng)的動作,,而這個(gè)馬里奧就是Agent
- action(簡記為),,玩超級瑪麗的時(shí)候你會控制馬里奧做三個(gè)動作,,即向左走、向右走和向上跳,,而馬里奧做的這三個(gè)動作就是action
- Environment,,即環(huán)境,它是提供reward的某個(gè)對象,,它可以是AlphaGo中的人類棋手,,也可以是自動駕駛中的人類駕駛員,甚至可以是某些游戲AI里的游戲規(guī)則
- reward(簡記為),,這個(gè)獎賞可以類比為在明確目標(biāo)的情況下,,接近目標(biāo)意味著做得好則獎,遠(yuǎn)離目標(biāo)意味著做的不好則懲,,最終達(dá)到收益/獎勵最大化,,且這個(gè)獎勵是強(qiáng)化學(xué)習(xí)的核心
- State(簡介為),可以理解成環(huán)境的狀態(tài),,簡稱狀態(tài)
總的而言,,Agent依據(jù)策略決策從而執(zhí)行動作action,然后通過感知環(huán)境Environment從而獲取環(huán)境的狀態(tài)state,,進(jìn)而,,最后得到獎勵reward(以便下次再到相同狀態(tài)時(shí)能采取更優(yōu)的動作),然后再繼續(xù)按此流程“依據(jù)策略執(zhí)行動作-感知狀態(tài)--得到獎勵”循環(huán)進(jìn)行,。
1.1.2 RL與監(jiān)督學(xué)習(xí)的區(qū)別和RL方法的分類
此外,,RL和監(jiān)督學(xué)習(xí)(supervised learning)的區(qū)別:
- 監(jiān)督學(xué)習(xí)有標(biāo)簽告訴算法什么樣的輸入對應(yīng)著什么樣的輸出(譬如分類、回歸等問題)
所以對于監(jiān)督學(xué)習(xí),,目標(biāo)是找到一個(gè)最優(yōu)的模型函數(shù),,使其在訓(xùn)練數(shù)據(jù)集上最小化一個(gè)給定的損失函數(shù),,相當(dāng)于最小化預(yù)測誤差 最優(yōu)模型 = arg minE {
[損失函數(shù)(標(biāo)簽,模型(特征)] } RL沒有標(biāo)簽告訴它在某種情況下應(yīng)該做出什么樣的行為,只有一個(gè)做出一系列行為后最終反饋回來的reward,,然后判斷當(dāng)前選擇的行為是好是壞 相當(dāng)于RL的目標(biāo)是最大化智能體策略在和動態(tài)環(huán)境交互過程中的價(jià)值,,而策略的價(jià)值可以等價(jià)轉(zhuǎn)換成獎勵函數(shù)的期望,即最大化累計(jì)下來的獎勵期望 最優(yōu)策略 = arg maxE {
[獎勵函數(shù)(狀態(tài),動作)] } - 監(jiān)督學(xué)習(xí)如果做了比較壞的選擇則會立刻反饋給算法
RL的結(jié)果反饋有延時(shí),,有時(shí)候可能需要走了很多步以后才知道之前某步的選擇是好還是壞 - 監(jiān)督學(xué)習(xí)中輸入是獨(dú)立分布的,,即各項(xiàng)數(shù)據(jù)之間沒有關(guān)聯(lián)
RL面對的輸入總是在變化,每當(dāng)算法做出一個(gè)行為,,它就影響了下一次決策的輸入
進(jìn)一步,,RL為得到最優(yōu)策略從而獲取最大化獎勵,有
- 基于值函數(shù)的方法,,通過求解一個(gè)狀態(tài)或者狀態(tài)下某個(gè)動作的估值為手段,,從而尋找最佳的價(jià)值函數(shù),找到價(jià)值函數(shù)后,,再提取最佳策略
比如Q-learning,、DQN等,適合離散的環(huán)境下,,比如圍棋和某些游戲領(lǐng)域 - 基于策略的方法,,一般先進(jìn)行策略評估,即對當(dāng)前已經(jīng)搜索到的策略函數(shù)進(jìn)行估值,,得到估值后,,進(jìn)行策略改進(jìn),不斷重復(fù)這兩步直至策略收斂
比如策略梯度法(policy gradient,,簡稱PG),,適合連續(xù)動作的場景,比如機(jī)器人控制領(lǐng)域 以及Actor-Criti(一般被翻譯為演員-評論家算法),,Actor學(xué)習(xí)參數(shù)化的策略即策略函數(shù),,Criti學(xué)習(xí)值函數(shù)用來評估狀態(tài)-動作對,不過,,Actor-Criti本質(zhì)上是屬于基于策略的算法,,畢竟算法的目標(biāo)是優(yōu)化一個(gè)帶參數(shù)的策略,只是會額外學(xué)習(xí)價(jià)值函數(shù),,從而幫助策略函數(shù)更好的學(xué)習(xí) 此外,,還有對策略梯度算法的改進(jìn),,比如TRPO算法,、PPO算法,當(dāng)然PPO算法也可稱之為是一種Actor-Critic架構(gòu),,下文會重點(diǎn)闡述
可能你還有點(diǎn)懵懵懂懂,,沒關(guān)系,,畢竟還有不少背景知識還沒有交待,比如RL其實(shí)是一個(gè)馬爾可夫決策過程(Markov decision process,,MDP),,而為說清楚MDP,得先從隨機(jī)過程,、馬爾可夫過程(Markov process,,簡稱MP)開始講起,故為考慮邏輯清晰,,我們還是把整個(gè)繼承/脈絡(luò)梳理下,。
1.2 什么是馬爾科夫決策過程
1.2.1 MDP的前置知識:隨機(jī)過程、馬爾可夫過程,、馬爾可夫獎勵
如HMM學(xué)習(xí)最佳范例中所說,,有一類現(xiàn)象是確定性的現(xiàn)象,比如紅綠燈系統(tǒng),,紅燈之后一定是紅黃,、接著綠燈、黃燈,,最后又紅燈,,每一個(gè)狀態(tài)之間的變化是確定的
但還有一類現(xiàn)象則不是確定的,比如今天是晴天,,誰也沒法百分百確定明天一定是晴天還是雨天,、陰天(即便有天氣預(yù)報(bào))
對于這種假設(shè)具有個(gè)狀態(tài)的模型
- 共有個(gè)狀態(tài)轉(zhuǎn)移,因?yàn)槿魏我粋€(gè)狀態(tài)都有可能是所有狀態(tài)的下一個(gè)轉(zhuǎn)移狀態(tài)
- 每一個(gè)狀態(tài)轉(zhuǎn)移都有一個(gè)概率值,,稱為狀態(tài)轉(zhuǎn)移概率,,相當(dāng)于從一個(gè)狀態(tài)轉(zhuǎn)移到另一個(gè)狀態(tài)的概率
- 所有的個(gè)概率可以用一個(gè)狀態(tài)轉(zhuǎn)移矩陣表示
下面的狀態(tài)轉(zhuǎn)移矩陣顯示的是天氣例子中可能的狀態(tài)轉(zhuǎn)移概率:
也就是說,如果昨天是晴天,,那么今天是晴天的概率為0.5,,是多云的概率為0.375、是雨天的概率為0.125,,且這三種天氣狀態(tài)的概率之和必為1,。
接下來,我們來抽象建模下,。正如概率論的研究對象是靜態(tài)的隨機(jī)現(xiàn)象,,而隨機(jī)過程的研究對象是隨時(shí)間演變的隨機(jī)現(xiàn)象(比如天氣隨時(shí)間的變化):
- 隨機(jī)現(xiàn)象在某時(shí)刻t的取值是一個(gè)向量隨機(jī)變量,用表示
比如上述天氣轉(zhuǎn)移矩陣便如下圖所示
- 在某時(shí)刻t的狀態(tài)通常取決于t時(shí)刻之前的狀態(tài),,我們將已知?dú)v史信息時(shí)下一個(gè)時(shí)刻的狀態(tài)的概率表示成
如此,,便可以定義一個(gè)所有狀態(tài)對之間的轉(zhuǎn)移概率矩陣
- 當(dāng)且僅當(dāng)某時(shí)刻的狀態(tài)只取決于上一時(shí)刻的狀態(tài)時(shí),一個(gè)隨機(jī)過程被稱為具有馬爾可夫性質(zhì),,即,,當(dāng)然了,,雖說當(dāng)前狀態(tài)只看上一個(gè)狀態(tài),但上一個(gè)狀態(tài)其實(shí)包含了更上一個(gè)狀態(tài)的信息,,所以不能說當(dāng)下與歷史是無關(guān)的
- 而具有馬爾可夫性質(zhì)的隨機(jī)過程便是馬爾可夫過程
在馬爾可夫過程的基礎(chǔ)上加入獎勵函數(shù)和折扣因子,,就可以得到馬爾可夫獎勵過程(Markov reward process,MRP),。其中
- 獎勵函數(shù),,某個(gè)狀態(tài)的獎勵,是指轉(zhuǎn)移到該狀態(tài)時(shí)可以獲得獎勵的期望,,有
注意,,有的書上獎勵函數(shù)和下面回報(bào)公式中的的下標(biāo)寫為,其實(shí)嚴(yán)格來說,,先有時(shí)刻的狀態(tài)/動作之后才有時(shí)刻的獎勵,,但應(yīng)用中兩種下標(biāo)法又都存在,讀者注意辨別 - 此外,,實(shí)際中,,因?yàn)橐粋€(gè)狀態(tài)可以得到的獎勵是持久的,所有獎勵的衰減之和稱為回報(bào),,可用表示當(dāng)下即時(shí)獎勵和所有持久獎勵等一切獎勵的加權(quán)和(考慮到一般越往后某個(gè)狀態(tài)給的回報(bào)率越低,,也即獎勵因子或折扣因子越小,用表示),,從而有 舉個(gè)例子,,一個(gè)少年在面對“上大學(xué)、去打工,、在家啃老”這三種狀態(tài),,哪一種更能實(shí)現(xiàn)人生的價(jià)值呢?
相信很多人為長遠(yuǎn)發(fā)展都會選擇上大學(xué),,因?yàn)樯磉呌刑嗳艘驗(yàn)樯狭舜髮W(xué),,而好事連連,比如讀研讀博留學(xué)深造,、進(jìn)入大廠,、娶個(gè)漂亮老婆、生個(gè)聰明孩子 當(dāng)然了,,上大學(xué)好處肯定多多,,但上大學(xué)這個(gè)狀態(tài)對上面4件好事所給予的貢獻(xiàn)必然是逐級降低,畢竟越往后,,越會有更多或更重要的因素成就更后面的好事,,總不能所有好事都百分百歸功于最開頭選擇了“上大學(xué)”這個(gè)狀態(tài)/決策嘛
而一個(gè)狀態(tài)的期望回報(bào)就稱之為這個(gè)狀態(tài)的價(jià)值,所有狀態(tài)的價(jià)值則組成了所謂的價(jià)值函數(shù),用公式表達(dá)為,,展開一下可得
在上式最后一個(gè)等式中
- 前半部分表示當(dāng)前狀態(tài)得到的即時(shí)獎勵
- 后半部分表示當(dāng)前狀態(tài)得到的所有持久獎勵,可以根據(jù)從狀態(tài)出發(fā)的轉(zhuǎn)移概率得到『至于上述推導(dǎo)的最后一步,,在于等于』
有個(gè)別朋友在我維護(hù)的Machine Learning讀書會群里說,,對上述推導(dǎo)最后一步的推導(dǎo)過程有疑問,考慮到本文追求詳盡細(xì)致,,加之大部分資料都是把這個(gè)當(dāng)結(jié)論默認(rèn)的,,故還是把這個(gè)推導(dǎo)過程詳細(xì)寫一下 可能又有同學(xué)對上述第二個(gè)等式怎么來的又有疑問了,怎么推導(dǎo)呢,?我們只需推導(dǎo)出 推導(dǎo)過程如下
從而,,綜合前后兩個(gè)部分可得
而這就是所謂的貝爾曼方程(bellman equation)。該公式精準(zhǔn)而簡潔,,其背后濃縮了很多信息,為形象起見,,舉個(gè)例子
比如狀態(tài)得到的即時(shí)獎勵為,,然后接下來,,有
- 的概率引發(fā)狀態(tài),此時(shí)狀態(tài)得到的即時(shí)獎勵為
對于,,接下來有的概率引發(fā)狀態(tài)(的即時(shí)獎勵為,后續(xù)無持久獎勵),,有的概率引發(fā)狀態(tài)(的即時(shí)獎勵為,,后續(xù)無持久獎勵) - 的概率引發(fā)狀態(tài),此時(shí)狀態(tài)得到的即時(shí)獎勵為
對于,接下來有的概率引發(fā)狀態(tài)(的即時(shí)獎勵為,后續(xù)無持久獎勵),有的概率引發(fā)狀態(tài)(的即時(shí)獎勵為,,后續(xù)無持久獎勵)
其中折扣因此為,,那么因狀態(tài)而得到的一切獎勵為
類似的,因狀態(tài)得到的一切獎勵為
為更加形象起見,,再舉一個(gè)生活中最常見的“吃飯-抽煙/剔牙”例子 比如你吃完飯后你自己的心情愉悅值即獎勵+5,然后下一個(gè)狀態(tài),有
- 0.6的概率是抽煙(抽煙帶來的心情愉悅值即獎勵+7,,要不說 飯后一支煙 賽過活神仙呢)
- 0.4的概率是剔牙(剔牙帶來的獎勵值+3)
假設(shè)折扣因子(上文說過了,,就是一個(gè)狀態(tài)對后續(xù)狀態(tài)的貢獻(xiàn)程度)為0.5,且假定
- 吃飯的狀態(tài)定義為,則
- 抽煙的狀態(tài)定義為,,則,,且由于抽煙之后無后續(xù)狀態(tài),所以也是7
- 剔牙的狀態(tài)定義為,,則,,且由于剔牙之后無后續(xù)狀態(tài),,所以也是3
從而有:
當(dāng)從時(shí), 當(dāng)從時(shí),,
由于狀態(tài)和狀態(tài)沒有后續(xù)狀態(tài),,所以和對應(yīng)的狀態(tài)值函數(shù)分別為
再根據(jù)貝爾曼方程,可得狀態(tài)的狀態(tài)價(jià)值函數(shù)為
當(dāng)然,,你也可以如此計(jì)算(可以很明顯的看出,,計(jì)算量不如上述過程簡潔,所以一般優(yōu)先按上述方式計(jì)算)
上述例子的狀態(tài)比較少所以計(jì)算量不大,,但當(dāng)狀態(tài)一多,,則貝爾曼方程的計(jì)算量還是比較大的,,而求解較大規(guī)模的馬爾可夫獎勵過程中的價(jià)值函數(shù)時(shí),可以用的方法包括:動態(tài)規(guī)劃,、蒙特卡洛方法,、時(shí)序差分(temporal difference,簡稱TD)方法 當(dāng)然,,其中細(xì)節(jié)還是不少的,,下文第二部分會詳述這三大方法
1.2.2 馬爾可夫決策過程(MDP):馬爾可夫獎勵(MRP) + 智能體動作因素
根據(jù)上文我們已經(jīng)得知,,在隨機(jī)過程的基礎(chǔ)上
- 增加馬爾可夫性質(zhì),即可得馬爾可夫過程
- 而再增加獎勵,,則得到了馬爾可夫獎勵過程(MRP)
- 如果我們再次增加一個(gè)來自外界的刺激比如智能體的動作,,就得到了馬爾可夫決策過程(MDP)
通俗講,MRP與MDP的區(qū)別就類似隨波逐流與水手劃船的區(qū)別
在馬爾可夫決策過程中,,(是狀態(tài)的集合)和(是獎勵的集合)的每個(gè)可能的值出現(xiàn)的概率只取決于前一個(gè)狀態(tài)和前一個(gè)動作(是動作的集合),,并且與更早之前的狀態(tài)和動作完全無關(guān)
換言之,當(dāng)給定當(dāng)前狀態(tài)(比如),,以及當(dāng)前采取的動作(比如),,那么下一個(gè)狀態(tài)出現(xiàn)的概率,可由狀態(tài)轉(zhuǎn)移概率矩陣表示如下
假定在當(dāng)前狀態(tài)和當(dāng)前動作確定后,,其對應(yīng)的獎勵則設(shè)為,,故sutton的RL一書中,給的狀態(tài)轉(zhuǎn)移概率矩陣類似為
從而可得獎勵函數(shù)即為(之前不小心把放在最后了,,后根據(jù)讀者的反饋?zhàn)隽诵拚?/em>)
考慮到后來有讀者對上面這個(gè)公式有疑惑,,所以解釋下推導(dǎo)步驟
- 首先,計(jì)算在狀態(tài)s下采取動作a后,,轉(zhuǎn)移到下一個(gè)狀態(tài)并獲得獎勵的概率,,表示為
- 然后,我們對所有可能的下一個(gè)狀態(tài)求和
- 并對所有可能的獎勵求和(不少情況下,,即使?fàn)顟B(tài)轉(zhuǎn)移和動作是已知的,,獎勵仍然可能是隨機(jī)的,比如買股票,,股票價(jià)格隨機(jī)波動,,導(dǎo)致購買之后的盈虧也具有隨機(jī)性)
整個(gè)過程相當(dāng)于將不同狀態(tài)轉(zhuǎn)移概率與對應(yīng)的獎勵相乘并相加,以得到條件期望
當(dāng)然,,如果獎勵是確定性的,,則可以簡化公式,去掉對的求和,,即:
相當(dāng)于此時(shí)只需要計(jì)算在狀態(tài)s下采取動作a后,,轉(zhuǎn)移到下一個(gè)狀態(tài)的概率乘以確定的獎勵,然后對所有可能的下一個(gè)狀態(tài)求和以得到條件期望
至于過程中采取什么樣的動作就涉及到策略policy,,策略函數(shù)可以表述為函數(shù)(當(dāng)然,,這里的跟圓周率沒半毛錢關(guān)系)
- 從而可得,意味著輸入狀態(tài),,策略函數(shù)輸出動作
- 此外,,還會有這樣的表述:,相當(dāng)于在輸入狀態(tài)確定的情況下,輸出的動作只和參數(shù)有關(guān),,這個(gè)就是策略函數(shù)的參數(shù)
- 再比如這種,,相當(dāng)于輸入一個(gè)狀態(tài)下,智能體采取某個(gè)動作的概率
通過上文,,我們已經(jīng)知道不同狀態(tài)出現(xiàn)的概率不一樣(比如今天是晴天,,那明天是晴天,還是雨天,、陰天不一定),,同一狀態(tài)下執(zhí)行不同動作的概率也不一樣(比如即便在天氣預(yù)報(bào)預(yù)測明天大概率是天晴的情況下,你大概率不會帶傘,,但依然不排除你可能會防止突然下雨而帶傘)
而有了動作這個(gè)因素之后,,我們重新梳理下價(jià)值函數(shù)
當(dāng)有了策略,、價(jià)值函數(shù)和模型3個(gè)組成部分后,就形成了一個(gè)馬爾可夫決策過程(Markov decision process),。如下圖所示,,這個(gè)決策過程可視化了狀態(tài)之間的轉(zhuǎn)移以及采取的動作。
且通過狀態(tài)轉(zhuǎn)移概率分布,,我們可以揭示狀態(tài)價(jià)值函數(shù)和動作價(jià)值函數(shù)之間的聯(lián)系了
接下來,,把上面和的計(jì)算結(jié)果互相代入,,可得馬爾可夫決策的貝爾曼方程
上述過程可用下圖形象化表示(配圖來自文獻(xiàn)21)
第二部分 RL進(jìn)階之三大表格求解法:DP、MC,、TD
2.1 動態(tài)規(guī)劃法
2.1.1 什么是動態(tài)規(guī)劃
上文簡單介紹過動態(tài)規(guī)劃,,其核心思想在于復(fù)雜問題的最優(yōu)解劃分為多個(gè)小問題的最優(yōu)解的求解問題,就像遞歸一樣,,且子問題的最優(yōu)解會被儲存起來重復(fù)利用
舉個(gè)例子,,輸入兩個(gè)整數(shù)n和sum,,從數(shù)列1,2,,3.......n 中隨意取幾個(gè)數(shù),,使其和等于sum,要求將其中所有的可能組合列出來,。
注意到取n,,和不取n個(gè)區(qū)別即可,,考慮是否取第n個(gè)數(shù)的策略,,可以轉(zhuǎn)化為一個(gè)只和前n-1個(gè)數(shù)相關(guān)的問題。
- 如果取第n個(gè)數(shù),那么問題就轉(zhuǎn)化為“取前n-1個(gè)數(shù)使得它們的和為sum-n”,,對應(yīng)的代碼語句就是sumOfkNumber(sum - n, n - 1),;
- 如果不取第n個(gè)數(shù),那么問題就轉(zhuǎn)化為“取前n-1個(gè)數(shù)使得他們的和為sum”,,對應(yīng)的代碼語句為sumOfkNumber(sum, n - 1)
所以其關(guān)鍵代碼就是
list1.push_front(n); //典型的01背包問題
SumOfkNumber(sum - n, n - 1); //“放”n,前n-1個(gè)數(shù)“填滿”sum-n
list1.pop_front();
SumOfkNumber(sum, n - 1); //不“放”n,前n-1個(gè)數(shù)“填滿”sum
其實(shí),這是一個(gè)典型的0-1背包問題,,其具體描述為:有件物品和一個(gè)容量為的背包。放入第件物品耗費(fèi)的費(fèi)用是(也即占用背包的空間容量),,得到的價(jià)值是,,求解將哪些物品裝入背包可使價(jià)值總和最大。
簡單分析下:這是最基礎(chǔ)的背包問題,,特點(diǎn)是每種物品僅有一件,,可以選擇放或不放。用子問題定義狀態(tài):即表示前件物品恰放入一個(gè)容量為的背包可以獲得的最大價(jià)值
對于“將前i件物品放入容量為v的背包中”這個(gè)子問題,,若只考慮第i件物品的策略(放或不放),,那么就可以轉(zhuǎn)化為一個(gè)只和前件物品相關(guān)的問題。即:
- 如果不放第件物品,,那么問題就轉(zhuǎn)化為“前件物品放入容量為的背包中”,,價(jià)值為;
- 如果放第件物品,,那么問題就轉(zhuǎn)化為“前件物品放入剩下的容量為的背包中”,,此時(shí)能獲得的最大價(jià)值就是再加上通過放入第i件物品獲得的價(jià)值
則其狀態(tài)轉(zhuǎn)移方程便是:
通過上述這兩個(gè)個(gè)例子,,相信你已經(jīng)看出一些端倪,具體而言,,動態(tài)規(guī)劃一般也只能應(yīng)用于有最優(yōu)子結(jié)構(gòu)的問題,。最優(yōu)子結(jié)構(gòu)的意思是局部最優(yōu)解能決定全局最優(yōu)解(對有些問題這個(gè)要求并不能完全滿足,故有時(shí)需要引入一定的近似),。簡單地說,,問題能夠分解成子問題來解決。
動態(tài)規(guī)劃算法一般分為以下4個(gè)步驟:
- 描述最優(yōu)解的結(jié)構(gòu)
- 遞歸定義最優(yōu)解的值
- 按自底向上的方式計(jì)算最優(yōu)解的值 //此3步構(gòu)成動態(tài)規(guī)劃解的基礎(chǔ),。
- 由計(jì)算出的結(jié)果構(gòu)造一個(gè)最優(yōu)解 //此步如果只要求計(jì)算最優(yōu)解的值時(shí),,可省略
換言之,,動態(tài)規(guī)劃方法的最優(yōu)化問題的倆個(gè)要素:最優(yōu)子結(jié)構(gòu)性質(zhì),,和子問題重疊性質(zhì)
- 最優(yōu)子結(jié)構(gòu)
如果問題的最優(yōu)解所包含的子問題的解也是最優(yōu)的,我們就稱該問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)(即滿足最優(yōu)化原理),。意思就是,總問題包含很多個(gè)子問題,,而這些子問題的解也是最優(yōu)的,。 - 重疊子問題
子問題重疊性質(zhì)是指在用遞歸算法自頂向下對問題進(jìn)行求解時(shí),,每次產(chǎn)生的子問題并不總是新問題,有些子問題會被重復(fù)計(jì)算多次,。動態(tài)規(guī)劃算法正是利用了這種子問題的重疊性質(zhì),,對每一個(gè)子問題只計(jì)算一次,然后將其計(jì)算結(jié)果保存在一個(gè)表格中,,當(dāng)再次需要計(jì)算已經(jīng)計(jì)算過的子問題時(shí),只是在表格中簡單地查看一下結(jié)果,,從而獲得較高的效率
更多請參看此文(上面闡述什么是DP的內(nèi)容就來自此文):通俗理解動態(tài)規(guī)劃:由淺入深DP并解決LCS問題(23年修訂版)
2.1.2 通過動態(tài)規(guī)劃法求解最優(yōu)策略
如果你之前沒接觸過RL,,你確實(shí)可能會認(rèn)為DP只存在于數(shù)據(jù)結(jié)構(gòu)與算法里,實(shí)際上
- 最早在1961年,,有人首次提出了DP與RL之間的關(guān)系
- 1977年,,又有人提出了啟發(fā)式動態(tài)規(guī)劃,強(qiáng)調(diào)連續(xù)狀態(tài)問題的梯度下降法
- 再到1989年,,Watkins明確的將RL與DP聯(lián)系起來,,并將這一類強(qiáng)化學(xué)習(xí)方法表征為增量動態(tài)規(guī)劃
下面,,我們考慮如何求解最優(yōu)策略
- 首先,最優(yōu)策略可以通過最大化找到
- 當(dāng)時(shí),,
綜合上述兩點(diǎn),,可得
另,考慮到
故也可以如sutton的RL一書上,,這樣寫滿足貝爾曼最優(yōu)方程的價(jià)值函數(shù)
相當(dāng)于當(dāng)知道獎勵函數(shù)和狀態(tài)轉(zhuǎn)換函數(shù)時(shí),,便可以根據(jù)下一個(gè)狀態(tài)的價(jià)值來更新當(dāng)前狀態(tài)的價(jià)值,意味著可以把計(jì)算下一個(gè)可能狀態(tài)的價(jià)值當(dāng)成一個(gè)子問題,,而把計(jì)算當(dāng)前狀態(tài)的價(jià)值看做當(dāng)前問題,,這不剛好就可以用DP來求解了
于是,sutton的RL一書上給出了DP求解最優(yōu)策略的算法流程
- 1.初始化
對,,任意設(shè)定以及 - 2.策略評估
循環(huán): 對每一個(gè)循環(huán): 直到 (一個(gè)決定估計(jì)精度的小正數(shù)) - 3. 策略改進(jìn)
policy-stable true 對每一個(gè) old-actiton 如果old-action ,,那么policy-stable false 如果policy-stable為true,那么停止并返回以及,;否則跳轉(zhuǎn)到2
2.2 蒙特卡洛法
蒙特卡洛(monte carlo,,簡稱MC)方法,也稱為統(tǒng)計(jì)模擬方法,,就是通過大量的隨機(jī)樣本來估算或近似真實(shí)值,,比如近似估算圓的面經(jīng)、近似定積分,、近似期望,、近似隨機(jī)梯度
比如先看估算圓的面積,,如下圖
可以通過這個(gè)式子來近似計(jì)算:圓的面積/ 正方形的面積 = 圓中點(diǎn)的個(gè)數(shù)/正方形中點(diǎn)的個(gè)數(shù)
類似的,,我們也可以用蒙特卡洛方法來估計(jì)一個(gè)策略在一個(gè)馬爾可夫決策過程中的狀態(tài)價(jià)值,。考慮到 一個(gè)狀態(tài)的價(jià)值是它的期望回報(bào),,那么如果我們用策略在MDP上采樣很多條序列,,然后計(jì)算從這個(gè)狀態(tài)出發(fā)的回報(bào)再求其期望是否就可以了?好像可行,!公式如下:
再看下如何估算定積分的值『如果忘了定積分長啥樣的,,可以通過RL所需數(shù)學(xué)基礎(chǔ)的其中一篇筆記《概率統(tǒng)計(jì)極簡入門:通俗理解微積分/期望方差/正態(tài)分布前世今生(23修訂版)》回顧下,比如積分可以理解為由無數(shù)個(gè)無窮小的面積組成的面積S』
如上圖,,我們可以通過隨機(jī)取4個(gè)點(diǎn),,然后類似求矩形面積那樣(底x高),從而用4個(gè)面積的期望來估算定積分的值,,為讓對面積的估算更準(zhǔn)確,我們可以取更多的點(diǎn),比如,,當(dāng)時(shí)
接下來
- 假設(shè)令,且
- 且考慮到對于連續(xù)隨機(jī)變量,,其概率密度函數(shù)為,,期望為
則有
跟蒙特卡洛方法關(guān)聯(lián)的還有一個(gè)重要性采樣,,下文很快會講到
2.3 時(shí)序差分法及與DP、MC的區(qū)別
當(dāng)面對狀態(tài)價(jià)值函數(shù)的求解時(shí)
上述公式總共三個(gè)等式
有學(xué)員在我講的ChatGPT原理課上對上述這行公式表達(dá)了疑問,,故再詳細(xì)解釋下
在狀態(tài)價(jià)值函數(shù)的估計(jì)中,我們實(shí)際上并不知道真正的期望回報(bào),,因此我們通過多次試驗(yàn)和觀察,,以樣本回報(bào)來近似這個(gè)期望回報(bào)
即 ,其中 N 是樣本數(shù),, Gt 是在狀態(tài) s 下的回報(bào) 但這種方法的問題在于,,需要等到一個(gè)episode,才能得到Gt
即反饋來的太晚了 不夠及時(shí)(RL中 經(jīng)常會遇到獎勵延后性的問題) 總之,,我們在評估某個(gè)狀態(tài)的回報(bào)時(shí),,不得不用一種預(yù)期回報(bào)來表達(dá),即對回報(bào)的估計(jì)V(St)
但V(St)終究是估計(jì)的,,既然是估計(jì)的就一定有誤差,,怎么糾偏呢,當(dāng)然是通過隨著時(shí)間的推移,,得到的真實(shí)回報(bào)Gt來糾偏了
所以V(St) ← V(St) + α[Gt ? V(St)] 的含義是 新的估計(jì)等于 原來的估計(jì),,加上實(shí)際回報(bào)和估計(jì)回報(bào)之間的差距(誤差)乘以一個(gè)學(xué)習(xí)率
換言之,用V(St)+α[Gt?V(St)] 更新原來的價(jià)值估計(jì)V(St),,α代表的學(xué)習(xí)率 如果學(xué)習(xí)率為1,,則新價(jià)值估計(jì)V(St) = G(t),原來的價(jià)值估計(jì)直接廢棄 如果學(xué)習(xí)率為0,則不進(jìn)行任何更新,,原來的價(jià)值估計(jì)不變
最終目的是讓預(yù)測的回報(bào)越來越接近真實(shí)的回報(bào),,從而更好的選擇更優(yōu)策略、更優(yōu)動作 類比現(xiàn)實(shí)生活中,,當(dāng)我們的預(yù)測越來越準(zhǔn)確時(shí),,之后就不用再老用真實(shí)回報(bào)去更新預(yù)測值了,而是直接相信預(yù)測的
- 而時(shí)序差分(TD)呢,,它既要采樣得到上述第一個(gè)等式的期望值,,而且還要通過使用上述第三個(gè)等式中當(dāng)前的估計(jì)值來替代真實(shí)值
且TD每過一個(gè)time step就利用獎勵和值函數(shù) 更新一次(當(dāng)然,這里所說的one-step TD 方法,,也可以兩步一更新,,三步一更新….) 考慮到,可得 此更新法也叫TD(0)法,,或者一步時(shí)序差分法,,被稱為TD目標(biāo),被稱為TD誤差 TD與DP一致的是,,時(shí)序差分方法也無需等待交互的最終結(jié)果,,而可以基于下一個(gè)時(shí)刻的收益和估計(jì)值就可以更新當(dāng)前狀態(tài)的價(jià)值函數(shù) 不需像MC等到N步以后即等一個(gè)完整序列結(jié)束后才能更新 就像不同學(xué)生做題,有的學(xué)生則是TD派:做完一題就問老師該題做的對不對 然后下一題即更新做題策略,,有的學(xué)生是MC派:做完全部題才問老師所有題做的對不對 然后下一套試卷更新做題策略 TD與DP不一致的是,,TD俗稱無模型的RL算法,不需要像DP事先知道環(huán)境的獎勵函數(shù)和狀態(tài)轉(zhuǎn)移函數(shù)(和MC一樣,,可以直接從與環(huán)境互動的經(jīng)驗(yàn)中學(xué)習(xí)策略,,事實(shí)上,很多現(xiàn)實(shí)環(huán)境中,,其MDP的狀態(tài)轉(zhuǎn)移概率無從得知)
總之,,TD結(jié)合了DP和MC,與DP一致的點(diǎn)時(shí)與MC不一致,,與DP不一致的點(diǎn)時(shí)恰又與MC一致,,某種意義上來說,結(jié)合了前兩大方法各自的優(yōu)點(diǎn),,從而使得在實(shí)際使用中更靈活,,具體而言如下圖所示
順帶再舉一個(gè)例子,好比行軍打仗時(shí),,為了得到更好的行軍路線,,將軍派一人前去探路
- MC的做法相當(dāng)于一條道走到黑 沒走個(gè)10公里不回頭
- DP相當(dāng)于所有道比如10條道 每條道都走個(gè)1公里 不錯過任何一條可能成為最好道的可能,最后10條道都走完1公里后才返回匯報(bào)/反饋
- TD則相當(dāng)于先選一條道走個(gè)1公里即返回匯報(bào)/反饋,,之后再走下一條道的1公里
為承上啟下更為總結(jié),,再說一個(gè)問題,即七月ChatGPT課群里有學(xué)問提問:校長 在A2C算法中,這個(gè)優(yōu)勢函數(shù)中的計(jì)算A(s,a) =Q(s,a) - V(s) 其中這個(gè)Q(s,a)和V(s)是由神經(jīng)網(wǎng)絡(luò)模擬出來的嗎
關(guān)于什么是優(yōu)勢函數(shù) 下文會具體闡述,,咱們就用上文的知識來一步步推導(dǎo)
因
從而求解Q時(shí),,算是實(shí)際獎勵R + V,而V通過critic網(wǎng)絡(luò)學(xué)習(xí)(比如通過蒙特卡洛或時(shí)序差分)
從而A(s, a) = Q(s,a) - V(s)便能比較好的求解了 相當(dāng)于如春天所說,,實(shí)踐中只需要V(s)用神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)就行,,因?yàn)镼(s,a)已經(jīng)可以被V(s)和R表示了,不需要再另外實(shí)現(xiàn)
2.4 RL的分類:基于模型(Value-base/Policy-based)與不基于模型
根據(jù)問題求解思路,、方法的不同,,我們可以將強(qiáng)化學(xué)習(xí)分為
- 基于模型的強(qiáng)化學(xué)習(xí)(Model-based RL),可以簡單的使用動態(tài)規(guī)劃求解,,任務(wù)可定義為預(yù)測和控制,,預(yù)測的目的是評估當(dāng)前策略的好壞,即求解狀態(tài)價(jià)值函數(shù),,控制的目的則是尋找最優(yōu)策略和
在這里“模型”的含義是對環(huán)境進(jìn)行建模,,具體而言,是否已知其和,,即和的取值 如果有對環(huán)境的建模,,那么智能體便可以在執(zhí)行動作前得知狀態(tài)轉(zhuǎn)移的情況即和獎勵,也就不需要實(shí)際執(zhí)行動作收集這些數(shù)據(jù),; 否則便需要進(jìn)行采樣,,通過與環(huán)境的交互得到下一步的狀態(tài)和獎勵,然后僅依靠采樣得到的數(shù)據(jù)更新策略 - 無模型的強(qiáng)化學(xué)習(xí)(Model-free RL),,又分為
基于價(jià)值的強(qiáng)化學(xué)習(xí)(Value-based RL),,其會學(xué)習(xí)并貪婪的選擇值最大的動作,即,,最經(jīng)典的便是off-policy模式的Q-learning和on-policy模式的SARSA,一般得到的是確定性策略,,下文第三部分重點(diǎn)介紹 基于策略的強(qiáng)化學(xué)習(xí)(Policy-based RL),,其對策略進(jìn)行進(jìn)行建模并優(yōu)化,一般得到的是隨機(jī)性策略,,下文第四部分會重點(diǎn)介紹
第三部分 價(jià)值學(xué)習(xí):從n步Sarsa算法到Q-learning,、DQN
3.1 TD(0)控制/Sarsa(0)算法與TD(n)控制/n步Sarsa算法
既然上文可以用時(shí)序差分來估計(jì)狀態(tài)價(jià)值函數(shù),那是否可以用類似策略迭代的方法來評估動作價(jià)值函數(shù)呢,?畢竟在無模型的RL問題中,,動作價(jià)值函數(shù)比狀態(tài)價(jià)值函數(shù)更容易被評估
如果用類似TD(0)控制的思路尋找最優(yōu)的動作價(jià)值函數(shù)并提取出最優(yōu)策略,便被稱作Sarsa(0)算法,,所以,,Sarsa所做出的改變很簡單,它將原本時(shí)序差分方法更新的過程,變成了更新,,即可以如下表達(dá)
此外,,上文說過,“TD每過一個(gè)time step就利用獎勵和值函數(shù) 更新一次,,當(dāng)然,,這里所說的one-step TD 方法,也可以兩步一更新,,三步一更新”,,這個(gè)所謂的多步一更新我們便稱之為N步時(shí)序差分法
首先,我們先回復(fù)下回報(bào)公式的定義,,即為(根據(jù)前幾項(xiàng)可以看出:的上標(biāo)加即為的下標(biāo),,反過來,當(dāng)最后一項(xiàng)的下標(biāo)確定后,,自然便可以得出的上標(biāo)為)
從而有
類似的,,當(dāng)用n步時(shí)序差分的思路去更新函數(shù)則就是所謂的n步Sarsa算法,,當(dāng)我們重新根據(jù)動作價(jià)值的估計(jì)定義如下的b步方法的回報(bào)為
如此,便可以得到如下的更新方式
3.2 Q-learning
3.2.1 重要性采樣:讓同策略完成到異策略的轉(zhuǎn)變
Q-learning介紹得閑闡明一個(gè)問題,,即所謂的同策略學(xué)習(xí)與異策略學(xué)習(xí)
首先,,先來明確兩個(gè)概念:
- 行動遵循的行動策略與被評估的目標(biāo)策略是同一個(gè)策略(如果要學(xué)習(xí)的智能體和與環(huán)境交互的智能體是相同的),則稱之為同策略,,比如上文介紹的Sarsa
- 行動遵循的行動策略和被評估的目標(biāo)策略是不同的策略(或如果要學(xué)習(xí)的智能體和與環(huán)境交互的智能體不是相同的),,則稱之為異策略,比如即將介紹的Q-learning
而異策略就是基于重要性采樣的原理實(shí)現(xiàn)的(但反過來,,不是說只要采用了重要性采用,,就一定是異策略,比如下文將講的PPO算法),,即通過使用另外一種分布,,來逼近所求分布的一種方法
但具體怎么操作呢?為說明怎么變換的問題,,再舉一個(gè)例子,。
假設(shè)有一個(gè)函數(shù),需要從分布中采樣,,應(yīng)該如何怎么計(jì)算??(??)的期望值呢,?
如果分布不能做積分,那么只能從分布盡可能多采樣更多的,,然后全都代入到,,按照蒙特卡洛方法的原則取它的平均值就可以得到近似??(??)的期望值:
當(dāng)不能在分布中采樣數(shù)據(jù),,而只能從另外一個(gè)分布中去采樣數(shù)據(jù)時(shí)(可以是任何分布),就需要做些變換,,如下三步
- 首先,,期望值的另一種寫法是,對其進(jìn)行變換,,如下式所示
- 整理下可得(左邊是分布,,右邊是分布):
- 如此,便就可以從里面采樣 ,,再計(jì)算,,再取期望值
所以就算我們不能從里面采樣數(shù)據(jù),但只要能從里面采樣數(shù)據(jù),,就可以計(jì)算從采樣,,然后代入 以后的期望值
3.2.2 Sarsa算法與Q-learning更新規(guī)則的對比
和Sarsa(0)算法的更新規(guī)則有點(diǎn)像,Q-learning的動作價(jià)值函數(shù)更新規(guī)則如下
啥意思呢,,一步步來看
- Q學(xué)習(xí)有兩種策略:目標(biāo)策略和行為策略
目標(biāo)策略是我們需要學(xué)習(xí)的策略,,一般用表示,直接在Q表格上使用貪心策略,,取它下一步能得到的所有狀態(tài),,即 行為策略 可以是一個(gè)隨機(jī)的策略,與環(huán)境交互(采集軌跡或數(shù)據(jù)),,但我們采取 貪心策略,,讓行為策略不至于是完全隨機(jī)的,它是基于Q表格逐漸改進(jìn)的 - 我們可以構(gòu)造 Q學(xué)習(xí)目標(biāo),,Q學(xué)習(xí)的下一個(gè)動作都是通過arg max 操作選出來的(不管行為策略怎么探索,、去哪探索,反正就是取獎勵最大化下的策略),,于是我們可得
再次總結(jié)一下其與Sarsa的區(qū)別
- 在Sarsa算法中,,新動作用于更新動作價(jià)值函數(shù),并且用于下一時(shí)刻的執(zhí)行工作,,這意味著行動策略與目標(biāo)策略屬于同一個(gè)策略
- 但在Q-learning算法中,,使用確定性策略選出的新動作只用于動作價(jià)值函數(shù),而不會被真正執(zhí)行,,當(dāng)動作價(jià)值函數(shù)更新后,得到新狀態(tài),,并基于新狀態(tài)由貪心策略選擇得到執(zhí)行行動,,這意味著行動策略與目標(biāo)策略不屬于同一個(gè)策略
3.3 DQN
// 待更
第四部分 策略學(xué)習(xí):從策略梯度、Actor-Criti到TRPO,、PPO算法
4.1 策略梯度與其突出問題:采樣效率低下
本節(jié)推導(dǎo)的核心內(nèi)容參考自Easy RL教程等資料(但修正了原教程上部分不太準(zhǔn)確的描述,,且為讓初學(xué)者更好懂,,補(bǔ)充了大量的解釋說明和心得理解,倪老師則幫拆解了部分公式),。
另,,都說多一個(gè)公式則少一個(gè)讀者,本文要打破這點(diǎn),,雖然本節(jié)推導(dǎo)很多,,但每一步推導(dǎo)都有介紹到,不會省略任何一步推導(dǎo),,故不用擔(dān)心看不懂(對本文任何內(nèi)容有任何問題,,都?xì)g迎隨時(shí)留言評論)。
4.1.1 什么是策略梯度和梯度計(jì)算/更新的流程
策略梯度的核心算法思想是:
- 參數(shù)為的策略接受狀態(tài),,輸出動作概率分布,,在動作概率分布中采樣動作,執(zhí)行動作(形成運(yùn)動軌跡),,得到獎勵,,跳到下一個(gè)狀態(tài)
- 在這樣的步驟下,可以使用策略收集一批樣本,,然后使用梯度下降算法學(xué)習(xí)這些樣本,,不過當(dāng)策略的參數(shù)更新后,這些樣本不能繼續(xù)被使用,,還要重新使用策略與環(huán)境互動收集數(shù)據(jù)
比如REINFORCE算法便是常見的策略梯度算法,,類似下圖所示(下圖以及本節(jié)大部分配圖/公式均來自easy RL教程)
接下來,詳細(xì)闡述,。首先,,我們已經(jīng)知道了策略函數(shù)可以如此表示:
其中,可以理解為一個(gè)我們所熟知的神經(jīng)網(wǎng)絡(luò)
- 當(dāng)你對神經(jīng)網(wǎng)絡(luò)有所了解的話,,你一定知道通過梯度下降求解損失函數(shù)的極小值(忘了的,,可以復(fù)習(xí)下:首先通過正向傳播產(chǎn)生擬合值,與標(biāo)簽值做“差”計(jì)算,,產(chǎn)生誤差值,,然后對誤差值求和產(chǎn)生損失函數(shù),最后對損失函數(shù)用梯度下降法求極小值,,而優(yōu)化的對象就是神經(jīng)網(wǎng)絡(luò)的參數(shù))
- 類比到這個(gè)問題上,,現(xiàn)在是正向傳播產(chǎn)生動作,然后動作在環(huán)境中產(chǎn)生獎勵值,,通過獎勵值求和產(chǎn)生評價(jià)函數(shù),,此時(shí)可以針對評價(jià)函數(shù)做梯度上升(gradient ascent),畢竟能求極小值,,便能求極大值,,正如誤差能最小化,,獎勵/得分就能最大化
如何評價(jià)策略的好壞呢?
假設(shè)機(jī)器人在策略的決策下,,形成如下的運(yùn)動軌跡(類似你玩三國爭霸時(shí),,你控制角色在各種不同的游戲畫面/場景/狀態(tài)下作出一系列動作,而當(dāng)完成了系統(tǒng)布置的某個(gè)任務(wù)時(shí)則會得到系統(tǒng)給的獎勵,,如此,,運(yùn)動軌跡用 表示,從而表示為一個(gè)狀態(tài),、動作,、獎勵值不斷遷移的過程)
可能有讀者注意到了,既然獎勵是延后的,,/后的獎勵怎么用而非呢,,事實(shí)上,sutton RL書上用表示整條軌跡,,其實(shí)這樣更規(guī)范,,但考慮到不影響大局和下文的推導(dǎo),本筆記則暫且不細(xì)究了
給定智能體或演員的策略參數(shù),,可以計(jì)算某一條軌跡發(fā)生的概率為『軌跡來源于在特定的環(huán)境狀態(tài)下采取特定動作的序列,,而特定的狀態(tài)、特定的動作又分別采樣自智能體的動作概率分布,、狀態(tài)的轉(zhuǎn)換概率分布』
其中,,有的資料也會把寫成為,但由于畢竟是概率,,所以更多資料還是寫為
如何評價(jià)策略呢,?這個(gè)策略評價(jià)函數(shù)為方便理解也可以稱之為策略價(jià)值函數(shù),就像上文的狀態(tài)價(jià)值函數(shù),、動作價(jià)值函數(shù),,說白了,評估策略(包括狀態(tài),、動作)的價(jià)值,,就是看其因此得到的期望獎勵
故考慮到期望的定義,由于每一個(gè)軌跡 都有其對應(yīng)的發(fā)生概率,,對所有出現(xiàn)的概率與對應(yīng)的獎勵進(jìn)行加權(quán)最后求和,,即可得期望值:
上述整個(gè)過程如下圖所示
通過上文已經(jīng)知道,想讓獎勵越大越好,,可以使用梯度上升來最大化期望獎勵,。而要進(jìn)行梯度上升,先要計(jì)算期望獎勵的梯度,。
考慮對 做梯度運(yùn)算『再次提醒,,忘了什么是梯度的,可以通過一文通透優(yōu)化算法:從梯度下降、SGD到牛頓法,、共軛梯度(23修訂版)復(fù)習(xí)下』
其中,,只有 與 有關(guān)。再考慮到,,可得
從而進(jìn)一步轉(zhuǎn)化,,可得,表示期望的梯度等于對數(shù)概率梯度的期望乘以原始函數(shù)
Em,,怎么來的,?別急,具體推導(dǎo)是
上述推導(dǎo) 總共4個(gè)等式3個(gè)步驟,,其中,,第一步 先分母分子都乘以一個(gè),第二步 把代入計(jì)算,,第三步 根據(jù)期望的定義做個(gè)簡單轉(zhuǎn)換,,此處的就是
此外,本文一讀者在23年2.24日的留言說,,還想了解是怎么推導(dǎo)而來的,,這個(gè)式子可以通過如下推導(dǎo)得到
首先,對函數(shù)取對數(shù)得:
對上式求導(dǎo)數(shù)得:
將等式兩邊同乘以,,得到:
這個(gè)等式表明,,我們可以用來表示,即:
然不巧的是,,期望值無法計(jì)算,,按照蒙特卡洛方法近似求期望的原則,可以采樣條軌跡并計(jì)算每一條軌跡的值,,再把每一條軌跡的值加起來除以取平均,,即(上標(biāo)代表第條軌跡,而,、則分別代表第條軌跡里時(shí)刻的動作,、狀態(tài))
任何必要的中間推導(dǎo)步驟咱不能省,大部分文章基本都是一筆帶過,,但本文為照顧初學(xué)者甚至更初級的初學(xué)者,,中間的推導(dǎo)過程還是要盡可能逐一說明下:
- 首先,通過上文中關(guān)于某一條軌跡發(fā)生概率的定義,,可得
- 然后兩邊都取對數(shù),,可得 由于乘積的對數(shù)等于各分量的對數(shù)之和,,故可得
- 接下來,取梯度可得 上述過程總共4個(gè)等式,,在從第2個(gè)等式到第3個(gè)等式的過程中,,之所以消掉了 是因?yàn)槠渑c無關(guān)(環(huán)境狀態(tài)不依賴于策略),其對的梯度為0,。
完美,!這就是所謂的策略梯度定理,我們可以直觀地理解該公式
- 即在采樣到的數(shù)據(jù)里面,,采樣到在某一個(gè)狀態(tài) 要執(zhí)行某一個(gè)動作,,是在整個(gè)軌跡的里面的某一個(gè)狀態(tài)和動作的對
- 為了最大化獎勵,假設(shè)在執(zhí)行,,最后發(fā)現(xiàn)的獎勵是正的,,就要增加在 執(zhí)行 的概率。反之,,如果在執(zhí)行 會導(dǎo)致 的獎勵變成負(fù)的,, 就要減少在 執(zhí)行 的概率
- 最后,用梯度上升來更新參數(shù),,原來有一個(gè)參數(shù),,把 加上梯度,當(dāng)然要有一個(gè)學(xué)習(xí)率 (類似步長,、距離的含義),,學(xué)習(xí)率的調(diào)整可用 Adam、RMSProp等方法調(diào)整,,即
有一點(diǎn)值得說明的是...,,為了提高可讀性,還是舉個(gè)例子來說明吧,。
比如到80/90后上大學(xué)時(shí)喜歡玩的另一個(gè)游戲CF(即cross fire,,10多年前我在東華理工的時(shí)候也經(jīng)常玩這個(gè),另一個(gè)是DNF),,雖然玩的是同一個(gè)主題比如沙漠戰(zhàn)場,,但你每場的發(fā)揮是不一樣的,即便玩到同一個(gè)地方(比如A區(qū)埋雷的地方),,你也可能會控制角色用不同的策略做出不同的動作,,比如
- 在第一場游戲里面,我們在狀態(tài)采取動作 ,,在狀態(tài)采取動作 ,。且你在同樣的狀態(tài)?下,不是每次都會采取動作?的,所以我們要記錄,,在狀態(tài) 采取 ,、在狀態(tài) 采取 等,整場游戲結(jié)束以后,,得到的獎勵是
- 在第二場游戲里面,,在狀態(tài)采取?,在狀態(tài) 采取 ,,采樣到的就是,得到的獎勵是
這時(shí)就可以把采樣到的數(shù)據(jù)用梯度計(jì)算公式把梯度算出來
- 也就是把每一個(gè)與的對拿進(jìn)來,,計(jì)算在某一個(gè)狀態(tài)下采取某一個(gè)動作的對數(shù)概率,,對這個(gè)概率取梯度
- 然后在梯度前面乘一個(gè)權(quán)重,權(quán)重就是這場游戲的獎勵,,這也是和一般分類問題的區(qū)別所在
- 計(jì)算出梯度后,,就可以通過更新模型了
4.1.2 避免采樣的數(shù)據(jù)僅能用一次:重要性采樣(為采樣q解決p從而增加重要性權(quán)重)
然而策略梯度有個(gè)問題,在于是對策略 采樣的軌跡 求期望,。一旦更新了參數(shù),,從 變成 ,在對應(yīng)狀態(tài)s下采取動作的概率 就不對了,,之前采樣的數(shù)據(jù)也不能用了,。
換言之,策略梯度是一個(gè)會花很多時(shí)間來采樣數(shù)據(jù)的算法,,其大多數(shù)時(shí)間都在采樣數(shù)據(jù),。智能體與環(huán)境交互以后,接下來就要更新參數(shù),,我們只能更新參數(shù)一次,,然后就要重新采樣數(shù)據(jù), 才能再次更新參數(shù),。
這顯然是非?;〞r(shí)間的,怎么解決這個(gè)問題呢,?為避免采樣到的數(shù)據(jù)只能使用一次的問題,,還記得上文介紹過的重要性采樣否,使得
- 可以用另外一個(gè)策略與環(huán)境交互,,用采樣到的數(shù)據(jù)去訓(xùn)練
- 假設(shè)我們可以用 采樣到的數(shù)據(jù)去訓(xùn)練,,我們可以多次使用采樣到的數(shù)據(jù),可以多次執(zhí)行梯度上升,,可以多次更新參數(shù),, 都只需要用采樣到的同一批數(shù)據(jù)
故基于重要性采樣的原則,我們可以用另外一個(gè)策略,與環(huán)境做互動采樣數(shù)據(jù)來訓(xùn)練,,從而間接計(jì)算,,而當(dāng)我們轉(zhuǎn)用去采樣數(shù)據(jù)訓(xùn)練后
- 只需在的基礎(chǔ)上補(bǔ)上一個(gè)重要性權(quán)重:,這個(gè)重要性權(quán)重針對某一個(gè)軌跡用算出來的概率除以這個(gè)軌跡用算出來的概率
- 注意,,上面例子中的/與此處的/沒有任何聯(lián)系,,前者只是為了說明重要性權(quán)重的兩個(gè)普通的分布而已
最終加上重要性權(quán)重之后,可得
怎么來的,?完整推導(dǎo)如下
4.2 引入優(yōu)勢演員-評論家算法(Advantage Actor-Criti):為避免獎勵總為正增加基線
4.2.1 什么是優(yōu)勢函數(shù):不斷鼓勵并探索高于平均預(yù)期回報(bào)的動作從而指導(dǎo)策略更新
梯度的計(jì)算好像差不多了,?但實(shí)際在做策略梯度的時(shí)候,并不是給整個(gè)軌跡都一樣的分?jǐn)?shù),,而是每一個(gè)狀態(tài)-動作的對會分開來計(jì)算,,但通過蒙特卡洛方法進(jìn)行隨機(jī)抽樣的時(shí)候,可能會出問題,,比如在采樣一條軌跡時(shí)可能會出現(xiàn)
- 問題1:所有動作均為正獎勵
- 問題2:出現(xiàn)比較大的方差(另,,重要性采樣時(shí),采樣的分布與當(dāng)前分布之間也可能會出現(xiàn)比較大的方差,,具體下一節(jié)詳述)
對于第一個(gè)問題,,舉個(gè)例子,比如在某一一個(gè)狀態(tài),,可以執(zhí)行的動作有a,、b、c,,但我們可能只采樣到動作b或者只采樣到動作c,,沒有采樣到動作a
- 但不管采樣情況如何,現(xiàn)在所有動作的獎勵都是正的,,所以采取a,、b、 c的概率都應(yīng)該要提高
- 可實(shí)際最終b,、c的概率按預(yù)期提高了,,但因?yàn)閍沒有被采樣到,所以a的概率反而下降了
- 然而問題是a不一定是一個(gè)不好的動作,,它只是沒有被采樣到
為了解決獎勵總是正的的問題,,也為避免方差過大,需要在之前梯度計(jì)算的公式基礎(chǔ)上加一個(gè)基準(zhǔn)線『此指的baseline,,非上面例子中的b,,這個(gè)所謂的基準(zhǔn)線可以是任意函數(shù),只要不依賴于動作即可』
上面說可以是任意函數(shù),,這個(gè)“任意”吧,,對初學(xué)者而言可能跟沒說一樣,,所以到底該如何取值呢
- 有一種選擇是使用軌跡上的獎勵均值,即
從而使得有正有負(fù) 當(dāng)大于平均值時(shí),,則為正,,則增加該動作的概率 當(dāng)小于平均值時(shí),則為負(fù),,則降低該動作的概率 如此,,對于每條軌跡,平均而言,,較好的50%的動作將得到獎勵,,避免所有獎勵均為正或均為負(fù),同時(shí),,也減少估計(jì)方差 - 還可以是狀態(tài)價(jià)值函數(shù)
可曾還記得2.1節(jié)介紹過的所謂Actor-Criti算法(一般被翻譯為演員-評論家算法) Actor學(xué)習(xí)參數(shù)化的策略即策略函數(shù),,Criti通過學(xué)習(xí)一個(gè)狀態(tài)價(jià)值函數(shù),來盡可能準(zhǔn)確地預(yù)測從當(dāng)前狀態(tài)開始,,遵循某個(gè)策略可以獲得的預(yù)期總回報(bào)(即未來的累積折扣獎勵),并將其用于更好地?cái)M合真實(shí)的回報(bào),,在學(xué)習(xí)過程中,,Critic試圖減小預(yù)測的價(jià)值和實(shí)際經(jīng)驗(yàn)回報(bào)之間的差距,以此來改進(jìn)我們的策略「更多可以再看下ChatGPT原理技術(shù)解析一文中的此部分:3.2.2 如何通過deepspeed Chat的實(shí)現(xiàn)更好的理解Actor-Critic架構(gòu)中的Critic網(wǎng)絡(luò),,可解決你心中不少疑惑」 當(dāng)然,,Actor-Criti本質(zhì)上是屬于基于策略的算法,畢竟算法的目標(biāo)是優(yōu)化一個(gè)帶參數(shù)的策略(實(shí)際用到PPO算法時(shí),,會計(jì)算一個(gè)策略損失),,只是會額外學(xué)習(xí)價(jià)值函數(shù)(相應(yīng)的,運(yùn)用PPO算法時(shí),,也會計(jì)算一個(gè)價(jià)值損失),,從而幫助策略函數(shù)更好的學(xué)習(xí),而學(xué)習(xí)優(yōu)勢函數(shù)的演員-評論家算法被稱為優(yōu)勢演員-評論家(Advantage Actor-Criti,,簡稱A2C)算法
而這個(gè)一般被定義為優(yōu)勢函數(shù)(Advantage Function),,是對一個(gè)動作在平均意義上比其他動作好多少的度量,有幾點(diǎn)值得注意
- 在考慮到評估動作的價(jià)值,,就看其因此得到的期望獎勵,,故一般有,此舉意味著在選擇一個(gè)動作時(shí),,根據(jù)該動作相對于特定狀態(tài)下其他可用動作的執(zhí)行情況來選擇,,而不是根據(jù)該動作的絕對值
且通常我們只學(xué)習(xí)「比如通過時(shí)序差分法估計(jì)」,然后通過與獎勵的結(jié)合來估計(jì),,即,,從而可得 總之,要估測的是在狀態(tài)采取動作是好的還是不好的:即 如果是正的(即大于0),意味著在狀態(tài) 采取動作 獲得的回報(bào)比在狀態(tài) 采取任何其他可能的動作獲得的回報(bào)都要好,,要增加概率 如果是負(fù)的(即小于0),,意味著在狀態(tài) 采取動作 得到的回報(bào)比其他動作的平均回報(bào)要差,要減少概率 - 最終在更新梯度的時(shí)候,,如下式所示『我們用演員去采樣出跟,,采樣出狀態(tài)跟動作的對,計(jì)算這個(gè)狀態(tài)跟動作對的優(yōu)勢』
4.2.2 引入之前介紹的重要性采樣
進(jìn)一步,,由于是演員與環(huán)境交互的時(shí)候計(jì)算出來的,,基于重要性采樣的原則,當(dāng)從 換到 的時(shí)候,,就需要在
基礎(chǔ)上,, 變換成,一變換便得加個(gè)重要性權(quán)重(即把,、用采樣出來的概率除掉 ,、用采樣出來的概率),公式如下『Easy RL紙書第1版上把下面公式中的寫成了』
接下來,,我們可以拆解和,,即
于是可得公式
這里需要做一件事情,假設(shè)模型是的時(shí)候,,我們看到的概率,,跟模型是的時(shí)候,看到的概率是差不多的,,即,。
為什么可以這樣假設(shè)呢?一種直觀的解釋就是很難算,,這一項(xiàng)有一個(gè)參數(shù),,需要拿去跟環(huán)境做互動,算出現(xiàn)的概率,。 尤其是如果輸入是圖片的話,,同樣的根本就不會出現(xiàn)第二次。我們根本沒有辦法估這一項(xiàng),,所以就直接無視這個(gè)問題,。
但是是很好算,我們有這個(gè)參數(shù),,它就是個(gè)網(wǎng)絡(luò),。我們就把帶進(jìn)去,就是游戲畫面,。 我們有個(gè)策略的網(wǎng)絡(luò),,輸入狀態(tài),,它會輸出每一個(gè)的概率。所以,,我們只要知道和的參數(shù)就可以算,。
所以,實(shí)際上在更新參數(shù)的時(shí)候,,我們就是按照下式來更新參數(shù):
從而最終可以從梯度來反推目標(biāo)函數(shù),,當(dāng)使用重要性采樣的時(shí)候,要去優(yōu)化的目標(biāo)函數(shù)如下式所示,,把它記
終于大功告成,!
4.3 基于信任區(qū)域的TRPO:加進(jìn)KL散度解決兩個(gè)分布相差大或步長難以確定的問題
好巧不巧,看似大功告成了,,但重要性采樣還是有個(gè)問題,。具體什么問題呢,為更好的說明這個(gè)問題,,我們回到上文的那個(gè)例子中,。
還是那兩個(gè)分布:、,,當(dāng)不能從里面很好的采樣數(shù)據(jù),,而能從 里面很好的采樣數(shù)據(jù)時(shí),基于重要性采樣的原則,,雖然我們可以把 換成任何的 ,但是在實(shí)現(xiàn)上,,和 的差距不能太大,,差距太大,會出問題
比如,,雖然上述公式成立,,但如果不是計(jì)算期望值,而是
- 計(jì)算方差時(shí)和 是不一樣的
因?yàn)閮蓚€(gè)隨機(jī)變量的平均值相同,,并不代表它們的方差相同
此話怎講,?以下是推導(dǎo)過程:
將?????? 、分別代入方差的公式
則分別可得(且考慮到不排除會有比初級更初級的初學(xué)者學(xué)習(xí)本文,,故把第二個(gè)公式拆解的相對較細(xì))
上述兩個(gè)公式前后對比,,可以很明顯的看出
- 后者的第一項(xiàng)多乘了,如果差距很大,,的方差就會很大
所以結(jié)論就是,,如果我們只要對分布采樣足夠多次,對分布采樣足夠多次,,得到的期望值會是一樣的,。但是如果采樣的次數(shù)不夠多,,會因?yàn)樗鼈兊姆讲畈罹嗫赡苁呛艽蟮模跃涂赡艿玫讲顒e非常大的結(jié)果,。
這意味著什么呢,,意味著我們目前得到的這個(gè)公式里
如果 與 相差太多,即這兩個(gè)分布相差太多,,重要性采樣的結(jié)果就會不好,。怎么避免它們相差太多呢?這就是TRPO算法所要解決的,。
2015年John Schulman等人提出了信任區(qū)域策略優(yōu)化(Trust Region Policy Opimization,,簡稱TRPO),表面上,,TRPO的出現(xiàn)同時(shí)解決了兩個(gè)問題,,一個(gè)是解決重要性采樣中兩個(gè)分布差距太大的問題,一個(gè)是解決策略梯度算法中步長難以確定的問題
- 關(guān)于前者,,在1.2.2節(jié)得到的目標(biāo)函數(shù)基礎(chǔ)上(下圖第一個(gè)公式),,增加了一個(gè)KL散度約束(如下圖第二個(gè)公式) 至此采樣效率低效的問題通過重要性采樣(重要性權(quán)重)、以及增加KL散度約束解決了
KL散度(KL divergence),,也稱相對熵,,而相對熵 = 交叉熵 - shannon熵,其衡量的是兩個(gè)數(shù)據(jù)分布和之間的差異
下圖左半邊是一組原始輸入的概率分布曲線,,與之并列的是重構(gòu)值的概率分布曲線,,下圖右半邊則顯示了兩條曲線之間的差異
順帶從零推導(dǎo)下KL散度的公式
1 所謂概率:對于,可以定義概率分布為或
2 所謂信息:對取對數(shù),,加符號得正值 ,,概率越高,包含的信息越小,,因?yàn)槭录絹碓酱_定,;相反,概率越低,,包含的信息越多,,因?yàn)槭录哂泻艽蟮牟淮_定性
3 所謂Shannon熵(熵是信息的平均,直觀上,,Shannon熵是信息在同一分布下的平均):對平均,,即
4 所謂交叉熵Cross-Entropy(直觀上,交叉熵是信息在不同分布下的平均),,即指對平均,,即
5 所謂相對熵或KL散度 = 交叉熵 - shannon熵,即
所以如果在KL散度表達(dá)式的最前面加個(gè)負(fù)號,,再結(jié)合Jensen不等式自然有
- 關(guān)于后者,,具體而言,,當(dāng)策略網(wǎng)絡(luò)是深度模型時(shí),沿著策略梯度更新參數(shù),,很有可能由于步長太長,,策略突然顯著變差,進(jìn)而影響訓(xùn)練效果
這是1.2.1節(jié),,我們已經(jīng)得到的策略梯度計(jì)算,、策略梯度更新公式如下(別忘了,,學(xué)習(xí)率 類似步長,、距離的含義)分別如下 對這個(gè)問題,我們考慮在更新時(shí)找到一塊信任區(qū)域(trust region),,在這個(gè)區(qū)域上更新策略時(shí)能夠得到安全性保證,,這就是TRPO算法的主要思想
本質(zhì)上,,其實(shí)這兩個(gè)問題是同一個(gè)問題(簡言之,避免兩個(gè)分布相差大即意味著避免步長過大),。舉個(gè)例子,,比如爬兩面都是懸崖的山,左右腳交替往前邁步,,無論哪只腳向前邁步都是一次探索
- 為盡快到達(dá)山頂且不掉下懸崖,,一方面 你會選擇最陡峭的方向,二方面 你會用目光選擇一片信任區(qū)域,,從而盡量遠(yuǎn)離懸崖邊,,在信任區(qū)域中,首先確定要探索的最大步長(下圖的黃色圓圈),,然后找到最佳點(diǎn)并從那里繼續(xù)搜索
- 好,,現(xiàn)在問題的關(guān)鍵變成了,怎么確定每一步的步長呢,?如果每一步的步長太小,則需要很長時(shí)間才能到達(dá)峰值,,但如果步長太大,,就會掉下懸崖(像不像兩個(gè)分布之間差距不能太大)
- 具體做法是,從初始猜測開始可選地,,然后動態(tài)地調(diào)整區(qū)域大小,。例如,如果新策略和當(dāng)前策略的差異越來越大,,可以縮小信賴區(qū)域,。怎么實(shí)現(xiàn)?KL散度約束!
總之,,TRPO就是考慮到連續(xù)動作空間無法每一個(gè)動作都搜索一遍,,因此大部分情況下只能靠猜,。如果要猜,就最好在信任域內(nèi)部去猜,。而TRPO將每一次對策略的更新都限制了信任域內(nèi),,從而極大地增強(qiáng)了訓(xùn)練的穩(wěn)定性。
至此,,PG算法的采樣效率低下,、步長難以確定的問題都被我們通過TRPO給解決了。但TRPO的問題在哪呢,?
TRPO的問題在于把 KL 散度約束當(dāng)作一個(gè)額外的約束,,沒有放在目標(biāo)里面,導(dǎo)致TRPO很難計(jì)算,,總之因?yàn)樾湃斡虻挠?jì)算量太大了,,John Schulman等人于2017年又推出了TRPO的改進(jìn)算法:PPO
4.4 近端策略優(yōu)化PPO:解決TRPO的計(jì)算量大的問題
4.4.1 什么是近端策略優(yōu)化PPO與PPO-penalty
如上所述,PPO算法是針對TRPO計(jì)算量的大的問題提出來的,,正因?yàn)镻PO基于TRPO的基礎(chǔ)上改進(jìn),,故PPO也解決了策略梯度不好確定學(xué)習(xí)率Learning rate (或步長Step size) 的問題。畢竟通過上文,,我們已經(jīng)得知
- 如果 step size 過大, 學(xué)出來的 Policy 會一直亂動,,不會收斂;但如果 Step Size 太小,,想完成訓(xùn)練,,我們會等到地老天荒
- 而PPO 利用 New Policy 和 Old Policy 的比例,限制了 New Policy 的更新幅度,,讓策略梯度對稍微大點(diǎn)的 Step size 不那么敏感
具體做法是,,PPO算法有兩個(gè)主要的變種:近端策略優(yōu)化懲罰(PPO-penalty)和近端策略優(yōu)化裁剪(PPO-clip),其中PPO-penalty和TRPO一樣也用上了KL散度約束,。
近端策略優(yōu)化懲罰PPO-penalty的流程如下
-
首先,,明確目標(biāo)函數(shù),通過上節(jié)的內(nèi)容,,可知咱們需要優(yōu)化,,讓其最大化 -
接下來,先初始化一個(gè)策略的參數(shù),,在每一個(gè)迭代里面,,我們用前一個(gè)訓(xùn)練的迭代得到的actor的參數(shù)與環(huán)境交互,采樣到大量狀態(tài)-動作對,, 根據(jù)交互的結(jié)果,,估測 - 由于目標(biāo)函數(shù)牽涉到重要性采樣,而在做重要性采樣的時(shí)候,不能與相差太多,,所以需要在訓(xùn)練的時(shí)候加個(gè)約束,,這個(gè)約束就好像正則化的項(xiàng)一樣,是 與 輸出動作的 KL散度,,用于衡量 與 的相似程度,,我們希望在訓(xùn)練的過程中,學(xué)習(xí)出的 與 越相似越好
所以需要最后使用 PPO 的優(yōu)化公式: 當(dāng)然,,也可以把上述那兩個(gè)公式合二為一『如此可以更直觀的看出,,PPO-penalty把KL散度約束作為懲罰項(xiàng)放在了目標(biāo)函數(shù)中(可用梯度上升的方法去最大化它),此舉相對TRPO減少了計(jì)算量』
上述流程有一個(gè)細(xì)節(jié)并沒有講到,,即是怎么取值的呢,,事實(shí)上,是可以動態(tài)調(diào)整的,,故稱之為自適應(yīng)KL懲罰(adaptive KL penalty),,具體而言
- 先設(shè)一個(gè)可以接受的 KL 散度的最大值
假設(shè)優(yōu)化完以后,KL 散度值太大導(dǎo)致\mathrm{KL}_{\max}' src='https://latex.csdn.net/eq?%5Cmathrm%7BKL%7D%28%5Ctheta%2C%5Ctheta%27%29%3E%5Cmathrm%7BKL%7D_%7B%5Cmax%7D'>,,意味著 與差距過大(即學(xué)習(xí)率/步長過大),,也就代表后面懲罰的項(xiàng)懲罰效果太弱而沒有發(fā)揮作用,故增大懲罰把增大 - 再設(shè)一個(gè) KL 散度的最小值
如果優(yōu)化完以后,,KL散度值比最小值還要小導(dǎo)致,,意味著 與 差距過小,也就代表后面這一項(xiàng)的懲罰效果太強(qiáng)了,,我們怕它只優(yōu)化后一項(xiàng),,使與 一樣,這不是我們想要的,,所以減小懲罰即減小
關(guān)于的具體取值,,在2017年發(fā)表的PPO論文是如下闡述的
總之,近端策略優(yōu)化懲罰可表示為
4.4.2 PPO算法的另一個(gè)變種:近端策略優(yōu)化裁剪PPO-clip
如果覺得計(jì)算 KL散度很復(fù)雜,,則還有一個(gè) PPO2算法,,即近端策略優(yōu)化裁剪PPO-clip。近端策略優(yōu)化裁剪的目標(biāo)函數(shù)里面沒有 KL 散度,,其要最大化的目標(biāo)函數(shù)為(easy RL上用代替,,為上下文統(tǒng)一需要,本筆記的文字部分統(tǒng)一用)
整個(gè)目標(biāo)函數(shù)在這個(gè)大括號里有兩部分,,最終對比兩部分那部分更小,就取哪部分的值,,這么做的本質(zhì)目標(biāo)就是為了讓和可以盡可能接近,,不致差距太大。
換言之,,這個(gè)裁剪算法和KL散度約束所要做的事情本質(zhì)上是一樣的,,都是為了讓兩個(gè)分布之間的差距不致過大,,但裁剪算法相對好實(shí)現(xiàn),別看看起來復(fù)雜,,其實(shí)代碼很好寫
// ratios即為重要性權(quán)重,,exp代表求期望,括號里的environment_log_probs代表用于與環(huán)境交互的策略
ratios = torch.exp(log_probs - environment_log_probs)
// 分別用sur_1,、sur_2來計(jì)算公式的兩部分
// 第一部分是重要性權(quán)重乘以優(yōu)勢函數(shù)
sur_1 = ratios * advs
// 第二部分是具體的裁剪過程
sur_2 = torch.clamp(ratios, 1 - clip_eps, 1 + clip_eps) * advs
// 最終看誰更小則取誰
clip_loss = -torch.min(sur_1,sur_2).mean()
回到公式,,公式的第一部分我們已經(jīng)見過了,好理解,,咱們來重點(diǎn)分析公式的第二部分
最后把公式的兩個(gè)部分綜合起來,,針對整個(gè)目標(biāo)函數(shù)
- 如果大于0且大于
則相當(dāng)于第二部分是,和第一部分對比 取更小值當(dāng)然是的截?cái)嘀担?nbsp; - 如果大于0且小于
則相當(dāng)于第二部分是,,和第一部分對比 取更小值當(dāng)然是原函數(shù)值:
反之,,如果小于0,則最終目標(biāo)函數(shù)的取值為了更小則和大于0時(shí)反過來,,畢竟加了個(gè)負(fù)號自然一切就不同了,,為方便初學(xué)者一目了然,咱們還是把計(jì)算過程列出來,,即
- 如果小于0且大于
則相當(dāng)于第二部分是,,和第一部分對比 取更小值當(dāng)然是原函數(shù)的值: - 如果小于0且小于
則相當(dāng)于第二部分是,和第一部分對比 取更小值當(dāng)然是的截?cái)嘀担?img alt='(1- \varepsilon)' src='http://image109.360doc.com/DownloadImg/2025/02/0107/293730146_362_20250201072733387.png'>
4.4.3 PPO算法的一個(gè)簡單實(shí)現(xiàn):對話機(jī)器人
綜上,,PPO算法是一種具體的Actor-Critic算法實(shí)現(xiàn),,比如在對話機(jī)器人中,輸入的prompt是state,,輸出的response是action,,想要得到的策略就是怎么從prompt生成action能夠得到最大的reward,也就是擬合人類的偏好。具體實(shí)現(xiàn)時(shí),,可以按如下兩大步驟實(shí)現(xiàn)
- 首先是Make Experience 部分,,利用 SFT 、Actor,、RM,、Critic模型計(jì)算生成 Experience(包括sequence、action_logits,、value,、adv、reward),,存入 buffer 中
具體做法是定義4個(gè)模型:Actor(action_logits),、SFT(sft_logits)、Critic(value),、RM「r(x, y)」,,和kl_div、reward,、優(yōu)勢函數(shù)adv 從prompt庫中采樣出來的prompt在經(jīng)過SFT(微調(diào)過GPT3/GPT3.5的模型稱之為SFT)做generate得到一個(gè)response,,這個(gè)『prompt + response』定義為sequence(這個(gè)采樣的過程是批量采樣進(jìn)行g(shù)enerate,得到一個(gè)sequence buffer),,然后這個(gè)sequence buffer的內(nèi)容做batched之后輸入給4個(gè)模型做inference 這4個(gè)模型分別為Actor,、SFT、Critic,、RM,,其中: Actor和SFT都是175B的模型,且Actor參數(shù)由SFT初始化(SFT是baseline),,Actor輸出action_logits,,SFT輸出sft_logits sft_logits和action_logits做kl_div,為了約束actor模型的更新step不要偏離原始模型SFT太遠(yuǎn) Critic和RM是6B的模型,,Critic參數(shù)由RM初始化 Critic輸出標(biāo)量value,,RM輸出標(biāo)量r(x, y),由r(x, y)和kl_div計(jì)算得到reward,,reward和value計(jì)算得到adv - 之后是參數(shù)更新部分,,利用 Experience 計(jì)算價(jià)值損失(value loss)?和策略損失(policy loss),即通過pg_loss和value_loss優(yōu)化迭代
Actor的流程是取出sequence,,然后inference生成新的logits,,再和sequence對應(yīng)的之前的logits計(jì)算ratio,和adv計(jì)算出pg_loss,,也就是actor的loss,,然后反向傳播,,優(yōu)化器迭代 Critic的流程是取出sequence,然后inference得到新的value,,和old_value做clip_value,再和reward(本質(zhì)是return)計(jì)算value loss,,然后反向傳播,,優(yōu)化器迭代
因篇幅所限,如果對本節(jié)的這個(gè)實(shí)現(xiàn)沒有太明白,,沒事,,不用急,更多細(xì)節(jié)和代碼實(shí)現(xiàn)請參閱此文:從零實(shí)現(xiàn)帶RLHF的類ChatGPT:逐行解析微軟DeepSpeed Chat的源碼
后記
1.6日決定只是想寫個(gè)ChatGPT通俗導(dǎo)論,,但為了講清楚其中的PPO算法,,更考慮到之后還會再寫一篇強(qiáng)化學(xué)習(xí)極簡入門,故中途花了大半時(shí)間去從頭徹底搞懂RL,,最終把網(wǎng)上關(guān)于RL的大部分中英文資料都翻遍之外(詳見參考文獻(xiàn)與推薦閱讀),,還專門買了這幾本書以系統(tǒng)學(xué)習(xí)
- 第1本,《白話強(qiáng)化學(xué)習(xí)與pytorch》,,偏通俗,,對初學(xué)者友好,缺點(diǎn)是部分內(nèi)容混亂,,且對部分前沿/細(xì)節(jié)比如PPO算法闡述不足,,畢竟19年出版的了
- 第2本,《Eazy RL強(qiáng)化學(xué)習(xí)教程》,,基于臺大李宏毅等人的公開課,,雖有不少小問題且其對MDP和三大表格求解法的闡述比較混亂,但其對策略梯度和PPO的闡述于初學(xué)入門而言還不錯的
- ?第3本,,《動手學(xué)強(qiáng)化學(xué)習(xí)》,,張偉楠等人著,概念講解,、公式定義都很清晰,,且配套代碼實(shí)現(xiàn),當(dāng)然 如果概念講解能更細(xì)致則會對初學(xué)者更友好
- 第4本,,《深度強(qiáng)化學(xué)習(xí)》,,王樹森等人著,偏原理講解(無代碼),,此書對于已對RL有一定了解的是不錯的選擇
- 第5本,,《強(qiáng)化學(xué)習(xí)2》,權(quán)威度最高但通俗性不足,,當(dāng)然 也看人,,沒入門之前你會覺得此書晦澀,,入門之后你會發(fā)現(xiàn)經(jīng)典還是經(jīng)典、不可替代,,另書之外可配套七月的強(qiáng)化學(xué)習(xí)2帶讀課
- 第6本,,《深度強(qiáng)化學(xué)習(xí):基于Python的理論與實(shí)踐》,理論講的清楚,,代碼實(shí)踐也還可以
- 第7本,,《強(qiáng)化學(xué)習(xí)(微課版)》,這本書是作為RL教材出版的,,所以有教材的特征,,即對一些關(guān)鍵定理會舉例子展示實(shí)際計(jì)算過程,比如馬爾可夫決策的計(jì)算過程,,對初學(xué)者友好
總之,,RL里面的概念和公式很多(相比ML/DL,RL想要機(jī)器/程序具備更好的自主決策能力),,而
- 一方面,,?絕大部分的資料沒有站在初學(xué)者的角度去通俗易懂化、沒有把概念形象具體化,、沒有把公式拆解舉例化(如果逐一做到了這三點(diǎn),,何愁文章/書籍/課程不通俗)
- 二方面,不夠通俗的話,,則資料一多,,每個(gè)人的公式表達(dá)習(xí)慣不一樣便會導(dǎo)致各種形態(tài),雖說它們最終本質(zhì)上都是一樣的,,可當(dāng)初學(xué)者還沒有完全入門之前,,就不一定能一眼看出背后的本質(zhì)了,然后就不知道該以哪個(gè)為準(zhǔn),,從而喪失繼續(xù)前進(jìn)的勇氣(這種情況下,,要么硬著頭皮繼續(xù)啃 可能會走彎路,要么通過比如七月在線的課程問老師或人 提高效率少走彎路)
比如一個(gè)小小的策略梯度的計(jì)算公式會有近10來種表達(dá),,下面特意貼出其中6種,,供讀者辨別 第一種,本筆記和Easy RL中用的 第二種,,Sutton強(qiáng)化學(xué)習(xí)《Reinforcement Learning: An Introduction》第一版中用的 其中 叫做discounted state distribution 第三種,,David sliver在2014年的《Deterministic Policy Gradient Algorithm》論文中用的 其中,與上述相同,,都是discounted state distribution,。 第四種,肖志清《強(qiáng)化學(xué)習(xí):原理與Python實(shí)現(xiàn)》中用的 第五種,,Sutton強(qiáng)化學(xué)習(xí)在2018年的第二版中用的 其中,, 是stationary distribution (undiscounted state distribution) 第六種,,Open AI spinning up教程中用的
參考文獻(xiàn)與推薦閱讀
- 關(guān)于強(qiáng)化學(xué)習(xí)入門的一些基本概念
- 《白話強(qiáng)化學(xué)習(xí)與Pytorch》,此書讓我1.6日起正式開啟RL之旅,,沒看此書之前,,很多RL資料都不好看懂
- 《Eazy RL強(qiáng)化學(xué)習(xí)教程》,基于臺大李宏毅和UCLA周博磊等人的RL公開課所編著,,其GitHub,、其在線閱讀地址
- 《動手學(xué)強(qiáng)化學(xué)習(xí)》,張偉楠等人著
- 臺大李宏毅RL公開課,,這是其:視頻/PPT/PDF下載地址
- UCLA周博磊RL公開課,這是其:GitHub地址
- 關(guān)于Q-leaning的幾篇文章:1 如何用簡單例子講解 Q - learning 的具體過程,? 2 莫煩:什么是 Q-Learning
- AlphaGo作者之一David Silver主講的增強(qiáng)學(xué)習(xí)筆記1、筆記2,,另附其講授的《UCL Course on RL》的課件地址
-
huggingface的兩篇RL教程:An Introduction to Deep Reinforcement Learning,、GitHub:The Hugging Face Deep Reinforcement Learning Course - TRPO原始論文:Trust Region Policy Optimization
- PPO原始論文:Proximal Policy Optimization Algorithms
- PPO算法解讀(英文2篇):解讀1 RL — Proximal Policy Optimization (PPO) Explained、解讀2 Proximal Policy Optimization (PPO)
- PPO算法解讀(中文4篇):Easy RL上關(guān)于PPO的詳解,、詳解近端策略優(yōu)化,、詳解深度強(qiáng)化學(xué)習(xí) PPO算法、ChatGPT第二彈:PPO算法
- PPO算法實(shí)現(xiàn):GitHub - lvwerra/trl: Train transformer language models with reinforcement learning.
- 如何選擇深度強(qiáng)化學(xué)習(xí)算法,?MuZero/SAC/PPO/TD3/DDPG/DQN/等
- 如何通俗理解隱馬爾可夫模型HMM,?
- HMM學(xué)習(xí)最佳范例
- 強(qiáng)化學(xué)習(xí)中“策略梯度定理”的規(guī)范表達(dá)、推導(dǎo)與討論
- 強(qiáng)化學(xué)習(xí)——時(shí)序差分算法
- KL-Divergence詳解
- 《強(qiáng)化學(xué)習(xí)(微課版)》,,清華大學(xué)出版社出版
- 使用蒙特卡洛計(jì)算定積分(附Python代碼)
- David Silver 增強(qiáng)學(xué)習(xí)補(bǔ)充——重要性采樣,、強(qiáng)化學(xué)習(xí)中的重要性采樣(Importance Sampling)
- 關(guān)于Instruct GPT復(fù)現(xiàn)的一些細(xì)節(jié)與想法
- 類ChatGPT逐行代碼解讀(2/2):從零起步實(shí)現(xiàn)ChatLLaMA和ColossalChat
附錄:修改/完善/新增記錄
RL里的細(xì)節(jié)、概念,、公式繁多,,想完全闡述清楚是不容易的,以下是自從23年1.16日以來的修改,、完善,、新增記錄:
- 2023年1.16日,第一次修改/完善/新增
修正幾個(gè)筆誤,,且考慮到不排除會有比初級更初級的初學(xué)者閱讀本文,,補(bǔ)充部分公式的拆解細(xì)節(jié) - 1.17日,先后修正了2.2節(jié)重要性采樣與重要性權(quán)重的部分不準(zhǔn)確的描述,、修正個(gè)別公式的筆誤,,以及補(bǔ)充1.4.2中關(guān)于PPO-clip的細(xì)節(jié)闡述,、優(yōu)化第四部分的相關(guān)描述
- 1.18日,為措辭更準(zhǔn)確,,優(yōu)化1.2.5節(jié)“基于信任區(qū)域的TRPO:通過KL散度解決兩個(gè)分布相差大和步長難以確定的問題”的相關(guān)描述
- 1.19日,,為讓讀者理解起來更一目了然
優(yōu)化1.3.1節(jié)中關(guān)于什么是近端策略優(yōu)化PPO的描述 優(yōu)化1.3.2節(jié)中關(guān)于“近端策略優(yōu)化懲罰PPO-penalty關(guān)于自適應(yīng)KL懲罰(adaptive KL penalty)”的描述 拆解細(xì)化關(guān)于的推導(dǎo)過程 補(bǔ)充說明對優(yōu)勢函數(shù) 的介紹 - 1.20日,第五次修改/完善/新增
通過LaTeX重新編輯部分公式,,以及補(bǔ)充說明1.2.1節(jié)中關(guān)于某一條軌跡發(fā)生概率的定義 - 1.21日(大年三十),,新增對蒙/新增特卡洛方法的介紹,以及新增中基線的定義,,且簡化2.1.1節(jié)中關(guān)于強(qiáng)化學(xué)習(xí)過程的描述
- 1.22日,,為嚴(yán)謹(jǐn)起見改進(jìn)第二部分中對回報(bào)、狀態(tài)價(jià)值函數(shù),、動作價(jià)值函數(shù),、馬爾可夫決策、策略評價(jià)函數(shù)的描述,,并糾正個(gè)別公式的筆誤
- 1.23日,,梳理1.1節(jié)的整體內(nèi)容結(jié)構(gòu)和順序脈絡(luò),以讓邏輯更清晰,,補(bǔ)充了MDP的整個(gè)來龍去脈(包括且不限于馬爾可夫過程,、馬爾可夫獎勵、馬爾可夫決策以及貝爾曼方程)
- 1.25日,,為方便對高數(shù)知識有所遺忘的同學(xué)更順暢的讀懂本文,,新增對導(dǎo)數(shù)、期望的簡單介紹(后匯總至概率統(tǒng)計(jì)極簡入門筆記里),,以及補(bǔ)充對 中基線的定義的介紹
- 1.26日,,第十次修改/完善/新增
優(yōu)化改進(jìn)2.2節(jié)關(guān)于策略梯度的梯度計(jì)算的整個(gè)推導(dǎo)過程,以讓邏輯更清晰 - 1.27日,,優(yōu)化關(guān)于增加基線baseline和優(yōu)勢函數(shù)等內(nèi)容的描述
在后記里補(bǔ)充策略梯度計(jì)算公式的5種其它表達(dá) 優(yōu)化關(guān)于“近端策略優(yōu)化懲罰PPO-penalty的流程”的描述 - 1.28日,,新增對MC和TD方法各自的闡述及兩者的對比,優(yōu)化對KL散度定義的描述,,新增近端策略優(yōu)化裁剪PPO-clip的關(guān)鍵代碼
- 1.30日,,新增馬爾可夫決策的貝爾曼方程以及對應(yīng)的計(jì)算圖解,以方便一目了然
簡單闡述了下GPT2相比GPT的結(jié)構(gòu)變化,,以及完善豐富了下文末的參考文獻(xiàn)與推薦閱讀,,比如增加圖解GPT2、圖解GPT3的參考文獻(xiàn) - 1.31日,,為行文嚴(yán)謹(jǐn),,針對1.1.2節(jié)中關(guān)于馬爾可夫獎勵的部分
規(guī)范統(tǒng)一個(gè)別公式的大小寫表示 補(bǔ)充狀態(tài)下獎勵函數(shù)的定義 修正回報(bào)公式的筆誤 修正狀態(tài)價(jià)值函數(shù)公式的筆誤 且為形象起見,新增一個(gè)“吃飯-抽煙/剔牙”的例子以展示利用貝爾曼方程計(jì)算的過程 此外,,且為通俗細(xì)致,,針對1.1.3節(jié)中關(guān)于馬爾科夫決策的部分 拆解狀態(tài)價(jià)值函數(shù),、動作價(jià)值函數(shù)的定義公式,拆解關(guān)于狀態(tài)價(jià)值函數(shù)和動作價(jià)值函數(shù)之間聯(lián)系的推導(dǎo)過程 - 2.1日,,第十五次修改/完善/新增
參考sutton RL一書,,補(bǔ)充對獎勵函數(shù)、回報(bào)公式,、軌跡定義的公式表達(dá)規(guī)范的說明 - 2.12日,,為更一目了然,新增對狀態(tài)價(jià)值函數(shù)的貝爾曼方程的解釋,,與例子說明
- 2.13日,,開始完善動態(tài)規(guī)劃一節(jié)的內(nèi)容,然后發(fā)現(xiàn)之前寫的一篇關(guān)于DP的博客不夠通俗,,故本周得先修訂下那篇舊文,,以通俗理解DP
- 2.15日,基于已經(jīng)修訂好的DP舊文,,完善本文對DP算法的闡述
并修正第一部分里關(guān)于“什么是強(qiáng)化學(xué)習(xí)”的不夠準(zhǔn)確的表述 - 2.16日,新增對蒙特卡洛方法和時(shí)序差分法的介紹,,并重點(diǎn)對比DP,、MC、TD三者的區(qū)別與聯(lián)系
明確全文結(jié)構(gòu),,分為四大部分,,一一對應(yīng):RL基礎(chǔ)、RL進(jìn)階,、RL深入,、RL高級 - 2.17日,第二十次修改/完善/新增
新增第三部分 價(jià)值學(xué)習(xí):從n步Sarsa算法到Q-learning,、DQN,,并修訂部分細(xì)節(jié) 潤色部分細(xì)節(jié),修訂部分目錄 - 2.20日,,新增一節(jié)“RL的分類:基于模型(Value-base/Policy-based)與不基于模型”
- 2.21日,,新增KL散度公式的從零推導(dǎo)過程
- 2.24日,新增關(guān)于為何等于的詳細(xì)推導(dǎo)
- 2.26日,,新增關(guān)于如何而來的推導(dǎo)
- 3.4日,,第二十五次修改/完善/新增
完善對于“Q學(xué)習(xí)的兩種策略:行為策略和目標(biāo)策略”的描述 - 2年4月,糾正本文下面幾個(gè)熱心讀者指出的筆誤,,大家有啥問題 繼續(xù)隨時(shí)反饋,,非常感謝
- 4.27,針對一讀者留言所表達(dá)的疑惑,,新增1.2.2節(jié)中關(guān)于「獎勵函數(shù)推導(dǎo)」的說明解釋
并新增一節(jié)“4.4.3 PPO算法的一個(gè)簡單實(shí)現(xiàn):對話機(jī)器人” - 5.22,,完善對優(yōu)勢演員-評論家算法(Advantage Actor-Criti)的定義
- 5.29,,再次補(bǔ)充對優(yōu)勢函數(shù)(Advantage Function)的相關(guān)說明
- 7.16,潤色下關(guān)于“貝爾曼方程(bellman equation)的一個(gè)示例”的描述,,以為讓讀者閱讀時(shí)更加一目了然
- 2024年2.22日,,由于我司類ChatGPT微調(diào)實(shí)戰(zhàn)課里一學(xué)員的疑問,故對本文最后講價(jià)值損失時(shí),,針對對應(yīng)的圖示做一下補(bǔ)充說明
即圖示中的reward 本質(zhì)上是個(gè)return - 24年9.17(中秋之日),,第三十二次修訂
根據(jù)本文讀者的反饋,修正此節(jié)「1.2.2 馬爾可夫決策過程(MDP):馬爾可夫獎勵(MRP) + 智能體動作因素」中,,關(guān)于獎勵函數(shù)的一個(gè)表達(dá)錯誤 感謝各位朋友對本文的各種謬贊,,也歡迎大伙有任何問題繼續(xù)不吝、隨時(shí)指出,,祝大伙中秋快樂 - 2025年1.25,,和中南一教授聯(lián)合培養(yǎng)的具身研究生隊(duì)伍中,有一位在學(xué)習(xí)本文時(shí)提出
2.1.2 通過動態(tài)規(guī)劃法求解最優(yōu)策略中的這個(gè)公式是不是也應(yīng)該把對r求和放前面 故修正之
|