关于Q-learning 中的Q的含义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Q-learning 中的Q的含义相关的知识,希望对你有一定的参考价值。

参考技术A 状态(state)的价值(value)用v表示,(状态,动作)(state,action)的价值(value)用q表示
(Reinforcement Learning:an Introduction)里头就是这么记的。然后这个q就一直延续到了Q-learning里了。

也即Q值表示状态-动作对的值

1. Deep Q-Learning

传统的强化学习算法具有很强的决策能力,但难以用于高维空间任务中,需要结合深度学习的高感知能力,因此延展出深度强化学习,最经典的就是DQN(Deep Q-Learning)。

DQN 2013

DQN的主要思想是训练CNN拟合出Q-Learning算法,以此让智能体在复杂的RL环境中从原始视频数据学到成功的控制策略。

实现:

  1. 用参数( heta)的CNN近似最优Q-values

[Q(s,a; heta)approx Q^*(s,a) ]

  1. 结合Bellman最优方程得到第(i)次迭代更新的目标

[y_i=mathbb{E}_{s^prime sim mathcal{E}}ig[r+gamma max_{a^prime}Q(s^prime,a^prime; heta_{i-1})|s,aig] ]

  1. 定义网络的损失函数

[L_i( heta_i)=mathbb{E}_{s,asim ho(cdot)}ig[ig(y_i-Q(s,a; heta_i) ig)^2ig]$$ $ ho(s,a)$是行为分布(behavior distribution),即在序列$s$上执行动作$a$的概率分布 3. 求出梯度 $$ riangledown_{ heta_i}L_i( heta_i)=mathbb{E}_{s,asim ho(cdot);s^primesimmathcal{E}}igg[Big(r+gammamax_{a^prime}Q(s^prime,a^prime; heta_{i-1})-Q(s,a; heta_i) Big) riangledown_{ heta_i}Q(s,a; heta_i) igg]]

难点以及解决方法:

  1. 强化学习假设智能体与环境的交互具有马尔科夫性,而现实中大多任务是部分可观的,智能体很难从当前视频帧(x_t)中获取到足够有用的信息。通过动作和观测序列(s_t=x_1,a_1,x_2,...,a_{t-1},x_t),人为地设定了MDP
  2. 训练CNN所需的样本需要相互独立,而RL状态间的相关性极高。通过经验回放机制(experience replay mechansim),保存以前的转移并进行随机采样,缓解数据相关性,保证训练数据分布平滑
  3. 单帧输入不包含时序信息,因此网络输入是经过预处理的4帧堆叠图像

Nature DQN

Nature DQN主要是对DQN 2013做了修改:

  1. 网络结构
    DQN是一个端到端的模型,输入是预处理后的四帧灰度图像的堆叠,先经过三个卷积层提取特征,然后用两个全连接层作为决策层,最后输出为一个向量,向量的元素对应每个可执行动作的概率值,网络结构如下图:

技术图片

  1. 减少相关性
    DQN 2013的(Q(s,a))(r+gammamax_{a^prime}Q(s^prime,a^prime))之间存在相关性,因此在网络训练过程中损失难以收敛。为了减少它们的相关性,Nature DQN使用了两个网络:主网络用于模型参数的更新,以及(Q(s,a; heta_i))的拟合;目标网络每隔一个周期对主网络进行一次拷贝,生成近似的目标价值(r+gamma max_{a^prime}Q(s^prime,a^prime; heta_i^-))(( heta_i)是主网络第(i)次迭代的参数,( heta_i^-)是目标网络的参数,是从主网络参数( heta_{i-1})复制得到)。最后,损失函数为

[L_i( heta_i)=mathbb{E}_{(s,a,r,s^prime)sim U(D)}Big[Big(r+gammamax_{a^prime}Q(s^prime,a^prime; heta_i^-)-Q(s,a; heta_i) Big)^2 Big] ]

从而得到梯度:

[ riangledown_{ heta_i}L( heta_i)=mathbb{E}_{s,a,r,s^prime}Big[Big(r+gammamax_{a^prime}Q(s^prime,a^prime; heta_i^-)-Q(s,a; heta_i) Big) riangledown_{ heta_i}Q(s,a; heta_i) Big] ]

其中,(D)是经验回放池,用于存储每一时刻的转移,可以表示为(e_t=(s_t,a_t,r_t,s_{t+1}))(e_tin D_t={e_1,e_2,...,e_t});在学习阶段,用于Q-Learning更新的样本服从于(U(D))分布,即从(D)中均匀采样。从梯度公式中可以看出,只需要更新( heta_i),减小了计算量和相关性。训练过程如下图:

技术图片

算法伪代码:

技术图片

References

Volodymyr Mnih et al. Playing Atari with Deep Reinforcement Learning. 2013.
Volodymyr Mnih et al. Human-level control through deep reinforcement learning. 2015.




以上是关于关于Q-learning 中的Q的含义的主要内容,如果未能解决你的问题,请参考以下文章

什么是 Q-learning?

Pytorch Note49 Q-learning

A Painless Q-learning Tutorial (一个 Q-learning 算法的简明教程)

强化学习之Q-learning简介

Q-learning简明实例Java代码实现

Q-Learning