知识图谱自然语言处理

从零开始强化学习(六)——模仿学习

2022-07-08  本文已影响0人  晓柒NLP与药物设计

模仿学习(imitation learning,IL)又叫做示范学习(learning from demonstration)学徒学习(apprenticeship learning)观察学习(learning by watching)。在模仿学习里,根据一些专家的示范使机器可以跟环境互动,但无法从环境里面得到任何的奖励,只能看着专家的示范来学习什么是好,什么是不好。其实多数的情况,任务的确无法从环境里面得到非常明确的奖励。虽然没有办法给出奖励,但是收集专家的示范是可以做到的。举例来说:

所以模仿学习的使用性非常高,假设不知道奖励,可以通过收集专家的示范,或者通过收集到一些强智能体(比如人)跟环境实际上的互动,即可使用模仿学习这个技术,模仿学习主要包含两个方法:

一. 行为克隆

不同于监督学习,强化学习往往被用来处理复杂的决策任务;但由于决策空间巨大,强化学习需要不断地试错,因此样本复杂度(Sample Complexity)往往很高,从而限制了强化学习在一些场景中的应用。而模仿学习则是直接从专家样本中进行学习;由于有比较高质量的决策行为数据,模仿学习被认为是可以降低样本复杂度的一个手段。除此之外,模仿学习的一个重要应用是:有些应用(比如自动驾驶)决策行为的奖励函数很难定义,但是有一些高质量的决策示例(比如人类开车的视频)可以被用来模仿和生成类似的决策行为。

1.1 原理

考虑一个马尔科夫决策过程框架:M=(S,A,P,R,\gamma,\rho)

决策者的目标是寻找一个稳态策略\pi: \mathcal{S} \rightarrow \Delta(\mathcal{A})来最大化累计奖励:
V(\pi) = \mathbb{E}\left[\sum_{t=0}^{\infty}\gamma^{t} R(s_t, a_t) \bigg| s_0 \sim \rho, a_t \sim \pi(\cdot|s_t), \forall t \geq 0 \right] \tag{1}
除此之外,在模仿学习里,我们假设有一个由专家策略\pi_E收集到数据集\mathcal{D} = \{(s_i, a_i) \}_{i=1}^{m},其中每一个状态动作对是由和环\pi_E境交互产生的。因为如果假设专家策略的质量很高,所以目标变成了寻找一个策略\pi来减小与专家策略的值函数差异
\min_{\pi} \left[ V(\pi_E) - V(\pi) \right] \tag{2}
即期望\pi能从专家示例中很好的恢复出专家的决策行为来使得决策者的值函数比较大

1.2 算法

行为克隆是一个比较基础的模仿学习方法。这个算法直接优化两个策略间的动作概率分布差异:
\begin{equation} \min_{\pi} \mathbb{E}_{s \sim d_{\pi_E}} \left[ D_{KL} (\pi_E(\cdot|s), \pi(\cdot|s)) \right] := \mathbb{E} _{(s, a) \sim \rho_{\pi_E}} \left[ \log \left(\frac{\pi_E(a|s)}{\pi(a|s)} \right) \right] \\ \end{equation}\tag{3}
这里d_{\pi_E}\rho_{\pi_E}分别是由策略产生\pi_E的(折扣的)状态分布和状态动作分布。一般情况下的定义如下:
\begin{align} d_{\pi}(s) &= \mathbb{E} \left[ \sum_{t=0}^{\infty} \gamma^{t} \Pr(s_t=s) \bigg| s_0 \sim \rho, a_t \sim \pi(\cdot|s_t), \forall t \geq 0 \right] \\ \rho_{\pi}(s, a) &= \mathbb{E} \left[ \sum_{t=0}^{\infty} \gamma^{t} \Pr(s_t=s, a_t = a) \bigg| s_0 \sim \rho, a_t \sim \pi(\cdot|s_t), \forall t \geq 0 \right] \end{align}\tag{4}
可以简单地将d_{\pi_E}\rho_{\pi_E}理解为,一个策略访问某个状态或者状态动作对的"频率"。回到目标函数/损失函数,即一个简单的监督学习问题:数据分布由专家策略产生,我们期望使用最大似然估计,学习到一个最优的分类器(或者回归器)。这里说最大似然估计,是因为最小化KL散度等价于最大似然估计。如果损失函数的值很小,可以推断出学习者能够较好地模仿专家策略,从而在决策的时候有一个不错的值函数。下面详细地刻画这件事

1.3 分析

假设可以寻找到一个策略\pi,其与最优策略的损失函数值小于给定的精度\epsilon,那么可以证明,这个策略与专家策略的决策质量上有如下的保证:
V(\pi_E) - V(\pi) \leq \frac{2 \sqrt{2}}{(1-\gamma)^2} \sqrt{\epsilon} \tag{5}
可以看到,损失函数值越小,两者的值函数差异越小。但与此同时,这个差异是以1/(1-\gamma)^2的速度在放大。这个现象在模仿学习中被称作为复合误差(compounding errors):对于一个有效决策长度(以1-\gamma来衡量,\gamma越接近1,有效决策长度越长)的模仿学习任务,值函数值差异随目标函数值差异以二次方的速度增长。也就说:对于有效决策长度比较长的任务来讲,即使把目标函数优化地很小,值函数的差异依然可能很大

二. 逆强化学习

IRL的提出动机主要有以下两点:

很多时候拿不到最优策略,但是获取最优策略的采样数据却是非常容易的。因此逆强化学习的流程如下所示:

  1. 智能体随机产生一个策略
  2. 智能体的策略采样得到的数据与专家数据采样得到的数据对比,学习奖励函数
  3. 利用所学的奖励函数进行强化学习,提高自身策略水平
  4. 策略差距较小则停止迭代,否者回到第二步
2.1 有限状态下的求解

假定最优策略为\pi^{*},其它策略为\pi,有:
V_{π^∗} ( s ) ⩾ V_π ( s )\\ q_{π^∗} ( s , a ) ⩾ q_π ( s , a )\tag{6}
依据Bellman Equation有:
V^{\pi}=R+\gamma P_{s^{\prime}|(s,\pi^{*}(s))}V^{\pi}\tag{7}
因此有:
V^{\pi}=(I-\gamma P_{s^{\prime}|(s,\pi^{*}(s))})^{-1}R\tag{8}

这里我们想要求出奖励R的函数方程,因此期望消去V^{\pi}由:
P_{s^{\prime}|(s,\pi^{*}(s))}V^{\pi} \geq P_{s^{\prime}|(s,\pi(s))}V^{\pi}\tag{9}

可以消去V^{\pi}得到:
(P_{s^{\prime}|(s,\pi^{*}(s))}-P_{s^{\prime}|(s,\pi(s))})(I-\gamma P_{s^{\prime}|(s,\pi^{*}(s))})^{-1}R \geq 0
如果假定专家数据为最优策略下的采样数据,则求取的奖励函数期望能够使得上述公式越大越好,上述推导则变成了一个线性规划问题:
max⁡(P_{s,π^∗(s)}−P_{s,a})(I−γP_{π^∗})R\\ s.t.(P_{s,π^∗(s)}−P_{s,a})(I−γP_{π^∗})R⩾0\tag{10}

上述线性规划问题的约束比较弱,回报函数可以成比例地扩大或者缩小同样能够满足约束,并且回报函数取0时也能满足约束,但这种情况实际上是没有意义的。因此考虑增加约束:

  1. 限制回报的范围|R|\leq R_{max} 。并且Ng认为在其它所有情况都相同的时候,回报函数的取值越小越简单也就越可取,可以选择在优化的目标函数上加上一个惩罚项-\lambda||R||_{1},类似L1、L2正则化,都是为了防止参数过大(这里引入了另一个问题,\lambda参数的取值问题)
  2. 只考虑最优策略和次优策略的差异:之前考虑的是最优策略优于其它所有策略,也就是以相同的权重考虑最优策略和其它策略之间的差距,但是最优策略和次优策略之间的差距会显得更加重要

引入这两个约束之后,原问题的规划变为:
max⁡_R[min_a\{(P_{s,π^∗(s)}−P_{s,a})(I−γP_{π^∗})^{-1}R\}-γ |R|]\\ s.t.\ \ \ -(P_{s,π^∗(s)}−P_{s,a})(I−γP_{π^∗})R\leq0\\ |R|\leq R_{max} \tag{11}

之后去求解上述规划问题即可

2.2 无限状态下的求解

在无限状态空间下,奖励函数可以看作是一个从状态到回报的映射函数:
\text{Reward}(s)=w^{T}\phi(s)\tag{12}
其中\phi(s)是将状态映射到低维空间。于是问题就变成了求解参数w来确定回报函数,这里设定奖励函数为线性函数也是为了之后方便计算。如果状态被映射到一个d维的向量上,那么求解回报就相当于进行如下计算:
R(s)=w_{1} \phi_{1}(s)+w_{2} \phi_{2}(s)+\cdots+w_{d} \phi_{d}(s)\tag{13}
值函数的计算方式可表示为:
\begin{aligned} V^{\pi}(s) &=\sum_{t=0}^{\infty} \gamma^{t} \sum_{i=1}^{d} w_{i} \phi_{i}(s) \\ &=\sum_{i=1}^{d} \sum_{t=0}^{\infty} \gamma^{t} w_{i} \phi_{i}(s) \\ &=\sum_{i=1}^{d} w_{i} \sum_{t=0}^{\infty} \gamma^{t} \phi_{i}(s) \\ &=\sum_{i=1}^{d} w_{i} V_{i}^{n}(s) \end{aligned}\tag{14}
其中V_{i}^{\pi}(s)表示某一维映射特征的累计值。最终目标同样是希望找到最佳的回报函数,使最优策略的价值最大化:
\begin{aligned} &E_{\boldsymbol{s}^{\prime} \sim P_{s, \pi^{*}(s)}}\left[V^{\pi}\left(s^{\prime}\right)\right] \geqslant E_{s^{\prime} \sim P_{s, a}}\left[V^{\pi}\left(s^{\prime}\right)\right] \\ &\sum_{i=1}^{d} w_{i}(E_{s^{\prime} \sim P_{s, \pi^{*}(s)}}[V_{i}^{\pi}(\operatorname{s}^{\prime})]-E_{\boldsymbol{s}^{\prime} \sim P_{s, a}}[V_{i}^{\pi}(s^{\prime})]) \geqslant 0 \end{aligned}\tag{15}
最终的求解目标为:
\tag{16}\begin{aligned} &\operatorname{maximize} \sum_{\boldsymbol{s} \in \boldsymbol{S}_{0}} \min _{\boldsymbol{a} \in\left\{\boldsymbol{a}_{2}, \ldots a_{k}\right\}}\left\{p\left(\sum_{i=1}^{d} w_{i}\left(E_{\boldsymbol{s}^{\prime} \sim P_{\boldsymbol{s}, \pi^{*}(\boldsymbol{s})}}\left[V_{i}^{\pi}\left(\boldsymbol{s}^{\prime}\right)\right]-E_{\boldsymbol{s}^{\prime} \sim P_{\boldsymbol{s} a}}\left[V_{i}^{\pi}\left(\boldsymbol{s}^{\prime}\right)\right]\right)\right)\right\}\\ &\text { s.t. }\left|w_{i}\right| \leqslant 1, i=1, \ldots, d \end{aligned}
与之前有限状态下的求解有些许不同的地方在于:

2.3 最大熵逆强化学习

最大熵逆强化学习(Max Entropy Inverse Reinforcement Learning),能够从多个满足限定条件的策略中寻找一个更合理的策略,论文:Maximum entropy inverse reinforcement learning
期望利用专家的行动轨迹\zeta=\left\{s_{i}, a_{i}\right\}_{N}学习一个回报函数r\left(f_{s_{j}} ; \theta\right),其中f_{s_{j}}是状态的特征抽取,\theta是回报函数的参数,如果回报函数与特征之间是线性关系,则可表示为如下形式:
r\left(\boldsymbol{f}_{\boldsymbol{s}_{j}}\right)=\theta^{\mathrm{T}} \boldsymbol{f}_{\boldsymbol{s}_{j}}=\sum_{i} \theta_{i} \boldsymbol{f}_{i}\tag{17}
此时某条轨迹ζ \zetaζ的累计回报可以写作:
r\left(f_{\zeta}\right)=\sum_{s_{j} \in \zeta} \theta^{\mathrm{T}} f_{s_{j}}=\theta^{\mathrm{T}} \sum_{s_{j} \in \zeta} f_{s_{j}}=\theta^{\mathrm{T}} f_{\zeta}\tag{18}
假设所有的轨迹起始于同一个状态,将每一条轨迹\tilde{\boldsymbol{\zeta}}聚合起来,就可以用这些轨迹得到价值期望的估计:
v(\boldsymbol{f})=E_{\tilde{\boldsymbol{\zeta}}_{\boldsymbol{i}}}\left[r\left(f_{\tilde{\boldsymbol{\xi}}_{\boldsymbol{i}}}\right)\right] \simeq \frac{1}{m} \sum_{\boldsymbol{i}} \theta^{\mathrm{T}} \boldsymbol{f}_{\boldsymbol{\xi}_{\boldsymbol{i}}}=\theta^{\mathrm{T}} \frac{1}{m} \sum_{\boldsymbol{i}} f_{\tilde{\boldsymbol{\zeta}}_{\boldsymbol{i}}}=\theta^{\mathrm{T}} \tilde{\boldsymbol{f}}\tag{19}
假定策略模型为P_{\pi}\left(\zeta_{i}\right),希望策略模型交互得到的轨迹的累计回报等于专家轨迹的累计回报:
E_{\zeta_{i} \sim \pi}\left[r\left(f_{\zeta}\right)\right]=\theta^{\mathrm{T}} \sum_{i} P_{\pi}\left(\zeta_{i}\right) f_{\zeta_{i}}=\theta^{\mathrm{T}} \tilde{f}\tag{20}
由于等式两边\theta相同,可以得到:
\sum_{i} P_{\pi}\left(\zeta_{i}\right) f_{\zeta_{i}}=\frac{1}{m} \sum_{i} f_{\tilde{\zeta}_{i}}\tag{21}
上述这个约束条件并不是很强的一个约束,满足这个约束的策略模型P_{\pi}\left(\zeta_{i}\right)可能有很多,而这些策略在完整的问题空间中可能各有优劣,因此在完整的问题空间中仍然可能得到一个较差模型

最大熵约束:
这里就引入另外一个约束,最大熵约束。如果轨迹获得的累计回报\theta^{\mathrm{T}} f_{\zeta}比较高,那么策略应该以较高的概率出现这条轨迹,再依据最大熵模型可以将轨迹的概率可表示为:
P\left(\zeta_{i} \mid \theta\right)=\frac{1}{Z(\theta)} \mathrm{e}^{\theta^{\mathrm{T}} f_{\zeta_{i}}}=\frac{1}{Z(\theta)} \mathrm{e}^{\theta^{\mathrm{T}} \sum_{s_{j} \in \zeta_{i}} f_{s_{j}}}\tag{22}
其中Z(\theta)=\sum_{i} \mathrm{e}^{\theta^{\mathrm{T}} f_{\zeta}}。令动作序列为o,则P_{T}(\zeta|o)表示当行动序列确定时,状态最终转换成序列\zeta的概率为:
P(\zeta \mid \theta, T)=\sum_{o \in O} P_{T}(\zeta \mid o) \frac{\mathrm{e}^{\theta^{\mathrm{T}} f_{\zeta}}}{Z(\theta, o)} I_{\zeta \in \mathrm{o}}\tag{23}
其中I_{\zeta \in \mathrm{o}}表示轨迹是否可以通过某一条行动序列生成,当这个值等于1时,表示轨迹可以通过行动序列生成,反之无法生成。将其近似为一个可解的形式:

P(\zeta \mid \theta, T) \simeq \frac{\mathrm{e}^{\theta^{\mathrm{T}} f_{\zeta}}}{Z(\theta, \mathbf{o})} \prod_{s_{t+1}, a_{t}, s_{t} \in \zeta} P_{T}\left(s_{t+1} \mid a_{t}, s_{t}\right)\tag{24}
最大似然法求解:
由此得到了模型对轨迹的概率,采用最大似然法进行优化,假定问题是确定的MDP,对应的目标函数为:
\theta^{*}=\operatorname{argmax}_{\theta} L(\theta)=\operatorname{argmax} \sum_{\zeta} \log p(\boldsymbol{\zeta} \mid \theta, T)\tag{25}

与最大熵模型求解类似,先构建拉格朗日函数,然后求导,得到参数梯度的计算公式:
\nabla L(\theta)=\tilde{f}-\sum_{\zeta} p(\zeta \mid \theta, T) f_{\zeta}\tag{26}
其中p(\zeta \mid \theta, T)f_{\zeta}这两项都显得有些复杂。考虑确定MDP的问题,即行动可以直接决定下一时刻的状态。这样当初始状态、策略和回报函数确定时,未来的轨迹也就确定下来。所以将每一条轨迹的状态分别列出来,再将其中重复状态合并,将这些状态的概率与状态对应的特征相乘,得到的结果也是一样的:
\nabla L(\theta)=\tilde{f}-\sum_{s_{i}} D_{s_{i}} f_{s_{i}}
其中D_{si}称为状态访问频率期望(Expected State Visitation Frequency),根据策略和确定的状态转移概率推演,可以得到任意一个时刻状态出现的概率,之后将每一个时刻状态出现的概率加起来,即可得到D_{s_{i}}

前向后向计算方法:
先通过反向计算求出策略模型,再进行前向计算得到状态访问频率期望:

设定在最后一刻T所有状态的出现值为1,就可以计算T-1时刻某个状态下执行某个动作的概率P_{T-1}(a_{i,j}|s_{i})可以得到:
\begin{aligned} P_{T-1}\left(\boldsymbol{a}_{i, j} \mid \boldsymbol{s}_{i}\right) &=\frac{P\left(\boldsymbol{s}_{i}, \boldsymbol{a}_{i, j}\right)}{P\left(\boldsymbol{s}_{i}\right)} \\ &=\frac{\sum_{k} P\left(\boldsymbol{s}_{i}, \boldsymbol{a}_{i, j}, \boldsymbol{s}_{k}\right)}{\sum_{a_{i, j}} \sum_{k} P\left(s_{i}, \boldsymbol{a}_{i, j}, s_{k}\right)} \\ &=\frac{\sum_{k} P\left(\boldsymbol{a}_{i, j} \mid \boldsymbol{s}_{i}\right) p\left(s_{k} \mid \boldsymbol{s}_{i}, \boldsymbol{a}_{i, j}\right)}{\sum_{a_{i, j}} \sum_{k} P\left(\boldsymbol{a}_{i, j} \mid \boldsymbol{s}_{i}\right) p\left(s_{k} \mid \boldsymbol{s}_{i}, \boldsymbol{a}_{i, j}\right)} \end{aligned} \tag{27}
之前提到轨迹出现的概率和回报成正相关,于是可以使用回报替代概率值,得到:
\frac{\sum_{k} \mathrm{e}^{\mathrm{reward}\left(\boldsymbol{s}_{i} \mid \theta\right)} p\left(\boldsymbol{s}_{k} \mid \boldsymbol{s}_{i}, \boldsymbol{a}_{i, j}\right)}{\sum_{a_{i, j}} \sum_{k} \mathrm{e}^{\mathrm{reward}\left(\boldsymbol{s}_{i}\right) \mid \theta} p\left(\boldsymbol{s}_{k} \mid \boldsymbol{s}_{i}, \boldsymbol{a}_{i, j}\right)}\tag{28}
Z_{\boldsymbol{a}_{i, j}}=\sum_{k} \mathrm{e}^{\mathrm{reward}\left(\boldsymbol{s}_{i} \mid \theta\right)} p\left(s_{k} \mid \boldsymbol{s}_{i}, \boldsymbol{a}_{i, j}\right),公式就可以变为:
=\frac{Z_{a_{i, j}}}{\sum_{a_{i, j}} Z_{a_{i, j}}}\tag{29}
当时刻转到T-2时,可以得到类似的结果:
P_{T-2}\left(\boldsymbol{a}_{i, j} \mid \boldsymbol{s}_{i}\right)=\frac{\sum_{k} \mathrm{e}^{\mathrm{reward}\left(\boldsymbol{s}_{i} \mid \theta\right)} p\left(\boldsymbol{s}_{k} \mid \boldsymbol{s}_{i}, \boldsymbol{a}_{i, j}\right) Z_{\boldsymbol{s}_{k}}}{\sum_{\boldsymbol{a}_{i, j}} \sum_{k} \mathrm{e}^{\mathrm{reward}\left(\boldsymbol{s}_{i}\right) \mid \theta} p\left(\boldsymbol{s}_{k} \mid \boldsymbol{s}_{i}, \boldsymbol{a}_{i, j}\right) Z_{\boldsymbol{s}_{k}}}\tag{30}
这样就得到了一个迭代公式,随着迭代轮数不断增加,策略估计值会变得越来越稳定,越来越接近真实的策略,这样就可以完成策略的计算。拿到策略之后可以进行前向计算,得到每个时刻的访问频率

上一篇下一篇

猜你喜欢

热点阅读