版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://cloud.tencent.com/developer/article/1541555
We want RL Algorithm that Perform
- Optimization(优化)
- Delayed consequences(延迟结果)
- Exploration(探索)
- Generation(泛化)
- And do it all statistically and computationally efficiently(统计性地,计算高效性地执行以上过程)
Generalization and Efficiency
- 这篇博文将稍后探讨高效探索
- 但学习一个能泛化的MDP存在困难,可能会需要很大数量的采样才能学习到一个好的策略
- 这个数量可能是无法实现的
- 替代思路:使用结构化和额外的知识来帮助约束和加速强化学习
- 这篇博文:模仿学习(Imitation Learning)
- 之后的博文:
- 策略搜索(Policy Search)(可以将领域知识以要使用的策略簇形式来进行编码)
- 策略探索(Strategic exploration)
- 再辅以人工协助(以教导、指定回报、指定动作的形式)
Imitation Learning with Large State Spaces
Consider Montezuma’s revenge
以蒙特祖玛复仇为例,注意下面这张图是训练了五千万帧的结果。演示视频可以在下面那个youtube链接上找到,
So far
到此为止,我们前面博客中所述的成功都是在数据可以轻易获取,并行计算非常容易的条件下取得的。当获取数据代价很高,前述算法可能无法很难取得进展。
- 强化学习:学习受(通常是稀疏的)回报指导的策略(e.g. 在游戏中获胜或失败)
- 好的情况:简单、监督学习代价很低
- 坏的情况:非常高的采样复杂度 在什么情景下能成功?
- 在模拟环境中,因为模拟环境数据廉价并且并行简单
- 而不是在:
- 执行一个动作非常缓慢
- 失败的代价非常高或者不允许失败
- 希望能使安全的
以蒙特祖玛复仇为例,稀疏是指,agent必须尝试一系列不同的动作才能获得当前选择的动作是不是正确的新信号。
Reward Shaping
在时间上密集的回报紧密指导着agent
那这些回报是怎么拿出来的呢?
- 手动设计:可行但通常无法实现
- 通过证明隐式指定
比如:给一个汽车驾驶手动指定回报,回报函数会非常非常复杂,因为你要考虑非常多的因素。但手动把车成功开往目的地(证明),然后认为在该过程所采取的动作是好是可行的。这就是从证明中学习的思想
例子:
Learning from Demonstrations
不是很准确的说,learning from demonstrations也能被称为Inverse RL、Imitation Learing,这三者在一些地方还是有区别的。
- 专家提供一系列证明路径:状态和动作序列
- 模仿学习在对专家来说能轻易给出想要的行为的证明的条件下是非常实用的。而并非:
- 指定一个能产生这种行为的回报
- 直接指定想要的策略
Problem Setup
- 输入:
- 状态空间,动作空间
- 变迁模型P(s′∣s,a)P(s'|s,a)P(s′∣s,a)
- 没有奖励函数RRR
- 一个或更多教师的证明(s0,a0,s1,s0)(s_0,a_0,s_1,s_0)(s0,a0,s1,s0)(从教师策略π∗pi^*π∗中抽取的动作)
- 行为克隆(Behavioral Cloning)
- 我们能直接使用监督学习去学习教师的策略吗?
- 反向强化学习(Inverse RL):
- 我们能恢复奖励函数R吗?
- 通过反向强化学习(Inverse RL)进行学徒学习(Apprenticeship Learning)
- 我们能使用R来产生一个好的策略吗?
Behavioral Cloning
行为克隆这种方式,就是把它当做标准的监督学习问题对待。
- 将问题形式转化为一个标准的机器学习问题:
- 固定一个策略类(e.g. 神经网络,决策树,等.)
- 从训练样本(s0,a0),(s1,a1),(s2,a2),...(s_0,a_0),(s_1,a_1),(s_2,a_2),...(s0,a0),(s1,a1),(s2,a2),...中评估一个策略
- 两个值得注意的成功例子:
- Pomerleau, NIPS 1989: ALVINN
- Summut et al., ICML 1992: Learing to fly in flight simulator
Problem: Compounding Errors
监督学习假定iid(s,a)二元组并且忽略了在时间误差上的时序结构
独立相同分布(Indepently Indetically Distribution),简写为iid,非常常见的写法。
时间ttt下有epsilon$概率的误差
ETotalerrors≤ϵTmathbb{E}Total errorsleq epsilonTauETotalerrors≤ϵT
强化学习使用在监督学习去实现时,有一个问题,采取的动作其实决定了你见到的数据,而你使用的数据可能不是严格满足iid的,因此采取了数据里没有的行为进入到数据里没有的状态时,agen就不知道该怎么做了,所以不能泛化。
一旦你在一个成功的路径上走错了一步,那么之后的T-1步也都全是错的,而这会在强化学习的过程中重复出现。
数据不匹配问题。
DAGGER: Dataset Aggregation
Initialize D←∅Initialize mathcal{D} leftarrow emptyInitialize D←∅
Initializeπ^iInitialize hat{pi}_iInitializeπ^i to any policy in ΠPiΠ
for i=1for i=1for i=1 to NNN do
Let πi=βiπ∗ (1−βi)π^iqquad Let pi_i=beta_ipi^* (1-beta_i)hat{pi}_iLet πi=βiπ∗ (1−βi)π^i
Sampleqquad SampleSample TTT-step trajectories using πipi_iπi
Getqquad GetGet dataset Di={(s,π∗(s))}mathcal{D}_i={(s,pi^*(s))}Di={(s,π∗(s))} of visited states by πipi_iπi
Aggregateqquad AggregateAggregate datasets: D←D∪Dimathcal{D}leftarrow mathcal{D} cup mathcal{D}_iD←D∪Di
Trainqquad TrainTrain classifier π^i 1hat{pi}_{i 1}π^i 1 on Dmathcal{D}D
End forEnd forEnd for
ReturnReturnReturn best π^ihat{pi}_iπ^i on validation
π∗pi^*π∗专家策略
- 思想:沿着行为克隆计算的策略产生的路径获取更多专家行为的标记数据
- 在约减的分布中获得一个有良好表现得驻点的确定的策略
这假定你有一个专家一直参与其中,这通常是代价非常大的,所以这方面的研究不是很热门。
Inverse Reinforcement Learning
Feature Based Reward Function
Just for your reference. 在很多情况下,其实变迁模型也是未知的,但我们这里假设了变迁模型已知,但其实也有关于在变迁模型未知的条件下的扩展。
- 给定状态空间,动作空间,变迁模型P(s′∣s,a)P(s'|s,a)P(s′∣s,a)
- 没有奖励函数RRR
- 一个或者多个教师证明(demonstrations) (s0,a0,s1,s0,...)(s_0,a_0,s_1,s_0,...)(s0,a0,s1,s0,...)(从教师的策略π∗pi^*π∗提取出的动作)
- 目标:推测奖励函数RRR
- 在没有教师策略是最优的假设下,能推断关于RRR的什么? 在没有agent的行为是遵循最优的条件下,无法判断agent采取的行为是好的还是坏的。不能得到任何信息。
- 现在假定教师策略是最优策略。能推断关于RRR的什么? 假定所有的动作回报都是0,在这个回报函数下所有的策略都是最优策略,这是最优回报唯一的一个反例。 最优回报不唯一是有Andrew Ng和Stuart Russell在2000年发现的一个问题。 有很多回报函数都和数据相一致。
有很多不同的奖励函数即它们所对应的很多不同的最优策略。所以我们需要打破僵局,引入额外的结构(impose additional structure)。我们尝试在假定专家策略是最优的条件下去推断什么样的回报函数会使得数据看起来是从一个最优策略而来的。
Linear Feature Reward Inverse RL
待续。。。