版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://cloud.tencent.com/developer/article/1541555
以蒙特祖玛复仇为例,注意下面这张图是训练了五千万帧的结果。演示视频可以在下面那个youtube链接上找到,
到此为止,我们前面博客中所述的成功都是在数据可以轻易获取,并行计算非常容易的条件下取得的。当获取数据代价很高,前述算法可能无法很难取得进展。
以蒙特祖玛复仇为例,稀疏是指,agent必须尝试一系列不同的动作才能获得当前选择的动作是不是正确的新信号。
在时间上密集的回报紧密指导着agent
那这些回报是怎么拿出来的呢?
比如:给一个汽车驾驶手动指定回报,回报函数会非常非常复杂,因为你要考虑非常多的因素。但手动把车成功开往目的地(证明),然后认为在该过程所采取的动作是好是可行的。这就是从证明中学习的思想
例子:
不是很准确的说,learning from demonstrations也能被称为Inverse RL、Imitation Learing,这三者在一些地方还是有区别的。
行为克隆这种方式,就是把它当做标准的监督学习问题对待。
监督学习假定iid(s,a)二元组并且忽略了在时间误差上的时序结构
独立相同分布(Indepently Indetically Distribution),简写为iid,非常常见的写法。
时间ttt下有\epsilon$概率的误差
ETotalerrors≤ϵT\mathbb{E}Total errors\leq \epsilon\TauETotalerrors≤ϵT
强化学习使用在监督学习去实现时,有一个问题,采取的动作其实决定了你见到的数据,而你使用的数据可能不是严格满足iid的,因此采取了数据里没有的行为进入到数据里没有的状态时,agen就不知道该怎么做了,所以不能泛化。
一旦你在一个成功的路径上走错了一步,那么之后的T-1步也都全是错的,而这会在强化学习的过程中重复出现。
数据不匹配问题。
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)π^i\qquad Let \ \pi_i=\beta_i\pi^*+(1-\beta_i)\hat{\pi}_iLet πi=βiπ∗+(1−βi)π^i
Sample\qquad SampleSample TTT-step trajectories using πi\pi_iπi
Get\qquad GetGet dataset Di={(s,π∗(s))}\mathcal{D}_i={(s,\pi^*(s))}Di={(s,π∗(s))} of visited states by πi\pi_iπi
Aggregate\qquad AggregateAggregate datasets: D←D∪Di\mathcal{D}\leftarrow \mathcal{D} \cup \mathcal{D}_iD←D∪Di
Train\qquad TrainTrain classifier π^i+1\hat{\pi}_{i+1}π^i+1 on D\mathcal{D}D
End forEnd \ forEnd for
ReturnReturnReturn best π^i\hat{\pi}_iπ^i on validation
π∗\pi^*π∗专家策略
这假定你有一个专家一直参与其中,这通常是代价非常大的,所以这方面的研究不是很热门。
Just for your reference. 在很多情况下,其实变迁模型也是未知的,但我们这里假设了变迁模型已知,但其实也有关于在变迁模型未知的条件下的扩展。
有很多不同的奖励函数即它们所对应的很多不同的最优策略。所以我们需要打破僵局,引入额外的结构(impose additional structure)。我们尝试在假定专家策略是最优的条件下去推断什么样的回报函数会使得数据看起来是从一个最优策略而来的。
待续。。。