下面我们来探讨下逆向强行学习的基本原理和典型方法,我们假设您已经对强化学习和凸优化的基本原理有一定的了解。
我们先介绍下逆向强化学习的概念预分类:
什么是逆向强化学习呢?当完成复杂的任务时,强化学习的回报函数很难指定,我们希望有一种方法找到一种高效可靠的回报函数,这种方法就是逆向强化学习。我们假设专家在完成某项任务时,其决策往往是最优的或接近最优的,当所有的策略产生的累积汇报函数期望都不比专家策略产生的累积回报期望大时,强化学习所对应的回报函数就是根据示例学到的回报函数。即逆向强化学习就是从专家示例中学习回报函数。当需要基于最优序列样本学习策略时,我们可以结合逆向强化学习和强化学习共同提高回报函数的精确度和策略的效果。逆向强化学习的基本理论可参考如下论文:
Ng A Y, Russell S J. Algorithms for Inverse Reinforcement Learning. ICML, 2000
逆向强化学习一般流程如下:
逆向强化学习分类如下:
最大边际化方法的缺点是很多时候不存在单独的回报函数使得专家示例行为既是最优的又比其它任何行为好很多,或者不同的回报函数挥导致相同的专家策略,也就是说这种方法无法解决歧义问题。基于概率模型的方法可以解决此问题。
逆向强化学习项目可参考:
https://github.com/MatthewJA/Inverse-Reinforcement-Learning
学徒学习指的是从专家示例中学到回报函数,使得在该回报函数下所得的最优策略在专家示例策略附近。设未知的回报函数
R ( s ) = w ⋅ ϕ ( s ) R(s)=w\cdot \phi(s) R(s)=w⋅ϕ(s) 其中 ϕ ( s ) \phi(s) ϕ(s) 为基函数,可以是多项式基底、傅里叶基底等。此时逆向强化学习要求得的是灰板函数的系数 w w w。
根据值函数定义: E s 0 ∼ D [ V π ( s 0 ) ] = E [ ∑ t = 0 ∞ γ t R ( s t ) ∣ π ] = E [ ∑ t = 0 ∞ γ t w ⋅ ϕ ( s t ) ∣ π ] = w ⋅ E [ ∑ t = 0 ∞ γ t ϕ ( s t ) ∣ π ] E_{s_{0}\sim D}[V^{\pi}(s_{0})] = E\left[\left.\sum_{t=0}^{\infty}\gamma^{t}R(s_{t})\right|\pi\right]=E\left[\left.\sum_{t=0}^{\infty}\gamma^{t}w\cdot\phi(s_{t})\right|\pi\right]=w\cdot E\left[\left.\sum_{t=0}^{\infty}\gamma^{t}\phi(s_{t})\right|\pi\right] Es0∼D[Vπ(s0)]=E[t=0∑∞γtR(st)∣∣∣∣∣π]=E[t=0∑∞γtw⋅ϕ(st)∣∣∣∣∣π]=w⋅E[t=0∑∞γtϕ(st)∣∣∣∣∣π] 定义特征期望 为 μ ( π ) = E [ ∑ t = 0 ∞ γ t ϕ ( s t ) ∣ π ] \mu(\pi)=E\left[\left.\sum_{t=0}^{\infty}\gamma^{t}\phi(s_{t})\right|\pi\right] μ(π)=E[∑t=0∞γtϕ(st)∣π] 因此 E s 0 ∼ D [ V π ( s 0 ) ] = w ⋅ μ ( π ) E_{s_{0}\sim D}[V^{\pi}(s_{0})] =w\cdot \mu(\pi) Es0∼D[Vπ(s0)]=w⋅μ(π)。给定 m m m 跳专家轨迹后,我们可以估计特征期望为 μ ^ E = 1 m ∑ i = 1 m ∑ t = 0 ∞ γ t ϕ ( s t ( i ) ) \hat{\mu}_{E}=\frac{1}{m}\sum_{i=1}^{m}\sum_{t=0}^{\infty}\gamma^{t}\phi\left(s_{t}^{(i)}\right) μ^E=m1i=1∑mt=0∑∞γtϕ(st(i))
我们要找一个策略,使得它的表现与专家策略相近,其实就是找到一个策略 π ~ \tilde{\pi} π~ 的特征期望与专家策略的特征期望相近,即 ∥ μ ( π ~ ) − μ E ∥ 2 ≤ ϵ \| \mu(\tilde{\pi})-\mu_{E} \|_{2}\leq \epsilon ∥μ(π~)−μE∥2≤ϵ 对于任意的权重 ∥ w ∥ 2 ≤ 1 \|w\|_{2}\leq 1 ∥w∥2≤1,值函数满足如下不等式
∣ E [ ∑ t = 0 ∞ γ t R ( s t ) ∣ π E ] − E [ ∑ t = 0 ∞ γ t R ( s t ) ∣ π ~ ] ∣ = ∣ w T μ ( π ~ ) − w T μ E ∣ ≤ ∥ w ∥ 2 ⋅ ∥ μ ( π ~ ) − μ E ∥ 2 ≤ ϵ \left| E\left[\left.\sum_{t=0}^{\infty}\gamma^{t}R(s_{t})\right|\pi_{E}\right] - E\left[\left.\sum_{t=0}^{\infty}\gamma^{t}R(s_{t})\right|\tilde{\pi}\right] \right| = \left| w^{T}\mu(\tilde{\pi})-w^{T}\mu_{E} \right| \leq \|w\|_{2}\cdot \| \mu(\tilde{\pi}) - \mu_{E} \|_{2} \leq \epsilon ∣∣∣∣∣E[t=0∑∞γtR(st)∣∣∣∣∣πE]−E[t=0∑∞γtR(st)∣∣∣∣∣π~]∣∣∣∣∣=∣∣wTμ(π~)−wTμE∣∣≤∥w∥2⋅∥μ(π~)−μE∥2≤ϵ
学徒学习的伪代码如下:
其中step 2 的目标函数写成标准的优化形式为:
max t , w t s.t. w T μ E ≥ w T μ ( j ) , j = 0 , 1 , … , i − 1 ∥ w ∥ 2 ≤ 1 \begin{aligned} &\max_{t,w} t \\ \text{s.t. } & w^{T}\mu_{E}\geq w^{T}\mu^{(j)},j=0,1,\dots,i-1 \\ & \|w\|_{2}\leq 1 \end{aligned} s.t. t,wmaxtwTμE≥wTμ(j),j=0,1,…,i−1∥w∥2≤1
综上所述,学徒学习方法可分两步:
详细内容请参考:
Abbeel P, Ng A Y. Apprenticeship learning via inverse reinforcement learning, ICML. ACM, 2004.
代码可参考 irl/linear_irl.py 中的 large_irl 函数。
最大边际规划将逆向强化学习建模为 D = { ( X i , A i , p i , F i , y i , L i ) } i = 1 n D=\{(\mathcal{X}_{i}, \mathcal{A}_{i},p_{i},F_{i},y_{i},\mathcal{L}_{i})\}_{i=1}^{n} D={(Xi,Ai,pi,Fi,yi,Li)}i=1n 该式从左到右依次为状态空间,动作空间,状态转移概率,回报函数的特征向量,专家轨迹和策略损失函数。在MMP框架下,学习者试图找到一个特征到回报的线性映射也就是参数 w w w,在这个线性映射下最好的策略在专家示例策略附近。该问题可形式化为:
min w , ζ i 1 2 ∥ w ∥ 2 + γ n ∑ i β i ζ i q s.t. ∀ i w T F i μ i + ζ i ≥ max μ ∈ G i w T F i μ + l i T μ \begin{aligned} &\min_{w,\zeta_{i}}\frac{1}{2}\|w\|^{2}+\frac{\gamma}{n}\sum_{i}\beta_{i}\zeta_{i}^{q} \\ &\text{s.t. }\forall i \quad w^{T}F_{i}\mu_{i}+\zeta_{i}\geq \max_{\mu\in\mathcal{G}_{i}}w^{T}F_{i}\mu+l_{i}^{T}\mu \end{aligned} w,ζimin21∥w∥2+nγi∑βiζiqs.t. ∀iwTFiμi+ζi≥μ∈GimaxwTFiμ+liTμ 第二行为约束,其含义如下:
损失函数可以利用轨迹中两种策略选择不同动作的综合来衡量,此处策略 μ \mu μ 指的是每个状态被访问的频次。关于MMP的求解内容此处暂时不做详细讨论。
详细内容请参考:
Ratliff N D, Bagnell J A, Zinkevich M A. Maximum margin planning, International Conference. DBLP, 2006.
MMP方法在约束不等式部分,变量是策略,需要迭代求解MDP的解,计算代价很高。为了避免迭代计算MDP的解,我们可以这样考虑问题:对于一个行为空间很小的问题,最终的策略其实是找到每个状态所对应的最优动作。若把每个动作看作是一个标签,那么所谓的策略其实就是把所有的装填分成几类,分类的表示是值函数,最好的分类对应着最大的值函数。利用这个思想,逆向强化学习可以形式化为:
min θ , ζ 1 2 ∥ θ ∥ 2 + η N ∑ i = 1 N ζ i s.t. ∀ i , θ T μ ^ π E ( s i , a i ) + ζ i ≥ max a θ T μ ^ π E ( s i , a ) + L ( s i , a ) \begin{aligned} &\min_{\theta,\zeta}\frac{1}{2}\|\theta\|^{2}+\frac{\eta}{N}\sum_{i=1}^{N}\zeta_{i} \\ &\text{s.t. }\forall i,\quad \theta^{T}\hat{\mu}^{\pi_{E}}(s_{i},a_{i})+\zeta_{i}\geq \max_{a}\theta^{T}\hat{\mu}^{\pi_{E}}(s_{i},a)+\mathcal{L}(s_{i},a) \end{aligned} θ,ζmin21∥θ∥2+Nηi=1∑Nζis.t. ∀i,θTμ^πE(si,ai)+ζi≥amaxθTμ^πE(si,a)+L(si,a) 约束中的 { s i , a i } \{s_{i},a_{i}\} {si,ai} 为专家轨迹, μ ^ π E ( s i , a i ) \hat{\mu}^{\pi_{E}}(s_{i},a_{i}) μ^πE(si,ai) 可以利用Monte Carlo方法求解,而对于 μ ^ π E ( s i , a ≠ a i ) \hat{\mu}^{\pi_{E}}(s_{i},a\neq a_{i}) μ^πE(si,a̸=ai) 则可利用启发的方法得到。
从数学形式看,结构化分类的方法与MMP非常相似,但是两者有本质不同:
详细内容请参考:
Klein E, Geist M, Piot B, et al. Inverse reinforcement learning through structured classification, Advances in Neural Information Processing Systems. 2012.
逆向强化学习要学习的是回报函数,但是学习回报函数时又引入了需要人为指定的基底。对于大规模问题,人为指定基底表示能力不足,只能覆盖部分回报函数形式,难以泛化到其他状态空间。解决方法之一就是利用神经网络表示回报函数的基底。此处暂不对神经逆向强化学习做深入讨论。
详细内容请参考:
Chen X, Kamel A E. Neural inverse reinforcement learning in autonomous navigation. Robotics & Automation Systems,2016.
基于最大边际的方法往往会产生歧义,比如许多不同的回报函数会导致相同的专家策略。在这种情况下,所学到的回报函数往往具有随机的偏好。最大熵方法就是为解决此问题提出的。
在概率论中,熵是不确定性的度量。不确定性越大,熵越大。
最大熵原理:在学习概率模型时,在所有满足约束的概率模型(分布)中,熵最大的模型是最好的模型。
原因在于通过熵最大所选取的模型,没有对未知做任何主观假设。从概率模型的角度建模逆向强化学习,我们可以这样考虑:**存在一个潜在的概率分布,在该概率分布下,产生了专家轨迹。**此时,已知条件为
∑ ζ i P ( ζ i ) f = f ~ \sum_{\zeta_{i}}P(\zeta_{i})f=\tilde{f} ζi∑P(ζi)f=f~ 这里用 f f f 表示特征期望, f ~ \tilde{f} f~ 表示专家特征期望。在满足上述约束条件的所有概率分布中,熵最大的概率分布式除了约束外对其他任何位置信息没有做任何假设的分布。所以,最大熵的方法可以避免歧义性的问题。
熵最大,是最优问题,我们将该问题转化为标准型:
max − p log p s.t. ∑ ζ i P ( ζ i ) f ζ i = f ~ ∑ P = 1 \begin{aligned} &\max -p\log p \\ &\text{s.t. } \sum_{\zeta_{i}}P(\zeta_{i})f_{\zeta_{i}}=\tilde{f} \\ &\sum P =1 \end{aligned} max−plogps.t. ζi∑P(ζi)fζi=f~∑P=1 该问题可用拉格朗日乘子法求解:
min L = ∑ ζ i p log p − ∑ j = 1 n λ j ( p f i − f ~ ) − λ 0 ( ∑ p − 1 ) \min L = \sum_{\zeta_{i}}p\log p -\sum_{j=1}^{n}\lambda_{j}(pf_{i}-\tilde{f})-\lambda_{0}(\sum p-1) minL=ζi∑plogp−j=1∑nλj(pfi−f~)−λ0(∑p−1) 对概率 p p p 进行微分,并令导数为0,得到有最大熵的概率为:
p = exp ( ∑ j = 1 n λ j f j ) exp ( 1 − λ 0 ) = 1 Z exp ( ∑ j = 1 n λ j f j ) p=\frac{\exp\left( \sum_{j=1}^{n}\lambda_{j}f_{j} \right)}{\exp(1-\lambda_{0})}=\frac{1}{Z}\exp\left( \sum_{j=1}^{n}\lambda_{j}f_{j} \right) p=exp(1−λ0)exp(∑j=1nλjfj)=Z1exp(j=1∑nλjfj) 参数 λ j \lambda_{j} λj 对应着回报函数中的参数,改参数可以利用最大似然法求解。
一般而言,利用最大似然法求解上式中的参数时,往往会遇到未知的配分函数项 Z Z Z ,因此不能直接求解。一种可行的方法是利用次梯度的方法,如:
∇ L ( λ ) = f ~ − ∑ ζ P ( ζ ∣ λ , T ) f ζ \nabla L(\lambda)=\tilde{f}-\sum_{\zeta}P(\zeta|\lambda,T)f_{\zeta} ∇L(λ)=f~−ζ∑P(ζ∣λ,T)fζ 其中轨迹的概率 P ( ζ ) P(\zeta) P(ζ)可表示为: P r ( τ ∣ θ , T ) ∝ d 0 ( s 1 ) exp ( ∑ i = 1 k θ i f i τ ) ∏ t = 1 H T ( s t + 1 ∣ s t , a t ) Pr(\tau|\theta,T)\propto d_{0}(s_{1})\exp\left( \sum_{i=1}^{k}\theta_{i}f_{i}^{\tau} \right)\prod_{t=1}^{H}T(s_{t+1}|s_{t},a_{t}) Pr(τ∣θ,T)∝d0(s1)exp(i=1∑kθifiτ)t=1∏HT(st+1∣st,at) 求解该式的前提是装填转移概率 T T T 是已知的。
详细内容请参考:
Ziebart B D, Mass A, Bagnell J A, et al. Maximum entropy inverse reinforcement learning. National Conference on Artifical Intelligence. AAAI Press, 2008.
在无模型强化学习中,状态转移概率 T T T 往往是未知的,为解决此问题,我们可将问题建模为求解相对熵最大。设 Q Q Q 为利用均匀分布策略产生的轨迹分布,要求解的概率分布为 P ( τ ) P(\tau) P(τ),问题可形式化为:
min P ∑ τ ∈ T P ( τ ) ln P ( τ ) Q ( τ ) s.t. ∀ i ∈ { 1 , 2 , … , k } : ∣ ∑ τ ∈ T P ( τ ) f i τ − f ^ i ∣ ≤ ϵ ∑ τ ∈ T P ( τ ) = 1 ∀ τ ∈ T : P ( τ ) ≥ 0 \begin{aligned} &\min_{P}\sum_{\tau\in\mathcal{T}}P(\tau)\ln \frac{P(\tau)}{Q(\tau)} \\ &\text{s.t. }\forall i\in\{1,2,\dots,k\}: \\ &\left| \sum_{\tau\in\mathcal{T}}P(\tau)f_{i}^{\tau}-\hat{f}_{i} \right| \leq\epsilon \\ &\sum_{\tau\in\mathcal{T}}P(\tau)=1 \\ & \forall \tau\in\mathcal{T}:P(\tau)\geq 0 \end{aligned} Pminτ∈T∑P(τ)lnQ(τ)P(τ)s.t. ∀i∈{1,2,…,k}:∣∣∣∣∣τ∈T∑P(τ)fiτ−f^i∣∣∣∣∣≤ϵτ∈T∑P(τ)=1∀τ∈T:P(τ)≥0 同样利用拉格朗日乘子法和KKT条件求解,可以得到相对熵最大的解。参数的求解过程同样利用次梯度方法。此处对具体的求解过程暂不做详细讨论。
详细内容请参考:
Boularias A, Kober J, Peters J. Relative entropy inverse reinforcement learning. 2011.
最大熵逆向强化学习虽然解决了歧义性问题,但在实际应用中难以应用,这是因为:
解决上述第一个问题可以利用深度神经网络来估计回报函数;针对第二个问题,可以采用基于采样的方法替代正向强化学习。此时暂不对具体算法做详细讨论。
详细内容请参考:
Wulfmeier M, Ondruska P, Posner I, Maximum Entropy Deep Inverse Reinforcement Learning. 2015.
Finn C, Levine S, Abbeel P. Guided cost learning: deep inverse optimal control via policy optimization. 2016.
GAIL (Generative Adversarial Imitation Learning) 是一种使用 GAN (Generative Adversarial Network) 完成 Imitation Learning 工作的方法。我们知道回报函数的目标是使专家轨迹的长期回报尽可能高于其它策略生成的轨迹。把这个目标对应到 GAN 的场景下:*在 GAN 中我们希望生成分布尽可能靠近真实分布;而在逆向强化学习中我们希望策略模型轨迹尽可能靠近专家轨迹。*我们可以采用类似的方法,由策略模型充当 GAN 中的生产模型,以状态为输入生成行动;而回报函数模型可以充当判别模型,用于判别行动近似专家行动的程度。
GAIL 的实现代码在 baselines/gail 文件夹中。这里不作详细介绍,具体内容请参考:
Goodfellow I J, Pouget-Abadie J, Mirza M, et al. Generative Adversarial Networks. NIPS, 2014.