Q-Learning与Deep Q-network

1 价值迭代

价值迭代方法假设事先知道环境中的所有状态,可以对其进行迭代,并可以存储与他们关联的近似价值。
对于状态价值步骤如下:Q-Learning与Deep Q-network_第1张图片
对于动作价值步骤如下:
Q-Learning与Deep Q-network_第2张图片
存在的问题:

  1. 获得优质状态转移动态的估计所需的样本数量,状态空间需要足够小
  2. 将问题限制在离散的动作空间中
  3. 我们很少能知道动作的转移概率和奖励矩阵

2 表格 Q-learning

思想:不需要遍历状态空间的每一个状态,我们有一个环境,该环境可以用作真实状态样本的来源。如果状态空间的一些样本没有展示出来,我们不需要关心这些样本的价值,可以用从环境中获得的状态来更新状态价值,这可以节省很多工作。对于有明确状态价值映射的情况,它具有以下步骤:
Q-Learning与Deep Q-network_第3张图片

3 深度Q-Learning

Q-learning方法解决了在整个状态集上迭代的问题,但是在可观察到的状态集数量很大的情况下仍然会遇到困难。例如,在Atari游戏具有不同的屏幕状态,因此如果采用原始像素作为单独的状态,那么很快就会意识到有太多的状态无法跟踪和估算。另外,在某些环境中,不同的可观察状态的数量几乎是无限的。
作为解决这些问题的方案,可以使用非线性表示将状态和动作都映射到一个值,即建模成回归问题。对Q-learning算法进行修改Q-Learning与Deep Q-network_第4张图片
但效果并不是很好,可能出现以下问题:

与环境的交互

我们需要以某种方式与环境交互以获得要训练的数据,在一些简单的环境中,可以随机执行动作,但这不是最佳的策略,在一些环境中,随机动作可能大多数情况下没有奖励,或者很小,这意味着要等待很长时间才能遇到有较大奖励的情况。作为替代方案,可以用Q函数近似作为动作的来源。
当Q近似值很差时,随机动作在训练开始时会比较好,因为它可以提供有关环境状态的更均匀分布的信息。随着训练的进行,随机动作变得效率低下,我们希望通过Q的近似值来决定如何采取行动。
Q-Learning与Deep Q-network_第5张图片

SGD优化

我们用神经网络来近似一个复杂的非线性函数 Q ( s , a ) Q(s,a) Qs,a,但随机梯度优化的基本要求之一是训练数据独立同分布。而在强化学习中数据并不满足这些条件:

  1. 样本并不是独立的
  2. 训练数据的分布和我们要学习的最佳策略所提供的样本分布并不相同。我们拥有的数据是其他策略的结果。
    为了解决这种问题,我们通常需要使用过去的经验,并从中提取训练数据而不是使用最新的经验数据。此技术称为回放缓冲区(replay buffer)。最简单的实现是设置一个固定大小的缓冲区,将新数据添加到缓冲区的末尾,同时将最旧的数据移除。
    回放缓冲区允许我们在大致独立的数据上训练,但数据足够新,以便在最新策略生成的样本上训练。

步骤之间的相关性

默认训练过程的另一个实际问题也与缺少独立同分布的数据有关,但方式不同。Bellman方程通过 Q ( s ′ , a ′ ) Q(s',a') Q(sa)来提供 Q ( s , a ) Q(s,a) Q(s,a)的值。但是状态 s s s和状态 s ′ s' s之间只有一步之遥,这使得他们非常相近,而神经网络很难分辨他们。当对神经网络的参数进行更新时,可以间接改为 Q ( s ′ , a ′ ) Q(s',a') Q(sa)和其附近其他状态产生的值,,这会使得网络的训练很不稳定。当更新状态s的Q时,在随后的状态中,我们会发现 Q ( s ′ , a ′ ) Q(s',a') Q(sa)变得很糟,但是尝试更新它会破坏 Q ( s , a ) Q(s,a) Q(sa)的值。
为了让训练更加稳定,使用目标网络的技巧,通过该技巧我们可以保留网络的副本并将其用于Bellman方程中 Q ( s ′ , a ′ ) Q(s',a') Q(sa)的值。该网络仅周期性地与主网络同步,例如,每N步进行一次同步。Q-Learning与Deep Q-network_第6张图片

马尔可夫性质

强化学习方法以MDP为基础,它假设环境服从马尔可夫性质。但是单一时刻数据可能不足以捕获所有的重要信息,比如我们可能需要速度和方向,这显然违背了马尔可夫性质,可以保留过去的一些观察结果并将其作为状态。

DQN训练的最终形式

论文:playing atati with deep reinforcement learning
算法步骤:
Q-Learning与Deep Q-network_第7张图片

4 DQN扩展

4.1 N步DQN

论文:Learning to Predict by the Methods of Temporal Differences
方法:
Q-Learning与Deep Q-network_第8张图片
意义:加快值的传播速度,加速收敛
缺点:可能无法收敛,需要调优

4.2 Double DQN

论文:Deep Reinforcement Learning with Double Q-Learning
想法:基础DQN倾向于过高估计Q值,这可能对训练效果有害,有时会产生一个次优策略。造成这种情况的根本原因是Bellman方程中的max运算。可以使用训练网络来选择动作,但是使用目标网络的Q值。Q-Learning与Deep Q-network_第9张图片

4.3 噪声网络

论文:Noisy Networks for Exploration
思想:在训练过程中学习探索特征,而不是单独制定探索的策略
基础DQN通过选择随机动作来完成探索,随机选取会依据特定的超参数esilon,他还随着时间的增长慢慢从1.0降至一个小比例0.1或0.02。它需要调优参数来让训练更高效。
做法:在全连接层中加入噪声,并通过反向传播在训练的过程中调整噪声参数。两种添加噪声的方法:
Q-Learning与Deep Q-network_第10张图片

4.4 带优先级的回放缓冲区

论文:Prioritized Experence Replay
基础的DQN使用回放缓冲区来打破片段中连续状态转移的相关性。片段中的经验样本是高度相关的,大多数时候,环境是“平滑的”,不会因为执行的动作而改变太多。然而,随机梯度下降方法假设用来训练的数据有独立同分布的性质。为了解决这个问题,基础DQN方法使用一个巨大的状态转移缓冲区,并从中随机采样以获取下一个训练批。
思想:质疑随机均匀采样策略,证明了只要根据训练损失给缓冲区的样本赋予优先级,并按一定的比例根据优先级从缓冲区中进行采样,就能很大程度地提升收敛速度以及DQN产生的策略质量。
比较棘手的是训练时如何保持“不寻常”样本和“剩余样本”之间的平衡,如果只关注缓冲区内的一部分数据集,那么会丢失独立同分布的性质并且很容易过拟合这个小数据集。
**最流行的选择优先级的方法:**和样本在Bellman更新中计算的损失成比例,新的样本刚加入缓冲区的时候需要赋予一个最大的优先级以保证它会马上被采样。
通过调整样本的优先级,在数据分布中引入了偏差(某些状态转移的采样频率会远高于另外一些状态转移),为了能让随机梯度下降法能够正常工作,需要对此进行补偿。为了得到这个结果,论文的作者使用了样本权重,它要乘以单个样本的损失。每个样本的权重值被定义为 w i = ( N ∗ p ( i ) − β ) w_i=(N * p(i)^{-\beta}) wi=(Np(i)β) β \beta β是另一个应该在0-1之间的超参数,当 β = 1 \beta=1 β=1时,采样引入的偏差被完全补偿,但是作者提出为了收敛性的考虑,最好让 β \beta β从0-1之间的一个值开始,再在训练过程中慢慢增加到1。

4.5 Dueling DQN

论文:Dueling Network Architectures for Deep Reinforcement Learning
想法:在神经网络的架构中,显式地i将价值 V ( s ) V(s) V(s)和优势值 A ( s , a ) A(s,a) A(s,a)分隔开,这带来了更好的训练稳定性,更快的收敛速度。
Q ( s , a ) = V ( s ) + A ( s , a ) Q(s,a) = V(s) + A(s,a) Q(s,a)=V(s)+A(s,a)
Q-Learning与Deep Q-network_第11张图片
还需要一个约束条件来保证神经网络像我们期望那样学习 V ( s ) V(s) V(s) A ( s , a ) A(s,a) A(s,a):让任何状态的优势值的平均值为0
Q-Learning与Deep Q-network_第12张图片

4.6 Categorical DQN

论文:A Distributional Perspective on Reinforcement Learning
思想:论文的作者对Q-Learning的基础部分的Q提出了质疑,试图用更通用的Q值概率分布来替换它们。Q-learning和价值迭代方法,都用简单的数字来表示动作或状态的价值,并用以显示从状态或状态动作对中所能获得的总奖励是多少。但是,对未来所有可能的奖励都塞入一个值不是很现实,在复杂的环境中,未来可能是随机的,概率不同产生的值也不同。
在马尔科夫决策过程中,情况会变得很复杂,因为有一系列的决策需要制定,并且每个决策可能会影响未来的情况。由于目的的不同,使用平均奖励值会丢失很多潜在的动态信息。所以当潜在的值有复杂的分布时,不要将自己限制在预测动作的平均值,可能直接使用分布会更有益。

你可能感兴趣的:(Reinforcement,Learning,人工智能)