斯坦福-CS234-强化学习笔记-全-

斯坦福 CS234 强化学习笔记(全)

课程 P1:强化学习导论 - 第一讲 🎯

在本节课中,我们将要学习强化学习的基本概念,了解它与其他人工智能和机器学习领域的区别,并初步接触不确定性下的顺序决策问题。

概述 📖

强化学习关注一个核心问题:一个智能体如何通过与环境交互,学会做出一系列好的决策。本节课将介绍强化学习的定义、关键特征、应用领域以及课程的基本安排。

强化学习是什么?🤖

强化学习与一个基本问题相关:一个智能体如何学会做出一系列好的决定。

这句话总结了强化学习的核心,并编码了几个重要想法:

  1. 我们关心的是顺序决策,即智能体需要做出一系列决定,而非单一决定。
  2. 我们关心决策的好坏,即存在一个衡量决策效用的标准。
  3. 智能体通过学习来获得做出好决策的能力,它事先并不知道其决策如何影响世界,或哪些决策与好结果相关,必须通过经验获取这些信息。

强化学习的起源与重要性 🌱

从婴儿时期开始,我们就在学习如何在这个世界上获得高回报。神经科学和心理学正从人类智能体的角度研究这个基本问题。

一个生物学的例子是一种原始生物,它在婴儿期拥有大脑和眼睛以指导决策,成年后则消化掉大脑。这表明智能或大脑的意义至少部分在于指导决策。

在人工智能领域,强化学习经历了一次范式转变。DeepMind的David Silver展示了使用强化学习直接控制雅达利游戏的惊人成果。智能体仅从像素输入中学习,最终表现甚至超过了人类。这突破了以往强化学习多集中于玩具问题的局限。

强化学习的应用领域 🚀

强化学习不仅应用于电子游戏和机器人技术,还适用于许多其他领域:

  • 教育:通过教育游戏等方式,快速有效地教授知识。
  • 医疗保健:用于癫痫治疗优化、结合电子病历系统指导患者治疗等。
  • 优化技术:在自然语言处理、计算机视觉等领域,作为解决复杂优化问题的方法。

强化学习的四个关键要素 🔑

强化学习的关键要素将其与其他人工智能和机器学习领域区分开来:

  1. 优化:目标是做出好的决策。
  2. 延迟后果:当前决策的效果可能在很久以后才显现,这带来了信用分配的挑战。
  3. 探索:智能体需要通过尝试来了解世界如何运作。
  4. 泛化:智能体需要能够将经验应用到未曾遇到过的情形中。

与其他领域的对比 ⚖️

  • 规划:涉及优化、泛化和延迟后果,但不涉及探索。规划假设已知世界模型(如游戏规则),难点在于计算最优策略。
  • 监督学习:涉及优化和泛化,但通常既不涉及探索,也不涉及延迟后果。智能体被给定数据集,用于完成分类等单一决策任务。
  • 无监督学习:涉及优化和泛化,但通常不涉及探索或延迟后果。智能体处理没有标签的数据。
  • 模仿学习:涉及优化、泛化和延迟后果,但不直接涉及探索。智能体通过观察专家(如人类)的决策来进行学习。

强化学习智能体需要探索世界,并利用探索经验来指导未来的决策。

课程后勤与学习目标 🗓️

上一节我们介绍了强化学习的核心概念,本节中我们来看看本课程的具体安排和目标。

先决条件

学生应具备以下背景:

  • 上过人工智能或机器学习课程。
  • 具备基本的Python编程能力。
  • 熟悉概率统计、多变量微积分、梯度下降等概念。

学习目标

课程结束时,学生应能够:

  1. 定义强化学习的关键特征,并将其与其他类型的问题区分开来。
  2. 将现实世界问题形式化为强化学习问题,并了解相关算法。
  3. 在代码中实现强化学习算法,包括深度强化学习算法。
  4. 评估算法,了解其理论性质(如遗憾、样本复杂度、计算复杂度)。
  5. 比较不同的探索与利用技术,了解其优缺点。

课程评估

课程评估包括以下部分:

  • 三次主要作业
  • 一次期中考试
  • 一次小组测验(个人答题后,小组讨论并提交最终答案)
  • 一个最终项目(开放式项目,提供默认选项)

所有课程交流主要通过课程网站进行。

不确定性下的顺序决策 🤔

现在,我们开始深入探讨强化学习的核心框架:不确定性下的顺序决策。

基本框架

我们考虑一个交互式闭环过程:

  1. 智能体处于某个状态
  2. 智能体采取一个动作,该动作会影响世界状态。
  3. 环境返回一个观察奖励
  4. 智能体的目标是最大化其获得的总预期未来奖励

这里的“预期”很重要,因为世界本身可能是随机的。智能体需要在即时奖励和长期奖励之间取得平衡,可能为了长期利益而牺牲短期回报。

示例

  • 网络广告:智能体选择向用户展示哪个广告,观察用户行为(如点击),目标是最大化点击率。
  • 机器人洗碗:智能体控制机械臂运动,观察厨房图像,奖励是清理完所有碗碟。
  • 血压控制:智能体开具运动或药物处方,观察血压值,奖励是血压维持在健康范围。

奖励设计的重要性

奖励函数的设计至关重要。智能体将学会最大化你指定的奖励函数,但这可能产生 unintended consequences。

教学代理示例

  • 场景:教学代理向学生出题(加法或减法),学生答对得+1奖励,答错得-1奖励。假设对学生而言,加法比减法容易。
  • 问题:一个试图最大化奖励的代理会倾向于一直出简单的加法题,因为这样学生更容易答对。但这并非教学的本意。
  • 启示:奖励函数需要精心设计,以引导智能体完成我们真正期望的任务。

状态与历史

  • 历史:是智能体之前采取的一系列动作及其收到的观察和奖励的序列。
  • 状态:是智能体用于做出决策的信息。通常假设状态是历史的某个函数。
  • 世界状态:是环境的真实完整状态,智能体可能无法完全观测到。

马尔可夫假设

一个常用且重要的假设是马尔可夫假设:未来独立于过去,给定当前状态。即,当前状态是预测未来的充分统计量。

这意味着,如果智能体拥有正确的“状态”表示,那么它只需要知道当前状态就能做出最优决策,无需记住完整历史。

示例

  • 非马尔可夫状态:仅用当前血压值作为状态来决策用药,可能不是马尔可夫的,因为血压还受饮食、运动等历史因素影响。
  • 变为马尔可夫:如果将足够长的历史血压值都包含在状态中,理论上可以使系统变为马尔可夫,但这会导致状态空间巨大,难以学习。

在实践中,我们通常寻求一个紧凑且足够的状态表示(如最近几次的观察),以平衡表达能力和学习效率。

顺序决策过程的类型 📊

以下是几种主要的顺序决策过程模型:

  1. 多臂赌博机:动作不影响下一次观察。适用于决策间相互独立的场景,如向一系列独立用户展示广告。
  2. 马尔可夫决策过程:动作会影响下一个状态和观察。这是更一般的模型,适用于智能体与环境持续交互的场景。
  3. 部分可观测马尔可夫决策过程:智能体无法直接观测到真实世界状态,只能收到与状态相关的观察。例如,扑克游戏中,你只能看到自己的牌和公共牌。

火星探测器示例

考虑一个在简单网格世界中移动的火星探测器:

  • 状态:网格位置(1到7)。
  • 动作:向左或向右移动。
  • 真实奖励:状态1奖励+1,状态7奖励+10,其他状态奖励0。
  • 智能体的模型(可能是错误的)
    • 奖励模型:认为所有状态奖励都为0。
    • 转移模型:认为移动时,有50%概率成功,50%概率留在原地。

强化学习智能体的组件 ⚙️

一个RL智能体通常包含以下一个或多个组件:

  1. 模型:智能体对世界动态的理解。包括:
    • 转移模型:预测在状态s采取动作a后,转移到状态s‘的概率。P(s‘ | s, a)
    • 奖励模型:预测在状态s采取动作a的期望即时奖励。R(s, a)
  2. 策略:智能体的决策规则。是从状态到动作的映射。
    • 确定性策略a = π(s)
    • 随机性策略π(a | s) 表示在状态s选择动作a的概率。
  3. 价值函数:评估状态或状态-动作对的好坏。表示从该状态开始,遵循特定策略所能获得的预期折扣回报总和
    • 状态价值函数V^π(s) = E[Σ γ^t * R_t | s0=s, π]
    • 动作价值函数Q^π(s, a) = E[Σ γ^t * R_t | s0=s, a0=a, π]
    • 其中 γ 是折扣因子(0 ≤ γ ≤ 1),用于权衡即时奖励和未来奖励。

算法分类 🧩

根据智能体显式维护的组件,RL算法可分为:

  • 基于模型:显式维护世界模型。
  • 无模型:不显式维护模型,直接学习价值函数和/或策略。
  • 价值函数基于:学习价值函数,通常从中推导出策略(如选择价值最高的动作)。
  • 策略基于:直接学习策略函数。
  • 演员-评论家:同时学习价值函数和策略函数。

核心挑战:规划、学习、探索与利用 ⚔️

在RL框架下,做出好决策面临几个核心挑战:

  1. 规划:即使给定了一个准确的世界模型,计算最优策略本身也是一个计算难题(例如,在国际象棋或围棋中)。
  2. 学习:在现实世界中,模型通常是未知的,必须通过与环境的交互来学习模型、价值函数或策略。
  3. 探索与利用:这是RL特有的核心困境。
    • 利用:根据当前已知信息,选择看起来最好的动作。
    • 探索:尝试新的或当前看来不是最优的动作,以获取更多信息,可能在未来带来更大收益。
    • 智能体必须在利用已知信息和探索未知可能性之间取得平衡。

示例

  • 电影:利用是看你最喜欢的电影;探索是看一部可能好也可能坏的新电影。
  • 广告:利用是展示当前点击率最高的广告;探索是展示一个不同的广告以测试其效果。
  • 通勤:利用是走你已知最快的路线;探索是尝试一条不同的路线。

有限时域问题中(例如,你只在镇上呆五天),探索的价值会随时间减少,在最后阶段纯利用通常是最优的。而在无限时域问题中,探索则始终具有潜在价值。

两大基本问题 🎯

强化学习研究可归结为两个基本问题:

  1. 策略评估:给定一个策略 π,评估它有多好。即计算其价值函数 V^πQ^π
  2. 策略控制(优化):寻找最优策略 π*,以最大化期望回报。

策略评估通常是策略控制的一个子步骤。RL的一个强大之处在于可以进行离策略评估,即利用从某个策略收集的数据来评估另一个不同的策略,这大大提高了数据利用效率。

课程路线图 🗺️

本课程后续将涵盖以下内容:

  1. 马尔可夫决策过程与规划(已知模型时的评估与控制)。
  2. 无模型策略评估。
  3. 无模型控制。
  4. 深度强化学习与函数逼近。
  5. 策略搜索方法。
  6. 探索与利用。
  7. 高级主题。

总结 📝

本节课中我们一起学习了:

  • 强化学习的定义及其与优化、延迟后果、探索、泛化四个关键要素。
  • 强化学习与其他AI/ML领域(规划、监督学习、无监督学习、模仿学习)的区别。
  • 课程的目标、安排和评估方式。
  • 不确定性下顺序决策的基本框架,包括状态、动作、奖励、策略、价值函数等核心概念。
  • 马尔可夫假设及其重要性。
  • 强化学习智能体的主要组件(模型、策略、价值函数)和算法分类。
  • 强化学习面临的核心挑战:规划、学习以及探索与利用的权衡。
  • 强化学习研究的两个基本问题:策略评估和策略控制。

下一讲,我们将深入探讨马尔可夫决策过程与规划算法。

📚 课程 P10:策略梯度 III 与复习

在本节课中,我们将完成策略梯度剩余内容的讲解,并对期中考试前的课程内容进行简要回顾。我们将首先探讨如何确保策略梯度方法的单调改进,并介绍一种实用的算法——信任区域策略优化。随后,我们将快速回顾从马尔可夫决策过程到价值函数近似等核心概念。


📝 期中考试安排说明

在课程开始前,先简要说明期中考试的后勤安排。

考试将分在两个考场进行。具体考场取决于你斯坦福ID的首字母。我们将通过邮件确认具体安排。考场为盖茨B1或科弗罗尔礼堂。

此外,允许携带一页单面的笔记,手写或打印均可。如有其他关于期中考试的问题,请在Piazza上联系我们。


🎯 今日课程安排

今天我们将完成策略梯度剩余部分的内容。目前课程进度已接近完成策略搜索部分。

期中考试在周三,周一是假期。本周还将发布最后一份作业,内容涵盖策略搜索。

剩余的主要任务包括策略搜索和课程项目。

期中考试后,我们将进入快速探索和强化学习加速的主题。

为确保本周作业发布后大家能跟上进度,今天必须完成策略搜索的讲解。预计花费约20-25分钟,之后进行期中考试内容的简要复习。

提问时请先报上姓名,这有助于我和大家记住彼此。


🔄 策略梯度回顾

在过去的几节课中,我们开始讨论基于策略的强化学习,目标是找到一个参数化的策略,以学习在环境中做出良好决策。

与价值函数近似类似,对于策略参数化,我们假设存在一个参数向量。我们可以用Softmax或深度神经网络等表示策略,然后计算这些策略的梯度,以学习具有高价值的策略。

我们介绍了最基础的策略梯度算法。其思想是:初始化策略和某个基线,然后在多次迭代中运行当前策略。通过运行策略来估计梯度,即计算当前策略的梯度。

具体步骤包括:运行当前策略生成轨迹,获得状态、动作、奖励、下一状态序列,然后计算回报和优势估计,并与基线比较。可以重新拟合基线,然后更新策略。

这是最基础的策略梯度算法。该算法中有多个选择点,几乎所有策略梯度算法都遵循此类公式。

具体来说,我们需要决定如何估计回报或目标,选择基线,并在计算梯度后决定沿梯度方向移动多远。


📊 目标估计与偏差-方差权衡

关于第一部分,我们讨论了如何估计当前策略的价值,以用于梯度估计。

最基础的方法是直接运行策略并观察回报,这与蒙特卡洛估计类似。我们可以通过运行一个回合的策略来估计价值函数。这是一个无偏估计,但方差很高。

我们可以使用过去学过的相同工具来权衡偏差和方差。具体来说,可以通过自举和函数近似引入偏差,就像在TDMC和价值函数近似中看到的那样。

我们试图理解特定策略的价值。在估计该价值时,可以在无偏估计和可能有偏差但能更快传播信息、加速学习的估计之间进行权衡。

我们还讨论了行动者-评论家方法,它同时维护策略和价值函数的参数化表示。


🧭 梯度步长与单调改进

我们深入探讨的另一个关键问题是:一旦估计出策略梯度,应沿该梯度方向移动多远以获得新策略?

在强化学习中,这与监督学习不同,因为我们所采取的每一步、所考虑的每一个新策略,都将决定下一次获得的数据。因此,思考沿梯度方向移动多远以获得新策略尤为重要。

我们讨论的一个理想特性是确保单调改进。我们的目标是单调改进。这在DQN等许多算法中无法保证。在许多高风险领域,如金融、客户服务、医疗等,你可能真的希望在部署新策略之前,确保其期望性能至少不差于旧策略。

我们希望实现这一点,但面临一个大问题:我们没有来自所考虑的新策略的数据,并且我们不想尝试所有可能的下一个策略,因为其中一些可能很差。

因此,我们希望利用现有数据来确定如何采取步骤,并确定我们认为会表现良好的新策略。


🎯 策略梯度的核心挑战与目标

策略梯度的主要目标是找到一组能最大化价值函数的策略参数。

挑战在于,我们目前只能访问由当前策略(称为 π_old,由参数 θ_old 参数化)收集的数据。在策略梯度讲座中,我一直在策略和参数之间来回讨论,但请记住,π 和 θ 之间存在直接映射关系。每个策略都由一组参数唯一定义。

因此,挑战在于我们拥有来自当前策略的数据,但想要预测不同策略的价值。这是离策略学习的一个挑战。


📐 新策略价值的表达

我们上次讨论的是如何用已知量来表达策略的价值。我们可以将其写为相对于当前策略的优势。

如果我们考虑一个由新参数 θ_tilde 参数化的新策略,其价值等于另一个策略的价值加上期望优势。可以将其写为:在新策略下期望到达的状态分布,乘以如果遵循新策略在旧策略下会获得的优势。

我们试图做的是找到一种方法来进行策略梯度更新,同时保证单调改进,即新策略保证优于旧策略。但我们希望在不实际尝试新策略的情况下做到这一点。

因此,我们试图用可访问的量来重新表达新策略的价值。我们拥有来自当前策略的现有样本,我们希望利用这些样本和观察到的回报,在部署前估计新策略的价值。


🧮 替代目标函数 L

我们注意到,也许我们可以访问新策略的显式形式(即考虑放入神经网络的新参数),并且可以想象估计优势函数。但我们不知道新策略下的状态分布,因为这需要我们实际运行它。

因此,我们讨论定义一个可能好可能坏的新目标函数 L。目前,这只是一个我们可以优化的量。

这个新的目标函数 L 是先前价值的函数。它看起来像我们刚才讨论的目标函数(即新策略的价值),但我们不知道新策略下的平稳状态分布。因此,我们只是代入当前策略下的平稳分布。

通常,这不会等于新策略的分布。两个策略下获得相同状态分布的唯一情况通常是它们完全相同。偶尔,两个不同策略下可能获得相同的状态分布,但这意味着它们具有相同的价值。通常,我们预期这些分布是不同的。

但我们暂时忽略这一点。我们只说这是一个目标函数,是我们可以优化的东西。这样做的好处是我们拥有来自当前策略的样本,因此可以想象使用这些样本来估计这个期望。

还需要注意:如果在当前策略处评估目标函数 L,即把旧策略代入目标函数,它恰好等于当前策略的价值。因为现有策略相对于自身的优势为零。因此,在评估旧策略时,此目标函数恰好等于旧策略的价值。对于新策略,它将是不同的东西。


🔗 与重要性采样的关系

这与重要性采样有何相似之处?在重要性采样中,我们倾向于通过我们拥有的分布来重新加权我们想要的分布。在这种情况下,我们通常在每个状态级别上进行。而在这里,我们关注的是状态上的平稳分布。

实际上,最近有一篇很酷的论文探讨了如何重新加权平稳分布,以获得价值函数的离策略估计。但在这里,我们只是进行替换,而不是重要性采样。我们只是假装到达的状态分布完全相同,但实际上并非如此。不过,我们将证明这最终会成为我们实际想要优化的目标的一个有用下界。


📉 单调改进的理论保证

如果我们对这个可能好可能坏的目标函数进行优化,对于得到的新价值函数是否优于旧价值函数,我们有任何保证吗?记住,这才是我们的目标。我们并不真正关心优化什么,我们关心的是最终得到的价值函数实际上优于旧的价值函数。

上次提到,如果你有一个混合策略,它混合了当前策略和某个新策略,那么你可以保证新策略价值的一个下界。也就是说,新策略的价值大于或等于我们这里的目标函数 L 减去某个特定量。

这表明,如果针对这个奇怪的 L 目标函数进行优化,实际上可以获得新策略性能的界限。这看起来很有希望,但通常我们不会只考虑混合策略。

对于任何随机策略,而不仅仅是这种奇怪的混合策略,你都可以使用这个略显奇怪的目标函数来获得性能界限。


📏 总变差距离与KL散度

定义两个策略之间的总变差距离如下。两个策略(我使用点号表示存在多个动作,策略表示动作上的概率分布)之间的总变差距离等于所有动作 A 上,两个策略赋予该动作的概率之差的绝对值中的最大值。它给出了一个策略与另一个策略在某个动作上概率的最大差异。

然后,我们可以通过在所有状态上取该量的最大值来定义最大总变差距离。这本质上表示两个策略在哪个状态上对某个动作的差异最大。

这个定理表明,如果你知道这个量,那么你可以定义:如果你使用这个目标函数 L,那么你的新策略的价值至少是你计算的目标函数减去这个作为总变差距离函数的量。

这给了我们一些信心:如果我们针对目标函数 L 进行优化,那么我们可以获得价值函数的一个界限。

然而,这个最大总变差距离并不容易处理。因此,我们可以利用它的平方以KL散度为上界这一事实,得到一个更容易处理的、关注两个策略之间KL散度的新界限。


🛡️ 如何利用下界确保单调改进

为什么这有用?目前我告诉你的是,我们有了这个新的目标函数。如果我们使用这个新的目标函数,原则上可以获得新策略性能的下界。

那么,如何利用它来确保我们想要的单调改进呢?目标是单调改进。我们希望 V(π_{i+1}) ≥ V(π_i)。i 表示迭代次数。我们希望部署的新策略实际上优于之前的策略。

我们将这样做:首先,我们有这个下界目标函数。我们将定义 M_i(π) = L_{π_i}(π) - [4εγ/(1-γ)^2] * D_KL^max(π_i || π)。这就是我们上一张幻灯片定义的下界。

我们说过,新策略的价值至少和这个下界一样好。所以,V_{i+1} ≥ M_i(π_{i+1}) = L_{π_i}(π_{i+1}) - [4εγ/(1-γ)^2] * D_KL^max(π_i || π_{i+1})。

现在,我想看的是,如果在当前策略处评估下界,那会是什么?让我们看看 M_i(π_i)。它等于 L_{π_i}(π_i) - [4εγ/(1-γ)^2] * D_KL^max(π_i || π_i)。两个相同策略之间的KL散度为零,因为它们完全相同。所以这等于 L_{π_i}(π_i)。我之前告诉过你,如果你在当前策略处评估目标函数 L,它恰好等于该策略的价值。所以这恰好等于 V(π_i)。

这说明,如果我想比较 i+1 策略的价值与旧策略的价值,我们知道它大于等于 M_i(π_{i+1})。因为根据定理,新策略的价值大于等于我们计算的下界。

所以,V(π_{i+1}) - V(π_i) ≥ M_i(π_{i+1}) - M_i(π_i)。

这意味着,如果你的新价值函数的下界比旧价值函数的下界更好,那么你就实现了单调改进。如果这个差值大于零,则单调改进。这意味着,如果你针对这个下界进行优化,并且可以评估这个量,并且你的新下界高于旧下界,那么你的价值必须更好。因此,我们可以保证单调改进。


⚠️ 关于下界中 ε 的说明

请注意,你的下界是用 ε 表示的。ε 是你的优势在所有状态和动作上的最大值。原则上,你可以评估这个值,特别是在离散状态和动作空间的情况下。但在实践中,你通常不想这样做。

我将这部分视为形式上的陈述:如果你能评估这个下界。现在我们要讨论的是一个更实用的算法,它试图将这种保守策略改进的保证变得实用,使用一些更容易计算的量。因为一般来说,评估这个 ε 非常困难。你可以取它的上界或下界,但你通常不会知道这个 ε 是多少。

正如克里斯指出的,这个 ε 依赖于策略。但这很酷,因为它意味着你可以实现这种有保证的改进。这是一种最大化-最小化的形式。这是一个很好的想法:你可以有这个新的下界,保证优于当前策略的价值。因此,你可以获得这种保守的单调改进策略。


⚙️ 信任区域策略优化

我想确保我们有足够的时间进行期中复习,但我想简要讨论如何使这变得实用,特别是因为信任区域策略优化是一个非常流行的策略梯度算法。我认为让你们了解一下是有用的。有些人可能在项目中使用它。它不会成为作业或期中考试的必考部分,但我认为熟悉这个想法很有用。

再次回顾我们刚才讨论的目标函数,我们有了这个 L 函数。然后我们通过减去这个可能难以计算的常数,将其转化为一个下界。

在这种情况下,我们做的是将这个常数变成一个超参数。你可以把它变成一个常数 C。但问题总是,即使你能计算它,我们通常也不知道它是什么,但即使你能计算它或计算它的界限,通常如果我们使用这个,我们会采取非常小的步长。

直观地说,这是因为通常很难从当前策略推断到很远的地方。所以,如果你真的想确定你的新价值优于旧价值,那么只需采取非常小的步长。直观地说,这是因为如果你将策略改变得非常小,至少在某些平滑性保证下,你的策略价值不会改变太多。

梯度通常在函数当前值附近是一个相当好的估计,这一点也应该很直观。但我们也需要快速尝试达到一个好的策略,所以这通常不实用。

TRPO 的主要思想之一是考虑存在一个信任区域,并用它来约束我们的步长。再次回到策略梯度算法的通用模板,我们必须做出沿梯度方向移动多远的决定。其思想是,我们将定义一个约束。

我们将设定我们的目标函数,但不再显式地减去下界,而是说你可以改变梯度,但不能太远。我们将对 KL 散度可以变化多远施加约束。作为一种方式来表示你在参数空间中有一个区域,允许你知道可以改变策略多远。


🔧 TRPO 的实例化

我将非常简要地讨论这是如何实例化的。

主要思想是,如果我们看看这些目标函数是什么,这可能容易也可能不容易评估。如果我们回顾 L(θ),即使在这里,我们也有当前策略下的折扣访问权重,但我们无法直接访问它。我们只能访问来自当前策略的样本。

第一个想法是,与其在状态空间上显式求和(状态空间可能是连续且无限的),我们只查看当前旧策略实际采样的状态,并对它们进行重新加权。

这是我们要做的第一个替换。我们现在试图做的是,我们有了这个目标函数,我们希望它成为算法的一部分,但我们需要计算所有必要的量,以便采取一个我们认为新策略会更好的步长。

我们要做的第二件事,这与安德鲁关于重要性采样的问题有关,我们这里有第二个量,即新策略下动作的概率。从某种意义上说,我们可以访问它,因为如果有人给我们一个状态,我们可以准确地说出在所有动作下的概率。但这通常可能是一个连续集。因此,与其处理这个连续集,我们不如说我们将使用重要性采样,我们可以从 π_old 中抽取样本。因此,我们查看在当前策略下采取动作的时间点,并根据我们在新策略下采取这些动作的概率对它们进行重新加权。这使我们能够使用我们拥有的数据来近似那个期望。

第三个替换是将优势切换回 Q 函数。需要注意的是,所有这三个替换都不会改变优化问题的解。这些都是采用不同的替换或不同的方式来评估这些量。

我们最终得到以下结果:我们有了要优化的目标函数(这是在我们进行了刚才提到的替换之后),并且我们有一个关于可以偏离多远的约束。根据经验,他们通常只是对这个替代抽样分布进行抽样,Q 就是你现有的旧策略。

论文中还有很多其他内容。这是一篇非常好的论文,有很多非常有趣的想法。我将跳过他们如何处理一些额外细节的具体内容,那里有一些很好的复杂性。但我只想简要地说,他们在这里做的主要事情是运行策略,计算梯度,考虑这些约束,并使用 KL 约束进行线搜索。

也许最重要的是要意识到这一点,并理解它是如何受到这种保守策略改进的启发,然后试图使其更实用和快速。他们已经将其应用于许多不同的问题。在低运动控制器、连续动作空间、连续状态空间的情况下有一些非常好的成果。这些情况下策略梯度通常非常有帮助,他们有一些非常好的结果。

我将在这里逐步介绍这些。主要要知道的是,根据经验,这是一个非常值得了解的好工具。通常,如果你正在进行策略梯度风格的方法,TRPO 可以成为一个非常有用的基础。它非常有影响力。这篇论文于 2015 年在 ICML 发表,已经有数百次引用。因此,它已成为策略梯度的主要基准之一。


📋 策略梯度算法模板总结

回顾一下策略梯度算法的模板,无论你是看现有算法还是试图定义自己的算法,它们通常看起来像下面这样:

对于每次迭代:

  1. 运行你的策略。
  2. 通过运行该策略收集轨迹数据。
  3. 计算某个目标(可能只是奖励,也可能是 Q 函数)。我们可以在此权衡偏差和方差。
  4. 使用该目标来估计策略梯度。
  5. 我们可能希望沿着该梯度智能地采取一步,以确保单调改进。

需要注意的事项以及你们很快将在作业中练习的是,你们应该非常熟悉这些基础方法和 REINFORCE。理解这个通用模板,以及我们讨论的一些不同算法如何实例化这些不同的部分。

你们不必记住我刚才快速介绍的 TRPO 的所有公式。你们将有机会在作业三中更多地练习这些,但期中考试只会 lightly 涉及这些内容。


🧠 期中考试前内容回顾

现在,让我们切换到对目前为止所学内容的简短回顾。为什么这有用?学习科学中有大量良好证据表明,对想法进行间隔重复以及强制回忆(这是考试的好处之一)确实很有帮助。所以,我们今天要做的就是快速回顾许多不同的主要思想。

再次强调,强化学习通常涉及优化、延迟后果、泛化和探索。我们还没有真正讨论探索,所以这不会出现在期中考试中。期中考试后,我们将开始更多地讨论这个主题。这是一个极其重要的主题,我认为非常迷人,也是 RL 有趣的主要原因之一。但到目前为止,我们已经花了一些时间讨论其他方面。

关于期中考试和课程本身,在第一天我列出了大量的学习目标。我只想强调其中几个,这些将在考试中明确评估。也就是说,到课程结束时(包括在考试中),你们应该非常熟悉:

  1. 强化学习的关键特征是什么,使其不同于其他机器学习问题或其他 AI 问题。
  2. 如果给定一个应用问题,重要的是要知道为什么或为什么不将其表述为强化学习问题,以及如何表述。通常,这没有单一答案。因此,最好思考一种或多种定义状态空间、动作空间、动态和奖励模型的方式,以及你会建议使用课程中的哪种算法来解决它。
  3. 第三件非常重要的事情是理解我们如何决定一个 RL 算法是否优秀。我们可以使用哪些性能标准和评估标准来评估不同算法的优点、优势和劣势以及它们如何比较。这可能包括偏差和方差,也可能是计算复杂度或样本效率等方面。

到目前为止,我们已经涵盖了:

  • 规划:我们知道世界如何运作。
  • 策略评估
  • 无模型学习:如何做出良好决策。
  • 价值函数近似
  • 模仿学习策略搜索

我们还讨论过,对于强化学习,通常可以考虑寻找价值函数、策略或模型。模型足以生成价值函数,价值函数足以生成策略。但它们并非都是必需的。你不需要模型来获得策略。


🧩 马尔可夫决策过程

几乎所有我们到目前为止讨论的内容都假设世界是一个马尔可夫决策过程。我提到过,世界

课程 P11:快速强化学习 🚀

在本节课中,我们将开始讨论快速强化学习。我们将重点关注算法的样本效率,特别是在数据获取成本高昂(例如涉及人类交互)的场景下。我们将介绍多臂老丨虎丨机问题,并深入探讨“遗憾”这一评估算法性能的核心框架。最后,我们将学习一种基于“面对不确定性保持乐观”原则的高效算法——置信上界算法。


课程背景与目标

我们刚刚完成了策略搜索部分,并正在研究策略梯度。现在,我们将转向快速强化学习。到目前为止,我们讨论了许多主题,如优化、泛化、延迟后果、规划、马尔可夫决策过程以及使用深度神经网络扩展到大型状态空间。在许多拥有良好模拟器或数据成本较低的场景中,这些技术效果很好。

然而,在许多实际应用中,例如教育、医疗或广告推荐,数据来源于人。这带来了两大挑战:首先,人的数量是有限的;其次,与人交互收集数据是昂贵的。因此,这引发了对样本效率的高度关注。

我们之前研究的大多数技术(尤其是Q学习类技术)主要受计算效率需求的启发。例如,时序差分学习相比动态规划,每次更新的计算成本是常数级的,而非状态数量的平方级。在许多实时应用(如高速驾驶、机器人)中,计算效率至关重要。

但在涉及人类的场景中,样本效率变得比计算效率更重要。我们无法承受像DQN学习打乒乓球那样需要数百万次试验的代价。因此,我们需要新的、样本效率更高的技术。


如何评估算法性能?

在讨论具体算法前,我们需要定义如何评估强化学习算法的“好坏”。我们已经讨论过收敛性,即价值函数或策略是否随时间稳定。比收敛性更强的一个概念是渐近最优性,即算法在时间趋于无穷时能否收敛到最优策略。

但“渐近”是一个很长的时间范围。我们更关心算法能以多快的速度达到良好性能。因此,我们需要其他衡量标准。

一种方法是考虑算法随时间累积的遗憾,即其表现与最优表现之间的差距。这能让我们比较不同算法的学习速度。在接下来的课程中,我们将:

  1. 讨论表格化设置(今天和下次课聚焦于老丨虎丨机问题)。
  2. 介绍评估算法质量的正式框架(如遗憾)。
  3. 介绍能实现不同评估标准(如低遗憾)的算法类别。

多臂老丨虎丨机问题介绍 🎰

多臂老丨虎丨机可以被视为强化学习的一个子集。它通常被描述为有M条“手臂”,每条手臂相当于一个“动作”。

  • 每条手臂都有一个与之关联的、未知的奖励概率分布 P(r|a)
  • 每次选择一条手臂(即执行一个动作),都会从该分布中获得一个奖励样本。
  • 这与MDPs类似,但没有状态转移函数(或者说,只有一个状态)。
  • 目标是在一系列选择中最大化累积奖励。

我们用以下符号定义:

  • Q(a) = E[r|a]:动作a的期望奖励(未知)。
  • v* = max_a Q(a):最优值。
  • Δ_a = v* - Q(a):动作a的“差距”。最优动作的差距为0,其他动作的差距为正数。

遗憾的定义是:与始终选择最优动作相比,算法所损失的累积期望奖励。
数学上,在T步之后的总遗憾 R(T) 为:

R(T) = Σ_{t=1}^{T} [ v* - Q(a_t) ]

也可以等价地表示为:

R(T) = Σ_{a} (期望选择动作a的次数) * Δ_a

我们的目标是设计一种算法,能够最小化遗憾的增长速度。理想情况下,我们希望遗憾增长是次线性的(例如,对数增长或平方根增长),而非线性增长。


基础算法及其局限性

以下是两种基础算法及其在遗憾上的表现:

1. 贪婪算法

  • 根据当前对每条手臂的平均奖励估计 Q_hat(a),总是选择估计值最高的手臂。
  • 问题:由于奖励的随机性,早期的一次不佳采样可能导致算法永远锁定在一个次优动作上,导致线性遗憾

2. ε-贪婪算法

  • 1-ε 的概率选择贪婪动作,以 ε 的概率随机选择其他动作。
  • 问题:即使ε很小,只要它是固定的,算法就会以恒定概率持续探索次优动作,导致线性遗憾(尽管常数项可能较小)。

这些简单的探索策略无法实现次线性遗憾。


面对不确定性的乐观原则 😊

“面对不确定性保持乐观”是一个强大的算法设计原则。其核心思想是:选择那些可能具有高价值的动作。

为什么这个原则有效?有两种可能结果:

  1. 乐观正确:该动作确实很好。那么我们获得了高奖励,遗憾很小。
  2. 乐观错误:该动作实际不好。那么我们获得了一个低奖励样本,但我们学到了东西,并降低了对该动作价值的估计。

乐观探索要么带来高收益,要么带来高信息增益。这比盲目探索(如ε-贪婪)或完全不探索(如贪婪)更有效率。


置信上界算法

置信上界算法是乐观原则的一个具体实现。它为每个动作的价值估计计算一个置信上界,并选择UCB最大的动作。

UCB定义
对于动作a,在时间t,其UCB值 U_t(a) 定义为:

U_t(a) = Q_hat_t(a) + c * √( log(t) / N_t(a) )

其中:

  • Q_hat_t(a) 是动作a到时间t为止的经验平均奖励。
  • N_t(a) 是动作a被选择的次数。
  • c 是一个探索常数(通常设为√2)。
  • log(t) 是时间步的对数项。

算法流程

  1. 初始化:将每条手臂都拉一次。
  2. 对于每个时间步 t
    • 选择动作 a_t = argmax_a U_t(a)
    • 执行动作 a_t,观察奖励 r_t
    • 更新 Q_hat(a_t)N_t(a_t),并重新计算所有动作的UCB值。

UCB项的解释

  • Q_hat_t(a):利用(Exploitation)部分,基于当前知识选择看似最好的。
  • c * √( log(t) / N_t(a) ):探索(Exploration)部分。
    • 动作被选得越少(N_t(a)小),此项越大,鼓励探索。
    • 随着时间推移(t增大),对数项缓慢增长,保证即使常被选的动作,其UCB也有微小增长,避免完全停止探索。
    • 平方根结构来源于霍夫丁不等式,确保了真实期望值以高概率低于UCB。

UCB算法的遗憾界分析

可以证明,UCB算法能实现次线性遗憾。其遗憾上界为:

R(T) ≤ O( √( M * T * log T ) )

其中M是动作数,T是时间步数。

证明思路(简述)

  1. 高概率事件:首先证明,在所有时间步上,所有动作的置信区间(即真实Q值 ≤ UCB)同时成立的概率很高。
  2. 利用乐观性:如果置信区间成立,那么算法所选动作的UCB值至少不小于最优动作的真实值。
  3. 遗憾分解:将总遗憾分解为所选动作的UCB与其真实Q值之差的和。
  4. 代入边界:利用UCB的定义,这个差值可以被 c * √( log(t) / N_t(a) ) 形式的值限定。
  5. 求和与放缩:通过对所有动作和所有时间步的求和进行放缩,最终得到关于 T 的次线性上界。

这个结果表明,UCB算法的遗憾增长速度远慢于线性,在样本效率上优于贪婪和ε-贪婪算法。


总结与展望

本节课中,我们一起学习了快速强化学习的核心动机——追求高样本效率,并引入了多臂老丨虎丨机这一简化模型。我们定义了衡量算法性能的“遗憾”框架,并指出了基础探索策略(贪婪、ε-贪婪)会导致线性遗憾。

接着,我们介绍了“面对不确定性保持乐观”这一关键原则,并详细阐述了其经典实现——置信上界算法。我们分析了UCB公式的构成,并概述了其能够实现次线性遗憾的理论保证。

下一节课,我们将继续深入老丨虎丨机问题,从贝叶斯的角度出发,介绍另一种强大的算法——汤普森采样,并比较不同算法的特点。我们还将探讨如何将这些思想扩展到更一般的MDP设置中。


本节课中我们一起学习了:快速强化学习的样本效率需求、多臂老丨虎丨机模型、遗憾的定义、基础算法的局限性、面对不确定性的乐观原则,以及置信上界算法的原理与理论保证。

课程 P12:快速强化学习 II 🚀

在本节课中,我们将学习如何通过“不确定性下的乐观”和贝叶斯方法,在强化学习中实现快速学习。我们将从多臂老丨虎丨机问题过渡到马尔可夫决策过程,并探讨不同的性能评估框架。


1. 回顾:多臂老丨虎丨机与遗憾

上一节我们介绍了多臂老丨虎丨机问题及其核心评估指标——遗憾。本节中,我们来看看如何通过乐观策略来最小化遗憾。

多臂老丨虎丨机是马尔可夫决策过程的一个简化版本。在基础设定中,没有状态,只有一组动作。每个动作对应一个未知的随机奖励分布。我们的目标是通过选择动作来最大化长期累积奖励。

遗憾 的正式定义是:将所选动作的期望奖励与最优动作的期望奖励进行比较。其公式为:

[
\text{Regret}(t) = \sum_{t=1}^{T} [Q(a^*) - Q(a_t)]
]

其中,( Q(a^*) ) 是最优动作的期望奖励,( Q(a_t) ) 是时间步 ( t ) 所选动作的期望奖励。


2. 不确定性下的乐观策略

“不确定性下的乐观”核心思想是:为每个动作估计一个置信上界,并选择上界最高的动作。

以下是该策略可能导致的两种结果:

  • 结果 A:选择了最优动作 ( a^* )。此时遗憾为零。
  • 结果 B:选择了次优动作。随着采样次数增加,该动作的置信上界会下降(因为其真实均值较低),从而促使我们未来更可能选择其他上界更高的动作。

与使用置信下界相比,乐观策略能有效避免因“确认偏误”而陷入次优动作,从而避免线性遗憾。


3. 上置信界算法示例

我们通过一个治疗脚趾骨折的简化例子来理解UCB算法。假设有三个动作(治疗方式):

  • 手术:成功概率 0.95
  • 包扎:成功概率 0.90
  • 不处理:成功概率 0.10

UCB值的计算公式为:

[
\text{UCB}(a) = \hat{Q}(a) + \sqrt{\frac{2 \log t}{N_t(a)}}
]

其中,( \hat{Q}(a) ) 是动作 ( a ) 的经验平均奖励,( t ) 是总尝试次数,( N_t(a) ) 是动作 ( a ) 被选择的次数。

初始时,每个动作尝试一次。假设结果分别为:手术成功(1)、包扎成功(1)、不处理失败(0)。计算UCB值后,手术和包扎的UCB值相同且最高,因此下一轮会随机选择其中之一,而不会选择不处理。

相比之下,ε-贪婪策略(ε=0.1)会以0.9的概率选择当前最佳动作,以0.1的概率均匀探索所有动作(包括不处理)。UCB策略的探索更具针对性,只关注那些潜力(上界)高的动作。


4. 贝叶斯老丨虎丨机与汤普森采样

上一节我们介绍了非参数化的乐观方法。本节中,我们来看看另一种思路:利用参数先验知识的贝叶斯方法。

在贝叶斯老丨虎丨机中,我们假设奖励分布服从某个参数分布(如伯努利分布),并为其参数设置一个先验分布。通过观察到的数据,我们使用贝叶斯规则更新参数的后验分布。

汤普森采样 是一种实现“概率匹配”思想的简单而强大的算法。其步骤如下:

  1. 为每个动作的参数初始化一个先验分布(例如,对于伯努利奖励,使用Beta分布)。
  2. 每一轮中,从每个动作的当前后验分布中采样一组参数。
  3. 基于采样出的参数,计算每个动作的期望奖励 ( Q(a) )。
  4. 选择期望奖励最高的动作。
  5. 观察获得的真实奖励,并据此更新该动作参数的后验分布。

以伯努利奖励为例,若先验为 Beta(α, β),观察到奖励 ( r=1 ) 后,后验更新为 Beta(α+1, β);观察到 ( r=0 ) 后,后验更新为 Beta(α, β+1)。

汤普森采样本质上是根据“该动作是最优动作的概率”来选择动作。它通常能取得优异的经验性能,并且也有良好的贝叶斯遗憾界。


5. 性能评估框架:PAC

除了遗憾和贝叶斯遗憾,我们还可以使用 “可能近似正确” 框架来评估算法。

PAC 算法保证:除了多项式数量的时间步外,算法以至少 ( 1-\delta ) 的概率选择 ε-接近最优的动作。其形式化描述为:

[
\text{Pr}(Q(a_t) \geq Q(a^*) - \epsilon) \geq 1 - \delta, \quad \text{对于除多项式个时间步外的所有 } t
]

其中,多项式是状态数、动作数、( \epsilon )、( \delta )、折扣因子 ( \gamma ) 的函数。

PAC框架关注的是严重错误(即与最优动作差距大于ε的选择)的数量,而不仅仅是累积的期望损失。这在某些对单个错误敏感的领域(如医疗)尤为重要。


6. 扩展到马尔可夫决策过程

现在,我们将乐观思想从老丨虎丨机问题扩展到更具挑战性的表格型马尔可夫决策过程

一种简单的方法是乐观初始化:将所有状态-动作值 ( Q(s, a) ) 初始化为一个非常大的乐观值,例如 ( R_{\text{max}} / (1 - \gamma) )。然后运行Q学习等算法进行更新。这能鼓励系统性的探索,但通常缺乏理论保证。

更高级的模型基于方法,如 MBIE 算法,其核心思想是:

  1. 维护经验转移模型和奖励模型。
  2. 在计算值函数时,为每个状态-动作对添加一个探索奖励,该奖励与访问次数的平方根成反比。
  3. 奖励公式为:( \hat{R}(s,a) + \beta / \sqrt{N(s,a)} ),其中 ( \beta ) 是一个缩放参数。
  4. 对于从未访问过的 ( (s, a) ),其值被视为最大可能值。

这类算法不仅是乐观的,而且被证明是PAC的,即除了多项式数量的步数外,都能执行接近最优的策略。


7. 总结

本节课中我们一起学习了快速强化学习的核心思想。

  • 我们回顾了多臂老丨虎丨机中的遗憾和乐观策略(UCB)。
  • 我们介绍了贝叶斯方法和汤普森采样,它通过采样参数来实现概率匹配。
  • 我们了解了不同的性能评估框架,包括遗憾、贝叶斯遗憾和PAC。
  • 最后,我们探讨了如何将这些思想扩展到马尔可夫决策过程中,通过乐观初始化或添加基于访问计数的探索奖励来引导智能体有效探索未知环境。

这些方法为在数据有限的情况下设计高效的学习智能体奠定了理论基础。下一节课,我们将继续探讨如何将这些快速学习的思想与函数近似(如深度学习)相结合。

课程 P13:快速强化学习 III 🚀

在本节课中,我们将学习快速强化学习的最后一部分内容,重点探讨如何评估算法在马尔可夫决策过程中的性能,并理解“可能近似正确”和“遗憾”等核心概念。我们还将了解如何将这些理论框架扩展到大规模状态空间,例如在深度强化学习中的应用。


课程物流与期中考试回顾 📊

上一节我们介绍了快速学习的不同设置。本节开始前,我们先处理一些课程物流问题,并回顾期中考试情况。

期中考试的平均分约为71%,与去年的69%非常接近。成绩分布也与去年相似。课程不进行严格的分数曲线调整。如果全班超过90%的学生掌握了材料,那么这些学生都应获得A。去年约有42%的学生获得了A。因此,期中考试表现不理想的学生,仍有充分机会在期末取得好成绩。

关于期中考试的疑问:

  • 我们正在处理成绩复议请求,截止日期为本周五。
  • 我们没有发布每道题的具体评分细则,但整体上我们更关注概念理解,而非代数计算细节。
  • 最后一道题难度最大,也是分数差异最大的题目。

关于课程测验 📝

接下来我们讨论即将到来的课程测验。测验采用一种特殊形式,旨在避免在期末项目和期末考试之间给学生带来过大压力。

以下是测验的具体安排:

  • 测验形式:分为两部分,均为选择题,侧重高层次概念理解。
  • 第一部分(个人):学生单独完成,时长约45分钟。
  • 第二部分(小组):学生被随机分组,共同完成与第一部分相同的试卷,需协商一致得出答案。
  • 计分方式:最终成绩由个人部分和小组部分共同决定。小组部分只会提高你的分数(取个人与小组成绩的较高者)。
  • 目的:通过小组讨论深化对材料的理解,并听取他人观点。
  • 样题:我们将发布去年的测验作为参考。
  • 范围:涵盖整个课程内容,但会更侧重期中考试之后的知识点。
  • 允许携带:一张备忘单(与期中考试相同)。

去年实施时,学生反馈积极。虽然存在博弈论层面的考虑(例如在个人部分尽力答题,在小组部分可尝试不同答案以对冲风险),但由于小组部分占比很小(约5%),且通常只有一个正确答案,因此实际影响有限。


快速学习:框架与算法回顾 🤖

现在,我们回到快速强化学习的主题。我们一直在数据稀缺的背景下讨论此问题,例如医疗、教育等领域。

我们主要讨论了两种设置:多臂赌博机问题马尔可夫决策过程。评估算法“好坏”或“快慢”的框架,通常基于其所需的数据量(样本复杂度)。虽然本课程较少涉及计算复杂性,但这些框架也可扩展到该层面。

在赌博机问题中,我们主要关注遗憾,即最优表现与实际表现之间的差距。实现低遗憾的主要方法有:

  1. 不确定性下的乐观原则
  2. 汤普森采样

在MDP中,我们介绍了可能近似正确框架。

可能近似正确框架

PAC算法接受两个参数:εδ

  • ε 指定策略与最优策略的接近程度。
  • δ 指定达到该接近程度的概率。

一个PAC算法保证,以至少 1 - δ 的概率,其学到的策略在所有状态上的价值与最优策略的价值之差在 ε 以内。所需的样本数 n 是状态空间大小、动作空间大小、1/(1-γ)1/ε1/δ 的多项式函数。

公式表示
V^π(s) ≥ V^*(s) - ε 对于所有 s,以至少 1 - δ 的概率成立。


遗憾 vs. PAC 📈

理解遗憾和PAC之间的区别非常重要。

  • 遗憾:在线学习设置中,衡量从初始状态开始,一直执行最优策略所能获得的总回报,与实际执行算法所获总回报之间的差距。它非常苛刻,因为即使早期的一个错误决策导致进入次优的状态分布,你也会持续与“完美人生轨迹”比较。
  • PAC:衡量在算法实际引导产生的状态分布下,当前策略与针对该分布的最优策略之间的差距。它更宽容,因为它只要求你在“已陷入的境地”中做到近乎最优。

在分幕式MDP中,两者更接近,因为你总是从初始状态重新开始。但在持续在线学习中,它们差异显著。


证明算法为PAC的充分条件 ✅

我们将分析一个具体的算法——基于模型的间隔估计(Interval Estimation - IE)算法,并理解使其成为PAC算法的原因。这有助于建立设计高效算法的直觉。

IE算法(一种奖励加成算法)维护一个经验转移模型 和经验奖励模型 。它通过以下更新规则来行动:
Q̃(s, a) = R̂(s, a) + β/√(N(s,a)) + γ Σ_{s‘} T̂(s‘|s,a) max_{a‘} Q̃(s‘, a‘)
其中 β 是一个与置信度相关的参数。

这可以看作是在一个乐观的MDP 上求解最优策略,该MDP使用经验转移模型和经过加成的奖励(R̂ + 加成)。

使一个算法成为PAC的一组充分条件如下:

  1. 乐观性:算法计算的价值 Q̃_t 必须(以高概率)在所有时间步 t 都满足 Q̃_t(s,a) ≥ Q^*(s,a) - ε
  2. 准确性:算法计算的价值 Q̃_t 必须接近一个“混合MDP” M‘ 下的策略价值。M‘ 在“已知”状态-动作对上使用真实模型,在“未知”状态-动作对上使用乐观模型 。这保证了当信息足够时,我们的估计是准确的。
  3. 有限的学习复杂度
    • Q 值更新的总次数是有界的。
    • 访问“未知”状态-动作对的总次数是有界的。
      这两个界限都是 εδ、状态/动作空间大小的多项式函数。

直觉

  • 乐观性确保我们高估价值,从而鼓励探索。
  • 准确性确保当我们获得足够数据后,估计会变得可靠。
  • 有限学习复杂度确保我们不会永远探索或更新,算法会收敛。

如果算法满足这三个条件,那么它就是PAC的。


证明IE算法的乐观性 🧠

我们简要展示IE算法如何满足乐观性条件。

我们使用归纳法证明 Q̃(s,a) ≥ Q^*(s,a)

  • 基础:初始化 1/(1-γ),这显然大于等于 Q^*
  • 归纳假设:假设第 i 次迭代时 Q̃_i ≥ Q^*
  • 归纳步骤:考虑第 i+1 次迭代的更新:
    Q̃_{i+1}(s,a) = R̂(s,a) + β/√(N(s,a)) + γ Σ_{s‘} T̂(s‘|s,a) max_{a‘} Q̃_i(s‘, a‘)
    根据归纳假设,max_{a‘} Q̃_i(s‘, a‘) ≥ max_{a‘} Q^*(s‘, a‘) = V^*(s‘)
    因此,Q̃_{i+1}(s,a) ≥ R̂(s,a) + β/√(N(s,a)) + γ Σ_{s‘} T̂(s‘|s,a) V^*(s‘)
    通过利用霍夫丁不等式等工具,可以证明(以高概率):
    R̂(s,a) + γ Σ_{s‘} T̂(s‘|s,a) V^*(s‘) ≥ Q^*(s,a) - β/√(N(s,a))
    将两者结合,得到 Q̃_{i+1}(s,a) ≥ Q^*(s,a)

这就完成了乐观性的证明。准确性和有限学习复杂度的证明涉及定义“已知”/“未知”状态-动作对,并使用“模拟引理”等工具,思路类似但更复杂。


贝叶斯方法:汤普森采样 ⚖️

在赌博机问题中,我们介绍了汤普森采样。它通过维护奖励概率的后验分布(如Beta分布),并进行概率匹配来探索。

在MDP中,我们可以进行基于模型的贝叶斯强化学习。我们对MDP的模型(转移函数 T 和奖励函数 R)设置先验分布。对于表格型MDP,转移的共轭先验通常是狄利克雷分布,奖励的共轭先验可以是Beta分布(针对0/1奖励)或高斯分布等。

MDP的汤普森采样算法如下:

  1. 对于每个状态-动作对 (s,a),从当前后验分布中采样一个转移模型 T_sample 和一个奖励模型 R_sample
  2. 用所有采样模型组合成一个完整的MDP M_sample
  3. 求解 M_sample 的最优策略 π_sample 或最优Q函数 Q_sample^*
  4. 执行当前状态下 π_sample 的动作。

这种方法也实现了概率匹配,并在实践中常能取得良好效果。


向大规模状态空间泛化 🌌

以上理论均针对有限状态和动作空间。当状态空间巨大或连续时(如图像像素空间),直接计数 N(s,a) 变得不可能。我们需要将乐观和探索的思想推广到函数逼近设置,例如深度强化学习。

主要挑战是如何在深度网络中量化不确定性

深度探索的尝试

1. 基于伪计数的探索奖励
灵感来自IE算法的奖励加成 β/√(N(s,a))。在深度Q学习中,我们可以修改目标,为不常访问的(s,a)对添加探索奖励:
目标 = R + γ max_{a‘} Q(s‘, a‘; θ^{-}) + 奖励加成(s,a)
关键是如何定义 奖励加成(s,a)。一些方法包括:

  • 训练一个密度模型来估计状态访问频率。
  • 使用哈希函数将相似状态映射到同一桶中,并进行计数。

2. 深度汤普森采样
直接在深度网络参数空间进行后验采样非常困难。一些近似方法包括:

  • Bootstrapped DQN:训练多个Q网络,每个使用不同的数据子集。行动时随机选择一个网络,相当于对Q函数进行近似后验采样。
  • 贝叶斯线性回归:在深度网络提取的固定特征之上,使用贝叶斯线性回归来输出Q值,从而获得不确定性估计。

这些方法在诸如《蒙特祖玛的复仇》等难以探索的Atari游戏上,相比标准的ε-贪婪探索,取得了显著更好的性能。


总结 🎯

本节课我们一起学习了快速强化学习的核心理论框架。

  • 我们回顾了评估算法的标准:可能近似正确遗憾,并比较了它们的异同。
  • 我们深入探讨了使一个算法成为PAC的充分条件:乐观性、准确性和有限学习复杂度,并以IE算法为例进行了分析。
  • 我们介绍了MDP中的贝叶斯方法——汤普森采样。
  • 最后,我们探讨了将这些思想推广到大规模状态空间(如深度强化学习)所面临的挑战和当前的一些实用方法。

这是一个非常活跃的研究领域,在理论保证和实际应用方面都仍有很长的路要走。下次课,我们将进入一个相关且令人兴奋的领域:元学习

📚 课程 P14:第15讲 - 批量强化学习

在本节课中,我们将要学习批量强化学习,特别是安全的批量强化学习。我们将探讨如何利用已有的历史数据来学习更好的决策策略,并确保新策略在部署前具有可靠的性能保证。这对于医疗、工业维护等高风险领域至关重要。


🎯 概述与动机

批量强化学习关注的核心问题是:我们如何利用一组已有的、由某个“行为策略”生成的数据,来评估和改进另一个“评估策略”,而无需与环境进行新的交互?

上一节我们介绍了在线强化学习中的探索与利用。本节中我们来看看离线或批处理场景下的挑战。这涉及到反事实推理——我们只能观察到已采取行动的结果,而需要推断如果采取不同行动会怎样。此外,我们还需要处理分布不匹配泛化问题,以确保学到的策略能有效应用于新情况。


📊 问题定义与符号

首先,让我们明确一些基本符号和概念,以便后续讨论。

  • 策略:用 π 表示。π(a|s) 表示在状态 s 下选择动作 a 的概率。
  • 行为策略:用 π_b 表示。这是生成我们已有数据 D 的策略。
  • 评估策略:用 π_e 表示。这是我们想要评估或希望改进的目标策略。
  • 轨迹:用 τ 表示,是一条状态、动作、奖励的序列 (s_1, a_1, r_1, s_2, a_2, r_2, ...)
  • 回报:轨迹 τ 的折扣奖励总和,记为 G(τ)
  • 策略价值:策略 π 的期望回报,记为 V(π) = E_{τ∼π}[G(τ)]

我们的目标是:给定数据集 D(由 π_b 生成),设计一个算法 A,输出一个策略 π,并希望 V(π) 至少和 V(π_b) 一样好,最好能显著更好。同时,我们希望对这个改进有统计置信度


🔍 离策略策略评估

为了安全地改进策略,我们首先需要能够准确评估一个候选策略 π_e 的价值,即使数据并非由其生成。这就是离策略策略评估

重要性采样

核心思想是对已有数据进行重新加权,使其在统计上看起来像是从目标策略 π_e 中采样得到的。

对于一个轨迹 τ,其在策略 π 下出现的概率为:
P(τ|π) = P(s_1) ∏_{t=1}^{T} π(a_t|s_t) P(s_{t+1}|s_t, a_t) P(r_t|s_t, a_t)

当我们用行为策略 π_b 的数据评估 π_e 时,可以使用重要性权重比:
ρ(τ) = P(τ|π_e) / P(τ|π_b) = ∏_{t=1}^{T} [π_e(a_t|s_t) / π_b(a_t|s_t)]
(初始状态分布和动态模型/奖励模型概率相同,因此抵消)。

于是,π_e 的价值估计为:
V̂(π_e) = (1/N) Σ_{τ∈D} ρ(τ) * G(τ)

这是一个无偏估计器。但它的方差可能非常高,特别是当 π_eπ_b 差异很大时,权重 ρ(τ) 可能变得极大或极小。

加权重要性采样与每步决策重要性采样

为了降低方差,常采用两种技术:

  1. 加权重要性采样:将估计归一化。
    V̂_wis(π_e) = Σ_{τ∈D} ρ(τ) * G(τ) / Σ_{τ∈D} ρ(τ)
    这降低了方差,但引入了(渐近可消失的)偏差。

  2. 每步决策重要性采样:利用“未来不影响过去回报”的事实,仅对影响当前奖励的动作进行重要性加权。这能进一步降低方差。

双重稳健估计器

结合模型估计和重要性采样,可以得到更鲁棒、方差更低的估计器。

基本形式为:
V̂_dr(π_e) = (1/N) Σ_{τ∈D} [ ρ(τ)(G(τ) - Q̂(τ)) + V̂_model(π_e) ]
其中 Q̂(τ) 是对轨迹中某个点之后回报的估计(例如通过拟合Q函数得到),V̂_model(π_e) 是基于学到的模型对策略价值的估计。

双重稳健性体现在:如果模型是准确的,或者重要性权重是准确的,那么估计器就是(近似)无偏的。这比单独使用任何一种方法更鲁棒。

以下是不同评估方法在数据需求上的对比示例(数值为示意):

方法 达到特定精度所需剧集数
基于模型(有偏) ~50
重要性采样 ~2000
双重稳健 ~200
加权双重稳健 ~5

可以看到,先进的估计器能大幅减少对数据量的需求


🛡️ 高置信度策略评估与安全策略改进

仅仅得到点估计是不够的。在部署新策略前,我们需要确信它确实比旧策略好。这需要高置信度的策略评估

挑战:重要性权重导致宽松的置信区间

直接对重要性采样估计应用霍夫丁不等式等集中不等式,得到的置信区间通常非常宽(甚至无信息)。因为重要性权重 ρ(τ) 可能极大,导致回报的潜在范围 B 很大,从而使置信边界 ± B√(log(1/δ)/2N) 变得无用。

解决方案:截断重要性采样

一个关键见解是:我们可以安全地截断那些具有极大重要性权重的轨迹(即 π_e 下极不可能但 π_b 下偶然出现的轨迹)。虽然这会轻微低估策略价值,但它能得到更紧且仍有保障的置信下界。这符合“安全”的原则——我们宁愿错过一个可能好的策略,也不部署一个我们误以为好但实际上很差的策略。

通过这种方法,我们可以计算 V(π_e) 的置信下界 L(π_e)。如果 L(π_e) > V(π_b)(或 V(π_b) 的估计下界),我们就可以以高置信度断言 π_e 优于 π_b

安全策略改进流程

  1. 策略评估:使用(加权/双重稳健)重要性采样等方法,评估多个候选策略 {π_e}
  2. 置信区间计算:为每个候选策略的价值估计计算置信下界。
  3. 策略选择:选择具有最高置信下界的策略。如果其下界高于当前行为策略的价值估计,则可以安全部署。

这种方法使算法具备自知之明:当数据不足时,它可能无法推荐任何有信心的改进,从而避免给出错误建议。


💎 总结与展望

本节课中我们一起学习了批量强化学习的核心内容:

  1. 目标:利用历史数据学习更好、更安全的策略,核心是离策略评估高置信度保证
  2. 关键方法重要性采样是离策略评估的基础,通过加权每步决策双重稳健技术可以显著改善估计的方差与偏差。
  3. 安全保证:通过截断重要性采样等技术,可以为策略价值计算实用的置信下界,从而实现安全策略改进,确保部署的新策略很可能优于旧策略。

批量强化学习在医疗、推荐系统、工业控制等领域有巨大应用潜力。未来的研究方向包括:处理未知行为策略、结合深度神经网络与元学习进行迁移、应对非平稳环境以及优化长期回报的评估等。这是一个融合了统计学、机器学习和领域知识的活跃研究领域。


下周将进行测验。

课程 P15:第16讲 - 蒙特卡洛树搜索 🎲

在本节课中,我们将要学习蒙特卡洛树搜索。这是一种强大的规划算法,在诸如AlphaGo等复杂决策系统中扮演了核心角色。我们将从基于模型的强化学习开始,逐步理解如何通过模拟和搜索来做出更好的决策。

概述

蒙特卡洛树搜索是一种结合了树搜索和蒙特卡洛模拟的方法,用于在具有巨大状态空间的问题中(如围棋)进行高效决策。它通过构建部分搜索树并智能地选择探索路径,避免了穷举搜索的计算负担。


基于模型的强化学习

上一节我们介绍了无模型强化学习,本节中我们来看看基于模型的强化学习。在这种方法中,我们首先尝试从经验中学习一个世界模型,然后利用这个模型进行规划。

在基于模型的强化学习中,我们拥有一个由经验数据(如状态、动作、奖励、下一个状态组成的元组)训练出的模型。这个模型可以预测在给定状态和动作下的奖励和状态转移。

核心概念公式
我们学习一个近似的转移模型 \(\hat{P}(s'|s, a)\) 和一个近似的奖励模型 \(\hat{R}(s, a)\)。这通常被表述为一个监督学习问题。

优点

  • 可以利用丰富的监督学习方法(包括深度学习)来学习模型。
  • 可以显式地处理模型的不确定性,从而指导探索。
  • 具有良好的可迁移性:如果学习了动力学模型,当奖励函数改变时,可以进行零样本迁移,只需用新奖励函数重新规划即可。

缺点

  • 存在复合误差:模型近似误差和规划近似误差会叠加。
  • 如果模型在数据稀疏的区域表现不佳,学到的策略也可能很差。

基于模拟的搜索

当我们拥有了一个世界模型(模拟器)后,除了进行动态规划,还可以进行基于模拟的搜索。前向搜索是其中一种直观的方法。

前向搜索算法会从当前状态开始,考虑所有可能的动作序列,构建一棵搜索树直到某个深度,然后通过回溯计算根节点的值(在动作节点取最大值,在状态节点取期望值)。

问题
前向搜索树的规模会随搜索深度 \(H\) 呈指数级增长(约为 \((|S| \times |A|)^H\)),对于像围棋这样状态空间巨大、步数长的游戏,完全展开是不可行的。


蒙特卡洛树搜索原理

蒙特卡洛树搜索的核心思想是两全其美:我们既想像前向搜索一样考虑多种未来可能性,又希望避免计算全部分支。其策略是增量式地构建一棵部分搜索树,并智能地分配计算资源到更有希望的路径上。

MCTS 通过多次模拟(或称“推演”)来逐步构建这棵树。每次模拟包含四个阶段:

  1. 选择:从根节点(当前状态)开始,使用树策略递归地选择子节点,直到到达一个未完全展开的节点(即存在未尝试过的合法动作)。
  2. 扩展:为这个未完全展开的节点添加一个或多个新的子节点(对应一个未尝试过的动作)。
  3. 模拟:从新添加的节点开始,使用默认策略( rollout policy,通常是随机策略)进行快速模拟,直到到达终止状态或固定深度,并得到一个模拟回报。
  4. 回溯:将模拟得到的回报沿着选择路径反向传播,更新路径上所有节点的统计信息(如访问次数、累计价值)。

经过多次这样的模拟后,树中节点的价值估计会越来越准确。最终,根据根节点下各动作子节点的统计信息(通常是访问次数),选择最优的动作执行。

树策略的关键
一个常用的树策略是上置信界树搜索。它将每个状态-动作对视为一个独立的多臂老丨虎丨机问题。在选择动作时,不仅考虑该动作的平均价值 \(Q(s, a)\),还考虑其不确定性,倾向于选择具有更高“上限置信界”的动作:

核心概念公式

\[a = \arg\max_a \left[ Q(s, a) + c \sqrt{\frac{\ln N(s)}{N(s, a)}} \right] \]

其中:

  • \(Q(s, a)\) 是动作 \(a\) 的平均模拟回报。
  • \(N(s)\) 是状态 \(s\) 的总访问次数。
  • \(N(s, a)\) 是在状态 \(s\) 下选择动作 \(a\) 的次数。
  • \(c\) 是一个探索常数。

这种方法能确保在探索(尝试访问次数少的动作)和利用(选择当前估计价值高的动作)之间取得平衡。


在围棋中的应用

围棋是MCTS取得里程碑式成功的领域。其状态空间极其庞大,奖励稀疏(仅在终局时知道输赢)。

MCTS在围棋中的工作流程

  1. 自我对弈:这是关键洞察。AI使用当前的策略模型与自己进行模拟对弈。这解决了奖励稀疏问题,因为即使两个策略都不完美,也能产生胜负信号。
  2. 构建搜索树:从当前棋盘状态(根节点)开始,运行大量MCTS模拟。
  3. 选择落子:模拟结束后,根据根节点下各落子点的访问次数,选择访问次数最多的点作为实际落子。访问次数反映了该动作的“胜率”估计。
  4. 迭代改进:将实际对局数据加入训练集,更新策略模型和价值模型,然后重复上述过程。

AlphaGo 及其后继版本 AlphaZero 将 MCTS 与深度神经网络结合:神经网络提供强大的先验策略(用于指导树搜索中的动作选择)和价值估计(用于替代部分随机模拟),极大地提升了搜索效率。


总结

本节课中我们一起学习了蒙特卡洛树搜索。我们从基于模型的强化学习出发,理解了拥有一个模拟器的重要性。接着,我们看到了前向搜索的局限性,从而引出了MCTS这一高效解决方案。

MCTS 的核心在于通过多次模拟、增量建树、UCT选择、回溯更新的循环,将计算资源集中在最有希望的行动路径上。它在围棋等复杂博弈中的成功,证明了其在解决大规模序列决策问题上的强大能力。这种将规划、学习与搜索相结合的思想,是强化学习领域一个非常有力的工具。

强化学习课程 P2:Lecture 2 - 已知世界模型 🧠

在本节课中,我们将学习当已知世界模型时,如何进行决策规划。我们将从马尔可夫过程开始,逐步构建到马尔可夫决策过程,并学习如何计算最优策略。


回顾与概述 📚

上一节课我们介绍了强化学习的基本概念,包括模型、价值和策略。本节课,我们将专注于规划问题:当我们知道世界模型(即知道在特定状态下采取某个动作会发生什么)时,如何做出最优决策,以最大化长期回报。


马尔可夫过程 🔄

首先,我们来看没有控制(动作)参与的情况。马尔可夫过程描述了一个随机过程如何随时间演变,其核心是马尔可夫性质:未来状态的分布只依赖于当前状态,与过去历史无关。

公式化定义
一个马尔可夫过程由一组(有限或无限的)状态 S 和一个转移模型 P 组成。转移模型定义了从当前状态 s 转移到下一个状态 s' 的概率:
P(s' | s)

如果状态空间是有限的,我们可以用一个矩阵来表示转移模型,其中 P[i][j] 表示从状态 i 转移到状态 j 的概率。

示例
考虑一个火星车在7个位置(S1到S7)间移动的简单世界。其转移矩阵可能如下(仅示意部分):

  • 从S1出发,有0.6概率留在S1,0.4概率移动到S2。
  • 从S4出发,有0.4概率到S3,0.4概率留在S4,0.2概率到S5。

通过从初始状态分布(例如,从S4开始)重复采样转移矩阵,我们可以生成一个状态序列(轨迹),例如:S4 -> S5 -> S6 -> S7 -> S7 ...


马尔可夫奖励过程 🏆

现在,我们在马尔可夫过程中加入奖励。马尔可夫奖励过程在状态转移的基础上,为每个状态关联一个期望奖励值 R(s)。此外,我们引入折扣因子 γ (0 ≤ γ ≤ 1),用于权衡即时奖励和未来奖励的重要性。

核心概念

  • 回报:从某个时间步 t 开始,未来获得的折扣奖励总和。
    G_t = R_{t} + γ * R_{t+1} + γ^2 * R_{t+2} + ...
  • 价值函数:从某个状态 s 开始,所能获得的期望回报。
    V(s) = E[G_t | S_t = s]

计算价值函数的方法

  1. 模拟:通过多次运行(采样)过程,计算回报的平均值。这种方法简单,不依赖马尔可夫结构,但可能需要大量样本。
  2. 解析解:利用马尔可夫性质,价值函数可以表示为贝尔曼方程:
    V(s) = R(s) + γ * Σ_{s'} P(s'|s) * V(s')
    对于有限状态空间,可以写成矩阵形式 V = R + γPV,直接求解 V = (I - γP)^{-1} R
  3. 动态规划/迭代法:通过迭代更新来求解价值函数。
    • 初始化 V_0(s) = 0(或任意值)。
    • 重复以下更新直到收敛:
      V_{k+1}(s) = R(s) + γ * Σ_{s'} P(s'|s) * V_k(s')
      这种方法计算效率更高,并且为后续引入动作奠定了基础。

马尔可夫决策过程 🎮

现在,我们引入动作,这是智能体与环境的交互方式。马尔可夫决策过程是强化学习的标准建模框架。

MDP 元组(S, A, P, R, γ)

  • S: 状态集合
  • A: 动作集合
  • P: 转移模型 P(s' | s, a)
  • R: 奖励函数 R(s, a) (也可以是 R(s)R(s, a, s'))
  • γ: 折扣因子

策略:策略 π 定义了在给定状态下应采取的动作。它可以是确定性的(a = π(s))或随机性的(π(a|s))。

示例
在我们的火星车例子中,现在智能体可以采取两个动作:A1和A2。转移模型变为依赖于动作。例如,在状态S6执行A1,可能有50%概率留在S6,50%概率到达S7;而执行A2则可能确定性地前往S7。


策略评估 📊

给定一个固定的策略 π,MDP 就退化成了一个 MRP(因为动作由策略决定)。因此,我们可以使用计算 MRP 价值函数的方法来评估这个策略的好坏,这被称为策略评估

贝尔曼期望方程
V^π(s) = R(s, π(s)) + γ * Σ_{s'} P(s' | s, π(s)) * V^π(s')

我们可以使用动态规划迭代求解 V^π
V_{k+1}^π(s) = R(s, π(s)) + γ * Σ_{s'} P(s' | s, π(s)) * V_k^π(s')

这个过程会逐步将未来状态的奖励信息“传播”回更早的状态。


控制:寻找最优策略 🥇

我们最终的目标不是评估给定策略,而是找到最优策略 π*,使得所有状态下的价值函数 V^π(s) 最大化。对于无限时域有限状态的MDP,至少存在一个确定性的最优平稳策略。

1. 策略迭代

策略迭代交替进行策略评估策略改进,直到策略不再改变。

步骤

  1. 初始化:随机选择一个策略 π_0
  2. 循环,直到策略收敛:
    • 策略评估:计算当前策略 π_i 的价值函数 V^{π_i}
    • 策略改进:对于每个状态 s,根据 V^{π_i} 计算动作价值函数 Q,并选择能最大化 Q 值的动作作为新策略。
      π_{i+1}(s) = argmax_a Q^{π_i}(s, a)
      其中,Q^{π}(s, a) = R(s, a) + γ * Σ_{s'} P(s' | s, a) * V^{π}(s')

为什么有效?
策略改进定理保证了新策略 π_{i+1} 不差于旧策略 π_iV^{π_{i+1}} ≥ V^{π_i})。由于确定性策略的总数是有限的(|A|^{|S|}),且策略价值单调不降,算法必然在有限步内收敛到最优策略。

2. 价值迭代

价值迭代直接迭代更新最优价值函数 V*,而不显式地维护中间策略。

贝尔曼最优方程
V*(s) = max_a [ R(s, a) + γ * Σ_{s'} P(s' | s, a) * V*(s') ]

算法

  1. 初始化 V_0(s) = 0
  2. 重复以下更新直到收敛:
    V_{k+1}(s) = max_a [ R(s, a) + γ * Σ_{s'} P(s' | s, a) * V_k(s') ]

收敛性保证
贝尔曼最优备份算子是一个收缩映射(只要 γ < 1)。这意味着,无论 V 如何初始化,重复应用该算子都会使其唯一地收敛到最优价值函数 V*。得到 V* 后,最优策略可以通过贪心地选择动作得到:π*(s) = argmax_a Q*(s, a)


总结 🎯

本节课我们一起学习了在已知世界模型下的规划方法。

  • 我们从马尔可夫过程马尔可夫奖励过程入手,理解了状态转移、奖励、回报和价值函数的基本概念,并学习了计算价值函数的几种方法(模拟、解析解、动态规划)。
  • 然后,我们引入了马尔可夫决策过程,其中智能体可以通过动作影响环境。策略定义了智能体的行为方式。
  • 我们学习了如何评估一个给定策略的优劣,即策略评估
  • 最后,我们探讨了寻找最优策略的两种主要算法:策略迭代(交替进行评估和改进)和价值迭代(直接迭代求解最优价值函数)。两者都依赖于贝尔曼方程,并在折扣因子 γ < 1 时保证收敛到最优解。

这些内容是理解后续强化学习算法(特别是当模型未知,需要从交互中学习时)的重要基础。

课程三:无模型策略评估 🧠

在本节课中,我们将学习如何在不了解环境模型(即不知道状态转移概率和奖励函数)的情况下,评估一个给定策略的好坏。我们将介绍三种主要方法:动态规划、蒙特卡洛方法和时序差分学习,并比较它们的特性。


回顾:策略评估与价值函数

上一节我们介绍了马尔可夫决策过程的基本框架。本节中,我们来看看策略评估的核心概念:价值函数。

策略评估的目标是:给定一个策略 π,计算在该策略下每个状态(或状态-动作对)的预期累积折扣奖励。

我们定义了两种关键的价值函数:

  • 状态价值函数 V^π(s):表示从状态 s 开始,遵循策略 π 所能获得的预期回报。
    • 公式V^π(s) = E[G_t | S_t = s],其中 G_t = R_{t+1} + γR_{t+2} + γ^2R_{t+3} + ...
  • 状态-动作价值函数 Q^π(s, a):表示在状态 s 下先执行动作 a,然后遵循策略 π 所能获得的预期回报。
    • 公式Q^π(s, a) = E[G_t | S_t = s, A_t = a]

其中,γ 是折扣因子(0 ≤ γ ≤ 1),用于权衡即时奖励和未来奖励。


动态规划策略评估

当我们拥有环境的完整模型(即知道状态转移概率 P(s'|s,a) 和奖励函数 R(s,a))时,可以使用动态规划进行策略评估。

动态规划通过迭代更新来求解贝尔曼方程。其核心思想是“自举”(bootstrapping),即用当前的价值估计来更新下一个状态的价值估计。

以下是动态规划策略评估的算法步骤:

  1. 初始化价值函数 V(s),例如全部设为0。
  2. 重复以下更新,直到价值函数收敛(变化小于阈值 ε):
    • 对每个状态 s,计算:
      • V_{k+1}(s) = Σ_a π(a|s) Σ_{s'} P(s'|s,a) [ R(s,a) + γ * V_k(s') ]
  3. 收敛后得到的 V(s) 即为策略 π 下的状态价值函数。

特点总结

  • 需要模型:必须已知 P(s'|s,a)R(s,a)
  • 自举:使用当前估计值 V_k 来更新。
  • 假设马尔可夫性:价值只依赖于当前状态。
  • 收敛性:在已知模型下,能收敛到精确解。

蒙特卡洛策略评估

当我们没有环境模型时,可以使用蒙特卡洛方法。其核心思想是通过在环境中实际运行策略,收集完整的轨迹(从开始到结束),然后计算实际回报的平均值来估计价值。

以下是首次访问蒙特卡洛策略评估的算法步骤:

  1. 初始化:对所有状态 s,设置 V(s) = 0Returns(s) = 空列表
  2. 循环多轮(每轮称为一个“幕”或 episode):
    • 使用策略 π 在环境中运行,直到幕终止,得到状态、动作、奖励序列。
    • 计算每个时间步 t 的回报 G_t(从 t 开始到幕结束的累积折扣奖励)。
    • 对于此幕中访问到的每个状态 s
      • 如果是首次访问到状态 s,则将 G_t 加入 Returns(s)
      • 更新 V(s)Returns(s) 的平均值。

特点总结

  • 无需模型:只需要能从环境中采样轨迹。
  • 无自举:直接使用完整的实际回报 G_t
  • 不假设马尔可夫性:即使环境不是完全马尔可夫的,方法依然适用。
  • 需要幕式任务:任务必须有明确的终止状态。
  • 收敛性:是无偏估计,随着数据量增加会收敛到真实值,但方差可能较高。
  • 效率:必须等到一幕结束才能更新,数据利用可能不够高效。

时序差分学习

时序差分学习结合了动态规划的自举思想和蒙特卡洛的采样思想。它不需要等到一幕结束,而是在每一步之后立即进行更新。

最简单的 TD 算法是 TD(0),其更新规则如下:

  • 观察到转移 (S_t, A_t, R_{t+1}, S_{t+1}) 后,立即更新:
    • V(S_t) ← V(S_t) + α [ R_{t+1} + γ * V(S_{t+1}) - V(S_t) ]
  • 其中 α 是学习率,[ R_{t+1} + γ * V(S_{t+1}) ] 被称为 TD 目标[ TD目标 - V(S_t) ] 被称为 TD 误差

以下是 TD(0) 策略评估的在线算法步骤:

  1. 初始化价值函数 V(s)
  2. 循环(每个时间步):
    • 在状态 S_t,根据策略 π 选择动作 A_t
    • 执行动作,观察到奖励 R_{t+1} 和下一个状态 S_{t+1}
    • 使用上述公式更新 V(S_t)
    • S_t ← S_{t+1}

特点总结

  • 无需模型:只需要采样经验元组 (s, a, r, s')
  • 自举:使用当前估计 V(S_{t+1}) 来更新。
  • 假设马尔可夫性:依赖于状态价值的马尔可夫假设。
  • 适用于持续任务:不需要幕式终止。
  • 在线更新:无需等待幕结束,学习更快。
  • 收敛性:在表格表示下,能收敛到真实值,但估计是有偏的(因为使用了不完美的自举目标),方差通常低于蒙特卡洛方法。

方法比较与权衡

以下是三种方法在几个关键属性上的比较:

属性 动态规划 蒙特卡洛 时序差分
是否需要模型
是否处理持续任务
是否假设马尔可夫性
是否收敛到真值 是(给定模型) 是(无偏) 是(一致)
更新方式 自举 采样完整回报 自举 + 采样
偏差/方差 无偏(给定模型) 无偏,高方差 有偏,低方差
数据效率 高(利用模型) 低(高方差) 中等/高(利用序列结构)
计算效率 高(迭代计算) 低(需完整轨迹) 高(在线更新)

如何选择

  • 如果你有一个准确的环境模型,动态规划是最佳选择。
  • 如果你的任务必须是幕式的,且你关心无偏估计或不满足马尔可夫性,蒙特卡洛方法更合适。
  • 在大多数无模型、在线学习的场景下,尤其是持续任务中,时序差分学习因其高效性和灵活性而最为常用。

批量数据下的策略评估

最后,我们考虑一种情况:我们拥有一个固定的事先收集好的数据集(批量数据),如何用它来评估策略?

在这种情况下:

  • 蒙特卡洛方法 会计算数据集中每个状态首次出现时的实际回报,然后取平均。它最小化的是关于观测回报的均方误差。
  • 时序差分方法 会反复遍历数据集进行更新。它实际上会收敛到基于该数据集的最大似然估计马尔可夫模型(通过计数估计 P(s'|s,a)R(s,a))所对应的动态规划解。

这意味着,如果环境确实是马尔可夫的,TD 方法能更有效地利用数据的序列结构信息,从而可能得到比蒙特卡洛方法更好的估计。如果环境不是马尔可夫的,那么 TD 方法的马尔可夫假设会导致有偏的估计,此时蒙特卡洛方法可能更可靠。


总结

本节课中我们一起学习了无模型策略评估的三种核心方法:

  1. 动态规划:需要完整模型,通过自举和迭代求解贝尔曼方程。
  2. 蒙特卡洛方法:无需模型,通过采样完整轨迹并平均回报来估计价值,无偏但方差高,需要幕式任务。
  3. 时序差分学习:无需模型,结合自举和采样,每一步后在线更新,适用于持续任务,是有偏但低方差的估计器。

理解这些方法在偏差、方差、数据需求和对环境假设上的权衡,对于在实际问题中选择和应用合适的强化学习算法至关重要。

课程4:无模型控制 🎮

在本节课中,我们将学习当智能体不知道环境如何运作时,如何做出好的决策。我们将重点关注无模型控制方法,即不显式构建环境的动态或奖励模型,而是直接从经验中学习。


概述 📋

上一节我们介绍了如何评估一个给定的策略。本节中,我们将探讨一个在强化学习中更常见的问题:当智能体不知道世界模型时,它应该如何做出决策以最大化其预期的累积折扣奖励。我们将从广义策略迭代开始,然后介绍蒙特卡洛方法和时序差分方法在策略控制中的应用,并讨论探索与利用的平衡。


广义策略迭代 🔄

如果我们回到已知世界模型时的策略迭代,其过程是:随机初始化一个策略,然后进行策略评估(计算当前策略的值函数),接着进行策略改进(根据值函数更新策略),并不断迭代。这保证了策略的单调改进,并最终收敛到最优策略。

然而,在无模型的情况下,我们无法直接获得动态或奖励模型。一个直接的思路是:我们可以尝试从经验中估计一个世界模型,然后使用该模型进行策略迭代。但本节课我们将采用另一条路径:直接估计状态-动作值函数(Q函数),然后利用Q函数进行策略改进。

以下是进行蒙特卡洛策略Q评估的步骤:

  • 与蒙特卡洛策略价值评估类似,但对象从状态值V变为状态-动作值Q。
  • 我们通过采样幕(episode)来获得经验。
  • 对于幕中每个时间步出现的状态-动作对 (s, a),计算其到幕尾的累积回报 G_t。
  • 更新该状态-动作对的Q值估计,例如采用增量平均的方式。

一旦我们获得了Q函数的估计,策略改进就变得非常简单:新策略可以直接定义为关于当前Q函数的贪婪策略。


探索与利用 ⚖️

但上述方法存在一个问题:如果我们遵循一个确定性策略,那么在同一个状态s下,我们永远只会采取策略所规定的那个动作a。这意味着我们无法获得在该状态下采取其他动作会怎样的信息,从而策略改进可能无法进行。

因此,我们必须引入某种形式的探索。一个简单而有效的方法是通过ε-贪婪策略来平衡探索与利用。

假设动作空间A是有限的,其大小为|A|。关于状态-动作值Q的ε-贪婪策略定义如下:

  • 以概率 (1 - ε),选择当前Q值估计下最优的动作(即利用)。
  • 以概率 ε,随机均匀地选择动作空间A中的任何一个动作(即探索)。

蒙特卡洛控制 🎲

现在,我们可以将策略评估和策略改进结合起来,进行在线的蒙特卡洛控制。

以下是蒙特卡洛在线控制算法的概要步骤:

  • 初始化Q(s, a)和计数器N(s, a)。
  • 循环每一幕:
    • 根据当前的ε-贪婪策略(基于Q)生成一幕经验。
    • 对于幕中每个状态-动作对(s, a):
      • 计算其首次出现后的累积回报G。
      • 更新计数器:N(s, a) += 1。
      • 更新Q值:Q(s, a) += (G - Q(s, a)) / N(s, a)。
    • 更新策略:将策略设置为关于新Q值的ε-贪婪策略。
    • 可以衰减ε(例如ε = 1/k),以满足“无限探索下的贪婪”(Greedy in the Limit with Infinite Exploration, GLIE)条件,从而保证收敛到最优策略。

时序差分控制:Sarsa ⏱️

蒙特卡洛方法需要等到一幕结束才能进行更新。时序差分(TD)方法则可以在每个时间步之后立即更新,通常学习更快。

Sarsa是一种在策略的TD控制算法,其名称来源于更新所需的数据序列:(S_t, A_t, R_{t+1}, S_{t+1}, A_{t+1})。

Sarsa的更新公式如下:
Q(S_t, A_t) ← Q(S_t, A_t) + α [ R_{t+1} + γ * Q(S_{t+1}, A_{t+1}) - Q(S_t, A_t) ]

其中α是学习率,γ是折扣因子。注意,更新中使用了实际执行的下一个动作 A_{t+1} 的Q值。

更新后,策略可以同步地改进为关于当前Q的ε-贪婪策略。Sarsa的收敛需要满足类似的条件:足够小的学习率序列,以及行为策略满足GLIE条件。


时序差分控制:Q-Learning 🧠

Q-Learning是一种离策略的TD控制算法,它同样在每个时间步更新,但更新方式与Sarsa不同。

Q-Learning的更新公式如下:
Q(S_t, A_t) ← Q(S_t, A_t) + α [ R_{t+1} + γ * max_{a} Q(S_{t+1}, a) - Q(S_t, A_t) ]

关键区别在于,Q-Learning在更新时,使用的是下一状态 S_{t+1} 下所有可能动作的最大Q值估计,而不是实际采取的动作的Q值。这意味着它学习的是最优动作的价值,而不依赖于当前策略具体选择了哪个动作。

因此,Q-Learning中的行为策略(用于生成经验)可以是任意的(如ε-贪婪策略),而目标策略(被评估和改进的策略)则是关于Q的完全贪婪策略。这实现了“异策略”学习。


最大化偏差与双Q学习 🎯

在Q-Learning等使用最大化操作的算法中,存在一个称为“最大化偏差”的问题。即使对每个动作价值的估计是无偏的,对这些估计值取最大值得到的值,其期望可能会高于真实的最大值。这会导致算法过于乐观,并在早期倾向于选择那些因随机波动而偶然被高估的动作。

双Q学习是缓解此问题的一种方法。其核心思想是维护两个独立的Q函数估计,Q1和Q2。

  • 更新时,随机决定用哪个Q函数来选择最大化动作,用另一个Q函数来评估该动作的价值。
  • 例如,以50%的概率使用Q1选择动作:a* = argmax_a Q1(S_{t+1}, a),然后用Q2来评估:target = R + γ * Q2(S_{t+1}, a*),并更新Q1。
  • 另一半概率则反之,更新Q2。

这种方法可以消除最大化偏差,在某些问题上能带来更稳定、更高效的学习性能。


总结 📝

本节课中,我们一起学习了无模型控制的基本方法。

  • 我们从广义策略迭代框架出发,将其适配到无模型设定,通过直接估计Q函数并进行贪婪改进。
  • 我们认识到探索的必要性,并引入了ε-贪婪策略来平衡探索与利用。
  • 我们详细介绍了两种主要的无模型控制算法:在策略的Sarsa和离策略的Q-Learning,理解了它们更新公式的区别及其含义。
  • 最后,我们探讨了Q-Learning中可能存在的最大化偏差问题,并简要介绍了双Q学习作为解决方案。

这些算法是强化学习的基础,使我们能够在未知环境中学到优秀的策略。

课程 P5:价值函数近似 📈

在本节课中,我们将学习价值函数近似。当状态和动作空间非常庞大时,我们无法使用表格来存储每个状态或状态-动作对的价值。因此,我们需要使用参数化的函数来近似表示价值函数,从而实现泛化。


概述

到目前为止,我们讨论的都是如何在未知环境中评估策略和进行序列决策。今天,我们将开始讨论价值函数近似。这意味着我们将不再使用表格来记录价值,而是使用一个带有参数的函数(如线性模型或深度神经网络)来表示价值函数。这种方法可以显著减少内存和计算需求,并可能减少学习所需的数据量。

然而,选择不同的函数近似器会带来不同的权衡。一个表达能力强的模型可能需要更多数据来学习,而一个简单的模型可能无法表示复杂的价值函数。接下来,我们将从线性价值函数近似开始,逐步探讨其在策略评估和控制中的应用。


为什么需要价值函数近似?🤔

许多现实世界问题(如雅达利游戏)具有巨大的状态和动作空间。我们无法为每个状态或状态-动作对建立一个表格。因此,我们需要泛化能力:即使遇到从未见过的状态,也能基于先前的经验做出好的决策。

使用价值函数近似可以带来以下好处:

  • 减少内存需求:无需存储庞大的表格。
  • 减少计算需求:更新参数比更新整个表格更高效。
  • 可能减少所需经验:通过泛化,智能体可能用更少的数据学到好的策略。

但同时,我们也面临权衡。一个表达能力有限的近似器(假设空间小)虽然需要的数据少,但可能无法表示好的策略或价值函数。这类似于机器学习中的偏差-方差权衡。


函数近似器的选择 🛠️

几乎任何可用于监督学习的函数近似器都可以用于强化学习中的价值函数近似,例如:

  • 神经网络
  • 决策树
  • 最近邻法
  • 小波基

在本课程中,我们将主要关注可微分的近似器(如线性模型和神经网络),因为它们具有平滑的优化特性,更容易优化。选择哪种近似器通常取决于具体应用场景,例如是否需要模型的可解释性。

目前最流行的两类是线性价值函数近似深度神经网络。我们将从线性近似开始,因为它研究得最深入,并且可以看作是深度神经网络中特征计算的基础。


梯度下降法回顾 📉

为了优化我们的参数化价值函数,我们需要使用梯度下降法。假设我们有一个关于参数向量 w 的可微目标函数 J(w)。我们的目标是找到最小化 J(w)w

梯度 ∇J(w)J(w)w 中每个参数的偏导数向量。梯度下降的更新规则为:

w ← w - α ∇J(w)

其中 α 是学习率。通过多次迭代,我们可以收敛到一个局部最优解。在强化学习中,我们将使用这种思想来平滑地更新价值函数的参数表示。


线性价值函数近似与策略评估 🔍

上一节我们回顾了梯度下降法,本节我们来看看如何将其应用于策略评估。策略评估是指,给定一个策略 π,我们想要估计遵循该策略所能获得的期望折扣回报 V^π(s)

理想情况:有“先知”提供真值

假设有一个“先知”能告诉我们任何状态 s 在策略 π 下的真实价值 V^π(s)。那么,我们的目标就是用一个参数化函数 V̂(s, w) 来拟合这些 (状态, 价值) 对。这类似于一个监督学习问题。

我们通常使用均方误差作为损失函数:
J(w) = E_π[ (V^π(s) - V̂(s, w))^2 ]

使用随机梯度下降进行更新。对于线性函数近似,V̂(s, w) = x(s)^T w,其中 x(s) 是状态 s 的特征向量。此时,权重更新公式为:
Δw = α (V^π(s) - V̂(s, w)) x(s)

现实情况:无模型函数近似

然而,我们并没有“先知”。在现实中,我们需要使用从策略 π 中采样得到的数据来估计价值。我们之前学过的蒙特卡洛法和时序差分法在这里依然适用,只是现在更新的是函数近似器的参数 w,而不是表格中的条目。

首先,我们需要为状态选择一个特征表示 x(s)。特征工程非常重要,糟糕的特征可能导致状态混淆(非马尔可夫性),从而影响学习。深度神经网络的一个优势就是可以自动学习好的特征表示。


蒙特卡洛价值函数近似 🎲

在蒙特卡洛方法中,我们从一次完整的回合中获取回报 G_t,并将其作为真实价值 V^π(S_t) 的无偏但可能有噪声的估计。然后,我们将其用于监督学习。

对于线性近似,更新规则变为:
Δw = α (G_t - V̂(S_t, w)) x(S_t)

算法流程如下:

  1. 初始化权重向量 w(例如,全零向量)。
  2. 使用策略 π 采样一个完整回合。
  3. 对该回合中首次访问的每个状态 S_t
    • 计算回报 G_t
    • 更新权重:w ← w + α (G_t - V̂(S_t, w)) x(S_t)

可以证明,在线性近似和策略评估(同轨策略)的设置下,蒙特卡洛法会收敛到可能的最小均方误差解。


时序差分价值函数近似 ⚡

上一节我们介绍了蒙特卡洛法,本节我们来看看更高效的时序差分法。TD学习结合了采样和自举。在TD(0)中,我们使用TD目标 R + γ V̂(S‘, w) 作为当前状态价值的估计。

对于线性近似,我们的更新目标是使预测值接近TD目标。权重更新公式为:
Δw = α [R + γ V̂(S‘, w) - V̂(S, w)] x(S)

算法流程如下:

  1. 初始化权重向量 w
  2. 对每一步:
    • 根据策略选择动作 A,得到元组 (S, A, R, S‘)
    • 更新权重:w ← w + α [R + γ V̂(S‘, w) - V̂(S, w)] x(S)

在策略评估的设定下,TD(0)也能收敛,但其解的最优性保证不如蒙特卡洛法严格,误差在一个常数因子 1/(1-γ) 内。


从评估到控制:价值函数近似的挑战 🎯

前面几节我们都在讨论策略评估,本节我们将探讨价值函数近似在控制问题中的应用。控制意味着我们要同时学习最优策略和最优价值函数(通常是Q函数)。

现在,我们用参数化的函数 Q̂(s, a, w) 来近似状态-动作价值函数。更新过程与策略评估类似,但需要与策略改进(如ε-贪心)交错进行。

以下是不同算法的更新公式(线性近似):

  • 蒙特卡洛控制Δw = α (G_t - Q̂(S_t, A_t, w)) x(S_t, A_t)
  • SarsaΔw = α [R + γ Q̂(S‘, A‘, w) - Q̂(S, A, w)] x(S, A)
  • Q-learningΔw = α [R + γ max_{a‘} Q̂(S‘, a‘, w) - Q̂(S, A, w)] x(S, A)

“致命三要素”与不稳定性

当我们将函数近似自举(Bootstrapping)离轨策略学习三者结合时,就可能出现严重问题,这被称为“致命三要素”。在这种情况下,算法可能无法收敛,或者收敛到一个很差的解。

不稳定的原因包括:

  1. 分布不匹配:用于更新Q函数的数据分布(行为策略)与目标策略下的状态分布不同。
  2. 投影的扩张性:贝尔曼备份算子本身是一个压缩映射,但将其结果投影回函数近似空间的操作可能是一个扩张映射,导致值函数发散。

Baird反例清晰地展示了在离轨策略学习下,即使使用线性近似,Q-learning的权重也可能发散到无穷大。


总结

在本节课中,我们一起学习了价值函数近似。我们从为什么需要近似开始,讨论了不同近似器的选择,并回顾了梯度下降法这一核心优化工具。

我们重点探讨了线性价值函数近似在策略评估中的应用,分别介绍了蒙特卡洛法和时序差分法的更新规则及其收敛性质。最后,我们探讨了将价值函数近似用于控制问题时面临的挑战,特别是“致命三要素”导致的不稳定性。

理解这些基础概念对于后续学习深度强化学习至关重要。在接下来的课程中,我们将深入探讨深度神经网络作为函数近似器在强化学习中的强大能力。

课程6:卷积神经网络与深度Q学习 🧠🎮

在本节课中,我们将学习深度学习和深度强化学习的基础知识。我们将探讨如何使用深度神经网络,特别是卷积神经网络(CNN),来近似值函数,并介绍深度Q学习(DQN)及其核心改进。课程内容旨在让初学者能够理解这些概念。


概述 📋

本节课我们将首先简要介绍深度学习,然后重点讨论深度强化学习。我们将了解为什么在处理高维输入(如图像)时,函数逼近变得至关重要。接着,我们将探讨卷积神经网络的结构和优势,最后深入讲解深度Q学习算法及其关键创新点。


深度学习简介 🧠

上一节我们介绍了线性值函数逼近。本节中,我们来看看更强大的函数逼近器——深度神经网络。

深度神经网络由多个函数组合而成。输入 x 经过一系列带有权重的函数变换,最终输出预测值 y(例如Q值)。损失函数 J 用于衡量预测误差。

其核心公式可表示为:
y = h_n(...h_2(h_1(x; w_1); w_2)...; w_n)

其中,h 代表层函数,可以是线性或非线性变换(激活函数)。常见的激活函数包括Sigmoid和ReLU。

深度神经网络的优势在于:

  • 强大的表示能力:通过组合函数,可以表示非常复杂的函数。
  • 通用逼近器:只要网络足够大,理论上可以逼近任何函数。
  • 自动微分:借助TensorFlow等框架,可以自动计算梯度,无需手动推导。

我们可以使用链式法则(反向传播)和随机梯度下降来更新网络参数 W,以最小化损失。


卷积神经网络(CNN) 👁️

上一节我们了解了通用的深度神经网络。本节中,我们来看看专门为处理图像等具有空间结构的数据而设计的卷积神经网络。

标准的前馈神经网络在处理图像时(例如1000x1000像素)会产生海量参数,且忽略了图像的空间局部相关性。CNN通过以下两个核心思想解决了这些问题:

  1. 局部连接与权重共享:每个神经元(或滤波器)只连接输入图像的一小块区域(感受野),而不是全部像素。并且,同一个滤波器会滑动扫描整个图像,其权重是共享的。这极大地减少了参数量。

    • 公式/操作:对于一个5x5的滤波器在图像上滑动(卷积操作),我们只需要 5*5=25 个权重参数,而不是与全图像素连接所需的百万级参数。
  2. 池化层:在卷积层之后,通常会加入池化层(如最大池化)。它对局部区域进行下采样,保留最显著的特征,同时使特征对微小平移具有不变性,并进一步降低维度。

CNN的典型流程是:输入图像 -> 多个(卷积层 + 激活函数 + 池化层)组合 -> 展平 -> 全连接层 -> 输出(如Q值)。这本质上是从原始像素中自动学习并提取有用的层次化特征表示。


从函数逼近到深度Q学习 🚀

我们之前讨论了值函数逼近的必要性。本节中,我们来看看如何将深度神经网络,特别是CNN,应用于强化学习中的Q学习,即深度Q学习(DQN)。

传统Q学习在表格形式下工作良好,但无法处理像雅达利游戏像素这样的高维状态。DQN使用深度神经网络来近似Q函数:Q(s, a; w)

Q学习更新规则的核心是:
w ← w + α * [ (r + γ * max_a‘ Q(s‘, a‘; w)) - Q(s, a; w) ] * ∇_w Q(s, a; w)

然而,直接将神经网络与Q学习结合会遇到两大问题:

  1. 样本相关性:连续的状态转移样本是高度相关的,不符合监督学习样本独立同分布的假设。
  2. 非平稳目标:要拟合的Q目标值本身随着网络参数 w 的更新而不断变化,导致训练不稳定。

DQN的核心创新:经验回放与固定Q目标 ⚙️

为了解决上述问题,DQN引入了两项关键技术:

1. 经验回放

  • 方法:智能体将经历过的状态转移元组 (s, a, r, s‘) 存储在一个固定大小的回放缓冲区中。训练时,随机从缓冲区中采样一小批(minibatch)经验来进行Q学习更新。
  • 作用:打破了样本间的相关性,提高了数据利用率,使更新更接近独立同分布。

2. 固定Q目标

  • 方法:使用两个网络。一个主网络(参数 w)用于选择动作和更新。另一个目标网络(参数 w-)用于计算Q学习目标中的 max_a‘ Q(s‘, a‘; w-)。目标网络的参数定期(例如每N步)从主网络复制,在间隔期内保持固定。
  • 作用:在一段时间内稳定了学习目标,缓解了非平稳性问题,提高了训练的稳定性。

以下是DQN训练流程的简要步骤:

  1. 初始化主网络和目标网络,清空回放缓冲区。
  2. 根据当前策略(如ε-greedy)与环境交互,收集经验并存入缓冲区。
  3. 从缓冲区随机采样一个minibatch的经验。
  4. 使用目标网络计算Q目标值:y_j = r_j + γ * max_a‘ Q(s‘_j, a‘; w-)
  5. 计算主网络的预测值与目标值之间的均方误差损失。
  6. 对损失执行随机梯度下降,更新主网络参数 w
  7. 每隔C步,将主网络参数复制到目标网络:w- ← w
  8. 重复步骤2-7。

DQN的改进与扩展 🔧

基本的DQN取得了成功,但后续研究提出了许多改进方法。以下是三个重要的扩展:

1. 双DQN

  • 思想:解决Q学习中固有的“最大化偏差”问题。在计算目标值时,使用主网络来选择动作,使用目标网络来评估该动作的价值。
  • 目标公式y_j = r_j + γ * Q(s‘_j, argmax_a‘ Q(s‘_j, a‘; w); w-)

2. 优先经验回放

  • 思想:不是均匀地从回放缓冲区采样,而是根据经验的“TD误差”(即 |y - Q(s, a; w)|)赋予其不同的采样优先级。误差越大,优先级越高。
  • 作用:让网络更频繁地从“意想不到”或“信息量大”的经验中学习,可以加速收敛并提升性能。

3. 竞争网络结构

  • 思想:将Q网络分解为两个流:一个估计状态价值 V(s),另一个估计动作优势 A(s, a)。最后将两者组合得到Q值:Q(s, a) = V(s) + A(s, a) - mean_a(A(s, a))
  • 作用:这种结构有助于网络更清晰地学习哪些状态是好的,以及在一个状态下各个动作的相对好坏,在某些任务上表现更优。

总结 🎯

本节课我们一起学习了深度强化学习的基础。

  • 我们首先回顾了深度神经网络作为强大函数逼近器的原理。
  • 接着,我们了解了卷积神经网络如何利用局部连接和权重共享高效处理图像数据。
  • 然后,我们深入探讨了深度Q学习(DQN),它通过深度神经网络来近似Q函数,以解决高维状态空间问题。
  • 我们重点分析了DQN的两大支柱:经验回放固定Q目标,它们分别用于打破样本相关性和稳定学习目标。
  • 最后,我们简要介绍了DQN的几种有效改进:双DQN优先经验回放竞争网络结构

这些技术共同使得智能体能够直接从像素输入中学习玩转复杂的雅达利游戏,标志着深度强化学习发展的重要里程碑。在接下来的实践中,你将有机会亲自实现并体验这些算法。

课程 P7:模仿学习 🧠

在本节课中,我们将学习模仿学习的基本概念、方法及其在强化学习中的应用。模仿学习旨在通过观察专家演示来学习策略或推断奖励函数,从而在复杂环境中实现高效学习。


概述 📋

我们首先回顾了深度Q网络(DQN)及其扩展,然后探讨了模仿学习的核心思想。模仿学习主要分为两类:行为克隆和逆强化学习。我们将详细讨论这两种方法,并分析它们在大状态空间中的应用和挑战。


DQN回顾与扩展 🔄

上一节我们介绍了DQN及其核心思想。本节中,我们来看看DQN的几个重要扩展。

DQN结合了Q学习和深度神经网络作为函数逼近器。其两个关键算法改进是经验回放和固定Q目标。固定Q目标意味着在更新Q函数时,用于计算目标值的网络权重在一段时间内保持不变,从而为监督学习提供了更稳定的目标。

以下是DQN训练过程的核心步骤:

# 伪代码示例:DQN训练循环
for episode in range(total_episodes):
    state = env.reset()
    for step in range(max_steps):
        # 使用ε-贪婪策略选择动作
        action = epsilon_greedy_policy(state, q_network)
        next_state, reward, done, _ = env.step(action)
        # 将经验存储到回放缓冲区
        replay_buffer.store(state, action, reward, next_state, done)
        # 从回放缓冲区采样小批量经验
        batch = replay_buffer.sample(batch_size)
        # 计算目标Q值(使用固定目标网络)
        target_q = reward + gamma * max(target_network(next_state))
        # 计算当前Q网络的预测值
        current_q = q_network(state)[action]
        # 计算损失并更新Q网络
        loss = mse_loss(current_q, target_q)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        # 定期更新目标网络
        if step % target_update_freq == 0:
            target_network.load_state_dict(q_network.state_dict())
        state = next_state
        if done:
            break

DQN的主要扩展

以下是DQN的三个重要扩展方法:

  1. 双DQN:旨在解决最大化偏差问题。它使用两个网络:一个用于选择动作,另一个用于评估动作的价值。这可以通过定期切换两个网络的角色来实现,从而更快地传播信息。
  2. 优先经验回放:根据时序差分误差的大小对经验回放缓冲区中的样本进行优先级排序。误差越大的样本被采样的概率越高,从而加速学习。
  3. 竞争网络架构:将Q函数分解为状态价值函数和优势函数,分别用不同的网络分支进行学习。这有助于网络学习到与状态价值和动作优势相关的不同特征。

这些扩展方法通常可以叠加使用,从而在性能上获得累加性的提升。


模仿学习简介 👥

在复杂或稀疏奖励的环境中,传统的强化学习方法可能需要大量交互数据。模仿学习提供了一种替代方案,即通过观察专家演示来学习策略。

问题设定

模仿学习的问题设定通常如下:

  • 已知:状态空间、动作空间、转移模型(有时未知)、一组专家演示轨迹。
  • 未知:奖励函数。
  • 目标:从演示中学习一个策略(行为克隆)或推断出奖励函数(逆强化学习)。

行为克隆 🤖

行为克隆是最简单的模仿学习方法,它将学习策略视为一个标准的监督学习问题。

方法

我们定义一个策略类别(如神经网络),并将专家演示中的状态-动作对作为训练数据,学习一个从状态到动作的映射。

挑战:误差累积

在标准的监督学习中,我们假设数据是独立同分布的。然而,在强化学习环境中,智能体的动作会影响其访问到的状态分布。

核心问题:如果学习到的策略在某个状态下做出了与专家不同的动作,它可能会进入一个在训练数据中从未见过的新状态。在这个新状态下,策略由于缺乏相关数据,很可能再次犯错。这种误差会不断累积,导致性能急剧下降。

数学描述:假设单步预测错误率为 ε。在T步中,传统监督学习的期望错误数为 O(εT)。而在序列决策中,由于误差累积,期望错误数可能高达 O(εT²)

解决方案:数据集聚合

为了缓解分布不匹配问题,DAgger算法被提出。其核心思想是迭代地收集数据并重新训练策略。

以下是DAgger算法的主要步骤:

  1. 使用初始的专家演示数据训练一个策略。
  2. 使用当前策略与环境交互,收集轨迹。
  3. 对于轨迹中的每一个状态,询问专家应该采取什么动作,并将这些新的(状态,专家动作)对加入到数据集中。
  4. 用增广后的数据集重新训练策略。
  5. 重复步骤2-4。

这种方法能确保训练数据覆盖到策略实际访问到的状态分布,从而减少分布不匹配。然而,它需要专家能够持续提供在线反馈,这在实践中可能成本很高。


逆强化学习 🔍

逆强化学习的目标是从专家演示中推断出潜在的奖励函数。一旦获得奖励函数,就可以使用任何强化学习算法来求解最优策略。

特征匹配与学徒学习

在许多工作中,奖励函数被假设为状态的线性函数:R(s) = w·φ(s),其中 φ(s) 是状态的特征向量,w 是权重。

在这种设定下,一个策略 π 的价值函数可以重写为:
V^π = E[Σ γ^t R(s_t)] = w · E[Σ γ^t φ(s_t)] = w · μ(π)
其中,μ(π) 被称为策略 π特征期望,即折扣加权的状态特征访问频率。

关键洞察:如果两个策略的特征期望非常接近,那么对于任何线性奖励函数 w,它们的价值也会非常接近。

因此,学徒学习的目标转变为:寻找一个策略,使其特征期望 μ(π) 与专家策略的特征期望 μ(π_E) 尽可能接近。这避免了直接求解可能不唯一的奖励函数 w

主流方法

以下是两种主流的逆强化学习方法:

  1. 最大熵逆强化学习:在满足与专家特征期望匹配的约束下,选择熵最大的概率分布。这相当于做出最少的假设,仅保证与观测数据一致。
  2. 生成对抗模仿学习:使用生成对抗网络的思想。一个生成器(策略)试图生成与专家演示相似的轨迹,一个判别器试图区分生成的轨迹和专家轨迹。策略的训练目标是“欺骗”判别器,使其无法区分两者。这本质上是在最小化生成轨迹与专家轨迹之间的分布差异,无需显式定义特征期望。

总结 🎯

本节课我们一起学习了模仿学习的核心内容:

  • 行为克隆:将模仿学习视为监督学习,但存在误差累积和分布不匹配的挑战。DAgger算法通过迭代查询专家来缓解这一问题。
  • 逆强化学习:旨在从演示中推断奖励函数。通过特征匹配或生成对抗训练,我们可以学习到一个能再现专家行为的策略,而无需显式获得唯一的奖励函数。

模仿学习在数据昂贵或安全至上的场景中非常实用,能够利用专家知识有效引导智能体学习。然而,如何超越专家演示的性能,以及如何安全地将模仿学习与在线探索结合,仍然是重要的开放问题。


课程 P8:策略梯度方法 I 🎯

在本节课中,我们将要学习策略梯度方法。这是一种直接对策略进行参数化并优化的强化学习方法。我们将从策略搜索的基本概念开始,讨论为何需要随机策略,并推导出策略梯度定理的核心公式。最后,我们将介绍一个经典算法——REINFORCE。


概述

强化学习的主要目标是让智能体学会做出好的决策。我们之前讨论过基于价值函数的方法(如Q-learning)和模仿学习。本节课,我们将转向另一种强大的方法:策略搜索。这种方法直接对策略本身进行参数化,并通过优化这些参数来寻找最佳策略。

与基于价值的方法相比,策略搜索方法能更自然地融入领域知识,在处理连续或高维动作空间时通常更有效,并且可以学习随机策略。然而,它们通常只能保证收敛到局部最优解。


为何需要策略搜索与随机策略?

上一节我们介绍了基于价值函数和模仿学习的方法。本节中,我们来看看直接优化策略的动机,以及为何有时随机策略比确定性策略更优。

在表格型马尔可夫决策过程中,总是存在一个确定性的最优策略。因此,在理想化的表格设定下,我们不需要随机策略。

然而,在现实世界的许多问题中,情况并非如此。以下是两个需要随机策略的关键场景:

  1. 对抗性环境(如“石头剪刀布”):在对抗性环境中,如果智能体采用确定性策略,对手很容易利用并击败它。一个均匀的随机策略(如以1/3的概率出石头、剪刀或布)则是最优的,因为它无法被对手预测和利用。
  2. 部分可观测环境(如“别名网格世界”):当智能体无法仅凭当前观测完全确定自身状态时(即存在状态“别名”),确定性策略可能导致智能体卡在次优行为中。随机策略允许智能体进行探索,从而有更高概率找到通往高奖励状态的路径。

因此,当环境具有对抗性或部分可观测性时,随机策略往往能获得比确定性策略更高的期望回报。


策略参数化与优化目标

既然我们决定直接对策略进行参数化,那么具体该如何做呢?

我们将策略表示为 (\pi_\theta(a|s)),其中 (\theta) 是参数向量。我们的目标是找到能最大化某个性能指标 (J(\theta)) 的参数 (\theta)。在分幕式任务中,一个常见的目标是最大化起始状态的期望折扣回报

[
J(\theta) = V^{\pi_\theta}(s_0) = \mathbb{E}{\tau \sim \pi\theta} \left[ \sum_{t=0}^{T-1} \gamma^t r_t \right]
]

其中,(\tau = (s_0, a_0, r_0, s_1, a_1, r_1, ...)) 表示一条轨迹,(\tau \sim \pi_\theta) 表示轨迹由策略 (\pi_\theta) 生成。

这本质上是一个优化问题:(\theta^* = \arg\max_\theta J(\theta))。


策略梯度定理

为了优化 (J(\theta)),我们需要计算其关于参数 (\theta) 的梯度 (\nabla_\theta J(\theta))。策略梯度定理为我们提供了这个梯度的计算公式,而且它不需要知道环境动力学模型(即状态转移概率 (P(s'|s,a)))。

以下是推导的核心步骤:

  1. 将期望回报写成轨迹概率和轨迹回报乘积的和:
    [
    J(\theta) = \sum_\tau P(\tau|\theta) R(\tau)
    ]
  2. 计算梯度,并运用对数导数技巧 (\nabla_\theta P(\tau|\theta) = P(\tau|\theta) \nabla_\theta \log P(\tau|\theta)):
    [
    \nabla_\theta J(\theta) = \sum_\tau P(\tau|\theta) \nabla_\theta \log P(\tau|\theta) R(\tau) = \mathbb{E}{\tau \sim \pi\theta} \left[ \nabla_\theta \log P(\tau|\theta) R(\tau) \right]
    ]
  3. 展开轨迹概率 (P(\tau|\theta) = \mu(s_0) \prod_{t=0}^{T-1} \pi_\theta(a_t|s_t) P(s_{t+1}|s_t, a_t)),并取对数:
    [
    \log P(\tau|\theta) = \log \mu(s_0) + \sum_{t=0}^{T-1} \left[ \log \pi_\theta(a_t|s_t) + \log P(s_{t+1}|s_t, a_t) \right]
    ]
  4. 计算梯度时,只有 (\log \pi_\theta(a_t|s_t)) 项与 (\theta) 有关。因此:
    [
    \nabla_\theta \log P(\tau|\theta) = \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t)
    ]
  5. 代入梯度表达式,并利用时间结构进行重组,最终得到策略梯度定理的一个常见形式:
    [
    \nabla_\theta J(\theta) = \mathbb{E}{\tau \sim \pi\theta} \left[ \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t) G_t \right]
    ]
    其中,(G_t = \sum_{k=t}^{T-1} \gamma^{k-t} r_k) 是从时刻 (t) 开始的回报

这个公式非常强大:我们只需要能够计算策略的对数梯度 (\nabla_\theta \log \pi_\theta(a|s)),并通过采样轨迹来估计期望值,而无需知道环境如何转移状态。


策略参数化的常见形式

为了计算 (\nabla_\theta \log \pi_\theta(a|s)),我们需要为策略选择一个具体的、可微的参数化形式。以下是三种常见的选择:

以下是几种常见的策略参数化形式及其得分函数:

  1. Softmax策略(适用于离散动作空间)
    [
    \pi_\theta(a|s) = \frac{e{\phi(s,a)\top \theta}}{\sum_{a'} e{\phi(s,a')\top \theta}}
    ]
    其得分函数为:
    [
    \nabla_\theta \log \pi_\theta(a|s) = \phi(s,a) - \mathbb{E}{a' \sim \pi\theta(\cdot|s)}[\phi(s,a')]
    ]

  2. 高斯策略(适用于连续动作空间)
    [
    a \sim \mathcal{N}(\mu(s), \sigma^2), \quad \mu(s) = \phi(s)^\top \theta
    ]
    其得分函数为:
    [
    \nabla_\theta \log \pi_\theta(a|s) = \frac{(a - \mu(s)) \phi(s)}{\sigma^2}
    ]

  3. 深度神经网络策略:使用神经网络将状态映射到动作概率分布(离散)或动作分布参数(连续),通过自动微分计算梯度。


REINFORCE 算法

基于策略梯度定理,我们可以得到一个最简单的策略梯度算法——REINFORCE(蒙特卡洛策略梯度)。

REINFORCE 算法流程如下:

  1. 随机初始化策略参数 (\theta)。
  2. 循环(对于每一幕):
    a. 根据当前策略 (\pi_\theta) 采样一条轨迹 (\tau = (s_0, a_0, r_0, ..., s_{T-1}, a_{T-1}, r_{T-1}))。
    b. 对于轨迹中的每一步 (t = 0, ..., T-1):
    i. 计算从 (t) 开始的回报 (G_t = \sum_{k=t}^{T-1} \gamma^{k-t} r_k)。
    ii. 更新参数:(\theta \leftarrow \theta + \alpha \gamma^t G_t \nabla_\theta \log \pi_\theta(a_t|s_t))。
    (注:(\gamma^t) 项有时被吸收到学习率或回报的计算中,具体形式可能略有不同。)
  3. 返回最终参数 (\theta)。

该算法本质上是使用蒙特卡洛方法估计梯度,然后执行梯度上升。它是一种无偏但方差可能较高的估计方法。


总结

本节课中我们一起学习了策略梯度方法的基础知识。

  • 我们首先了解了策略搜索的动机:它可以直接参数化策略,便于融入领域知识,并能有效处理连续动作空间和部分可观测环境。
  • 我们认识到,在对抗性环境部分可观测环境中,随机策略往往比确定性策略更优。
  • 我们推导了强化学习中至关重要的策略梯度定理,它表明性能目标的梯度可以表示为策略对数梯度与回报乘积的期望,且无需环境模型
  • 我们介绍了策略的常见参数化形式,如 Softmax高斯分布神经网络
  • 最后,我们基于定理得到了经典的 REINFORCE 算法,它通过采样整条轨迹的回报来进行蒙特卡洛策略梯度更新。

策略梯度方法为直接优化策略提供了坚实的理论基础。然而,原始的REINFORCE算法方差较高。在接下来的课程中,我们将探讨如何通过引入基线价值函数(即演员-评论家方法)来大幅降低方差,从而得到更稳定、更高效的策略梯度算法。

课程 P9:策略梯度 II 🚀

在本节课中,我们将继续深入探讨策略梯度方法。我们将学习如何通过引入基线(Baseline)和优势函数(Advantage Function)来降低策略梯度估计的方差,并讨论如何通过选择更新步长来保证策略的单调改进。课程内容将涵盖从理论推导到实际算法(如Vanilla Policy Gradient和Actor-Critic方法)的完整流程。


课程安排与反馈 📅

在开始之前,我们先说明一下课程安排。下周一我们将进行期中复习,周三进行期中考试。由于班级人数较多,考试将安排在多个教室进行,具体安排会另行通知。考试时可以携带一页手写笔记。

感谢所有参与课程反馈调查的同学。根据反馈,大约65%的同学认为当前课程节奏合适,27%认为稍快,8%认为稍慢。我们将保持大致相同的节奏。许多同学希望看到更多实际例子和推导过程,我们会在后续课程中增加相关内容。此外,我们会注意提高音量,确保大家都能听清。


策略梯度回顾 🔄

上一节我们介绍了策略搜索的基本概念。策略搜索的核心思想是直接参数化策略,并通过优化策略参数来最大化期望回报。我们有一个参数化的策略 \(\pi_\theta\),其价值函数为 \(V^{\pi_\theta}\)。我们的目标是找到最优参数 \(\theta^*\) 以最大化 \(V^{\pi_\theta}\)

与基于值函数的方法相比,策略梯度方法通常能保证收敛到局部最优解,但不一定是全局最优。然而,在高风险场景中,我们往往更希望策略能单调改进,即每次更新后策略的性能(期望回报)都不下降。


降低方差:基线(Baseline) 📉

在策略梯度估计中,我们使用蒙特卡洛回报 \(G_t\) 来估计梯度,但这种方法方差很高。为了降低方差,我们可以引入一个仅依赖于状态的基线函数 \(b(S_t)\)。新的梯度估计公式为:

\[\nabla_\theta V^{\pi_\theta} \approx \frac{1}{m} \sum_{i=1}^{m} \sum_{t=0}^{T} \left( G_t^{(i)} - b(S_t^{(i)}) \right) \nabla_\theta \log \pi_\theta(A_t^{(i)} | S_t^{(i)}) \]

关键点:只要基线 \(b(S_t)\) 仅是状态的函数(而不是状态和动作的函数),减去它后得到的梯度估计仍然是无偏的。证明的核心在于证明期望值为零:

\[\mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^{T} b(S_t) \nabla_\theta \log \pi_\theta(A_t | S_t) \right] = 0 \]

一个常见且有效的基线选择是状态值函数 \(V^{\pi}(S_t)\),此时 \(G_t - V^{\pi}(S_t)\) 近似于优势函数 \(A^{\pi}(S_t, A_t)\)


Vanilla Policy Gradient 算法 🍦

基于上述思想,我们可以构建基础的策略梯度算法。以下是Vanilla Policy Gradient的步骤:

  1. 初始化:使用参数 \(\theta\) 初始化策略 \(\pi_\theta\),并初始化基线函数 \(b\)(例如,用神经网络近似 \(V^{\pi}\))。
  2. 循环(对于每次迭代 \(i=1,2,...\)):
    • 收集数据:使用当前策略 \(\pi_{\theta_i}\) 收集 \(m\) 条轨迹数据。
    • 计算回报与优势:对于每条轨迹中的每个时间步 \(t\),计算:
      • 回报:\(G_t^{(i)} = \sum_{t'=t}^{T} \gamma^{t'-t} R_{t'}\)
      • 优势估计:\(\hat{A}_t^{(i)} = G_t^{(i)} - b(S_t^{(i)})\)
    • 拟合基线:使用收集到的所有数据 \(\{ (S_t^{(i)}, G_t^{(i)}) \}\),通过最小化平方误差来更新基线函数 \(b\),使其逼近 \(V^{\pi_{\theta_i}}\)
    • 更新策略:使用估计的梯度更新策略参数:

      \[\theta_{i+1} \leftarrow \theta_i + \alpha \frac{1}{m} \sum_{i=1}^{m} \sum_{t=0}^{T} \hat{A}_t^{(i)} \nabla_\theta \log \pi_\theta(A_t^{(i)} | S_t^{(i)}) \]

这个算法框架是许多更高级策略梯度算法的基础。


演员-评论家(Actor-Critic)方法 🎭

Vanilla Policy Gradient 使用蒙特卡洛回报 \(G_t\),这是无偏但高方差的。我们可以用值函数估计(评论家)来替代 \(G_t\),形成演员-评论家框架。

在演员-评论家方法中:

  • 演员(Actor):参数化的策略 \(\pi_\theta\),负责选择动作。
  • 评论家(Critic):参数化的值函数 \(V_w(S)\)\(Q_w(S, A)\),负责评估状态或状态-动作对的价值。

梯度估计公式可以写为:

\[\nabla_\theta V^{\pi_\theta} \approx \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^{T} \left( Q_w(S_t, A_t) - b(S_t) \right) \nabla_\theta \log \pi_\theta(A_t | S_t) \right] \]

其中,\(Q_w(S_t, A_t)\) 可以由评论家估计,\(b(S_t)\) 通常也由评论家(如 \(V_w(S_t)\))提供。此时,\(Q_w(S_t, A_t) - V_w(S_t)\) 直接估计了优势函数。

权衡:我们可以使用不同的目标来训练评论家,在偏差和方差之间进行权衡:

  • TD(0) / 1步回报\(\hat{G}_t = R_t + \gamma V_w(S_{t+1})\)。偏差较低,方差较低。
  • 蒙特卡洛回报\(\hat{G}_t = \sum_{t'=t}^{T} \gamma^{t'-t} R_{t'}\)。无偏,方差高。
  • n步回报\(\hat{G}_t = \sum_{t'=t}^{t+n-1} \gamma^{t'-t} R_{t'} + \gamma^n V_w(S_{t+n})\)。介于两者之间,通过调整 \(n\) 来平衡。

保证单调改进与步长选择 🚶‍♂️

得到梯度方向后,我们需要决定更新步长 \(\alpha\)。在强化学习中,步长选择尤为重要,因为糟糕的更新可能导致策略性能急剧下降,并且由于新策略用于收集后续数据,可能陷入局部最优而无法恢复。

我们的目标是实现单调改进\(V^{\pi_{i+1}} \geq V^{\pi_i}\)

我们可以通过构建一个替代目标函数 \(L_{\pi}(\tilde{\pi})\) 来分析。该函数在旧策略 \(\pi\) 的数据下是可计算的,并且满足:

  1. \(L_{\pi}(\pi) = V^{\pi}\)
  2. \(\pi\)\(\tilde{\pi}\) 足够接近时,\(V^{\tilde{\pi}} \geq L_{\pi}(\tilde{\pi}) - C \cdot D_{KL}(\pi || \tilde{\pi})\),其中 \(C\) 是一个常数,\(D_{KL}\) 是KL散度。

因此,如果我们通过优化 \(L_{\pi}(\tilde{\pi})\) 同时约束 \(D_{KL}(\pi || \tilde{\pi})\) 来更新策略,就可以保证真实的价值函数 \(V^{\tilde{\pi}}\) 不会下降。这引出了像信任区域策略优化(TRPO)近端策略优化(PPO) 这类现代策略梯度算法,它们通过不同的方式约束策略更新的幅度,从而实现稳定、单调的改进。


总结 🎯

本节课我们一起深入学习了策略梯度方法的高级主题:

  1. 基线(Baseline):通过减去一个仅依赖于状态的基线函数,可以在不引入偏差的前提下,有效降低策略梯度估计的方差。最优基线通常是状态值函数 \(V^{\pi}(S_t)\)
  2. Vanilla Policy Gradient:提供了策略梯度算法的一个基础而完整的实现模板。
  3. 演员-评论家(Actor-Critic)框架:通过引入一个独立的评论家网络来估计值函数或优势函数,替代高方差的蒙特卡洛回报,提高了样本效率。我们讨论了在TD估计和蒙特卡洛估计之间的权衡。
  4. 单调改进与步长控制:理解了在策略梯度中谨慎选择更新步长的重要性。介绍了通过构建替代目标函数并约束策略变化(如KL散度)来保证单调改进的理论基础,这为理解更高级的算法(如TRPO、PPO)打下了基础。

掌握这些概念,你就能理解如何构建更稳定、更高效、更适合高风险应用的策略梯度强化学习算法。

posted @ 2026-02-05 08:54  绝不原创的飞龙  阅读(1)  评论(0)    收藏  举报