type
status
password
date
slug
summary
category
URL
tags
icon
强化学习(reinforcement learning,RL)讨论的问题是智能体(agent)怎么在复杂、不确定的环境(environment)中最大化它能获得的奖励。如图 1.1 所示,强化学习由两部分组成:智能体和环境。在强化学习过程中,智能体与环境一直在交互。智能体在环境中获取某个状态后,它会利用该状态输出一个动作 (action),这个动作也称为决策(decision)。然后这个动作会在环境中被执行,环境会根据智能体采取的动作,输出下一个状态以及当前这个动作带来的奖励。智能体的目的就是尽可能多地从环境中获取奖励。
强化学习难点
如下图是一个打砖块的游戏,强化学习的训练数据就是一个玩游戏的过程。我们从第 1 步开始,采取一个动作,比如我们把木板往右移,接到球。第 2 步我们又做出动作,得到的训练数据是一个玩游戏的序列。比如现在是在第 3 步,我们把这个序列放进网络,希望网络可以输出一个动作,即在当前的状态应该输出往右移或者往左移。这里有个问题,我们没有标签来说明现在这个动作是正确还是错误的,必须等到游戏结束才可能知道,这个游戏可能 10s 后才结束。现在这个动作到底对最后游戏是否能赢有无帮助,我们其实是不清楚的。这里我们就面临延迟奖励(delayed reward)的问题,延迟奖励使得训练网络非常困难。

基本概念
我们首先通过《网格世界》来引入这些概念,然后在马尔可夫决策过程的框架内将其形式化。
强化学习中我们将尽量使用《网格世界》的例子,因为它在阐释新的概念和算法时非常直观。
网格世界
如图 1.2 所示,一个机器人在一个网格世界中移动。这个机器人被称为智能体,它能够在网格中的相邻单元格之间移动。在每一个时间步,它只能占据一个单独的单元格。白色单元格是可以进入的,而橙色单元格是禁止进入的,蓝色单元格是这个机器人想要到达的。智能体的最终目标是找到一个 “良好” 的策略,使其能够从任何初始单元格出发都能到达蓝色单元格。

状态和动作

状态
- 状态:描述智能体相对于环境的状况。
在网格世界的例子中,状态对应于智能体的位置。由于有九个单元格,所以也有九个状态。它们被标记为 、、、,如图 1.3(a)所示。
- 状态空间:所有状态的集合被称为状态空间,记为 。
动作
- 动作:对于每个状态,智能体可以采取的动作。
《网格世界》中右五种可能的动作:向上移动、向右移动、向下移动、向左移动以及保持静止。这五种动作分别被标记为 、、、(见图 1.3(b))。
- 动作空间:所有动作的集合。
《网格世界》的动作空间为 。
不同的状态可以有不同的动作空间。例如,考虑到在状态 时采取 或 会导致与边界碰撞,我们可以将状态 的动作空间设置为 。
状态转移
当采取一个动作时,智能体可能会从一个状态转移到另一个状态。这样的一个过程被称为状态转移。例如,如果智能体处于状态 并且选择了动作 ,那么智能体就会转移到状态 。这样的一个过程可以表示为:。
状态转移矩阵
使用矩阵的形式表达状态转移方程。
ㅤ | |||||
s4 | |||||
状态转移方程
这表明,当在 状态下采取 动作时,智能体转移到 的概率为 1,而转移到其他状态的概率为 0。因此,在 状态下采取动作 一定会使智能体转移到 。
策略
一个策略会告知智能体在每一个状态下应采取哪些动作。直观地讲,策略可以用箭头来表示(见图 1.4(a))。遵循一个策略,智能体能够从一个初始状态生成一条轨迹(见图 1.4(b))。

策略方程
从数学角度来讲,策略可以用条件概率来描述。将图 1.4 中的策略表示为,这是一个针对每一个状态定义的条件概率分布函数。例如, 的策略如下。
这表明在状态 下采取动作 的概率为 1,而采取其他动作的概率为 0。
奖励
在一个状态下执行一个动作之后,智能体从环境中获得一个奖励,记为 。这个奖励是状态 和动作 的一个函数。因此,它也被记为 。它的值可以是正实数、负实数或者零。不同的奖励对智能体最终将学会的策略有着不同的影响。一般来说,有正奖励时,我们鼓励智能体采取相应的动作;有负奖励时,我们阻止智能体采取那个动作。
在网格世界的例子中,奖励是这样设计的:
- 如果智能体试图越过边界,令奖励 。
- 如果智能体试图进入一个禁止单元格,令奖励 。
- 如果智能体到达目标状态,令奖励 。
- 否则,智能体获得的奖励 。
应该特别注意目标状态 。在智能体到达 之后,奖励过程不必终止。如果智能体在 状态下采取动作 ,下一个状态仍然是 ,并且奖励是 。如果智能体采取动作 ,下一个状态同样是 ,但奖励是 。
奖励表格

初学者可能会问这样一个问题:如果给定了奖励表格,我们能否仅仅通过选择具有最高奖励的动作来找到好的策略呢?答案是否定的。那是因为这些奖励是采取一个动作后能立即获得的即时奖励。要确定一个好的策略,我们必须考虑长期内能获得的总奖励(更多信息请见第 1.6 节)。具有最高即时奖励的一个动作可能不会导致最高的总奖励。
Trajectories, returns, and episodes

- Trajectory:是一个状态-动作-奖励的链条。例如,给定如图 1.6(a)所示的策略,智能体能够沿着如下一条轨迹移动:.。
- return(rewards):为Trajectory所收集到的所有奖励的总和.
回报可以用于评估策略。例如,我们可以通过比较它们的回报来评估图 1.6 中的两种策略。左边策略(a)获得的回报是 1;右边策略(b)获得的回报是 0。
- episode:当遵循某个策略与环境进行交互时,智能体可能会在某些终止状态停止。由此产生的Trajectory被称为一个episode(或者一次试验)。
- 如果我们将终止状态视为一种特殊状态,我们可以专门设计它的动作空间或者状态转移方式,使得智能体永远停留在这个状态。例如,对于目标状态 ,我们可以指定 ;或者设置状态转移方程,对于所有 ,都有 。
- 其次,如果我们将终止状态当作一个普通状态来对待,我们可以简单地将它的动作空间设置成与其他状态相同,这样智能体就有可能离开这个状态然后又再次回到这个状态。由于每次到达 时都能获得一个正奖励 ,智能体最终将学会永远停留在 以获取更多奖励。值得注意的是,当一个回合是无限长的并且停留在 s9 所获得的奖励是正的时,就必须使用一个折扣率来计算折扣回报以避免结果发散。
然而,有些游戏可能没有终止状态,这意味着与环境交互的过程永远不会结束。我们需要特殊处理将会结束的游戏与永远不会结束的游戏用统一的数学表达式进行表达。表达方式有以下两种方法
return作用
初学者可能会问这样一个问题:如果给定了奖励表格,我们能否仅仅通过选择具有最高奖励的动作来找到好的策略呢?答案是否定的。那是因为这些奖励是采取一个动作后能立即获得的即时奖励。要确定一个好的策略,我们必须考虑长期内能获得的总奖励(更多信息请见第 1.6 节)。具有最高即时奖励的一个动作可能不会导致最高的总奖励。
我们使用return来评估策略。return由即时奖励和未来奖励组成。在此,即时奖励是在初始状态采取一个行动后所获得的奖励;未来奖励指的是离开初始状态之后所获得的奖励。有可能即时奖励是负的,而未来奖励是正的。因此,应该依据return(即总奖励)而非仅仅是即时奖励来决定采取哪些行动,以避免做出短视的决策。
折扣return
return也可以针对无限长的Trajectory进行定义。例如,图 1.6 中的轨迹在到达 后停止。由于对于 策略有明确的定义,所以在智能体到达 后,这个过程不一定必须停止。我们可以设计一个策略,使得智能体在到达 后保持静止。然后,该策略将生成以下无限长的轨迹:
其中,这条Trajectory对应的return是发散的。因此,对于无限长的Trajectory,我们必须引入折扣回报的概念。
其中 被称为折扣率。
强化学习理论框架
Markov decision processes
马尔可夫决策过程是用于描述随机动态系统的一个通用框架。一个马尔可夫决策过程的关键要素如下所述。
基本概念
- 集合:
- 状态空间:所有状态的集合,记为 。
- 动作空间:与每个状态 ()相关联的一组动作,记为 。
- 奖励集合:与每个状态-动作对相关联的一组奖励,记为 。
- 模型:
- 状态转移概率:在状态 下,当采取动作 时,转移到状态 的概率为 。对于任意的,都满足 。
- 奖励概率:在状态 下,当采取动作 时,获得奖励 的概率为 。对于任意的,都满足。
- 策略:在状态 时,选择动作 的概率为 。对于任意的,都满足。
马尔科夫决策过程
其中 表示当前时间步, 表示下一个时间步。公式(1.4)表明下一个状态或者奖励仅仅取决于当前的状态和动作,而与之前的状态和动作无关。
状态转换方程与奖励 和 要么是平稳的,要么是非平稳的。一个平稳模型不会随时间变化而改变;一个非平稳模型可能会随时间变化而有所不同。例如,在网格世界示例中,如果一个禁区有时可能会突然出现或者消失,那么这个模型就是非平稳的。在本书中,我们只考虑平稳模型。
马尔可夫决策过程与马尔可夫过程的区别
人们可能听说过马尔可夫过程(MPs)。那么马尔可夫决策过程(MDP)和马尔可夫过程之间的区别是什么呢?答案是,一旦在马尔可夫决策过程中策略被固定下来,那么马尔可夫决策过程就退化为一个马尔可夫过程。例如,图 1.7 中的网格世界示例可以抽象为一个马尔可夫过程。在随机过程的文献中,如果一个马尔可夫过程是一个离散时间过程且状态的数量是有限的或者可数的,那么它也被称作马尔可夫链[1]。在本书中,当语境清晰时,“马尔可夫过程”和“马尔可夫链”这两个术语可以互换使用。此外,本书主要考虑状态和动作的数量均为有限的有限马尔可夫决策过程。这是应该被充分理解的最简单的情形。

状态价值
在时刻,智能体处于状态,按照策略所采取的行动是。下一个状态是,所获得的即时奖励是。这个过程可以简洁地表示为。从 时刻开始,我们能够得到一条状态-动作-奖励的trajectory
根据定义,沿着这条trajectory的discount return是
其中是折扣率。注意到是一个随机变量,因为全都是随机变量。所以,我们使用它的期望值作为状态价值
被称为策略的状态价值函数,或者简单地称为的状态价值。以下给出一些重要的说明:
- 依赖于。这是因为它是一条以智能体从开始的trajectory。
- 依赖于。这是因为轨迹是按照策略生成的。对于不同的策略,状态价值可能不同。
- 不依赖于。仅仅代表当前的时间步长。一旦给定策略,的值就确定了。
贝尔曼公式
求解状态价值
- 解析解
- 迭代计算
动作价值
最优策略
定义
策略的状态价值是衡量策略好坏的标准。考虑两个给定的策略和。如果对于任何状态,的状态价值都大于或等于的状态价值,那么就说 比 更好。因此,最优策略 就是在所有的状态 下,均优于其他所有的策略 。最优策略对应的状态价值就是最优状态价值。
贝尔曼最优方程
贝尔曼最优方程是与最优策略以及最优状态价值相对应的贝尔曼方程。包括Elementwise、矩阵两种形式:
- Elementwise
- 矩阵形式
- 最优方程求解方法
本质上是迭代计算贝尔曼最优方程
定理 3.3 保证了当时,和分别收敛于最优状态价值和最优策略。证明过程
求最优策略的方法
求最优策略—环境已知
策略迭代算法
策略迭代也是一种迭代算法。每次迭代有两个步骤。
- 策略评估步骤(policy evaluation )。通过计算相应的状态价值来评估给定的策略。也就是求解以下贝尔曼方程:
- 策略评估
- 解析解:
- 迭代算法:。其中表示的第次估计值。从任意初始猜测开始,可以确保当时,。具体细节可在第 2.7 节中找到。
我们在第二章中介绍了两种求解(4.3)中贝尔曼方程的方法。
- 策略改进步骤(policy improvement)。这一步用于改进策略。具体来说,一旦在第一步中计算出,就可以得到一个新的策略,如下所示:
具体来说,策略改进步骤分为以下2步
根据策略评估结果,计算动作价值:
根据动作价值,根据策略:
值迭代(本质上是计算贝尔曼最优方程)
- 策略更新步骤(policy update)。从数学角度来看,其目的是找到一个能够解决以下优化问题的策略:
其中,是在上一次迭代中获得的。具体来说,策略改进步骤分为以下2步
根据策略评估结果,计算动作价值:
根据动作价值,根据策略:
- 价值更新步骤(value update)。从数学角度来看,计算一个新的值。
其中,将在下次迭代中被使用。
Truncated policy iteration(基于策略迭代)
- 前提:对于所有的,概率模型 和 是已知的。策略初始化。
- 算法流程:搜索最优状态值和最优策略。当第 次迭代时,若 尚未收敛,则执行以下操作。
- Policy evaluation: 初始化,对下式进行次迭代。其中进行随机初始化(因为在使用迭代法计算状态价值的时候,就是随机初始化的)
- Policy improvement::策略动作调整为最大动作价值函数
总结
可以看出,值迭代算法、策略迭代算法的过程非常相似。让这两种算法从相同的初始条件开始:。这两种算法的过程列在表 4.6 中。在前三个步骤中,由于 ,所以这两种算法生成相同的结果。在第四步中它们变得不同。在第四步中,Value iteration执行 ,这是一步计算,而策略迭代算法求解 ,这需要无限次迭代。如果我们在第四步中明确写出求解 的迭代过程,一切就变得清晰了。通过令 ,我们有……

计算状态价值
更新策略
- 计算动作价值:根据状态价值计算动作价值
- 更新策略
求最优策略—环境未知
蒙特卡洛算法
核心思想:依据大数定理,直接基于经验样本估计动作价值,从而实现策略评估。策略迭代算法共两个步骤,在第一步中,计算状态价值是为了计算动作价值。在第二步中,基于计算出的动作价值生成新的策略。让我们重新考虑一下如何计算动作价值。有两种方法可用。
时序差分算法
基于状态价值的时序差分(估计状态价值)
给定一个策略,我们的目标是对所有的估计。假设我们有一些按照生成的经验样本。这里,表示时间步。以下的TD算法可以使用这些样本来估计状态价值:
其中。这里,是在时刻对的估计值;是时刻下的学习率,且要求且。
应当注意的是,在时刻,只有被访问的状态的值得到更新。如式(7.2)所示,未被访问的状态的值保持不变。为简单起见,式(7.2)经常被省略,但应牢记这一点,如果没有这个式子,该算法在数学上是不完整的。
特别地,要求每个状态 - 动作对必须被访问无限次(或足够多次)。
推导
我们有贝尔曼方程
对于状态,我们定义一个函数为
由于我们能够得到和,它们分别是和的样本,我们能够得到的的含噪观测值为:
我们使用Robbins - Monro算法求解可得:
如果我们想要估计所有状态的状态价值,那么右侧的应该被替换为。这样。然而,这样的替换仍然能确保收敛吗?答案是肯定的,是包含噪声的
基于动作价值的Sarsa算法
- 算法原理
给定一个策略,我们的目标是估计动作价值。假设我们有一些按照生成的经验样本:。我们可以使用以下Sarsa算法来估计动作价值:
其中,是学习率,且。这里,是的估计值。在时刻,只有的值被更新,而其他的值保持不变。
特别地,要求每个状态 - 动作对必须被访问无限次(或足够多次)。
- 算法流程

推导
- 贝尔曼方程
- 对于动作价值,我们定义一个函数为:
- 然后,令上式等于0:
- 我们的目标是使用Robbins - Monro算法求解上述方程以得到。由于我们能够得到和,它们分别是和的样本,我们能够得到的的含噪观测值为:
- 因此,用于求解的Robbins-Monro算法(6.2节)为:
Sarsa算法变体——Expected Sarsa
- 算法原理
其中
推导
- 贝尔曼方程
- 对于动作价值,我们定义一个函数为:
- 然后,令上式等于0:
- 我们的目标是使用Robbins - Monro算法求解上述方程以得到。由于我们能够得到和,它们分别是和的样本,我们能够得到的的含噪观测值为:
注意与sarsa算法相比。Excepted sarasa算法中的比sarasa算法中的的噪声更小。
- 因此,用于求解的Robbins-Monro算法(6.2节)为:
其中是在时刻对的估计值,是学习率。
Sarsa算法变体——n步Sarsa算法
- 算法原理
经验样本。由于在时刻时还没有收集到,我们必须等到时刻才能更新的值。
其中是在时刻时对的估计值。
推导
其中是满足的折扣回报(discounted return)。实际上,也可分解成不同的形式:
应当注意的是,,其中上标仅仅表示的不同分解结构。将的不同分解形式代入(7.16)中的会得到不同的算法。
- 当时,我们有
用于求解此方程的相应随机逼近算法为
这就是(7.12)中的Sarsa算法。
- 当时,我们有
用于求解此方程的相应算法为
其中是的一个样本。实际上,这就是蒙特卡洛(MC)学习算法,它使用从开始的一个回合(episode)的折扣回报来近似的动作价值。
- 对于一般的值,我们有
用于求解上述方程的相应算法为
该算法被称为n步Sarsa算法。
基于最优动作价值的Q-learning
- 算法原理
其中。在此,是最优动作价值的估计值,是的学习率。
说明
Q-learning是一种用于求解以下方程的随机逼近算法:
这是以动作价值(action values)表示的贝尔曼最优性方程(Bellman optimality equation)。
- 算法流程
on policy:使用策略收集样本,并使用这些样本更新策略

off policy:使用策略收集样本,并使用这些样本更新策略;经过几轮迭代后,使用策略替换策略,重新进行迭代。

总结
时序差分算法可以用一个统一的表达式来表示:
其中是时序差分(TD)目标。不同的时序差分算法有不同的。

价值函数近似
假设存在个状态,其状态价值为。这里,是一个给定的策略。令表示真实状态价值的估计值。如果我们使用表格法,估计值可以保存在如下表格中。
state | ||||
Estimated value |
我们将人工神经网络作为函数近似器拟合上述表格中的值
目标函数
设和分别为的真实状态价值和近似状态价值。需要解决的问题是找到一个最优的,使得对于每个,能够最好地近似。特别地,目标函数为
其中,期望是关于随机变量计算的,是随机变量的分布函数。
马尔可夫决策过程的平稳分布
齐次马尔可夫链存在唯一的平稳分布,并且无论初始分布如何,当时,马尔可夫链的分布将收敛到这个平稳分布。
优化算法
使用梯度下降算法最小化目标函数
然而是未知的,但我们可以用一个近似值来代替以使该算法可实现。可以使用以下两种方法来做到这一点。
- 蒙特卡罗方法:假设我们有一个序列。令为从开始的折扣回报(discounted return)。那么,可被用作的一个近似值。
- 时间差分法:根据TD学习的思想,可被用作的一个近似值。
- 可以用神经网络进行代替。
带函数逼近的 Sarsa
通过用动作价值替换状态价值,可以很容易地从(8.13)得到带函数逼近的 Sarsa 算法。特别地,假设由逼近。用替换(8.13)中的,可得:

带函数逼近的 Q-learning
上述更新规则与(8.35)类似,除了(8.35)中的被替换。

Deep Q-learnning
我们可以将深度神经网络集成到 Q-learning中,从而得到Deep Q-learning。Deep Q-learning可以被看作是(8.36)中算法的扩展。然而,它的数学公式和实现技术有很大的不同,值得特别关注。
计算(8.36)并非易事。为了简单起见,假设中的在短时间内是固定的,这样计算梯度就变得容易得多。为此,我们引入两个网络:一个是表示的主网络,另一个是目标网络;主网络的一直在更新,目标网络的每隔一段时间更新为主网络的。
- 主网络更新公式:
- 目标网络更新公式:
DQN中目标网络使用硬更新,DDPG采用软更新。

主网络和目标网络
主网络在每次迭代中都被更新。相比之下,目标网络每隔一定数量的迭代被设置为与主网络相同,以满足在计算(8.38)中的梯度时是固定的这一假设。
经验回放
我们收集了一些经验样本,存储在回放缓冲区。每次我们更新主网络时,我们可以从回放缓冲区中随机抽取一个小批量的经验样本。这称为经验回放,应该遵循均匀分布。
经验回放有2个好处:1.打破序列的相关性,2.重复利用收集到的经验。
策略梯度算法
在本书目前为止,策略一直是用表格来表示的:所有状态的动作概率都存储在一个表格中(例如,表 9.1)。在本章中,我们展示了策略可以用参数化函数表示为,其中是一个参数向量。

在表格情况下,可以通过直接查找表格中的相应条目来获得一个动作的概率。在函数表示的情况下,我们需要将输入到函数中以计算其概率(见图 9.2(a))。根据函数的结构,我们也可以输入一个状态,然后输出所有动作的概率(见图 9.2(b))。
评估指标
最优策略的评估指标有2种,一种是基于状态值,另一种是基于即时奖励。
平均状态值
其中是状态 的权重。对于任何 ,都有 ,且满足。因此,我们可以将 解释为 的概率分布。
正如其名称所示,是状态值的加权平均值。不同的值会导致不同的值。我们的最终目标是找到一个最优策略(一个最优的)来最大化。
平均奖励
Suppose an agent follows a given policy and generate a trajectory with the rewards as (, , ).
其中是平稳分布;是即时奖励的期望,这里
Cesaro mean:如果是一个收敛序列,使得存在,那么也是一个收敛序列,且。
推导
- 步骤 1:我们首先证明以下方程对于任意初始状态 都是有效的:
接下来我们更仔细地研究(9.7)中的。根据全期望定律,我们有
其中表示从经过正好步转移到的概率。根据平稳分布的定义,初始状态并不重要。
- 步骤 2:考虑任意状态分布。根据全期望定律,我们有。
- 平均状态值与平均奖励的关系
目标函数的梯度公式
其中是状态分布,是策略关于参数的梯度。
有折扣
无折扣
优化算法
因为 无法获得,所以使用随机梯度
- 如果是通过蒙特卡洛学习来估计的,相应的算法被称为REINFORCE(增强学习算法)或蒙特卡洛策略梯度。
- 如果是通过时序差分学习来估计的,相应的算法通常被称为Actor-Critic Methods。
如果使用蒙特卡洛学习进行估计,那么该算法属于策略梯度算法;如果使用时序差分学习进行估计,那么该算法属于Actor-Critic。
Actor-Critic
Actor-Critic是一种融合了基于策略和价值的算法结构。Actor指的是策略更新步骤,Critic指的是价值更新步骤。Actor-Critic 算法本质上是基于策略的算法,因为这一系列算法的目标都是优化一个带参数的策略,只是会额外学习公式(9.32)中的价值函数,用模型拟合价值函数。
The simplest actor-critic algorithm (QAC)
- 目标函数的梯度公式(理想)
其中由动作价值的神经网络生成,由策略的神经网络生成。
- 算法描述
- 设动作价值的神经网络为,策略的神经网络为
- 梯度下降:使用随机梯度优化上述的目标函数
- 目标函数:
- 梯度公式:
- 时序差分:根据TD学习的思想,可被用作的一个近似值
推导:价值函数梯度更新公式
算法流程如下所示。

Advantage actor-critic (A2C)
REINFORCE 通过蒙特卡洛采样的方法对策略梯度的估计是无偏的,但是方差非常大。A2C算法通过引入一个基准来减少估计方差。
- 目标函数的梯度公式(理想)
这里被称为优势函数,它反映了一个动作相对于其他动作的优势。
- 算法描述
其中是时刻时状态 - 动作对的样本。此处,和分别是与的近似值。
;
这样做的好处是,我们只需使用单个神经网络来表示。否则,如果,我们就需要分别维护两个网络来表示和。

Off-policy actor-critic
REINFORCE、QAC以及A2C均属于on-policy算法。下面我们介绍Off-policy算法,假设是一个行为策略。我们的目标是利用由生成的样本,学习一个目标策略。
- 重要采样:考虑一种情况,即样本不是由生成的,而是由另一个分布生成的。我们用这些样本近似
- 目标函数:假设是一个行为策略。我们的目标是利用由生成的样本;学习一个目标策略,该目标策略能使以下度量最大化。
其中是策略下的平稳分布,是策略下的状态价值。此度量的梯度由以下定理给出。
- 梯度公式:上述目标函数的梯度如下
其中状态分布为:
是在策略 下从状态 转移到状态 的折扣总概率
- 算法描述:使用实际梯度上升算法最大化(10.11)的目标函数
其中 。与同策略情形类似,优势函数 可以用时间差分(TD)误差来代替。即

Deterministic actor-critic(DPG)
- 定义:Deterministic actor-critic指策略直接给出动作,而非动作的概率。
来专门表示确定性策略。与给出动作概率的不同,直接给出动作
- 梯度公式
定理10.2(确定性策略梯度定理)。的梯度为
其中,是状态的一种分布 。
推导
根据链式求导计算梯度
- 算法描述:随机梯度上升(下式)最大化

Deep Deterministic actor-critic(DDPG)
我们可以将深度神经网络集成到 DPG 中,从而得到DDPG。DDPG可以被看作是(10.14)的扩展,DDPG因为使用深度网络,所以DDPG引入了DQN(Deep Q Learning)中的两个技术:主网络域目标网络、经验回放。
- Critic的两个网络:一个是表示的主网络,另一个是目标网络;主网络的一直在更新,目标网络的每隔一段时间更新根据主网络跟新一次。
- 主网络更新公式:更具时序差分算法得到主网络的更新公式如下所示
- 目标网络更新公式:使用软更新的方式,让目标网络缓慢更新,逐渐接近主网络
DQN中目标网络使用硬更新,DDPG采用软更新。
- Actor的两个网络:DQN没有Actor网络,但是DDPG包含Actor网络。DDPG使用两个Actor网络,其Actor目标网络主要用来计算Critic目标网络的Q值。
- 算法流程
随机噪声可以用来表示,用随机的网络参数和分别初始化 Critic 网络和 Actor 网络
复制相同的参数和,分别初始化目标网络和
初始化经验回放池
for 序列 do :
初始化随机过程用于动作探索
获取环境初始状态
for 时间步 do :
根据当前策略和噪声选择动作:
执行动作,获得奖励,环境状态变为
将存储进回放池
从中采样个元组
对每个元组,用目标网络计算。这一步使用的是 。DQN中使用的是
最小化目标损失,以此更新当前 Critic 网络
计算采样的策略梯度,以此更新当前 Actor 网络:
更新目标网络:
end for
end for
双延时确定策略梯度(TD3)
由于存在 等问题,DPG实际运行的效果并不好。TD3通过 、截断
- 目标网络:目标网络下损失函数如下所示
- 截断双Q学习:使用两个价值网络和一个策略网络。三个神经网络各对应一个目标网络
- 减小更新策略网络和目标网络的频率
实验表明,应当让策略网络 以及三个目标网络的更新慢于价值网络。我们每一轮更新一次价值网络,但是每隔轮更新一次策略网络和三个目标网络。是超参数,需要调。
算法流程
- 让目标策略网络做预测:。其中向量的每个元素都独立从截断正态分布中抽取。
- 让两个目标价值网络做预测:
- 计算TD目标:
- 让两个价值网络做预测:
- 计算TD误差:
- 更新价值网络:
- 每隔k轮更新一次策略网络和三个目标网络:
- 让策略网络做预测:。然后更新策略网络
- 更新目标网络的参数:
TRPO(策略梯度的一种)
简介
之前介绍的基于策略的方法包括策略梯度算法和 Actor-Critic 算法。这些方法虽然简单、直观,但在实际应用过程中会遇到训练不稳定的情况。当策略网络是深度模型时,沿着策略梯度更新参数,很有可能由于步长太长,策略突然显著变差,进而影响训练效果。
针对以上问题,我们考虑在更新时找到一块信任区域(trust region),在这个区域上更新策略时能够得到某种策略性能的安全性保证,这就是信任区域策略优化(trust region policy optimization,TRPO)算法的主要思想。
目标函数
假设是一个行为策略。我们的目标是利用由生成的样本,学习一个目标策略,其中参数在的邻域内。借助重要性采样,得到TRPO的目标函数如下:
无法得到,所以会使用近似。其中为优势函数
置信域的表示方法有很多例如:
- KL散度:
- 距离:
PPO算法(策略梯度的一种)
PPO 基于 TRPO 的思想,PPO 的优化目标与 TRPO 相同,但采用了一些相对简单的方法来求解,具体来说,PPO 有两种形式,一是 PPO-惩罚,二是 PPO-截断。选择其中一种就好。
- Clipping: 通过将比率限制在一个小区间内(如)来防止策略更新过大。
- Surrogate Loss: 使用一个替代损失函数来优化策略,该函数鼓励在保持策略稳定性的同时最大化期望回报。
PPO惩罚
PPO-惩罚(PPO-Penalty)用拉格朗日乘数法直接将 KL 散度的限制放进了目标函数中,这就变成了一个无约束的优化问题,在迭代的过程中不断更新 KL 散度前的系数。即:
令 , 的更新规则如下:
- 如果,那么
- 如果,那么
- 否则
其中,是事先设定的一个超参数,用于限制学习策略和之前一轮策略的差距。
PPO-截断
PPO 的另一种形式 PPO-截断(PPO-Clip)更加直接,它在目标函数中进行限制,以保证新的参数和旧的参数的差距不会太大,即:
因为有时候无法获得,此时我们可以使用进行近似。
其中 ,即把 限制在 内。上式中是一个超参数,表示进行截断(clip)的范围。
Soft Actor-Critic (SAC) 算法
SAC 是一种基于策略梯度的深度强化学习算法,它具有最大化奖励与最大化熵(探索性)的双重目标。SAC 通过引入熵正则项,使策略在决策时具有更大的随机性,从而提高探索能力。
定义
- 状态价值函数
- 动作价值函数
策略评估
- 贝尔曼方程
策略提升
离散动作空间
- 价值评估:如果在SAC中,我们只打算维持一个值函数,那么可以只用(13.6)式进行值迭代;如果需要同时维持两个值函数,就使用(13.7)(13.9)进行值迭代。
- 策略提升:通过KL散度令策略向值分布进行靠近,策略优化公式如下所示。其中函数作为配分函数,用于归一化分布。
连续动作空间
- Critic:基于 Double DQN 的思想,SAC 使用两个网络,但每次用网络时会挑选一个值小的网络,从而缓解值过高估计的问题。任意一个函数的损失函数为。
- Actor:策略的损失函数由 KL 散度得到,化简后为:
前沿
- 不完全观测:把从初始到时刻为止的所有观测记作,用代替状态,作为策略网络的输入,那么策略网络就记作
- 环境模型:使用环境模型模拟真实环境。环境模型预测是指采用环境模型产生的模拟经验,更新策略。
- for i in 真实数据
- 更新Q网络
- for j in 模拟数据
- 更新Q网络
- 初始化策略、环境模型参数、真实环境数据集、模型数据集
- for 轮数 do
- 通过环境数据来训练模型参数
- for 时间步 do
- 根据策略与环境交互,并将交互的轨迹添加到中
- for 模型推演次数 do
- 从中均匀随机采样一个状态
- 以为初始状态,在环境模型中使用策略进行步的推演,并将生成的轨迹添加到中
- end for
- for 梯度更新次数 do
- 基于模型数据,使用 SAC 来更新策略参数
- end for
- end for
- end for
Dyna
打靶法:基于目前的状态,使用环境模拟模型不断的生成随机交互序列,从中选择回报最大的序列,最为执行动作的依据。

PETS:采用集成学习的方法,构建多个环境模型。每一次预测我们会从个模型中挑选一个来进行预测,因此一条轨迹的采样会使用到多个环境模型。最后计算将所有轨迹的回报,并采用最大回报轨迹的第1个动作。

MBPO:只使用环境模型来从之前访问过的真实状态开始进行较短步数的推演,并用推演得到的模型数据用来训练策略模型。使用与真实环境的交互序列训练环境模拟模型。
MBPO 算法基于以下两个关键的观察: (1) 随着环境模型的推演步数变长,模型累积的复合误差会快速增加,使得环境模型得出的结果变得很不可靠; (2) 必须要权衡推演步数增加后环境模型增加的误差带来的负面作用与步数增加后使得训练的策略更优的正面作用,二者的权衡决定了推演的步数。

MBPO 算法会把真实环境样本作为分支推演的起点,使用模型进行一定步数的推演,并用推演得到的模型数据用来训练模型。
目标学习:将任务的目标带入强化学习,、
其中,是一个比较小的值,表示到达目标附近就不会受到-1的惩罚。
- HER算法:由于式(18.1),导致目标导向的强化学习的奖励往往是非常稀疏。智能体在训练初期难以完成目标,从而使得整个算法的训练速度较慢。
假设现在使用策略在环境中以为目标进行探索,得到了这么一条轨迹:,并且。虽然并没有达到目标,但是策略在探索的过程中,完成了等对应的目标;所以将其替换成新的目标。
离线学习:在线策略学习与离线策略学习的智能体可以和环境交互;而离线强化学习的智能体不得和环境做交互,只有测试的时候才能够与环境进行交互。
- 外延误差:如果策略产生的状态-动作对,经过环境反馈后得到的,不在训练集中,那么就会产生处理分布外(out-of-distribution,OOD)问题。
- 解决方案:使策略产生的动作,尽量与数据集中的接近。
- BCQ:最小化选择的动作与数据集中数据的距离。
- 离线动作:如果产生的动作-状态对不在数据集中,那么就不用这个样本进行训练。
- 连续动作:训练一个生成模型。对于数据集和其中的状态,生成与中数据接近的一系列动作用于网络的训练。
- CQL:外推误差主要会导致在远离数据集的点上函数的过高估计,甚至常常出现值向上发散的情况。因此,如果减少策略生成的Q值期望,并增加数据中真实动作的Q值期望,从而有效降低分布偏移带来的不良影响
是即时奖励。
是折扣因子,用来衡量未来奖励的重要性。
是正则化系数,调节了CQL对保守性约束的强度。
不完全观测
不完全问题

图11.1的例子是让智能体走迷宫。图11.1(a)中智能体可以完整观测到迷宫;这种问题最容易解决。图11.1(b)中智能体只能观测到自身附近一小块区域,这属于不完全观测问题,这种问题较难解决。如图11.1(c)所示,一种更合理的办法是让智能体记住过去的观测,这样的话对状态的观测会越来越完整,做出的决策会更合理。
解决方案
把从初始到时刻为止的所有观测记作,用代替状态,作为策略网络的输入,那么策略网络就记作

环境模型(环境模拟器)
使用环境模型模拟真实环境。其中产生的数据称为模拟经验,用产生的数据称为真实数据。
环境模型预测是指采用环境模型产生的模拟经验,训练策略网络/值网络(或选择动作)。
Dyna
Dyna-Q 使用一种叫做 Q-planning 的方法来基于模型生成一些模拟数据,然后用模拟数据和真实数据一起改进策略。Q-planning 每次选取一个曾经访问过的状态,采取一个曾经在该状态下执行过的动作,通过通过环境转移得到转移后的状态以及奖励,并根据这个模拟数据,用 Q-learning 的更新方式来更新动作价值函数。
打靶法
不用构建智能体的值函数/策略,直接使用环境模型来规划下一个动作的方法。具体的环境模型生成一系列的交互序列,选择回报的最大交互序列对应的动作。
- 训练
- 从当前状态出发。
- 对于每个候选动作,附上一个长度为的随机动作序列,得到
- 可以通过此动作序列与环境模型交互出一条轨迹
- 基于此采样轨迹,可以对计算得到一个经验性的价值
- 以上操作对每个候选动作计算一次,选择一个最高经验性价值的动作来执行
表示模拟经验,并非与环境交互产生的真实经验。
PETS算法
在 PETS 中,环境模型采用了集成学习的方法,即会构建多个环境模型,然后用这多个环境模型来进行预测,最后使用 CEM 进行模型预测控制。
- 模型结构
- 环境模型:一个高斯分布,令环境模型为,其参数为,那么基于当前状态动作对,下一个状态的分布可以写为
- 集成:我们构建个网络框架一样的神经网络,它们的输入都是状态动作对,输出都是下一个状态的高斯分布的均值向量和协方差矩阵。但是它们的参数采用不同的随机初始化方式,并且当每次训练时,会从真实数据中随机采样不同的数据来训练。
- 应用
每一次预测我们会从个模型中挑选一个来进行预测,因此一条轨迹的采样会使用到多个环境模型。最后计算将所有轨迹的回报,并采用最大回报轨迹的第1个动作。
MBPO 算法
MBPO 算法基于以下两个关键的观察: (1) 随着环境模型的推演步数变长,模型累积的复合误差会快速增加,使得环境模型得出的结果变得很不可靠; (2) 必须要权衡推演步数增加后环境模型增加的误差带来的负面作用与步数增加后使得训练的策略更优的正面作用,二者的权衡决定了推演的步数。

MBPO 算法会把真实环境样本作为分支推演的起点,使用模型进行一定步数的推演,并用推演得到的模型数据用来训练模型。
- 初始化策略、环境模型参数、真实环境数据集、模型数据集
- for 轮数 do
- 通过环境数据来训练模型参数
- for 时间步 do
- 根据策略与环境交互,并将交互的轨迹添加到中
- for 模型推演次数 do
- 从中均匀随机采样一个状态
- 以为初始状态,在环境模型中使用策略进行步的推演,并将生成的轨迹添加到中
- end for
- for 梯度更新次数 do
- 基于模型数据,使用 SAC 来更新策略参数
- end for
- end for
- end for
目标导向的强化学习
大部分的(深度)强化学习方法一般都只能完成特定任务。例如走迷宫,需要固定地图、起点和终点,智能体学习到特定路线;如果重新标定起点和终点,智能体不经过新的训练往往很难有效完成。

目标导向的强化学习
每次任务的终点以一种目标信息显式加到策略和奖励的输入信号中。
概念
GoRL的问题通常被建模为一个MDP的扩充
- 是环境状态集合
- 是智能体动作集合
- :是环境转移的概率,其中在的分布集合
- 是奖励随时间步的衰减因子
- 是目标集合
- :是将状态映射成目标的函数
- 有时直接就是等式转换
- 有时是取的几个维度作为
- :为加入目标信息的新奖励函数;其中是目标。
- :为加入目标信息的策略,记作。
HER算法
由于式(18.1),导致目标导向的强化学习的奖励往往是非常稀疏。智能体在训练初期难以完成目标,从而使得整个算法的训练速度较慢。
- 原理
假设现在使用策略在环境中以为目标进行探索,得到了这么一条轨迹:,并且。这意味着这整一条轨迹上,我们得到的奖励值都是,这对我们的训练起到的帮助很小。那么,如果我们换一个目标呢?换句话说,虽然并没有达到目标,但是策略在探索的过程中,完成了等对应的目标,即完成了等目标。如果用这些目标来将原先的目标替换成新的目标,重新计算轨迹中的奖励值,就能使策略从失败的经验中得到对训练有用的信息。
离线强化学习
简介
在线策略学习与离线策略学习的智能体可以和环境交互;而离线强化学习的智能体不得和环境做交互,只有测试的时候才能够与环境进行交互。

挑战
- 外延误差:如果策略产生的状态-动作对,经过环境反馈后得到的,不在训练集中,那么就会产生处理分布外(out-of-distribution,OOD)问题。
解决方法
离线强化学习的主要方法在于设计训练中的限制,从而避免分布外问题,可以大致分为无模型的方法和基于模型的方法。

解决方法1——BCQ
- 离散动作:仅仅使用在数据集支撑上的进行计算(如果不在数据集中,那么就不使用该样本进行训练)。
- 连续动作:BCQ 采用了一种巧妙的方法:训练一个生成模型。对于数据集和其中的状态,生成模型能给出与中数据接近的一系列动作用于网络的训练。更进一步,为了增加生成动作的多样性,减少生成次数,BCQ 还引入了扰动模型。输入时,模型给出一个绝对值最大为的微扰并附加在动作上。
- 随机初始化网络、扰动网络、生成网络
- 用初始化目标网络,用初始化目标扰动网络
- for 训练次数 do
- 从数据集中采样一定数量的
- 编码器生成均值和标准差
- 解码器生成动作,其中
- 更新生成模型:
- 从生成模型中采样个动作:
- 对每个动作施加扰动:
- 计算网络的目标值:
- 更新网络:
- 更新扰动网络:
- 更新目标网络:
- 更新目标扰动网络:
- end for
训练流程
生成网络负责,每次更新会最小化选择的动作与数据集中的真实动作之间的距离小。
Q网络用于更新价值函数
扰动网络用于最大化Q值,每次更新会使扰动向Q指最大的动作靠近
解决方法2——CQL
离线强化学习面对的巨大挑战是如何减少外推误差。实验证明,外推误差主要会导致在远离数据集的点上函数的过高估计,甚至常常出现值向上发散的情况。因此,如果减少策略生成的Q值期望,并增加数据中真实动作的Q值期望,从而有效降低分布偏移带来的不良影响,这就是保守 Q-learning(conservative Q-learning,CQL)算法的基本思想。
其中
模仿学习
模仿学习(imitation learning)不是强化学习,而是强化学习的一种替代品。模仿学习向人类专家学习,目标是让策略网络做出的决策与人类专家相同;而强化学习利用环境反馈的奖励改进策略,目标是让累计奖励(即回报)最大化。
行为克隆
行为克隆的本质是监督学习。行为克隆的数据集,如下所示:
其中 是一个状态,而对应的 是人类专家基于状态 做出的动作。可以把 和 分别视作监督学习中的输入和标签。
行为克隆训练出的策略网络通常效果不佳。人类不会探索奇怪的状态和动作,因此
数据集上的状态和动作缺乏多样性。
逆强化学习
IRL的目的是学到一个策略网络,模仿人类专家策略。如图12.4所示,IRL首先从中学习其隐含的奖励函数,然后利用奖励函数做强化学习,得到策略网络的参数。我们用神经网络来近似奖励函数。神经网络的输入是和,输出是实数;我们需要学习它的参数。

生成判别模仿学习
生成判别模仿学习(generativeadversarialimitation learning,缩写GAIL)的目标是学习一个策略网络,使得判别器无法区分一条轨迹是策略网络的决策还是人类专家的决策。
模型结构
GAN由生成器(generator)和判别器(discriminator)组成。生成器负责生成假的样本,而判别器负责判定一个样本是真是假。
- 生成器:策略网络的输入是状态,输出是一个向量:
输出向量的维度是动作空间的大小,它的每个元素对应一个动作,表示执行该动作
的概率。
- 判别器:判别器的输入是状态,输出是一个向量:
输出向量的维度是动作空间的大小,它的每个元素对应一个动作,元素接近表示动作是人类专家做的。元素接近表示动作是策略网络生成的。
训练过程
每一轮训练更新一次生成器,更新一次判别器。训练重复以下步骤,直到收敛。设当前生成器和判别器的参数分别为和。
- 从训练数据集中均匀抽样一条轨迹,记作
- 用策略网络控制智能体与环境交互,得到一条轨迹,记作
- 训练生成器:判别器可以评价有多真实;越大,说明 在判别器的眼里越真实。利用判别式网络得到第步的回报;越大,则说明越真实。我们有这样一条轨迹:
设当前策略网络的参数为,根据重要性采样,使TRPO来更新策略网络:
- 训练判别器:我们希望判别器知道是真的,所以应该鼓励尽量大。我们希望判别器知道是假的,所以应该鼓励; 尽量小。定义损失函数
多智能体
简介
多智能体系统(multi-agent system,缩写MAS)中包含个智能体,智能体共享环境,智能体之间会相互影响。多智能体系统有四种常见设定:合作关系(fully cooperative)、竞争关系(fully com petitive)、合作竞争的混合(mixed cooperative & competitive)、利已主义(self-interested)。
- 完全合作关系:智能体的利益一致,有共同的目标,获得的奖励相同。假设一共有个智能体,它们在t时刻获得的奖励分别是。(用上标表示智能体,用下标表示时刻。)在完全合作关系中,它们的奖励是相同的:
- 完全竞争关系:一方的收益是另一方的损失。在完全竞争的设定下,双方的奖励是负相关的:对于所有的,有。如果是零和博弈,双方的获得的奖励总和等于:。
- 合作竞争的混合。智能体分成多个群组;组内的智能体是合作关系,它们的奖励相同;组间是竞争关系,两组的奖励是负相关的。
- 利己主义:系统内有多个智能体;一个智能体的动作会改变环境状态,从而让别的智能体受益或者受损。利己主义的意思是智能体只想最大化自身的累计奖励,而不在乎他人收益或者受损。
比如股票自动交易程序可以看做是一个智能体;环境(股市)中有多个智能体。这些智能体的目标都是最大化自身的收益,因此可以看做利己主义。智能体之间会相互影响:一个智能体的决策会影响股价,从而影响其他自动交易程序的收益。智能体之间有潜在而又未知的竞争与合作关系:一个智能体的决策可能会帮助其他智能体获利,也可能导致其他智能体受损。
完全合作关系
简介
- 奖励(价值)
完全合作关系(fully-cooperative)意思是所有智能体的利益是一致的,它们具有相同的奖励:
所以不同智能体具有相同的状态价值。
- 状态
一个智能体未必能观测到全局状态。设第号智能体有一个局部观测,记作,它是的一部分。
举个例子,在某个竞技电游中,玩家组队打任务;每完成一个任务,团队成员(即智能体)获得相同的奖励。所以大家的全都是一样的。和显然与所有成员的策略相关:只要有一个猪队友(即策略差)拖后腿,就有可能导致任务失败。通常来说,团队成员有分工合作,因此每个成员的策略是不同的,即。
模型结构
- 价值网络:记作,它是对状态价值函数的近似。它把所有观测作为输入,并输出一个实数,作为对状态的评分。
- 策略网络:第号智能体的策略网络。所有智能体的策略网络结构都一样,但是参数可能不一样。输入是所有智能体的观测:。输出是在离散动作空间上的概率分布。
多智能体A2C
设当前价值网络和目标网络的参数分别是 和 。设当前个策略网络的参数分别是。MAC-A2C重复下面的步骤更新参数:
- 观测到当前状态,让每一个智能体独立做随机抽样:
并执行选中的动作。
- 从环境中观测到奖励与下一时刻状态
- 让价值网络做预测:
- 让目标网络做预测:
- 计算TD目标与TD误差:
- 更新价值网络参数:
- 更新目标网络参数:
- 更新策略网络参数:
非合作关系
简介
- 价值
在非合作关系下,智能体的回报价值不同,不同智能体的状态价值可以表示为:
- 目标函数
第号智能体的目标函数是状态价值的期望:
- 状态
一个智能体未必能观测到全局状态。设第号智能体有一个局部观测,记作,它是的一部分。
收敛标准
在非合作关系设定下,收敛标准是纳什均衡。一个智能体在制定策略的时候,要考虑到其他各方的策略。在纳什均衡的情况下,每一个智能体都在以最优的方式来应对其他各方的策略,所有智能体都找不到更好的策略。这种平衡状态就被认为是收敛。在实验中,如果所有智能体的平均回报都不再变化,就可以认为达到了纳什均衡。
多智能体系统中,在其余所有智能体都不改变策略的情况下,一个智能体单独改变策略,无法让其期望回报变大。
评价策略的优劣
以捕食者—猎物的游戏为例,我们用两种方法和训练策略网络,把它们训练出的策略网络
参数分别记作和。在非合作关系的设定下,请问和孰优孰劣呢?
设收敛时的平均回报为:假如我们的目标是学出强大的捕食者(predator),能否说明策略优于?答案是否定的。>可能是由于策略没有训练好猎物(prey)的策略,导致捕食者(predator)相对有优势。所以>并不能说明策略>。
如何评价两种方法和的优劣呢?
以捕食者—猎物的游戏为例,我们让一种方法训练出的捕食者与另一种方法训练出的猎物对决:
模型结构
- 价值网络:记作。第 号价值网络需要把所有智能体的观测作为输入,并输出一个实数,作为对第号智能体,状态的评分。
- 策略网络:记作。第 号策略网络需要把所有智能体的观测作为输入,并输出一个概率分布;第个智能体依据该概率分布抽样得到动作。
多智能体A2C
使用目标网络缓解自举造成的偏差。第号智能体的目标网络记作,它的结构与相同,但是参数不同。设第号智能体策略网络、价值网络、目标网络当前的参数是、、。MAN-A2C重复下面的步骤更新参数:
- 观测到当前状态,让每一个智能体独立做随机抽样:
并执行选中的动作。
- 从环境中观测到奖励与下一时刻状态。
- 让价值网络做预测:
- 让目标网络做预测:
- 计算TD目标与TD误差:
- 更新价值网络参数:
- 更新目标网络参数:
- 更新策略网络参数:
连续控制与MADDPG
- 策略网络:确定性的。对于确定的输入,输出的动作是确定的。
- 价值网络:输入是全局状态与所有智能体的动作,输出是一个实数,表示“基于状态执行动作”的好坏程度。
第号策略网络用于控制第 号智能体,而价值网络则用于评价所有动作,给出的分数可以指导第号策略网络做出改进,如图16.5所示:

三种架构

自注意力在中心化训练中的应用
状态价值网络示例

动作价值网络示例

技巧
经验回放
把智能体的划分成这样的四元组,存入一个数组。需要人为指定数组的大小(记作)。数组中只保留最近条数据;当数组存满之后,删除掉最旧的数据。数组的大小是个需要调的超参数,会影响训练的结果。通常设置为。在实践中,要等回放数组中有足够多的四元组时,才开始做经验回放更新DQN。
优点
- 打破序列的相关性:训练DQN的时候,每次我们用一个四元组对DQN的参数做一次更新,我们希望相邻两次使用的四元组是独立的。然而当智能体收集经验的时候,相邻两个四元组 和 有很强的相关性。依次使用这些强关联的四元组训练DQN,效果往往会很差。经验回放每次从数组里随机抽取一个四元组,用来对DQN参数做一次更新。这样随机抽到的四元组都是独立的,消除了相关性。
- 重复利用收集到的经验:这样可以用更少的样本数量达到同样的表现。

优先经验回放
普通经验回放每次均匀抽样得到一个样本——即四元组,用它来更新DQN的参数。优先经验回放给每个四元组一个权重,然后根据权重做非均匀随机抽样。
- 抽样权重
如果DQN对的价值判断不准确,即离较远,则四元组应当有较高的权重。
- 学习率调整
如果DQN对的价值判断不准确,即离较远,则四元组的学习率较小。
如果样本很重要,它被抽到的概率 很大,可是它的学习率却很小。当时,如果抽样概率变大10倍,则学习率减小10倍。抽样概率、学习率两者岂不是抵消了吗,那么优先经验回放有什么意义呢?
- 设置学习率为,使用样本计算一次梯度,更新一次参数;
- 设置学习率为,使用样本计算十次梯度,更新十次参数。
乍看起来两种方式区别不大,但其实第二种方式是对样本更有效的利用。第二种方式的缺点在于计算量大了十倍,所以第二种方式只被用于重要的样本。
后向聚焦采样
很多状态值发生变化带动前继状态值发生变化,有的状态值改变很多,有的改变很少;我们可以根据样本状态值的变化程度,动态设置样本的采样率;使状态值变化越大,采样率越高。例如在Q-Learning中,我们可以使用作为样本的采样率。
高估问题及解决方法
Q学习算法有一个缺陷:用Q学习训练出的DQN会高估真实的价值,而且高估通常是非均匀的。
原因
- 自举导致偏差的传播:让去拟合。如果是对真实价值的低估(或高估),就会导致低估(或高估)价值。也就是说低估(或高估)从传播到,让更多的价值被低信(或高估)。
- 最大化导致高估:,其中是均值为0的噪声;那么。TD目标就会被高估:
危害
每当取出一个四元组用来更新一次DQN,就很有可能加重 DQN对的高估。对于同一个状态,三种组合、、出现在经验回放数组中的频率是不同的,所以三种动作被高估的程度是不同的。比如
那么用DQN做出的决策是不可靠的。
解决方法
ㅤ | 选择(选择最大值) | 估计(目标值) | 主网络 | 损失函数 |
Q学习 | ||||
目标网络 | ||||
双Q学习 | ||||
截断双Q学习 |
- 切断自举:使用 。使用两个网络,即主网络和目标网络,令和分别表示主网络和目标网络的参数。目标网络的损失函数如下:
- 避免高估:使用 ,使用两个网络,即主网络和目标网络,令和分别表示主网络和目标网络的参数。目标网络的损失函数如下:
为什么双Q学习可以缓解最大化造成的高估呢?不难证明出这个不等式:
这个公式说明双Q学习得到的TD目标更小。也就是说,与用目标网络的Q学习相比,双Q学习缓解了高估。
对决网络(DuelingNetwork)
对DQN的神经网络结构的改进。它的基本想法是将最优动作价值分解成最优状态价值加最优优势。
基本定义
- 最优动作价值的定义是:
- 最优状态价值函数的定义是
- 最优优势函数(optimaladvantage function) 的定义是:
定理6.1
网络结构
对决网络由两个神经网络组成。一个神经网络记作,它是对最优优势函数的近似。另一个神经网络记作,它是对最优状态价值函数的近似。把定理6.1中的和替换成相应的神经网络,那么最优动作价值函数就被近似成下面的神经网络:
对抗网络输出结果是动作价值函数;A2C模型输出结果是优势函数。
熵正则
通常应用于策略网络,增加策略的探索性,使策略网络输出的概率分布的熵不要太小。熵只依赖于状态与策略网络参数。
目标函数
我们希望对于大多数的状态,状态价值与熵都会比较大,也就是让 、比较大。所以熵正则的策略学习可以表示为
其中是个超参数,需要手动调。
梯度
其中是个超参数,需要手动调。
附录
Robbins-Monro算法
定理 6.1(Robbins-Monro theorem)。在(6.5)中的Robbins-Monro算法中,如果:
- 对于所有的,都有;表明是一个单调递增函数,且的梯度有上界。
- 且。,要求在时收敛到零;,要求不应该太快收敛到零。要求越来越小,但是要很长。
- 且,其中,那么几乎必然收敛到满足的解。
其中
Dvoretzky’s收敛定理
定理 6.2(Dvoretzky’s定理):假设一个随机过程。
其中、、是随机序列。在此,对于所有的,都有,。那么,如果满足以下条件,依概率1(almost surely)收敛到零:
(a)uniformly almost surely地有,,且;
(b)almost surely地有 且;
其中。
随机梯度下降
其中是待优化的参数,是一个随机变量。期望是相对于计算的。这里,和可以是标量也可以是向量。函数是一个标量。
求解(6.10)的一种直接方法是梯度下降。特别地,的梯度是。那么,梯度下降算法是:
定理6.4(SGD的收敛性)对于公式(6.13)中的随机梯度下降算法,如果满足以下条件,那么几乎必然收敛到的根。
- ;
- 且;
- 是独立同分布(i.i.d.)的。
收敛模式
当估计值远离最优解时,它的表现与常规梯度下降算法相似。只有当接近时,随机梯度下降的收敛才会表现出更多的随机性。
其中是状态 的权重。对于任何 ,都有 ,且满足。因此,我们可以将 解释为 的概率分布。那么,这个指标可以写成