感谢康傲同学的深刻讨论与精彩讲解.
目录
逆强化学习概述
参考: https://zhuanlan.zhihu.com/p/26682811
强化学习与逆强化区别
强化学习是求累积回报期望最大时的最优策略,在求解过程中立即回报是人为给定的。
人在完成具体任务时, 指定回报函数的方法是从人的示例中学到隐形的回报函数
逆向强化假设: 专家在完成某项任务时,其决策往往是最优的或接近最优的. 所有的策略所产生的累积回报期望都小于等于专家策略所产生的累积回报期望.
逆向强化学习从专家示例中学到回报函数。
逆向强化学习分类
如何学习回报函数
逆向强化学习来源于模仿学习。最早的模仿学习是行为克隆,在行为克隆中,人的示例轨迹被记录下来,下次执行时恢复该轨迹。行为克隆的方法只能模仿轨迹,无法进行泛化。
而逆向强化学习是从专家(人为)示例中学到背后的回报函数,能泛化到其他情况。
根据回报函数的学习方法, 可以划分强化学习的分类.
1. 最大边际化问题
包括:学徒学习(Apprenticeship learning),MMP方法(Maximum Margin Planning),结构化分类(SCIRL)和神经逆向强化学习(NIRL).
最大边际形式化方法缺点:
很多时候不存在单独的回报函数使得专家示例行为既是最优的又比其他任何行为好很多,或者有很多不同的回报函数会导致相同的专家策略,也就是说这种方法无法解决歧义的问题。
2. 基于概率模型的方法(可以解决歧义性的问题)
包括最大熵逆向强化学习、相对熵逆向强化学习、最大熵深度逆向强化学习,基于策略最优的逆向强化学习等等。
相关论文
[1] Apprenticeship learning via inverse reinforcement learning (2004年 学徒学习)
https://ai.stanford.edu/~ang/papers/icml04-apprentice.pdf
[2] Maximum Margin Planning (2006年 最大边际规划)
[3] Inverse reinforcement learning through structured classification(2012年 结构化分类)
[4] Neural inverse reinforcement learning in autonomous navigation(2016年 神经逆向强化学习)
学徒学习
参考:
https://zhuanlan.zhihu.com/p/26766494
https://github.com/datawhalechina/easy-rl
学徒学习思想
智能体从专家示例中学到回报函数,使得在该回报函数下所得到的最优策略在专家示例策略附近
原则就是专家永远是最棒的,是先射箭,再画靶的概念。
流程:
1. 专家去玩一玩游戏,得到这一些游戏的纪录,演员也去玩一玩游戏,得到这些游戏的纪录。
2. 接下来,(先射箭,再画靶).就找出一个奖励函数, 使专家所得到的奖励大过于演员所得到的奖励。
3. 你有了新的奖励函数以后,就可以套用一般强化学习的方法去学习一个演员,这个演员会最大化奖励函数, 得到这个奖励函数能产生的最优策略。
4. 接下来,我们就改奖励函数。这个演员就会很生气,它已经可以在这个奖励函数得到高分。但是它得到高分以后,我们就改奖励函数的定义,仍然让专家可以得到比演员更高的分数。
什么叫做一个最好的奖励函数。最后你学习出来的奖励函数应该就是专家和演员在这个奖励函数都会得到一样高的分数。最终无法找到比这更能够区分专家和演员的奖励函数。把逆强化学习中的演员看成生成器,把奖励函数看成判别器,它就是 GAN。GAN 和逆强化学习不一定会收敛。但除非你对 R(奖励函数)下一个非常严格的限制,如果 R 是一个一般的网络的话,你就会有很大的麻烦.
相关定义
Preliminaries
马尔可夫决策过程Markov decision process
$$ MDP=(S, A, T, \gamma, D, R) $$
其中:
$$ S $$ | $$ A $$ | $$ T=\left\{P_{s a}\right\} $$ | $$ \gamma \in[0,1) $$ | $$ D $$ | $$ R: S \mapsto A $$ |
状态集合states | 动作集合actions | (在状态s进行动作a时的) 状态转移概率transition | 折扣因子 | 初始状态分布distribution 初始状态s0如何取 | 奖励函数reward $$ R\in[-1,1] $$ |
奖励函数R未知的马尔可夫决策过程
$$ MDP\backslash R=(S, A, T, \gamma, D) $$
拟合真实环境的奖励函数R*
$$ R^{*}(s)=w^{*} \cdot \phi(s)\\ R^{*}(s,a)=w^{*} \cdot \phi(s,a) $$
其中w为权重系数向量, φ为特征向量:
$$ \left\|w^{*}\right\|_{1} \leq 1 \\ \phi: S \rightarrow[0,1]^{k} \\ \phi: S\times A \rightarrow[0,1]^{k} $$
φ即长度为k的向量, 其中每个元素对应某种state(或state与action的组合)
w*的约束也是为了限制R的大小
策略π
在状态s时使用动作a的概率分布的映射
策略π的值value of a policy
为策略评估步骤.
对策略π估计出该策略带来的期望累积奖赏
此时求的这个期望是基于你采取的策略π,就当你的策略决定过后,通过对这个策略进行采样来得到一个期望
给定初始状态x0=x时, 策略π的状态值函数(西瓜书P378):
$$ V_{\gamma}^{\pi}(x)=\mathbb{E}_{\pi}\left[\sum_{t=0}^{+\infty} \gamma^{t} r_{t+1} \mid x_{0}=x\right], \quad \gamma \text { 折扣累积奖赏 } $$
价值函数(Value)对未来奖励进行预测, 用来评估当前状态的好坏 参考easyRL 2.2.1 P32 分为两类: 1. 状态价值函数V(state-value function). 给定状态x, 策略π累积的奖励 2. 状态动作值函数Q. 给定状态x和该步执行的动作a, 策略π累积的奖励 状态价值函数定义: 回报(return)G的期望 $$ V_{t}(s) =\mathbb{E}\left[G_{t} \mid s_{t}=s\right] $$ 回报定义: 为奖励的逐步叠加 $$ G_{t}=R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\gamma^{3} R_{t+4}+\ldots+\gamma^{T-t-1} R_{T} $$ 联立以上两式可得状态价值函数的计算方法: $$ V_{t}(s) =\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\ldots+\gamma^{T-t-1} R_{T} \mid s_{t}=s\right] $$ |
本算法中策略π的状态值函数公式
与上方定义的表达方式有微小区别
此处初始状态s0不再是给定的, 而是从初始状态分布D中采样, 再求期望. 所以右侧展开公式中, 后方的条件也少了x0=x
$$ \begin{aligned} E_{s_{0} \sim D}\left[V^{\pi}\left(s_{0}\right)\right] &=E\left[\sum_{t=0}^{\infty} \gamma^{t} R\left(s_{t}\right) \mid \pi\right] \\ &=E\left[\sum_{t=0}^{\infty} \gamma^{t} w \cdot \phi\left(s_{t}\right) \mid \pi\right] \\ &=w \cdot E\left[\sum_{t=0}^{\infty} \gamma^{t} \phi\left(s_{t}\right) \mid \pi\right] \end{aligned} $$
其中下标s0~D代表取初始状态时, 服从分布D. 动作选择时服从策略π.
将奖励函数用特征向量的线性组合来拟合, 提出常量w, 剩下的可定义为特征期望μ(feature expectations)
$$ \mu(\pi)=E\left[\sum_{t=0}^{\infty} \gamma^{t} \phi\left(s_{t}\right) \mid \pi\right] \in \mathbb{R}^{k} $$
代入特征期望μ, 可简化策略的状态值函数公式:
$$ E_{s_{0} \sim D}\left[V^{\pi}\left(s_{0}\right)\right]=w \cdot \mu(\pi) $$
已知使用策略π: μ决定价值E[V]
估计专家策略的特征期望\( \hat{\mu}_{E} \)
已知性质:
用策略\( \pi_{1}, \pi_{2} \)组合成\( \pi_{3} \), 其中\( \lambda \)的概率选\( \pi_{1} \),\( 1-\lambda \)的概率选\( \pi_{2} \). 则\( \pi_{3} \)的特征期望为:
$$ \mu\left(\pi_{3}\right)=\lambda \mu\left(\pi_{1}\right)+(1-\lambda) \mu\left(\pi_{2}\right) $$
所以对于给定的m个专家轨迹: \( \left\{s_{0}^{(i)}, s_{1}^{(i)}, \ldots\right\}_{i=1}^{m} \)
估计特征期望\( \hat{\mu}_{E} \):
$$ \hat{\mu}_{E}=\frac{1}{m} \sum_{i=1}^{m} \sum_{t=0}^{\infty} \gamma^{t} \phi\left(s_{t}^{(i)}\right) . $$
即相对于普通策略的特征期望(外层对所有状态按分布采样), 专家策略对m条轨迹得到的回报求均值.
算法描述
为了寻找最优策略\( \tilde{\pi} \)接近专家策略. 使两者的策略值函数E(V)接近, 即特征期望μ接近:
$$ \left| E\left[\Sigma_{t=0}^{\infty}\gamma^tR\left(s_t\right)|\pi_E\right]-E\left[\Sigma_{t=0}^{\infty}\gamma^tR\left(s_t\right)|\tilde{\pi}\right]\right| \\=\left| w^T\mu\left(\tilde{\pi}\right)-w^T\mu_E\right| \\ \le\lVert w\rVert_2\lVert\mu\left(\tilde{\pi}\right)-\mu_E\rVert_2 \\ \le 1\cdot\epsilon =\epsilon$$
所以可以对μ优化代替对值函数优化:
$$ \mu(\tilde{\pi})\rightarrow \mu_{E}\\ \Rightarrow \left\|\mu(\tilde{\pi})-\mu_{E}\right\|_{2} \leq \epsilon $$
学徒算法找最优策略\( \tilde{\pi} \)
1.随机取\( \pi^{(0)} \), 计算特征期望\( \mu^{(0)}=\mu\left(\pi^{(0)}\right) \), 令i=1
2.逆强化步骤
根据支持向量机思想, 令专家特征期望点μ_E为正类, 其他策略得到的特征期望点为负类.求支持向量(距离专家最近的2个点)的最大间隔t, 此时的最大间隔方向为w. (w为支撑超平面的法向量)
计算:
$$ t^{(i)}=\max _{w:\|w\|_{2} \leq 1} \min _{j \in\{0 . .(i-1)\}} w^{T}(\mu_{E}- \mu^{(j)})$$
该式等价于:
$$ \begin{array}{cl} \max _{t, w} & t & 最大间隔 \\ \text { s.t. } & w^{T} \mu_{E} \geq w^{T} \mu^{(j)}+t, j=0, \ldots, i-1 & 前j-1次迭代得到的策略中, 离专家策略最近的点(支撑向量, 可能为多个) \\ & \|w\|_{2} \leq 1 & 使奖励R绝对值\leq 1所需约束 \end{array} $$
3.判断是否收敛, 若\( t^{(i)} \leq \epsilon \), 终止
4.强化学习步骤
根据上一步得到的奖励函数\( R=\left(w^{(i)}\right)^{T} \phi \), 计算这次迭代的最优策略\( \pi^{(i)} \)
5.计算特征期望(本次迭代得到最优策略的μ)
$$ \mu^{(i)}=\mu(\pi^{(i)}) $$
6. i++, 回第二步修改奖励
算法的前三次迭代几何示例如下