1. Q-learning 介绍
1.1 Critic
critic 本身并没有办法决定要采取哪一个action,其主要用来完成:衡量一个action到底好不好。只能基于当前的state,输出采取这个action,预期到整个游戏结束时候的累积得分。
简单的说,critic并不能衡量一个state(记为)的好坏,只能衡量在give某个state,接下来使用action(记为)的情况下,最后得到奖励()的多少。用数学表达式:
1.2 计算Critic
1.2.1 MC方法
由于是一个预测未来的问题,而且没有办法把采取当前action之后可能遇到的所有state都考虑到,所以,一般把critic设计成一个神经网络。
也就是说,如果需要训练这个神经网络,在玩的过程中是没有办法训练的,只能等到action把这个游戏玩完之后,得到之前每一个state下采取action所得的分数,才能够进行训练。
1.2.2 TD方法
考虑整个玩游戏的流程:,也就是说,当前action与下一个action之间的reward的差距可以表示成:
为什么是而不是?在整体趋势上,越往后得到的reward可能越少,就像打怪一样,前期把怪打完了,疯狂加分,后期无怪,得到的分可能就少了。
1.2.3 MC与TD的差别
- MC的方差很大,是个action求和的结果。
- TD方差较小,但是可能会有误差,估计不准确。
1.2.4 Q function
Q function成立的假设:假设在state s时,强制采取action a,剩下的步骤用actor自动完成,至于critic的输出值通过MC还是TD方法获得都可以。
针对上面的内容做一个总结:一开始有一个agent:,而我们的目的是要把这个agent变的更好。在这个agent处在某一个state的情况下,让他强制采取某个措施,即执行,剩下的步骤交由actor自动完成。期间,critic数据的获取方法可以采用TD或者MC。这种方式更新出来的agent,一定是朝好的方向变化的。
那么,在强制选择action的时候,要怎么做决定选择哪种action呢?
遍历当前state下,将所有可能的action都带到Qfunction中,选择能够让Qfunction最大化的那个action,就是强制选取的action。
证明:
符号说明: 是agent:在当前state下得分最大的action,也就是我们强制选取的action,也就是agent 的进化方向,下一轮中的 ,在这一轮中记为。
那么可以得出:对于所有的state,都要求
同样的,假设把优化前的作为强制选择,那么一定存在下列关系:
上式的通俗解释就是:agent在第步采取了最佳的action,后面的随便玩得到的分数,一定小于,在第步和步选择最佳action,之后的步骤随便玩得到的分数。以此类推,也就是说,只要每次都选择reward最大的action,那么最后一定是得到最大的reward。
1.2.5 train Q function
1.2.5.1 Target Network
在1.2.4中已经解决了Q function 的输入数据(在时刻 state 和 agent 面临state强制采取的action)以及输出数据(在时刻得到的reward)。这样的情况下,Q function要怎么确定网络的参数?
这个时候,我们可以构建这样一个网络:
首先初始化Q function的参数,复制一份固定住,这部分用于时刻数据的输入,可以得到一个确定的值, 时刻从 到 得到的reward 也是已知的,这就变成了一个回归问题。再训练多次之后,将训练过后的参数与fix 网络的参数共享,然后重新训练。
1.2.5.2 action的选取
在初始情况下,如果一开始选了action 为 的行为获得奖励之后,按照 Q function 的规则,就不会再选择其他的action 进行尝试了,这其实是一个致命的问题,不利于数据的采集,因此,
一种解决方法是:引入一定的随机性:
第二种解决方法是引入决定action时时候的概率:
1.2.5.3 replay buffer
要收集每次与环境互动的信息,这个buffer中的数据可能来自不同policy计算出来的结果。
1.3 整体算法
buffer 写成 butter 了 qwq
2. Q learning局限性
Q value一般情况下都是被高估了。我们在计算target的时候,网络是有误差的,这样可能会造成某些action被高估,但是由于优化的表达式,要求我们选择得分最高的action,这样误差就会逐渐增加。
3 改进思路
3.1 DQN
Double DQN结构。在该结构中,计算Q value的是另一个Q function,即,如果高估了某一个action,那么只要没有高估,最后影响不大,如果高估了某个action,但是没有选择这个action,那也没关系。
注就是上文fixed的那个结构的参数。
3.2 Dueling DQN
Dueling DQN改了网络的架构。
原来的网络架构
改了之后的网络架构
上图中的是当前状态 state 对应的所有action的Q value。有限制条件,例如使得的列和均为0.
在更新Q function的时候,Q function的网络参数被改变,那么,可能的值也会发生改变。如果在训练过程中:
我们只有前两个数据的data,目标是优化成这个样子:
那么,Q function网络可能会通过修改的值来达到目的,修改值的同时,第三个没有被sample过的action也发生了变化。相当于增加了resample的数据量。
3.3 Noisy Net
之前的参数限制:
改进之后的限制:
在与环境开始互动的时候,才在参数中增加noisy
4. Q-Learning for Continuous Actions
当action为序列数据时,比如自动驾驶中方向盘转向的度数。通常情况下,有以下三种方法:
- 将序列数据分段,强制性的变成离散型的,但是这样会有一定的误差。
- 使用梯度下降的方法去解方程组,可能会产生局部极小值、运算量大等问题。
- 设计一个网络。
首先计算出state的,然后与a计算( function 网络要保证是正值):
由于是个负值,故而当时最大。