强化学习包含环境、动作和奖励3部分,其本质是智能体通过与环境的交互,使其做出的动作对应的决策得到的总奖励最大,或者说是期望最大。
首先强化学习和无监督学习是不需要有标签样本的,而监督学习需要许多有标签样本来进行模型的构建和训练。
其次对于强化学习与无监督学习,无监督学习直接基于给定的数据进行建模,寻找数据或特征中隐藏的结构,一般对应聚类问题;强化学习需要通过延迟奖励学习策略来得到模型与目标的距离,这个距离可以通过奖励函数进行定量判断,这里我们可以将奖励函数视为正确目标的一个稀疏、延迟形式。
另外,强化学习处理的多是序列数据,样本之间通常具有强相关性,但其很难像监督学习的样本一样满足独立同分布条件。
7个字总结就是“多序列决策问题”,或者说是对应的模型未知,需要通过学习逐渐逼近真实模型的问题。并且当前的动作会影响环境的状态,即具有马尔可夫性的问题。同时应满足所有状态是可重复到达的条件,即满足可学习条件。
深度学习中的损失函数的目的是使预测值和真实值之间的差距尽可能小,而强化学习中的损失函数的目的是使总奖励的期望尽可能大。
我认为两者的区别主要在于是否需要对真实的环境进行建模,免模型方法不需要对环境进行建模,直接与真实环境进行交互即可,所以其通常需要较多的数据或者采样工作来优化策略,这也使其对于真实环境具有更好的泛化性能;而有模型方法需要对环境进行建模,同时在真实环境与虚拟环境中进行学习,如果建模的环境与真实环境的差异较大,那么会限制其泛化性能。现在通常使用有模型方法进行模型的构建工作。
马尔可夫过程是一个二元组
马尔可夫决策过程是一个五元组
马尔可夫最重要的性质是下一个状态只与当前状态有关,与之前的状态无关,也就是
求解马尔可夫决策过程时,可以直接求解贝尔曼方程或动态规划方程:
特别地,其矩阵形式为
如果不具备马尔可夫性,即下一个状态与之前的状态也有关,若仅用当前的状态来求解决策过程,势必导致决策的泛化能力变差。为了解决这个问题,可以利用循环神经网络对历史信息建模,获得包含历史信息的状态表征,表征过程也可以使用注意力机制等手段,最后在表征状态空间求解马尔可夫决策过程问题。
贝尔曼方程:定义了当前状态与未来状态的迭代关系,表示当前状态的价值函数可以通过下个状态的价值函数来计算。贝尔曼方程即
- 基于状态价值函数的贝尔曼方程:$V_{\pi}(s) = \sum_{a}{\pi(a|s)}\sum_{s',r}{p(s',r|s,a)[r(s,a)+\gamma V_{\pi}(s')]}$;
- 基于动作价值函数的贝尔曼方程:$Q_{\pi}(s,a)=\sum_{s',r}p(s',r|s,a)[r(s',a)+\gamma V_{\pi}(s')]$。
- 动态规划方法(DP):可用来计算价值函数的值。当模型完全已知时,使用贝尔曼方程,迭代来计算价值函数,并进行策略的改进。$v\left(S_{t}\right) \leftarrow \mathbb{E}{\pi}\left[R{t+1}+\gamma v\left(S_{t+1}\right)\right]$ 。举例:如果任务时预测从上海开车到北京所需的时间,动态规划是寻找几个有经验的老司机(模型已知),在还没有出发时,统计每个老司机的预计到达时间,求平均值即可作为任务的估计值。
- 蒙特卡洛方法(MC):可用来计算价值函数的值。无模型方法,通过计算所观察到样本的平均值作为实际期望收益的近似。$v\left(S_{t}\right) \leftarrow v\left(S_{t}\right)+\alpha\left(G_{t}-v\left(S_{t}\right)\right)$。以开车举例,现在找几个新司机,让他们开车从上海到北京,在北京,统计到北京所用的时间,取平均值作为任务的估计值。
- 时差学习(TD):为动态规划方法和蒙特卡洛方法的结合。无模型方法,它从每轮的经验数据中学习。TD学习可以从不完整的一轮数据中学习。$T D(0): v\left(S_{t}\right) \leftarrow v\left(S_{t}\right)+\alpha\left(R_{t+1}+\gamma v\left(s_{t+1}\right)-v\left(S_{t}\right)\right)$。以开车举例,在出发时有个预估时间如20小时,现在新司机从上海出发,到达南京已经花费5个小时,南京到北京的预估时间为13小时,则上海到北京的预测时间可以使用13+5=18小时代替,即一部分真实值,一部分预测值。
相对于马尔可夫奖励过程,马尔可夫决策过程多了一个决策过程,其他的定义与马尔可夫奖励过程是类似的。由于多了一个决策,多了一个动作,因此状态转移也多了一个条件,即执行一个动作,导致未来状态的变化,其不仅依赖于当前的状态,也依赖于在当前状态下智能体采取的动作决定的状态变化。对于价值函数,它也多了一个条件,多了一个当前的动作,即当前状态以及采取的动作会决定当前可能得到的奖励的多少。
另外,两者之间是有转换关系的。具体来说,已知一个马尔可夫决策过程以及一个策略
最佳价值函数的定义为$V^* (s)=\max_{\pi} V_{\pi}(s)$,即我们搜索一种策略
$V^$ 就是到达每一个状态其的最大价值,同时我们得到的策略就可以说是最佳策略,即 $\pi^{}(s)=\underset{\pi}{\arg \max }~ V_{\pi}(s)$ 。最佳策略使得每个状态的价值函数都取得最大值。所以如果可以得到一个最佳价值函数,就可以说某一个马尔可夫决策过程的环境被解。在这种情况下,其最佳价值函数是一致的,即其达到的上限的值是一致的,但这里可能有多个最佳策略对应于相同的最佳价值。
n 越大,方差越大,期望偏差越小。价值函数的更新公式如下:
同策略和异策略的根本区别在于生成样本的策略和参数更新时的策略是否相同。
- 对于同策略,行为策略和要优化的策略是同一策略,更新了策略后,就用该策略的最新版本对数据进行采样;
- 对于异策略,其使用任意行为策略来对数据进行采样,并利用其更新目标策略。
例如,Q学习在计算下一状态的预期奖励时使用了最大化操作,直接选择最优动作,而当前策略并不一定能选择到最优的动作,因此这里生成样本的策略和学习时的策略不同,所以Q学习算法是异策略算法;相对应的Sarsa算法则是基于当前的策略直接执行一次动作选择,然后用动作和对应的状态更新当前的策略,因此生成样本的策略和学习时的策略相同,所以Sarsa算法为同策略算法。
Q学习是通过计算最优动作价值函数来求策略的一种时序差分的学习方法,其更新公式为
其是异策略的,由于Q更新使用了下一个时刻的最大值,因此其只关心哪个动作使得
Sarsa算法可以算是Q学习算法的改进,其更新公式为
其为同策略的,Sarsa算法必须执行两次动作得到
- 生成策略上的差异,前者确定,后者随机。基于价值的方法中动作-价值对的估计值最终会收敛(通常是不同的数,可以转化为0~1的概率),因此通常会获得一个确定的策略;基于策略的方法不会收敛到一个确定的值,另外他们会趋向于生成最佳随机策略。如果最佳策略是确定的,那么最优动作对应的值函数的值将远大于次优动作对应的值函数的值,值函数的大小代表概率的大小。
- 动作空间是否连续,前者离散,后者连续。基于价值的方法,对于连续动作空间问题,虽然可以将动作空间离散化处理,但离散间距的选取不易确定。过大的离散间距会导致算法取不到最优动作,会在最优动作附近徘徊;过小的离散间距会使得动作的维度增大,会和高维度动作空间一样导致维度灾难,影响算法的速度。而基于策略的方法适用于连续的动作空间,在连续的动作空间中,可以不用计算每个动作的概率,而是通过正态分布选择动作。
- 基于价值的方法,例如Q学习算法,是通过求解最优价值函数而间接地求解最优策略;基于策略的方法,例如REINFORCE等算法直接将策略参数化,通过策略搜索、策略梯度或者进化方法来更新参数以最大化回报。基于价值的方法不易扩展到连续动作空间,并且当同时采用非线性近似、自举等策略时会有收敛问题。策略梯度具有良好的收敛性。
- 另外,对于价值迭代和策略迭代,策略迭代有两个循环,一个是在策略估计的时候,为了求当前策略的价值函数需要迭代很多次;另一个是外面的大循环,即策略评估、策略提升。价值迭代算法则是一步到位,直接估计最优价值函数,因此没有策略提升环节。
时序差分算法是使用广义策略迭代来更新Q函数的方法,核心是使用自举,即价值函数的更新使用下一个状态的价值函数来估计当前状态的价值。也就是使用下一步的Q值
蒙特卡洛方法是无偏估计,时序差分方法是有偏估计;蒙特卡洛方法的方差较大,时序差分方法的方差较小,原因在于时序差分方法中使用了自举,实现了基于平滑的效果,导致估计的价值函数的方差更小。
相同点:都用于进行价值函数的描述与更新,并且所有方法都基于对未来事件的展望计算一个回溯值。
不同点:蒙特卡洛方法和时序差分方法属于免模型方法,而动态规划属于有模型方法;时序差分方法和蒙特卡洛方法,因为都是免模型的方法,所以对于后续状态的获知也都是基于试验的方法;时序差分方法和动态规划方法的策略评估,都能基于当前状态的下一步预测情况来得到对于当前状态的价值函数的更新。
另外,时序差分方法不需要等到试验结束后才能进行当前状态的价值函数的计算与更新,而蒙特卡洛方法需要与环境交互,产生一整条马尔可夫链并直到最终状态才能进行更新。时序差分方法和动态规划方法的策略评估不同之处为免模型和有模型,动态规划方法可以凭借已知转移概率推断出后续的状态情况,而时序差分方法借助试验才能知道。
蒙特卡洛方法和时序差分方法的不同在于,蒙特卡洛方法进行了完整的采样来获取长期的回报值,因而在价值估计上会有更小的偏差,但是也正因为收集了完整的信息,所以价值的方差会更大,原因在于其基于试验的采样得到,和真实的分布有差距,不充足的交互导致较大方差。而时序差分方法则相反,因为它只考虑了前一步的回报值,其他都是基于之前的估计值,因而其价值估计相对来说具有偏差大方差小的特点。
三者的联系:对于TD(
深度Q网络是基于深度学习的Q学习算法,其结合了价值函数近似与神经网络技术,并采用了目标网络和经验回放技巧进行网络的训练。
Q函数(Q-function): 其也被称为动作价值函数(action-value function)。其输入是一个状态-动作对,即在某一具体的状态采取对应的动作,假设我们都使用某个策略
在深度Q网络中某个动作价值函数的更新依赖于其他动作价值函数。如果一直更新价值网络的参数,会导致更新目标不断变化,也就是在追逐一个不断变化的目标,这样势必会不太稳定。为了解决基于时序差分的网络中,优化目标
对于经验回放,其会构建一个回放缓冲区,用来保存许多数据,每一个数据的内容包括:状态
整体来说,从名称就可以看出,两者的目标价值以及价值的更新方式基本相同。但有如下不同点:
- 首先,深度Q网络将Q学习与深度学习结合,用深度网络来近似动作价值函数,而Q学习则是采用表格进行存储。
- 深度Q网络采用了经验回放的技巧,从历史数据中随机采样,而Q学习直接采用下一个状态的数据进行学习。
随机性策略表示为某个状态下动作取值的分布,确定性策略在每个状态只有一个确定的动作可以选。从熵的角度来说,确定性策略的熵为0,没有任何随机性。随机性策略有利于我们进行适度的探索,确定性策略不利于进行探索。
在神经网络中通常使用随机梯度下降法。随机的意思是随机选择一些样本来增量式地估计梯度,比如常用的批量训练方法。如果样本是相关的,就意味着前后两个批量很可能也是相关的,那么估计的梯度也会呈现出某种相关性。但是在极端条件下,后面的梯度估计可能会抵消掉前面的梯度估计量,从而使得训练难以收敛。
深度Q网络有5个经典的变种:双深度Q网络、竞争深度Q网络、优先级双深度Q网络、噪声网络、分布式Q函数。
-
双深度Q网络(Double DQN):将动作选择和价值估计分开,避免Q值被过高估计。在双深度Q网络中存在两个Q网络,第一个Q网络决定哪一个动作的Q值最大,从而决定对应的动作。另一方面,Q值是用
$Q'$ 计算得到的,这样就可以避免过度估计的问题。 -
竞争深度Q网络(Dueing Network):将Q值分解为状态价值和优势函数,得到更多有用信息。将原来的深度Q网络的计算过程分为两步。第一步计算一个与输入有关的标量
$\mathrm{V(s)}$ ;第二步计算一个向量$\mathrm{A(s,a)}$ 对应每一个动作。最后的网络将两步的结果相加,得到我们最终需要的Q值。用一个公式表示就是$\mathrm{Q(s,a)=V(s)+A(s,a)}$ 。 - 优先级双深度Q网络(PER):将经验池中的经验按照优先级进行采样。在使用经验回放时,均匀地取出回放缓冲区(reply buffer)中的采样数据,这里并没有考虑数据间的权重大小。但是应该将那些训练效果不好的数据对应的权重加大,即其应该有更大的概率被采样到。
-
噪声网络(Noisy Net):Q函数中加入高斯噪声。其在每一个回合开始的时候,即智能体要和环境交互的时候,在原来的Q函数的每一个参数上加上一个高斯噪声(Gaussian noise),把原来的Q函数变成
$\tilde{Q}$ ,即噪声Q函数。同样,我们把每一个网络的权重等参数都加上一个高斯噪声,就得到一个新的网络$\tilde{Q}$ 。我们会使用这个新的网络与环境交互直到结束。 - 分布式Q函数(Distribution Q-function):对深度Q网络进行模型分布,将最终网络的输出的每一类别的动作再进行分布操作。Q函数代表累计期望,输出是一个期望,代表奖励,可能会丢失一些信息,分布式Q函数直接输出分布。
- 彩虹(rainbow):将7个技巧/算法综合起来的方法,7个技巧分别是——深度Q网络、双深度Q网络、优先级经验回放的双深度Q网络、竞争深度Q网络、异步优势演员-评论员算法(A3C)、分布式Q函数、噪声网络
深度Q网络由于总是选择当前最优的动作价值函数来更新当前的动作价值函数,因此存在过估计问题(估计的价值函数值大于真实的价值函数值)。为了解耦这两个过程,双深度Q网络使用两个价值网络,一个网络用来执行动作选择,然后用另一个网络的价值函数对应的动作值更新当前网络。
对于
策略梯度的公式如下:
具体来说:
(1)假设在状态
(2)反之,在状态
首先我们的目的是最大化奖励函数,即调整
其中
所以仅仅需要计算并更新
$$ \nabla_{\theta}J(\theta) = \int {\nabla}{\theta}p{\theta}(\tau)r(\tau) \mathrm{d}{\tau}=\int p_{\theta}{\nabla}{\theta} \mathrm{log}p{\theta}(\tau)r(\tau)\mathrm{d}{\tau}=E_{\tau \sim p_{\theta}(\tau)}[{\nabla}{\theta}\mathrm{log}p{\theta}(\tau)r(\tau)] $$
接着我们继续展开,对于
取对数后为:
继续求导:
代入第3个式子,可以将其化简为:
$$
\begin{aligned}
\nabla_{\theta}J(\theta)
&= E_{\tau \sim p_{\theta}(\tau)}[{\nabla}{\theta}\mathrm{log}p{\theta}(\tau)r(\tau)] \
&= E_{\tau \sim p_{\theta}}[(\nabla_{\theta}\mathrm{log}\pi_{\theta}(a_t|s_t))(\sum_{t=1}^Tr(s_t,a_t))] \
&= \frac{1}{N}\sum_{i=1}^N[(\sum_{t=1}^T\nabla_{\theta}\mathrm{log} \pi_{\theta}(a_{i,t}|s_{i,t}))(\sum_{t=1}^Nr(s_{i,t},a_{i,t}))]
\end{aligned}
$$
(1)增加基线:为了防止所有奖励都为正,从而导致每一个状态和动作的变换,都会使得每一个变换的概率上升,把奖励减去一项
(2)指派合适的分数:首先,原始权重是整个回合的总奖励。现在改成从某个时间点
(3)综合以上两种技巧,将其统称为优势函数,用
首先需要根据一个确定好的策略模型来输出每一个可能动作的概率,对于所有动作的概率,使用采样方法(或者是随机的方法)选择一个动作与环境进行交互,同时环境会给我们反馈整个回合的数据。将此回合数据输入学习函数中,并根据回合数据进行损失函数的构造,通过Adam等优化器的优化,再更新策略模型。
A3C是异步优势演员-评论员算法,其中,**评论员学习价值函数,同时有多个演员并行训练并且不时与全局参数同步。A3C旨在并行训练,是同策略算法。 **
- 相比以价值函数为中心的算法,演员-评论员算法应用了策略梯度的技巧,这能让它在连续动作或者高维动作空间中选取合适的动作,而Q学习做这件事会很困难。
- 相比单纯策略梯度,演员-评论员算法应用了Q学习或其他策略评估的做法,使得演员-评论员算法能进行单步更新而不是回合更新,比单纯的策略梯度的效率要高。
下面是异步优势演员-评论员算法的大纲,由于其为异步多线程算法,只对其中某一单线程进行分析。
(1)定义全局参数
(2)初始化时间步
(3)当
- 重置梯度:$\mathrm{d} \theta = 0$ 并且
$\mathrm{d}w = 0$ 。 - 将特定于线程的参数与全局参数同步:$\theta' = \theta$ 以及
$w'=w$ 。 - 令
$t_{\mathrm{start}} =t$ 并且随机采样一个初始状态$s_t$ 。 - 当 ($s_t!=$ 终止状态)并且$t−t_{\mathrm{start}} \leqslant t_{\mathrm{max}}$。
- 根据当前线程的策略选择当前执行的动作
$a_t\sim\pi_{\theta'}(a_t|s_t)$ ,执行动作后接收奖励$r_t$ 然后转移到下一个状态$s_{t+1}$ 。 - 更新
$t$ 以及$T$ :$t=t+1$ 并且$T=T+1$ 。
- 根据当前线程的策略选择当前执行的动作
- 初始化保存累积奖励估计值的变量。
- 对于
$i=t_1, \dots ,t_{\mathrm{start}}$ :-
$r \gets \gamma r+r_i$ ;这里的$r$ 是$G_i$ 的蒙特卡洛估计。 - 累积关于参数
$\theta'$ 的梯度:$\mathrm{d} \theta \gets \mathrm{d}\theta + \nabla_{\theta'} \mathrm{log} \pi_{\theta'}(a_i|s_i)(r−V_{w'}(s_i))$。 - 累积关于参数
$w'$ 的梯度:$\mathrm{d}w \gets \mathrm{d}w+ \mathrm{\partial} (r-V_{w'}(s_i))^2 / \mathrm{\partial} w'$。
-
- 分别使用
$\mathrm{d}\theta$ 以及$\mathrm{d}w$ 异步更新$\theta$ 以及$w$ 。
演员是策略模块,输出动作;
评论员是判别器,用来计算价值函数。
评论员衡量当前决策的好坏。结合策略模块,当评论员判别某个动作的选择是有益的时候,策略就更新参数以增大该动作出现的概率,反之减小该动作出现的概率。
优势函数的计算公式为
- 如果
$A(s,a)>0$ ,梯度被推向正方向; - 如果
$A(s,a)<0$ ,即我们的动作比该状态下的平均值还差,则梯度被推向反方向。
这样就需要两个价值函数,所以可以使用时序差分方法做误差估计:$A(s,a)=r+\gamma V(s')-V(s)$ 。
在连续控制领域经典的强化学习算法,是深度Q网络在处理连续动作空间的一个扩充方法。
深度确定性策略梯度算法使用演员-评论员结构,但是输出的不是动作的概率,而是具体动作,其可以用于连续动作的预测。优化的目的是将深度Q网络扩展到连续的动作空间。另外,其含义如其名:
(1)深度是因为用了深度神经网络;
(2)确定性表示其输出的是一个确定的动作,可以用于连续动作的环境;
(3)策略梯度代表的是它用到的是策略网络。强化算法每个回合就会更新一次网络,但是深度确定性策略梯度算法每个步骤都会更新一次策略网络,它是一个单步更新的策略网络。
异策略算法。
- 深度确定性策略梯度算法是优化的深度Q网络,其使用了经验回放,所以为异策略算法。
- 因为深度确定性策略梯度算法为了保证一定的探索,对输出动作加了一定的噪声,行为策略不再是优化的策略。
7-3 QA:你是否了解过分布的分布式深度确定性策略梯度算法(distributed distributional deep deterministic policy gradient,D4PG)呢?请描述一下吧。
分布的分布式深度确定性策略梯度算法(distributed distributional deep deterministic policy gradient,D4PG),相对于深度确定性策略梯度算法,其优化部分如下。
(1)分布式评论员:不再只估计Q值的期望值,而是估计期望Q值的分布,即将期望Q值作为一个随机变量来估计。
(2)$N$步累计回报:计算时序差分误差时,D4PG计算的是$N$步的时序差分目标值而不仅仅只有一步,这样就可以考虑未来更多步骤的回报。
(3)多个分布式并行演员:D4PG使用$K$个独立的演员并行收集训练数据并存储到同一个回放缓冲区中。
(4)优先经验回放(prioritized experience replay,PER):使用一个非均匀概率从回放缓冲区中进行数据采样。
使用另外一种分布,来逼近所求分布的一种方法,算是一种期望修正的方法,公式如下:
在已知
可以用一句话概括两者的区别,即生成样本的策略(价值函数)和网络参数更新时的策略(价值函数)是否相同。
- 同策略(on-policy):要学习的智能体和与环境交互的智能体是同一个时对应的策略。
- 异策略(off-policy):要学习的智能体和与环境交互的智能体不是同一个时对应的策略。
避免在使用重要性采样时由于在
近端策略优化算法借鉴了信任区域策略优化算法,通过采用一阶优化,在采样效率、算法表现以及实现和调试的复杂度之间取得了新的平衡。这是因为近端策略优化算法会在每一次迭代中尝试计算新的策略,让损失函数最小化,并且保证每一次新计算出的策略能够和原策略相差不大。换句话说,其为在避免使用重要性采样时由于在
- 设计奖励(reward shaping):当智能体与环境进行交互时,人为设计一些奖励,从而“指挥”智能体,告诉其采取哪一个动作是最优的。需要注意的是,这个奖励区别于环境的奖励。其可以提高我们估算Q函数时的准确性。
- 内在好奇心模块(intrinsic curiosity module,ICM):其代表好奇心驱动这个技术中的增加新的奖励函数以后的奖励函数。
- 课程学习(curriculum learning):一种广义的用在强化学习中训练智能体的方法,其在输入训练数据的时候,采取由易到难的顺序进行输入,也可以人为设计它的学习过程。这个方法在机器学习和强化学习中普遍使用。
- 逆课程学习(reverse curriculum learning):相较于课程学习,逆课程学习为更广义的方法。其从最终最理想的状态 [我们称之为黄金状态(gold state)] 开始,依次去寻找距离黄金状态最近的状态作为想让智能体达到的阶段性的“理想”状态。当然,会在此过程中有意地去掉一些极端的状态,即太简单、太难的状态。综上,逆课程学习是从黄金状态反推的方法。
- 分层强化学习(hierarchical reinforcement learning):将一个大型的任务,横向或者纵向地拆解成由多个智能体去执行的子任务。其中,有一些智能体负责比较高层次的任务,如负责定目标,定完目标后,再将目标分配给其他的智能体执行。
主要的问题是人为设计的奖励需要领域知识,需要自己设计出让环境与智能体更好地交互的奖励,这需要不少的经验知识,并且需要我们根据实际的效果进行调整。
内在好奇心模块代表好奇心驱动技术中增加新的奖励函数以后的奖励函数。具体来说,其在更新计算时会考虑3个新的部分,分别是状态
对于如何设计内在好奇心模块,其输入就像前面所说的一样,包括3部分,即现在的状态
同时,为了进一步增强网络的表达能力,我们通常将内在好奇心模块的输入优化为特征提取,特征提取器的输入就是状态,输出是一个特征向量,其可以表示这个状态最主要和最重要的特征,把没有意义的事物过滤。
行为克隆、逆强化学习或者称为逆最优控制。
- 行为克隆(behavior cloning):类似于机器学习中的监督学习,通过收集专家的状态与动作等对应信息,来训练我们的网络。在使用时,输入状态就可以输出对应的动作。
- 数据集聚合(dataset aggregation):用来应对在行为克隆中专家提供不到数据的情况,其希望收集专家在各种极端状态下的动作。
- 逆强化学习(inverse reinforcement learning,IRL):逆强化学习先找出奖励函数,再用强化学习找出最优演员。这么做是因为我们没有环境中的奖励,但是有专家的示范,使用逆强化学习,我们可以推断专家是因为何种奖励函数才会采取这些动作。有了奖励函数以后就可以使用一般的强化学习方法找出最优演员。
(1)首先,如果只收集专家的示范(看到某一个状态输出的动作),那么所有的结果会是非常有限的。所以要收集专家在各种极端状态下的动作或者说要收集更多、更复杂的数据,可以使用数据集聚合方法。
(2)另外,使用传统意义上的行为克隆,智能体会完全复制专家的行为,不管专家的行为是否合理,智能体都会硬把它记下来。智能体是一个网络,网络的容量是有限的。就算给网络足够的训练数据,它在训练数据集上得到的正确率往往也不是100\%。所以这个时候,什么该学、什么不该学就变得很重要。实际上,极少数专家的行为是没有意义的,但是使用它们的示范至少不会产生较坏的影响。
(3)还有,在进行行为克隆的时候,训练数据和测试数据往往是不匹配的。可以用数据集聚合来缓解这个问题。具体来说,在训练和测试的时候,数据分布是不同的。因为在强化学习中,动作会影响到接下来的状态。我们先有状态
首先,有一个专家,其策略为
在生成对抗网络中,有一些比较好的图片数据集,也有一个生成器,一开始其不知道要生成什么样的图片,只能随机生成。另外,我们有一个判别器,其用来给生成的图片打分,专家生成的图片得分高,生成器生成的图片得分低。有了判别器以后,生成器会想办法去“骗”判别器。生成器希望判别器也给它生成的图片打高分。整个过程与逆强化学习的过程是类似的。
(1)生成的图片就是专家的判别结果,生成器就是演员,生成器会生成很多的图片并让演员与环境进行交互,从而产生很多轨迹。这些轨迹与环境交互的记录等价于生成对抗网络中的生成图片。
(2)逆强化学习中的奖励函数就是判别器。奖励函数给专家的实例打高分,给演员的交互结果打低分。
(3)考虑两者的过程,在逆强化学习中,演员会想办法从已经学习到的奖励函数中获得高分,然后迭代地循环。这个过程其实是与生成对抗网络的训练过程一致的。