1. Q-learning 介绍

1.1 Critic

critic 本身并没有办法决定要采取哪一个action,其主要用来完成:衡量一个action到底好不好。只能基于当前的state,输出采取这个action,预期到整个游戏结束时候的累积得分

简单的说,critic并不能衡量一个state(记为ss)的好坏,只能衡量在give某个state,接下来使用action(记为π\pi)的情况下,最后得到奖励(VV)的多少。用数学表达式:
Vπ(s) V^{\pi}(s)

1.2 计算Critic

1.2.1 MC方法

由于是一个预测未来的问题,而且没有办法把采取当前action之后可能遇到的所有state都考虑到,所以,一般把critic设计成一个神经网络

也就是说,如果需要训练这个神经网络,在玩的过程中是没有办法训练的,只能等到action把这个游戏玩完之后,得到之前每一个state下采取action所得的分数,才能够进行训练。
强化学习——(3)Q-Learning

1.2.2 TD方法

考虑整个玩游戏的流程:...,st,at,rt,st+1,......, s_t, a_t, r_t, s_{t+1},...,也就是说,当前action与下一个action之间的reward的差距可以表示成:
Vπ(st)=Vπ(st+1)+rt V^{\pi}(s_t)=V^{\pi}(s_{t+1})+r_t
为什么是Vπ(st)=Vπ(st+1)+rtV^{\pi}(s_t)=V^{\pi}(s_{t+1})+r_t而不是Vπ(st)=Vπ(st+1)rtV^{\pi}(s_t)=V^{\pi}(s_{t+1})-r_t?在整体趋势上,越往后得到的reward可能越少,就像打怪一样,前期把怪打完了,疯狂加分,后期无怪,得到的分可能就少了。

强化学习——(3)Q-Learning

1.2.3 MC与TD的差别

强化学习——(3)Q-Learning

  1. MC的方差很大,是KK个action求和的结果。
  2. TD方差较小,但是Vπ(st+1)V^{\pi}(s_{t+1})可能会有误差,估计不准确。

1.2.4 Q function

Q function成立的假设:假设在state s时,强制采取action a,剩下的步骤用actor自动完成,至于critic的输出值通过MC还是TD方法获得都可以。
强化学习——(3)Q-Learning
针对上面的内容做一个总结:一开始有一个agent:π\pi,而我们的目的是要把这个agent变的更好。在这个agent处在某一个state的情况下,让他强制采取某个措施,即执行Qπ(s,a)Q^{\pi}(s,a),剩下的步骤交由actor自动完成。期间,critic数据的获取方法可以采用TD或者MC。这种方式更新出来的agent,一定是朝好的方向变化的。
强化学习——(3)Q-Learning
那么,在强制选择action的时候,要怎么做决定选择哪种action呢?
遍历当前state下,将所有可能的action都带到Qfunction中,选择能够让Qfunction最大化的那个action,就是强制选取的action。

证明:
符号说明: π(s)\pi'(s)是agent:π\pi在当前state下得分最大的action,也就是我们强制选取的action,也就是agent 的进化方向,下一轮中的 π\pi,在这一轮中记为π\pi'
π(s)=argmaxaQπ(s,a) \begin{aligned} \pi'(s)=\arg\max_a Q^{\pi}(s, a) \end{aligned}
那么可以得出:对于所有的state,都要求
Vπ(s)Vπ(s) V^{\pi'}(s) \geq V^{\pi}(s)
同样的,假设把优化前的π(s)\pi(s)作为强制选择,那么一定存在下列关系:
Vπ(s)=Qπ(s,π(s))maxaQπ(s,a)=Qπ(s,π(s))Vπ(s)Qπ(s,π(s))=E[rt+Vπ(st+1)st=s,at=π(st)]E[rt+Qπ(st+1,π(st+1))st=s,at=π(st)]=E[rt+1+rt+2+Vπ(st+2)...] \begin{aligned} V^{\pi}(s) &=Q^{\pi}(s, \pi(s)) \leq \max_a Q^{\pi}(s,a)=Q^{\pi}(s,\pi'(s))\\ V^{\pi}(s) & \leq Q^{\pi}(s,\pi'(s))\\ &= E[r_{t}+V^{\pi}(s_{t+1})|s_t=s, a_t=\pi'(s_t)] \\ & \leq E[r_{t}+Q^{\pi}(s_{t+1}, \pi'(s_{t+1}))|s_t=s, a_t=\pi'(s_t)]\\ &= E[r_{t+1}+r_{t+2}+V^{\pi}(s_{t+2})|...] \end{aligned}
上式的通俗解释就是:agent在第tt步采取了最佳的action,后面的随便玩得到的分数,一定小于,在第tt步和t+1t+1步选择最佳action,之后的步骤随便玩得到的分数。以此类推,也就是说,只要每次都选择reward最大的action,那么最后一定是得到最大的reward。

1.2.5 train Q function

1.2.5.1 Target Network

在1.2.4中已经解决了Q function 的输入数据(在tt时刻 state 和 agent 面临state强制采取的action)以及输出数据(在tt时刻得到的reward)。这样的情况下,Q function要怎么确定网络的参数?

这个时候,我们可以构建这样一个网络:
强化学习——(3)Q-Learning
首先初始化Q function的参数,复制一份固定住,这部分用于t+1t+1时刻数据的输入,可以得到一个确定的值Qπ(st+1,π(st+1))Q^{\pi}(s_{t+1}, \pi(s_{t+1}))tt 时刻从 sts_tst+1s_{t+1} 得到的reward rtr_t 也是已知的,这就变成了一个回归问题。再训练多次之后,将训练过后的参数与fix 网络的参数共享,然后重新训练。
强化学习——(3)Q-Learning

1.2.5.2 action的选取

强化学习——(3)Q-Learning
在初始情况下,如果一开始选了action 为 a2a_2 的行为获得奖励之后,按照 Q function 的规则,就不会再选择其他的action 进行尝试了,这其实是一个致命的问题,不利于数据的采集,因此,
一种解决方法是:引入一定的随机性:
强化学习——(3)Q-Learning
第二种解决方法是引入决定action时时候的概率:
强化学习——(3)Q-Learning

1.2.5.3 replay buffer

要收集每次与环境互动的信息,这个buffer中的数据可能来自不同policy计算出来的结果。

强化学习——(3)Q-Learning

1.3 整体算法

强化学习——(3)Q-Learning
buffer 写成 butter 了 qwq

2. Q learning局限性

Q value一般情况下都是被高估了。我们在计算target的时候,网络是有误差的,这样可能会造成某些action被高估,但是由于优化的表达式,要求我们选择得分最高的action,这样误差就会逐渐增加。

强化学习——(3)Q-Learning

3 改进思路

3.1 DQN

Double DQN结构。在该结构中,计算Q value的是另一个Q function,即QQ',如果QQ高估了某一个action,那么只要QQ'没有高估,最后影响不大,如果QQ'高估了某个action,但是QQ没有选择这个action,那也没关系。

QQ'就是上文fixed的那个结构的参数。

强化学习——(3)Q-Learning

3.2 Dueling DQN

Dueling DQN改了网络的架构。
原来的网络架构
强化学习——(3)Q-Learning

改了之后的网络架构
强化学习——(3)Q-Learning
上图中的A(s,a)A(s,a)是当前状态 state 对应的所有action的Q value。有限制条件,例如使得A(s,a)A(s,a)的列和均为0.
强化学习——(3)Q-Learning
在更新Q function的时候,Q function的网络参数被改变,那么,可能V(s)V(s)的值也会发生改变。如果在训练过程中:

强化学习——(3)Q-Learning
我们只有前两个数据的data,目标是优化成这个样子:
强化学习——(3)Q-Learning
那么,Q function网络可能会通过修改V(s)V(s)的值来达到目的,修改V(s)V(s)值的同时,第三个没有被sample过的action也发生了变化。相当于增加了resample的数据量。

3.3 Noisy Net

之前的参数限制:
强化学习——(3)Q-Learning
改进之后的限制:
在与环境开始互动的时候,才在参数中增加noisy
强化学习——(3)Q-Learning

4. Q-Learning for Continuous Actions

当action为序列数据时,比如自动驾驶中方向盘转向的度数。通常情况下,有以下三种方法:

  1. 将序列数据分段,强制性的变成离散型的,但是这样会有一定的误差。
  2. 使用梯度下降的方法去解方程组,可能会产生局部极小值、运算量大等问题。
    强化学习——(3)Q-Learning
  3. 设计一个网络。
    首先计算出state的μ,σ,v\mu, \sigma, v,然后与a计算(QQ function 网络要保证σ\sigma是正值):
    强化学习——(3)Q-Learning
    由于(aμ(s))Tσ(s)(aμ(s))-(a-\mu(s))^T\sigma(s)(a-\mu(s))是个负值,故而当a=μ(s)a=\mu(s)Q(s,a)Q(s,a)最大。

分类:

技术点:

相关文章: