- David Silver Lecture 4 (2)(Model
- David Silver Lecture 4 (1)(Model
- David Silver【Lecture 10】Classic
- Lecture 3: Planning by Dynamic P
- Lecture 2: Markov Decision Proce
- Lecture 1: Introduction to Reinf
- Deep Reinforcement Learning简介
- Lecture 4: Model-Free Prediction
- #David Silver Reinforcement Lear
- #David Silver Reinforcement Lear
前言:在本节,我们首先介绍
算法。其次,我们将说明
算法的前向视角(Forward-view)以及后向视角(Backward View)。
1.
算法介绍。
上一节中介绍的 算法,指的是只通过当前这一步实际得到的反馈来更新我的value值, 即
。 如果根据后续
步实际得到的反馈来更新我的value值的话,则变成了
算法。
算法可以表示成如下形式:
![](https://img.haomeiwen.com/i13517500/7e8b24bf27b0a9e0.png)
从图中我们可以看出, 中
表示的是向后看的深度。如果我们将
增加,一直增加到最后的终止步骤,则
算法变成了MC算法。
向后看步的返回值可以计算如下:
![](https://img.haomeiwen.com/i13517500/b7a8265820a00063.png)
将向后看步的返回值书写成如下形式:
![](https://img.haomeiwen.com/i13517500/936911b9f66d43c2.png)
则的更新公式如下:
![](https://img.haomeiwen.com/i13517500/8b06f47c86a227e9.png)
我们接下来面临的问题是,我们能否有效的综合性的考虑在取不同值时,所有的
,从而更有效的利用bootstraping 来提升 value function
呢?为了解决这个问题,引出了
策略。
可以用下图来说明:
![](https://img.haomeiwen.com/i13517500/7371ce92d5115663.png)
考虑了所有的
步返回值 \cdots G_t^{(n)},并为每一个 \cdots G_t^{(n)}分配了一个权重。
的计算公式如下所示:
![](https://img.haomeiwen.com/i13517500/6b8b051d4401d68f.png)
利用,值函数的更新公式如下所示:
![](https://img.haomeiwen.com/i13517500/416293fc9e71aaad.png)
2.
算法的前向视角和后向视角。
在上述提到的 算法中,我们可以发现
被分配的权重是
,, 权重的大小随着与
(也可以被认为是时间)的关系以
衰减,如下图所示:
![](https://img.haomeiwen.com/i13517500/0a9caa589c1a90e3.png)
为了计算,我们需要从当前状态和当前时刻开始,向后看去,得到所有的
。这就像是一个前向视角,如下图所示:
![](https://img.haomeiwen.com/i13517500/ea48f508c3cb9489.png)
而 计算 的一个显著缺点就是, 和MC一样,也需要在完整的序列(episodes)。
为了能够在不完整的序列(episode)的情况下仍能够计算,我们考虑采用称为后向视角的方法。
在介绍后向视角之前,首先介绍一个“资格迹”(Eligibility Traces)的概念:
观察下图,到底是铃声响还是灯亮导致的闪电呢?
![](https://img.haomeiwen.com/i13517500/1bcb718469b247ee.png)
直观上有两种想法:1)从频率的角度取考虑,则铃响的频率更高(3/4),因此可以认为是铃响导致的闪电;2)从时间的角度考虑,则是灯亮导致的闪电。而资格迹同时考虑了上述两种想法,资格迹的计算如下:
![](https://img.haomeiwen.com/i13517500/f7affef6d5bd1d42.png)
在上图中,
![](https://img.haomeiwen.com/i13517500/9ef7481fb8ef67eb.png)
这就像是一个后向视角,即把当前时刻当作终止时刻,回过头去看之前所有发生的状态,以及发生状态的时间,然后利用过去的状态信息来更新值函数,如下图所示:
![](https://img.haomeiwen.com/i13517500/7620f599af03953c.png)
采用资格迹进行更新值函数之后,可以证明出当时,
的值函数更新方式与采用资格迹进行值函数更新是相同的,即:
而当时, 采用资格迹进行值函数更新等价于每访MC的更新方式,即完全等价于MC的函数值更新。
下面我们讨论一下前向和后向之间的关系。
假设在一个episode中,只在时刻, 访问到了状态
一次,则
资格迹的更新如下式:
![](https://img.haomeiwen.com/i13517500/c3f3c2c7b8da54f5.png)
则后向 的进行更新的累计在线误差计算如下:
![](https://img.haomeiwen.com/i13517500/6d5c5119837d997c.png)
在上式中我们看出,后向的更新的累计在线误差实际上等于前向
的更新的误差,再次看一下后向
的更新公式:
![](https://img.haomeiwen.com/i13517500/7b00ff148f89f557.png)
和前向
![](https://img.haomeiwen.com/i13517500/ae40f9608c4d9093.png)
我们从上式可以看出,实际上后向是在一个episode中不断地更新累计误差,但是在最终episode结束时,取得的效果与前向
的效果相同。最终后向
与前向
的关系如下图:
![](https://img.haomeiwen.com/i13517500/4cb13a6718c956e3.png)
网友评论