【逆强化学习-2】最大熵学习(Maximum Entropy Learning)
文章目錄
- 0.引言
- 1.算法原理
- 2.仿真
0.引言
\qquad本文是逆強(qiáng)化學(xué)習(xí)系列的第2篇,其余博客傳送門如下:
逆強(qiáng)化學(xué)習(xí)0-Introduction
逆強(qiáng)化學(xué)習(xí)1-學(xué)徒學(xué)習(xí)
\qquad最大熵學(xué)習(xí)是2008年出現(xiàn)的方法,原論文(鏈接見【逆強(qiáng)化學(xué)習(xí)0】的博客)使用的Reward的函數(shù)仍然是線性模型,但是優(yōu)化的思想和之前談到的學(xué)徒學(xué)習(xí)有本質(zhì)差別,由于需要一些概率論和隨機(jī)過程分析課程的知識(shí),原paper的理論也十分晦澀難懂。本人憑借粗淺的理解給大家一個(gè)淺顯易懂的解釋。
原會(huì)議的presentation(PPT)永久免費(fèi)
原paper見部分0- Introduction部分
GitHub源代碼
本文點(diǎn)贊破百,解鎖額外代碼(DQN+maxEnt)
\qquad學(xué)徒學(xué)習(xí)(APP)是最大化間隙策略(MMP)的一種擴(kuò)展,通過求解滿足最大化間隙的Reward來計(jì)算Reward,從而使得Lean的行為越來越趨向于Expert(但又不好于Expert),這種方法往往叫做Feature Matching。其缺點(diǎn)在于對(duì)于存在多種合理的Reward的函數(shù)或者Expert存在多種次優(yōu)軌跡時(shí),該方法就無能為力了。APP本質(zhì)是有約束優(yōu)化問題,而優(yōu)化變量是feature的discount-expectation基向量的坐標(biāo)θ\thetaθ。然而對(duì)于每一個(gè)策略π\(zhòng)piπ而言,都可能存在多個(gè)Reward函數(shù)使其最優(yōu)。當(dāng)演示了次優(yōu)行為時(shí),需要多個(gè)策略混合來匹配特征計(jì)數(shù),這就讓Feature Matching這件事在Expert軌跡存在多個(gè)Feature期望值時(shí)變得非常模糊。在APP中,這是通過求平均的方式解決的,然而這明顯不是一個(gè)合理的解決方案。
\qquad最大熵學(xué)習(xí)(MaxEnt)同樣是Feature Matching的方法,與APP不同的是,其采用了一種有原則的方式消除了這種匹配歧義。而這種原則就是最大熵原則,該原則基于一種假設(shè)——即專家系統(tǒng)軌跡生成自己的專家特征期望的策略是最優(yōu)軌跡(即下文的約束條件1).
\qquad可以簡單的理解為,在APP中作為損失函數(shù)的特征匹配,在MaxEnt中被放入了約束條件中,而MaxEnt正是在滿足這個(gè)約束條件的情況下,要求以θ\thetaθ為Reward函數(shù)參數(shù)時(shí),軌跡概率分布P(ζ∣θ)P(\zeta|\theta)P(ζ∣θ)的信息熵最大。
\qquad至于為什么要求信息熵最大,原paper中并無詳細(xì)說明,只是指出這已經(jīng)在reference里面有了相關(guān)研究,本人查閱相關(guān)資料,給出以下幾個(gè)理由供大家參考:
1.算法原理
下面就簡單介紹一下這個(gè)熵,對(duì)于連續(xù)變量而言,信息熵通常表示為
Ent=∫x∽π?p(x)logp(x)Ent=\int_{x\backsim \pi}-p(x)logp(x)Ent=∫x∽π??p(x)logp(x)
對(duì)于強(qiáng)化學(xué)習(xí)任務(wù)而言,最大化信息熵寫為:
max?∑ζ∈D?P(ζ∣θ)logP(ζ∣θ)s.t.{∑ζ∈DP(ζ∣θ)fζ=f~∑ζ∈DP(ζ∣θ)=1\begin{aligned} & \max\sum_{\zeta \in D}-P(\zeta| \theta)logP(\zeta| \theta) \\ s.t. &\begin{cases} \sum_{\zeta\in D}P(\zeta| \theta)f_\zeta = \widetilde{f} \\[2ex] \sum_{\zeta \in D}P(\zeta | \theta)=1 \\ \end{cases} \end{aligned}s.t.?maxζ∈D∑??P(ζ∣θ)logP(ζ∣θ)????∑ζ∈D?P(ζ∣θ)fζ?=f?∑ζ∈D?P(ζ∣θ)=1??
構(gòu)造拉格朗日函數(shù)
L(P,λ,μ)=∑ζ∈D[P(ζ∣θ)logP(ζ∣θ)+λ(P(ζ∣θ)fζ?f~)+μ(P(ζ∣θ)?1)]L(P,\lambda,\mu)= \sum_{\zeta \in D}[P(\zeta|\theta)logP(\zeta|\theta)+\lambda (P(\zeta|\theta)f_{\zeta}-\widetilde{f})+\mu(P(\zeta|\theta)-1)]L(P,λ,μ)=ζ∈D∑?[P(ζ∣θ)logP(ζ∣θ)+λ(P(ζ∣θ)fζ??f?)+μ(P(ζ∣θ)?1)]
應(yīng)用拉格朗日函數(shù)的KKT條件
?LP=∑ζ∈DlogP(ζ∣θ)+1+λfζ+μ=0①?Lλ=∑ζ∈DP(ζ∣θ)fζ?f~=0②?Lμ=∑ζ∈DP(ζ∣θ)?1=0③\begin{array} {cl} \nabla L_P =& \sum_{\zeta \in D}logP(\zeta|\theta)+1+\lambda f_{\zeta}+\mu=0 &①\\ \nabla L_{\lambda}=&\sum_{\zeta\in D}P(\zeta| \theta)f_\zeta - \widetilde{f} = 0 &②\\ \nabla L_{\mu} =& \sum_{\zeta \in D}P(\zeta | \theta)-1=0 &③ \end{array} ?LP?=?Lλ?=?Lμ?=?∑ζ∈D?logP(ζ∣θ)+1+λfζ?+μ=0∑ζ∈D?P(ζ∣θ)fζ??f?=0∑ζ∈D?P(ζ∣θ)?1=0?①②③?
由①③式得
P(ζ∣θ)=exp(?1?μ?λfζ)∑ζ∈Dexp(?1?μ?λfζ)P(\zeta|\theta)=\frac{exp(-1-\mu-\lambda f_{\zeta})}{\sum_{\zeta \in D}exp(-1-\mu-\lambda f_{\zeta})}P(ζ∣θ)=∑ζ∈D?exp(?1?μ?λfζ?)exp(?1?μ?λfζ?)?
\qquad光靠這個(gè)式子肯定是解不出最優(yōu)的θ\thetaθ的,這就要提到原paper的另一個(gè)假設(shè)——使用θ\thetaθ參數(shù)的Reward函數(shù)Rθ(τ)R_\theta(\tau)Rθ?(τ)時(shí),ζ\zetaζ軌跡的概率P(ζ∣θ)P(\zeta|\theta)P(ζ∣θ)正比于Rθ(ζ)R_{\theta}(\zeta)Rθ?(ζ)的自然指數(shù),再加上概率歸一性約束,可得專家系統(tǒng)策略的軌跡概率為:
P(ζ∣θ)=exp(Rθ(ζ))∫τ∈D[exp(Rθ(τ))dτ]P(\zeta|\theta)=\frac{exp(R_\theta(\zeta))}{\int_{\tau\in D}\left[{exp(R_{\theta}(\tau))}{\rm d}\tau \right]} P(ζ∣θ)=∫τ∈D?[exp(Rθ?(τ))dτ]exp(Rθ?(ζ))?
需要注意的是,這里的R(θ)R(\theta)R(θ)指的是累積獎(jiǎng)賞而非單步獎(jiǎng)賞。
上式中的ZZZ在paper中又被稱為partial function,原文是已知原系統(tǒng)的dynamic model的,即已知系統(tǒng)的狀態(tài)轉(zhuǎn)移概率。在不知道狀態(tài)轉(zhuǎn)移概率時(shí)ZZZ無法直接求得,通常也有三種方法:
有讀者肯定會(huì)疑問,原paper中給出的損失函數(shù)不是最大信息熵而是最大似然,這又是為什么。原paper中給出了一個(gè)讓人難以理解的解釋:
Maximizing the entropy of the distribution over paths subject to the feature constraints from observed data implies that we maximize the likelihood of the observed data under the maximum entropy (exponential family) distribution derived above (Jaynes 1957).
——即從觀測數(shù)據(jù)上滿足feature matching的約束(約束1)的條件下最大化軌跡分布的信息熵等價(jià)于在最大信息熵分布的條件下從觀測數(shù)據(jù)最大化似然。本文不對(duì)此深究,感興趣的朋友可以研究一下下面這篇論文
Jaynes, E. T. 1957. Information theory and statistical mechanics. Physical Review 106:620–630.
\qquad而假設(shè)是專家系統(tǒng)是最大熵分布的,因此對(duì)專家軌跡概率使用最大似然,得到
L(θ)=∑ζ∈Elogp(ζ∣θ)L(\theta)=\sum_{\zeta\in E}logp(\zeta|\theta)L(θ)=ζ∈E∑?logp(ζ∣θ)
即軌跡概率的最大似然。代入最大熵分布下的軌跡概率公式(其中E代表Expert的軌跡空間,而D代表Agent的軌跡空間(可以認(rèn)為是全部軌跡空間),E的采樣空間是與損失函數(shù)直接掛鉤的,而D的采樣空間則用來對(duì)ZZZ估計(jì)的):
L(θ)=∑τ∈Elogp(τ∣θ)=∑τ∈Elog1Zexp(Rθ(τ))=∑τ∈ERθ(τ)?MlogZ=∑τ∈ERθ(τ)?Mlog∑τ∈Dexp(Rθ(τ))?θL=∑τ∈EdRθ(τ)dθ?M1∑τ∈Dexp(Rθ(τ))∑τ∈D[exp(Rθ(τ))dRθ(τ)dθ]=∑τ∈EdRθ(τ)dθ?M∑τ∈D[exp(Rθ(τ))∑τ∈Dexp(Rθ(τ))dRθ(τ)dθ]=∑τ∈EdRθ(τ)dθ?M∑τ∈D[p(τ∣θ)dRθ(τ)dθ]=∑τ∈EdRθ(τ)dθ?M∑si∈S[p(s∣θ)drθ(s)dθ]\begin{aligned} L(\theta) &=\sum_{\tau\in E}logp(\tau|\theta)\\ &=\sum_{\tau\in E}log\frac{1}{Z}exp(R_{\theta}(\tau))\\ &=\sum_{\tau\in E}R_{\theta}(\tau)-MlogZ\\ &=\sum_{\tau\in E}R_{\theta}(\tau)-Mlog\sum_{\tau\in D}exp(R_{\theta}(\tau))\\ \nabla _{\theta}L&=\sum_{\tau \in E}\frac{dR_{\theta}(\tau)}{d\theta}-M\frac{1}{\sum_{\tau\in D}exp(R_{\theta}(\tau))}\sum_{\tau\in D}\left[exp(R_{\theta}(\tau))\frac{dR_{\theta}(\tau)}{d\theta}\right]\\ &=\sum_{\tau \in E}\frac{dR_{\theta}(\tau)}{d\theta}-M\sum_{\tau\in D}\left[\frac{exp(R_{\theta}(\tau))}{\sum_{\tau\in D}exp(R_{\theta}(\tau))}\frac{dR_{\theta}(\tau)}{d\theta}\right]\\ &=\sum_{\tau \in E}\frac{dR_{\theta}(\tau)}{d\theta}-M\sum_{\tau\in D}\left[p(\tau|\theta)\frac{dR_{\theta}(\tau)}{d\theta} \right]\\ &=\sum_{\tau \in E}\frac{dR_{\theta}(\tau)}{d\theta}-M\sum_{s_i\in S}\left[p(s|\theta)\frac{dr_{\theta}(s)}{d\theta} \right]\\ \end{aligned} L(θ)?θ?L?=τ∈E∑?logp(τ∣θ)=τ∈E∑?logZ1?exp(Rθ?(τ))=τ∈E∑?Rθ?(τ)?MlogZ=τ∈E∑?Rθ?(τ)?Mlogτ∈D∑?exp(Rθ?(τ))=τ∈E∑?dθdRθ?(τ)??M∑τ∈D?exp(Rθ?(τ))1?τ∈D∑?[exp(Rθ?(τ))dθdRθ?(τ)?]=τ∈E∑?dθdRθ?(τ)??Mτ∈D∑?[∑τ∈D?exp(Rθ?(τ))exp(Rθ?(τ))?dθdRθ?(τ)?]=τ∈E∑?dθdRθ?(τ)??Mτ∈D∑?[p(τ∣θ)dθdRθ?(τ)?]=τ∈E∑?dθdRθ?(τ)??Msi?∈S∑?[p(s∣θ)dθdrθ?(s)?]?
歸一化的損失函數(shù)為:
?θL ̄=1M∑τ∈EdRθ(τ)dθ?∑si∈S[p(s∣θ)drθ(s)dθ]\nabla _{\theta}\overline{L}=\frac{1}{M}\sum_{\tau \in E}\frac{dR_{\theta}(\tau)}{d\theta}-\sum_{s_i\in S}\left[p(s|\theta)\frac{dr_{\theta}(s)}{d\theta} \right]?θ?L=M1?τ∈E∑?dθdRθ?(τ)??si?∈S∑?[p(s∣θ)dθdrθ?(s)?]
其中M是專家軌跡的條數(shù),如果狀態(tài)空間是無限的,則不能直接套用此公式(但不代表無法解決)。
對(duì)于線性Reward,軌跡的累積Reward為
Rθ(ζ)=θTfζ=∑sj∈ζθTfsjR_{\theta}(\zeta)=\theta ^T f_{\zeta}=\sum_{s_j\in \zeta}\theta ^T f_{s_j}Rθ?(ζ)=θTfζ?=sj?∈ζ∑?θTfsj??
Expert產(chǎn)生的Feature Expectation為
f~=1m∑ifζ~i\widetilde{f}=\frac{1}{m}\sum_{i}f_{\widetilde{\zeta}_i}f?=m1?i∑?fζ?i??
損失函數(shù)梯度可表示為:
?θL=f~?∑si∈SDsifsi\nabla_{\theta}L=\widetilde{f}-\sum_{s_i\in S}D_{s_i}f_{si}?θ?L=f??si?∈S∑?Dsi??fsi?
其中D為狀態(tài)訪問頻次(State Visitiation Frequency),可以通過不斷與環(huán)境互動(dòng)近似出。
總結(jié)一下這個(gè)公式的推導(dǎo)需要注意一下幾點(diǎn):
2.仿真
\qquad本文的仿真平臺(tái)參照了github上的資源,并進(jìn)行了略微修改(仿真環(huán)境在學(xué)徒學(xué)習(xí)那篇有了詳細(xì)介紹,在此就不再贅述了):
GitHub源代碼
本文點(diǎn)贊破百,解鎖額外代碼(DQN+maxEnt)
使用方法仍然是直接運(yùn)行train.py即可(注意需要在mountaincar/maxent/的目錄下運(yùn)行)。和學(xué)徒學(xué)習(xí)的代碼一樣,也是基于Q-Table的。
\qquad源代碼中對(duì)Feature沒有做任何的提取,直接將每個(gè)狀態(tài)(20個(gè)位置采樣×20個(gè)速度采樣總共400個(gè)離散狀態(tài))作為Feature。假設(shè)不同特征之間是解耦的,Feature Matrix就是對(duì)角矩陣,即因此狀態(tài)訪問頻次×特征即特征訪問頻次。
\qquad在源代碼中l(wèi)earner_feature_expectations即特征訪問頻次,而歸一化之后即為梯度的第二項(xiàng)
源代碼的其中一部分如下:
看完原github的程序,本人還有一個(gè)疑點(diǎn),即是maxent.py文件中的一段
def maxent_irl(expert, learner, theta, learning_rate):gradient = expert - learnertheta += learning_rate * gradient# Clip thetafor i in range(len(theta)):if theta[i]>0:theta[i]=0\qquad原文中的clip theta實(shí)際上是防止theta超過0,類似于深度學(xué)習(xí)中的梯度截?cái)嗖僮?#xff0c;然而這個(gè)操作在我嘗試多次之后并無用處,而且也沒有任何意義(因?yàn)樵趖heta>0后,也會(huì)在下一次迭代時(shí)通過學(xué)習(xí)使得theta重新<0)。本人的建議是增加一個(gè)學(xué)習(xí)率遞減的schedule,并且將clip的范圍從[-inf,0]修改到[-0.5,0.5],可以獲得相對(duì)穩(wěn)定的學(xué)習(xí)率曲線,下面分別是clip(-0.5,0.5)和clip(-0.5,0)的對(duì)比:
\qquad可以發(fā)現(xiàn)增加一部分梯度的正向范圍反而更有利于學(xué)習(xí),這是由于expert-learn的極小值是在0處取得的,然而在學(xué)習(xí)率固定時(shí),改函數(shù)會(huì)在離散迭代時(shí)在0附近震蕩,梯度若在0處截?cái)鄷?huì)導(dǎo)致學(xué)習(xí)率銳減為0(可能正是原作者用意?)。
下面是test.py保存的幾組gif的圖
希望本文對(duì)您有幫助,謝謝閱讀!
總結(jié)
以上是生活随笔為你收集整理的【逆强化学习-2】最大熵学习(Maximum Entropy Learning)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 的 char number
- 下一篇: TextView 单行显示长文本