4.2 Q-learning算法

Q 学习与 SARSA 的对比:

Q学习不依赖于π, 因此Q学习属于异策略 (off-policy), 可以用经验回放。而 SARSA 依赖于π, 因此 SARSA 属于同策略(on-policy), 不能用经验回放。两种算法的对比如图 5.2 所示。

Q学习的目标是学到表格Q~, 作为最优动作价值函数Q的近似。因为Qπ无关,所以在理想情况下,不论收集经验用的行为策略π是什么,都不影响 Q学习得到的最优动作价值函数。因此,Q学习属于异策略(off-policy),允许行为策略区别于目标策略。Q学习允许使用经验回放,可以重复利用过时的经验。

SARSA 算法的目标是学到表格q,作为动作价值函数Qπ的近似。Qπ与一个策略π相对应,用不同的策略π, 对应Qπ就会不同。策略π越好,Qπ的值越大。经验回放数组里的经验(sj,aj,rj,sj+1)是过时的行为策略πold收集到的,与当前策略πnow应的价值Qπnow对应不上。想要学习Qπ的话,必须要用与当前策略πnow收集到的经验,而不能用过时的πold收集到的经验。这就是为什么 SARSA 不能用经验回放的原因。

Q学习算法

Q学习算法上一节用 TD 算法训练 DQN(介绍DQN的笔记在这里:深度强化学习(王树森)笔记02), 更准确地说,我们用的 TD 算法叫做 Q 学习算法 (Q- learning)。TD 算法是一大类算法,常见的有 Q 学习和 SARSA。Q 学习的目的是学到最优动作价值函数Q,而 SARSA 的目的是学习动作价值函数Qπ。下一章会介绍 SARSA 算法。

Q 学习是在 1989 年提出的,而 DQN 则是 2013 年才提出。从 DQN 的名字 (深度 Q 网络)就能看出 DQN 与 Q 学习的联系。最初的 Q 学习都是以表格形式出现的。虽然表格形式的 Q 学习在实践中不常用,但还是建议读者有所了解。

用表格表示:

假设状态空间和动作空间都是有限集,即集合中元素数量有限。比如,中一共有3种状态,中一共有4种动作。那么最优动作价值函数可以表示为一个3×4的表格,比如右边的表格。基于当前状态,做决策时使用的公式的意思是找到对应的行(3行中的某一行),找到该行最大的价值,返回该元素对应的动作。举个例子,当前状态是第2种状态,那么我们查看第2行,发现该行最大的价值是210, 对应第4种动作。那么应当执行的动作就是第4种动作。

该如何通过智能体的轨迹来学习这样一个表格呢?答案是用一个表格来近似

首先初始化,可以让它是全零的表格。然后用表格形式的 Q学习算法更新, 每次更新表格的一个元素。最终会收敛到

算法推导:

首先复习一下最优贝尔曼方程:

我们对方程左右两边做近似:

  • 方程左边的可以近似成
  • 方程右边的期望是关于下一时刻状态求的。给定当前状态, 智能体执行动作,环境会给出奖励和新的状态。用观测到的对期望做蒙特卡洛近似,得到:.
  • 进一步把公式中的近似成, 得到

把它称作 TD 目标。它是表格在 t+1时刻对做出的估计。

都是对最优动作价值的估计。由于部分基于真实观测到的奖励,我们认为是更可靠的估计,所以鼓励更接近。更新表格位置上的元素:

这样可以使得更接近。Q 学习的目的是让逐渐趋近于

收集训练数据:

Q学习更新的公式不依赖于具体的策略。我们可以用任意策略控制智能体,与环境交互,把得到的轨迹划分成这样的四元组,存入经验回放数组。这个控制智能体的策略叫做行为策略(behavior policy), 比较常用的行为策略是-greedy:

事后用经验回放更新表格, 可以重复利用收集到的四元组。

经验回放更新表格:

随机从经验回放数组中抽取一个四元组,记作。设当前表格为。更新表格中位置上的元素,把更新之后的表格记作

  1. 把表格中第位置上的元素记作:.
  2. 查看表格的第行,把该行的最大值记作:.
  3. 计算 TD 目标和 TD 误差:.
  4. 更新表格中位置上的元素:.

收集经验与更新表格可以同时进行。每当智能体执行一次动作,我们可以用经验回放对做几次更新。也可以每当完成一局游戏,对做几次更新。

同策略 (On-policy) 与异策略 (Off-policy)

在强化学习中经常会遇到两个专业术语:同策略(on-policy) 和异策略 (off-policy)。

为了解释同策略和异策略,我们要从行为策略 (behavior policy) 和目标策略 (target policy) 讲起。

在强化学习中,我们让智能体与环境交互,记录下观测到的状态、动作、奖励,用这些经验来学习一个策略函数。在这一过程中,控制智能体与环境交互的策略被称作行为策略。行为策略的作用是收集经验(experience),即观测的状态、动作、奖励。

强化学习的目的是得到一个策略函数,用这个策略函数来控制智能体。这个策略函数就叫做目标策略。在本章中,目标策略是一个确定性的策略,即用 DQN 控制智能体:

本章的 Q 学习算法用任意的行为策略收集这样的四元组,然后拿它们训练目标策略,即 DQN。

行为策略和目标策略可以相同,也可以不同。同策略是指用相同的行为策略和目标策略,后面章节会介绍同策略。异策略是指用不同的行为策略和目标策略,本章的 DQN 属于异策略。同策略和异策略如图 4.6、4.7 所示。

由于DQN 是异策略,行为策略可以不同于目标策略,可以用任意的行为策略收集经验,比如最常用的行为策略是 :

让行为策略带有随机性的好处在于能探索更多没见过的状态。在实验中,初始的时候让比较大 (比如; 在训练的过程中,让逐渐衰减,在几十万步之后衰减到较小的值(), 此后固定住

异策略的好处是可以用行为策略收集经验,把这样的四元组记录到一个数组里,在事后反复利用这些经验去更新目标策略。这个数组被称作经验回放数组(replay buffer), 这种训练方式被称作经验回放 (experience replay)。注意,经验回放只适用于异策略,不适用于同策略,其原因是收集经验时用的行为策略不同于想要训练出的目标策略。

总结

DQN 是对最优动作价值函数的近似。DQN 的输入是当前状态, 输出是每个动作的 Q 值。DQN 要求动作空间是离散集合,集合中的元素数量有限。如果动作空间的大小是 k,那么 DQN 的输出就是 k 维向量。DQN 可以用于做决策,智能体执行 Q 值最大的动作。

TD 算法的目的在于让预测更接近实际观测。以驾车问题为例,如果使用 TD 算法,无需完成整个旅途就能做梯度下降更新模型。请读者理解并记忆 TD 目标、TD 误差的定义,它们将出现在所有价值学习的章节中。

Q 学习算法是 TD 算法的一种,可以用于训练 DQN。Q 学习算法由最优贝尔曼方程推导出。Q 学习算法属于异策略,允许使用经验回放。由任意行为策略收集经验, 存入经验回放数组。事后做经验回放,用 TD 算法更新 DQN 参数。

如果状态空间、动作空间都是较小的有限离散集合,那么可以用表格形式的Q学习算法学习。如今表格形式的 Q 学习已经不常用。


4.2 Q-learning算法
http://binbo-zappy.github.io/2024/12/04/DRL-王树森/4-2-Q-learning算法/
作者
Binbo
发布于
2024年12月4日
许可协议