跳转至

强化学习完整指南

适用人群:希望理解序列决策、深度强化学习和 RLHF 的学习者 前置要求:掌握机器学习基础,理解概率、期望、梯度和神经网络 最后更新:2026-07-20


1. 强化学习是什么:在交互中学习的范式

1.1 一个贯穿全篇的比喻

想象一个刚出生的婴儿学习走路的过程。没有人给他一本"走路操作手册",也没有标注了"这个动作对,那个动作错"的数据集。婴儿通过不断地尝试——迈出一步、摔倒、再爬起来、再尝试——从与物理世界的反复交互中,逐渐摸索出保持平衡和移动身体的诀窍。每一次成功迈步带来的愉悦感,每一次摔倒带来的不适感,都在塑造他下一次的行为选择。

这就是强化学习的核心意象。一个智能体(Agent) 在一个环境(Environment) 中持续行动,环境根据智能体的行为给出奖励信号(Reward),智能体的目标是找到一个行为策略,使得长期获得的累积奖励尽可能大。没有明确的规则,没有标注好的示例,只有行动、反馈、调整这个反复循环的过程。

这与监督学习和无监督学习形成了鲜明的对比。监督学习依赖大量带标签的数据,相当于"有老师手把手教";无监督学习从无标签数据中自发发现结构,相当于"独立观察世界找规律";强化学习则更接近真实世界中学习技能的方式——通过试错与反馈,在互动中逐步掌握复杂的行为策略。

1.2 强化学习适合解决什么问题

并不是所有问题都适合用强化学习来解决,搞清楚适用边界非常重要。强化学习最适合的场景有几个共同特征:问题本质上是一个序列决策过程,当前的行动不仅影响即时奖励,还影响未来的状态;环境存在一定的延迟反馈,好或坏的结果不是立竿见影,而是要到很久之后才显现;问题空间复杂到无法枚举所有可能,规则无法预先写死;同时存在一个可以进行大量试验的环境(真实环境或仿真器)。

游戏是强化学习最经典的应用场景,因为游戏天然提供了一个可以反复试验的仿真环境,奖励信号(分数、胜负)明确,而且不用担心试验带来真实代价。围棋、象棋、星际争霸、各种 Atari 游戏,都是强化学习展现能力的舞台。机器人控制是另一个主要方向——让机械臂学习抓取物体、让四足机器人学习行走、让无人机学习飞行,这些任务的共同特点是控制策略极其复杂,几乎不可能手工编写,但通过与物理仿真器的大量交互可以自动学习。

1.3 强化学习的独特挑战

强化学习之所以难,有几个监督学习不会遇到的根本性挑战。第一是延迟奖励问题:一盘棋下了两百步,最后才知道输赢,那么中间哪些步骤是好的,哪些是坏的?这个把最终奖励归因到具体行动的问题,被称为"信用分配(Credit Assignment)",是强化学习中最困难的问题之一。第二是稀疏奖励问题:在很多真实任务中,奖励信号极其稀少,智能体要在茫茫的动作空间中随机探索很久才能第一次碰到奖励,学习效率极低。第三是探索与利用的权衡,这个问题重要到值得用一整章来讲,放在后面详细讨论。


2. 马尔可夫决策过程:为问题建立数学框架

强化学习问题通常被形式化为马尔可夫决策过程(Markov Decision Process,MDP),这是理解几乎所有强化学习算法的数学基础。MDP 由四个核心要素构成,把它们搞清楚,就把握了强化学习问题的骨架。

状态(State) 是对环境当前情况的描述,是智能体做决策时所拥有的信息。在围棋中,状态是棋盘上所有棋子的位置;在机器人控制中,状态是机器人各关节的角度和角速度;在股票交易中,状态可能是最近 N 天的价格走势和各种技术指标。状态的定义直接影响学习的难度和效果——太粗糙的状态让智能体看不清世界,太细节的状态让状态空间爆炸难以学习。

动作(Action) 是智能体在某个状态下可以采取的操作。动作可以是离散的(围棋中的每一个落子位置),也可以是连续的(机器人关节施加的力矩,取值在某个实数区间内)。离散动作和连续动作对应的算法设计有所不同,连续动作空间通常更难处理。

转移函数(Transition Function) 描述在某个状态采取某个动作后,世界会转变到什么新状态——这个转变可能是确定性的,也可能是随机的。现实世界的大多数问题都有随机性:同样的操作,因为外部扰动,每次可能到达稍有不同的状态。

奖励函数(Reward Function) 是整个问题中最需要人工设计的部分。它定义了智能体在某个状态采取某个动作后,能从环境获得的即时反馈——可以是正的(奖励),也可以是负的(惩罚)。奖励函数的设计决定了智能体"想要最大化什么",设计不当会导致智能体以出人意料的方式"钻空子",这是工程实践中的核心难点。

马尔可夫性质(Markov Property) 是 MDP 框架的核心假设:未来的状态转移只依赖于当前状态,而与历史状态无关。用一句话说就是"当前状态包含了预测未来所需要的全部信息",历史已经被压缩进当前状态里了。这个假设在很多实际问题中是合理的,但并非总是成立——比如扑克游戏中其他玩家手牌是隐藏的,当前可见的牌面并不包含预测所需的全部信息。当马尔可夫性质不满足时,问题变成了部分可观测马尔可夫决策过程(POMDP),处理起来复杂得多。


3. 回报与折扣:短视与远见的权衡

强化学习的目标不是最大化某一步的即时奖励,而是最大化累积奖励——整个交互序列中获得的所有奖励的总和。但"总和"本身也有微妙的地方:当未来无限延伸时,简单相加可能会无限发散;更重要的是,同样一块钱,现在得到和一年后得到,价值是不一样的。

这引入了折扣因子(Discount Factor,通常写作 γ,gamma) 的概念。折扣因子是一个介于 0 到 1 之间的数,用来对未来的奖励打折扣:距离当前越远的奖励,折扣越多。用折扣加权后的所有未来奖励之和,叫做回报(Return),这才是强化学习真正想最大化的量。

折扣因子的大小反映了智能体的"时间偏好"。当 γ 接近 0 时,智能体极度短视,几乎只关心立即的奖励,完全忽视长远后果——这样的智能体可能为了眼前的小奖励而放弃未来的大收益。当 γ 接近 1 时,智能体非常有远见,把未来的奖励看得几乎和即时奖励一样重要——但过于重视遥远的未来会让学习信号非常稀释,算法收敛变慢。实践中,γ 通常取 0.99 左右,在"有远见"和"学习稳定"之间取得平衡。

折扣还有一个纯数学上的好处:只要 γ < 1,即使奖励序列无限延伸,折扣回报也是有限的,不会发散。这让我们可以合理地定义和优化"无限时间步"问题上的累积奖励。


4. 价值函数:评估状态与行动的好坏

学会评估一个状态或一个行动的"长期价值",是强化学习的核心能力。这个评估是通过价值函数(Value Function) 来实现的。

状态价值函数 V(s) 表示:从状态 s 出发,按照某个策略行动,未来能期望获得多少折扣累积回报。直觉上,V(s) 是对"当前所处局面有多好"的一个量化评估。如果你在围棋中处于必赢的局面,V(s) 应该很高;如果处于必败的局面,V(s) 应该很低;开局平衡时,V(s) 大约等于一个中等值。

动作价值函数 Q(s, a),也常被称为 Q 函数,则更细致一步:它表示在状态 s 下采取动作 a,然后按照某个策略继续行动,未来能期望获得多少折扣累积回报。Q(s, a) 是对"在当前局面下,采取这个特定行动有多好"的评估,它比 V(s) 包含了更多信息,因为它显式地评估了具体行动的价值。Q 函数在很多强化学习算法中处于核心地位,直接从 Q 函数推导出最优策略非常简单:在每个状态下,选择 Q 值最高的那个动作就是了。

优势函数(Advantage Function)A(s, a) 是 Q(s, a) 与 V(s) 的差值,衡量的是"在状态 s 下采取动作 a,比按照平均策略行动好多少"。如果 A(s, a) 为正,说明动作 a 比平均水平好;为负则说明比平均水平差。优势函数在策略梯度方法中非常有用,因为它描述了"行动 a 相对于基准的相对好坏",用它来更新策略比直接用 Q 函数方差更小、学习更稳定。

价值函数满足一个极其重要的递推关系,叫做 Bellman 方程。它的核心思想是:一个状态的价值,等于在该状态采取动作后立即获得的奖励,加上下一个状态价值的折扣期望。这个递推关系是动态规划、Q-Learning 等大量算法的数学基础——你不需要从头到尾把所有未来回报加起来,只需要知道"下一步的价值"就能推算"当前的价值",大大简化了计算。


5. 策略:智能体的行为准则

策略(Policy) 是智能体的"大脑",定义了在每个状态下应该采取什么动作。所有强化学习算法的终极目标,都是找到一个最优策略——在任何状态下都能做出使长期累积回报最大化的决策。

策略可以是确定性的,即在每个状态下总是选择同一个动作,可以写成一个从状态到动作的函数;也可以是随机性的,在每个状态下给出所有动作的概率分布,实际行动时按这个分布采样。随机策略在探索阶段非常有用——通过给每个动作分配非零概率,智能体能够自然地探索不同的可能性,而不是永远重复同一条路。

在强化学习的算法体系中,存在一个重要的分类维度:基于价值(Value-Based) 的方法和基于策略(Policy-Based) 的方法。基于价值的方法不直接学习策略,而是学习价值函数(Q 函数),然后从价值函数推导出最优动作。基于策略的方法则直接参数化和优化策略本身,把策略表达成一个含参数的函数(或神经网络),直接调整参数让策略越来越好。两种路线各有优劣,也可以结合起来,这就是 Actor-Critic 架构的出发点。


6. 探索与利用:强化学习最核心的两难

如果你在一座陌生城市,想找到最好的餐厅,你面临一个选择:你可以去你已经知道的还不错的那家,保证这顿饭不会太差(利用,Exploitation);或者你可以去探索一家从未尝试过的餐厅,可能踩雷,也可能发现惊喜(探索,Exploration)。

这个日常困境在强化学习中以更尖锐的形式出现。智能体在任何时刻都要做这个选择:是继续执行目前认为最好的策略(利用已有知识获得确定的奖励),还是尝试新的、没有充分探索过的动作(可能带来更好的发现,但也承担风险)。

这个两难的尖锐之处在于:如果智能体只做利用,它会快速陷入局部最优——永远重复它第一次偶然发现的还算不错的策略,从不知道还存在更好的可能性。就像那个只去一家餐厅的人,永远不知道隔壁还有一家米其林三星。但如果智能体只做探索,它则无法把学到的经验转化为收益,浪费大量时间在已经知道不好的选项上。

最简单的平衡策略叫做 ε-greedy(ε-贪心):绝大多数时候(概率为 1-ε)选择当前估计价值最高的动作(贪心行动),但有一小概率 ε 随机选择一个动作来探索。ε 的取值随着训练进展逐步减小——早期大量探索,后期逐步收敛到利用。这个策略简单有效,但有点"粗暴",随机探索并没有利用任何关于哪些未探索方向更有希望的信息。

更精巧的探索策略包括:UCB(Upper Confidence Bound,置信上界),它为每个动作维护一个信心上界估计,倾向于探索那些不确定性高的选项——因为高不确定性意味着该选项的真实价值可能远高于当前估计,潜力更大。好奇心驱动探索(Curiosity-Driven Exploration) 则给智能体设计了一个内在的好奇心奖励,对能让环境进入"难以预测状态"的动作给予额外奖励,驱动智能体主动探索未知区域。这类方法在外部奖励极为稀疏的环境中特别有价值。


7. 动态规划:当我们完全了解世界

在展开学习算法之前,有必要先讨论动态规划(Dynamic Programming),因为它提供了强化学习中所有价值迭代思想的理论基础,尽管它本身对真实问题的直接适用性有限。

动态规划的前提是:我们完全知道 MDP 的转移函数和奖励函数,也就是说,我们知道在每个状态采取每个动作后会到达什么状态、获得什么奖励,以及这些转移的概率。有了这个"上帝视角",我们可以直接计算最优价值函数,无需与环境交互。

策略评估(Policy Evaluation) 从任意初始化的价值函数出发,反复应用 Bellman 方程,把每个状态的估计价值更新为"即时奖励加上后继状态价值的折扣期望"。由于 Bellman 方程是一个自洽的方程组,反复迭代会让价值估计逐渐收敛到当前策略下的真实价值函数。

策略改进(Policy Improvement) 则在价值函数已知的情况下,对策略进行改进:在每个状态,选择使 Q 值最大的动作,这一步保证了新策略不会比旧策略差。把策略评估和策略改进交替进行,就得到了策略迭代(Policy Iteration);或者直接在每次价值更新时顺带做策略改进,就得到了价值迭代(Value Iteration)。两者都能收敛到最优策略,区别只在于计算路径。

动态规划的根本缺陷是"需要完整的模型知识"——现实中我们几乎从来不知道精确的转移函数和奖励函数。此外,当状态空间很大时,显式地存储和更新所有状态的价值函数会导致维度灾难。动态规划更多是作为理论参照,真正的学习算法(蒙特卡洛、时序差分)不需要模型知识,从与环境的实际交互中学习。


8. 蒙特卡洛方法:从完整经历中学习

蒙特卡洛方法(Monte Carlo Methods)迈出了从"已知模型的规划"到"从经验中学习"的第一步。它的核心思想非常直接:让智能体与环境进行完整的多次交互(每次从开始到终止称为一个 Episode,情节),收集实际发生的轨迹,然后用这些真实经历来估计价值函数。

为什么要等到一个 Episode 完整结束才更新?因为蒙特卡洛方法计算的是每个状态从当前时刻到 Episode 结束的实际累积回报。在 Episode 结束之前,你不知道实际获得了多少总回报。但一旦 Episode 结束,每个时间步的实际回报都可以从后往前计算出来,然后用这些实际值来更新各状态的价值估计。

蒙特卡洛方法的好处是:它用真实的经历来学习,不依赖任何关于环境的假设,也不需要 Bellman 方程的自举(bootstrapping)——每次更新都基于完整的真实回报,而不是其他估计值的估计。但缺点也显而易见:首先,它必须等待 Episode 结束才能更新,对于那些非常长的或者永不结束的任务(比如持续运行的机器人控制系统)完全不适用;其次,高方差是它的老毛病——实际的轨迹高度随机,同样的起点可能因为环境的随机性和策略的随机性走出完全不同的路径,导致价值估计的方差很大,需要大量采样才能得到稳定的估计。


9. 时序差分学习:边走边学的艺术

时序差分学习(Temporal Difference Learning,TD 学习) 是强化学习中最核心的思想之一,它巧妙地综合了动态规划和蒙特卡洛方法的优点,同时规避了两者的主要缺陷。

TD 学习的核心创新在于:不必等到 Episode 结束才更新,而是在每一步之后就可以更新。更新的依据是什么?用下一步的实际奖励加上下一状态的当前价值估计,来替代蒙特卡洛方法里的"完整实际回报"。这个思想被称为自举(Bootstrapping)——用当前的估计来改进当前的估计,就像用自己的鞋带把自己提起来。

TD 误差(TD Error)是这个框架的核心信号,它衡量"我们对当前状态价值的预测"与"实际发生一步后的经验"之间的差距。如果实际结果比预期更好,TD 误差为正,我们就调高对当前状态的价值估计;如果实际结果比预期更差,TD 误差为负,就调低估计。这个信号在神经科学研究中也有对应物——科学家发现大脑中的多巴胺信号与 TD 误差的计算惊人地相似,这让 TD 学习不仅是一个工程算法,也是理解大脑如何学习的理论框架之一。

TD 学习与蒙特卡洛的另一个核心差异在于偏差-方差权衡。蒙特卡洛使用完整的实际回报,无偏差(直接用真实结果),但高方差(随机轨迹导致估计波动大)。TD 学习使用部分实际奖励加上估计值,引入了偏差(估计值本身不准确),但方差低(不依赖整条轨迹的随机性)。实践中,可以用 n 步 TD 来在两者之间调节:等 n 步之后再用部分实际奖励加剩余的估计,n=1 是标准 TD,n 趋向无穷是蒙特卡洛。TD(λ) 则通过资格迹(Eligibility Trace)机制,把不同 n 值的更新以指数加权的方式结合起来,提供了一个优雅的连续调节旋钮。


10. Q-Learning:经典的表格型强化学习

Q-Learning 是强化学习历史上最具影响力的算法之一,也是理解后续深度强化学习算法的关键桥梁。它是一种离轨策略(Off-Policy) 的 TD 学习方法,直接学习最优 Q 函数,而不管智能体实际在执行什么策略。

离轨策略这个特性非常重要,值得细细解释。强化学习中有两个策略的概念:行为策略(Behavior Policy),决定智能体实际采取什么动作来与环境交互(可以包含大量探索);目标策略(Target Policy),是我们希望最终优化的策略(通常是贪心策略)。在轨策略(On-Policy)方法要求两者一致,即你只能从当前策略生成的经验中学习。离轨策略方法则允许两者不同——Q-Learning 用包含探索的行为策略来收集数据,但更新的目标始终是最优策略的 Q 值,仿佛在说"不管我实际怎么走的,下一步我总假设会贪心地选最优动作"。

这个特性的实际好处是:Q-Learning 可以从任意来源的经验中学习,包括人类示范数据、其他策略生成的数据,甚至可以从存储在经验回放缓冲区(Experience Replay Buffer)里的历史经验中反复学习,极大地提升了数据利用效率。

Q-Learning 在状态和动作空间都比较小时,可以用一张表格(Q-Table)来存储所有状态-动作对的 Q 值,叫做表格型 Q-Learning。但当状态空间变得连续或高维时(比如像素图像),表格就完全不够用了,必须用函数近似来代替——这正是深度 Q 网络(DQN)的出发点。

SARSA 是与 Q-Learning 对应的在轨策略版本。区别在于 SARSA 更新时,下一步的 Q 值使用智能体实际采取的下一个动作,而不是假设会选择最优动作。SARSA 更新的目标与实际执行的策略保持一致,学到的是"当前行为策略下的最优",更新更稳定,但相比 Q-Learning 需要更多数据才能收敛到真正的最优策略。


11. DQN:用神经网络打破规模限制

深度 Q 网络(Deep Q-Network,DQN) 是 DeepMind 在 2013 年提出并在 2015 年完善的里程碑性工作。它把深度神经网络与 Q-Learning 结合起来,让强化学习第一次能够直接从像素输入学习打 Atari 游戏,一个智能体可以从零开始,在几十种不同游戏中都达到人类玩家的水平,只用原始游戏画面作为输入,不需要任何手工特征。

DQN 的核心贡献在于提出了让训练稳定的两个关键技巧。直接把神经网络用于 Q 函数近似面临一个本质困难:Q-Learning 的更新目标本身依赖于 Q 网络自身的输出(下一状态的 Q 值),而 Q 网络的参数在每步更新后都在变化,这相当于在追一个移动的靶子,训练极其不稳定,容易发散。

第一个解决方案是目标网络(Target Network)。DQN 维护两个参数不同的 Q 网络:一个是频繁更新的"在线网络",用于计算当前状态的 Q 值;另一个是参数更新缓慢的"目标网络",用于计算更新目标中下一状态的 Q 值。目标网络每隔固定步数才从在线网络同步一次参数,中间保持固定。这样更新的目标在一段时间内是稳定的,训练稳定性大幅提升。

第二个解决方案是经验回放(Experience Replay)。智能体每次与环境交互产生的经验(状态、动作、奖励、下一状态)被存入一个大容量的缓冲区。每次训练时,从缓冲区中随机采样一批经验来更新网络。随机采样打破了相邻经验之间的时间相关性——如果按顺序用相邻的经验训练,这些经验高度相关,相当于在同一类数据上反复训练,容易过拟合局部模式。随机采样使训练数据更像独立同分布,更符合神经网络训练的假设,稳定性和数据效率都显著提升。经验回放本质上把离轨策略学习变成了对过去大量经验的充分利用。

DQN 之后,大量改进版本相继提出。Double DQN 解决了 Q-Learning 高估 Q 值的问题——标准 Q-Learning 在计算更新目标时,用同一个网络同时选择最优动作和估计该动作的 Q 值,这两步操作相互耦合容易导致系统性高估,Double DQN 把这两步分开,用在线网络选择动作,用目标网络估计价值。Dueling DQN 把 Q 函数的网络结构分成两条并行分支,分别估计状态价值 V(s) 和优势函数 A(s,a),然后合并。这个设计在状态本身的价值比具体动作选择更重要的情况下特别有效,网络可以更高效地学习状态价值,而不必为每个动作单独估计。Prioritized Experience Replay 不再均匀地从经验缓冲区采样,而是根据 TD 误差的大小来优先采样——TD 误差大的经验说明网络对这个转移的预测还很不准确,包含更多可以学习的信息,应该被更频繁地训练。


12. 策略梯度方法:直接优化行为本身

基于价值的方法(Q-Learning、DQN)的策略是隐式的——先学价值函数,再从价值函数推导策略。策略梯度(Policy Gradient) 方法则走了另一条路:直接把策略参数化为一个神经网络,然后用梯度上升直接优化策略的期望累积回报。

这个想法听起来自然,但有一个核心困难:期望累积回报对策略参数的梯度如何计算?累积回报取决于轨迹,而轨迹的随机性来自策略和环境的随机性,期望是在所有可能轨迹上的积分,没有简单的闭合形式。策略梯度定理是解决这个问题的数学工具,它给出了期望回报对策略参数的梯度表达式:梯度等于在轨迹上累积的"动作的对数概率梯度乘以回报"的期望,这个表达式可以用从实际轨迹中采样的方式来无偏估计。

最基础的策略梯度算法叫做 REINFORCE,它让智能体跑完完整的 Episode,对每个时间步,计算实际获得的累积回报,然后用这个回报来加权对应动作的对数概率梯度——如果某个动作最终导致了高回报,就提高它被选中的概率;如果导致了低回报,就降低它的概率。这个更新规则的语义清晰直觉:奖励好的行为,惩罚坏的行为。

但 REINFORCE 有严重的高方差问题。因为回报是从该时间步到 Episode 结束所有实际奖励的总和,受到大量随机因素影响,同样的状态-动作对在不同轨迹中可能对应差异极大的回报,梯度估计方差极高,需要大量样本才能得到稳定的更新方向。引入基准(Baseline) 是降低方差的标准技巧:从回报中减去一个不依赖于动作选择的基准值(通常是状态价值函数 V(s)),这样更新信号变成了优势函数——"比平均好多少",不影响梯度的期望值(无偏),但方差显著降低。

策略梯度方法相比基于价值方法的优势在于:它可以自然处理连续动作空间(直接输出动作的均值和方差,从对应的高斯分布采样);学到的是随机策略,自带探索性;对于某些动作空间的特殊结构,直接优化策略比间接通过价值函数更高效。


13. Actor-Critic:价值与策略的协同进化

价值方法和策略方法各有优劣,Actor-Critic 架构把两者融合在一起,取长补短。顾名思义,Actor-Critic 有两个角色:Actor(演员) 是策略网络,负责决定在每个状态采取什么动作;Critic(评论家) 是价值网络,负责评估 Actor 的行为有多好。

两者协同工作的方式是:Actor 在环境中采取动作,Critic 估计当前状态的价值并计算 TD 误差("你比我预期的好还是差"),Actor 用这个 TD 误差作为更新信号来调整自己的策略——如果 TD 误差为正,说明结果比预期好,Actor 应该提高选择这个动作的概率;如果为负,应该降低。

这种设计的精妙之处在于:Critic 取代了 REINFORCE 里直接用完整实际回报作为更新信号的做法,改用 TD 误差。TD 误差只依赖一步的实际奖励和下一状态的价值估计,方差远低于完整回报,同时不需要等 Episode 结束即可更新,解决了蒙特卡洛方法的两大缺陷。代价是引入了 Critic 估计的偏差,但实践中这个偏差-方差权衡通常值得。

A3C(Asynchronous Advantage Actor-Critic) 是 Actor-Critic 的一个重要实现,用多个并行的 Actor 同时与各自的环境副本交互,收集经验后异步更新共享的 Actor-Critic 网络,天然地打破了样本相关性,同时充分利用多核 CPU 并行加速。A2C(同步版本的 Advantage Actor-Critic) 则改为同步更新,实现更简洁,在 GPU 上的效率往往更好。


14. PPO:工业界的主力算法

近端策略优化(Proximal Policy Optimization,PPO) 是目前工业界和研究界使用最广泛的深度强化学习算法,由 OpenAI 在 2017 年提出。它的设计目标是在保持策略梯度方法的优良性质的同时,解决训练稳定性问题。

策略梯度方法的一个固有困难是步长问题:如果梯度更新步长太大,策略可能在一步之内发生剧烈变化,导致训练崩溃——一个稍微变差的策略会生成更差的数据,数据质量下降进一步导致策略变差,形成恶性循环。步长太小则收敛太慢。在高维参数空间里,找到合适的步长极其困难。

PPO 的解决思路是对策略更新幅度加以限制,确保新策略不会离旧策略太远。它通过一个裁剪目标函数(Clipped Objective) 来实现这一点:计算新策略和旧策略对同一个动作的概率比值,然后把这个比值裁剪到一个区间内(比如 [0.8, 1.2]),超出这个范围的更新会被截断。这等价于在策略空间中设置了一个"信任域",每次更新不能超出这个范围,防止单步大幅度的策略改变。

PPO 的流行原因不仅在于理论上的合理性,更在于它在实践中极易调参、实现简单、适用范围广,在连续控制、离散动作、稀疏奖励等各类任务上都表现稳健。它成为 OpenAI 训练 ChatGPT 的 RLHF 阶段所使用的核心算法,也是大多数机器人强化学习研究的默认基线。


15. 模型基强化学习:在想象中练习

前面讨论的所有方法都属于无模型强化学习(Model-Free RL)——智能体直接从与真实环境的交互中学习,不尝试建立对环境的内部模型。这类方法的优点是不需要对环境做任何假设,适用性广;缺点是数据效率低,需要大量与环境的真实交互,在仿真代价高或真实物理实验代价高的场景(比如真实机器人控制)非常昂贵。

模型基强化学习(Model-Based RL) 走了另一条路:先学习一个环境模型——即从数据中学习状态转移函数和奖励函数的近似——然后在学到的模型内部进行规划,用"想象的交互"来辅助或代替真实的交互。

这个思路的直觉非常自然:人类学习一项新技能时,不完全依赖在现实中反复尝试,而是大量在脑海中进行推演——"如果我这样打,球会到哪里;如果我那样走,对手可能怎么应对"。在想象中的演练代价几乎为零,可以进行远比真实试验多得多的次数。

但建立一个准确的环境模型本身就很难,模型误差在长期规划时会不断累积——每一步的小误差叠加起来,最终的轨迹可能与真实情况相差甚远。如果在一个不准确的模型上过度规划,智能体会针对模型而不是真实环境进行优化,在真实环境中反而表现更差,这个问题被称为模型偏差(Model Bias)

解决这个问题有几种策略。Dyna 架构把无模型更新和模型内规划结合起来:真实环境的每次交互不仅直接更新价值函数,还被用来更新环境模型,然后用这个模型生成"虚拟经验",进一步更新价值函数。真实交互和虚拟经验共同驱动学习,提高数据利用效率。World Model 方法用神经网络学习一个生成式的世界模型,在这个模型的隐空间中进行规划,近年来在视觉控制任务上取得了令人印象深刻的成果,AlphaGo 和 AlphaZero 中的 MCTS(蒙特卡洛树搜索)也可以看成是模型基规划与学习价值函数的结合。


16. 多智能体强化学习:合作与竞争的博弈

现实世界很少是单一智能体的独角戏,更多时候是多个智能体共享同一个环境,相互影响、相互博弈。多智能体强化学习(Multi-Agent Reinforcement Learning,MARL) 研究这种更复杂的场景。

多智能体场景按照智能体之间的关系可以分成几类。完全合作:所有智能体有共同的目标,需要协调配合,比如多个机器人协作完成一个任务,或者多架无人机协同执飞行任务。完全竞争:智能体利益完全对立,一方的收益就是另一方的损失,零和博弈是这类场景的典型形式,围棋和扑克是经典例子。混合:既有合作也有竞争,比如团队对抗游戏,队内成员需要合作,队与队之间需要竞争,这是最接近现实社会结构的场景。

多智能体强化学习面临一些单智能体不会遇到的独特挑战。从单个智能体的视角来看,环境的动态性不仅来自自然随机性,还来自其他智能体的行为变化——其他智能体也在学习和改变策略,整个环境从单个智能体的视角看是非平稳的(Non-Stationary),这违反了大多数强化学习理论收敛性保证所依赖的平稳环境假设。两个强化学习智能体同时训练,可能陷入相互追逐的震荡,永远无法收敛。

信用分配在多智能体场景中更加复杂:当多个智能体共同完成一个任务后获得奖励,如何把功劳分配给每个智能体?某个智能体的行为功劳很难从集体行为的结果中分离出来。通信与信息共享是另一个难题:智能体是否应该共享信息,如何学习有效的通信协议,观察空间是局部的还是全局的……这些问题都影响着系统的整体效果。

AlphaGo 和 AlphaZero 系列在博弈类游戏中的成功,以及 OpenAI Five(用强化学习训练的 Dota 2 五人团队)在大规模复杂多智能体场景下的突破,展示了多智能体强化学习的惊人潜力。


17. 强化学习的奖励设计难题

奖励函数是强化学习的核心,但也是最难设计的部分。设计一个能让智能体学习到我们真正想要的行为的奖励函数,是一个充满艺术性的工程挑战。

稀疏奖励是最常见的困难之一。在很多真实任务中,奖励信号非常稀疏——比如教机器人用手拧开瓶盖,可能只在最终成功时才给奖励,而在此之前的数百次尝试都是一片空白。智能体在这样的环境里几乎像在黑暗中摸索,探索效率极低,收敛极慢甚至根本无法学习。奖励塑形(Reward Shaping) 是一种常见的应对方式,通过添加中间的辅助奖励来引导探索方向——比如对于拧瓶盖任务,手每靠近瓶盖一点就给一点奖励,给出更密集的方向性信号。但奖励塑形需要领域知识,而且设计不当可能产生意想不到的副作用。

奖励黑客(Reward Hacking) 是一个更深层的问题。智能体是高效的优化机器,它会想尽办法最大化给定的奖励函数,但这个奖励函数可能只是我们真实意图的一个不完美代理。如果奖励函数和真实目标之间存在任何裂缝,智能体就可能钻空子,以出人意料的方式达成高奖励,却完全背离了我们的本意。著名的案例:一个被设计来玩赛艇游戏并最大化得分的强化学习智能体,发现原地快速旋转撞击特定道具可以持续获得积分,而不需要去真正赛完一圈——它完美地最大化了奖励,但完全不是我们想要的行为。

这个问题的本质是,当我们设计奖励函数时,我们其实是在用不完美的语言来表达我们想要什么,而智能体会按字面意思执行,而不会理解我们的真实意图。从这个角度理解,强化学习中的奖励设计问题,和 AI 对齐(Alignment)问题有深刻的相通之处——如何让智能系统做我们真正想要它做的事,而不只是做它被奖励去做的事。


18. 从游戏到现实:强化学习的落地挑战

游戏和仿真环境是强化学习的天然沃土——可以无成本地运行数百万次仿真,随时重置,失败没有代价。但当强化学习走出游戏厅,面对真实世界的物理系统时,挑战急剧增加。

样本效率是最突出的挑战。现代深度强化学习算法往往需要数百万甚至数亿次与环境的交互才能学会复杂任务。在仿真中,这些交互可以在数小时内完成。但对于真实机器人,每次交互都需要物理时间,数百万次交互可能意味着几年的机器人运行时间,完全不可行。提升样本效率——让智能体从更少的真实交互中学到更多——是当前强化学习研究的核心议题之一。

仿真到真实的迁移(Sim-to-Real Transfer) 是物理机器人强化学习的主要工程路线:在仿真中训练,然后把学到的策略迁移到真实机器人上。问题在于,无论多精良的仿真都与真实世界存在差距——材质的摩擦系数、关节的惯性、传感器的噪声,仿真中的一切都是简化的近似。这种差距叫做现实差距(Reality Gap),策略在仿真中训练完美,在真实机器人上可能完全失效。

域随机化(Domain Randomization) 是应对现实差距的一种有效策略:在仿真训练中,大幅随机化各种仿真参数(质量、摩擦、延迟、传感器噪声等),让智能体在各种不同的仿真条件下都能工作。这样策略学到的是在广泛条件下鲁棒的行为,真实世界只是这些随机条件中的一种特殊情况,迁移就更容易成功。

安全探索(Safe Exploration) 在真实物理场景中至关重要。强化学习在训练早期大量随机探索,在游戏里最多是游戏角色死掉重来,但在真实机器人上,随机探索可能导致设备损坏、安全事故,甚至伤及人员。如何在安全约束下进行有效探索,是真实场景部署强化学习的关键工程问题。


19. RLHF:强化学习如何对齐大语言模型

基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF) 是近年来让强化学习从游戏走向通用智能系统的最重要应用,它正是 ChatGPT 等大语言模型表现出如此强大对话能力的核心技术之一。

大语言模型在预训练阶段学会了"预测下一个词",能够流畅地续写任何文本,但这并不等于它能生成有用、诚实、无害的回应。预训练模型可能一本正经地编造事实,可能生成冒犯性内容,可能在被要求"续写武器制造指南"时毫不迟疑地执行。RLHF 的使命就是让模型的行为与人类的真实偏好对齐。

RLHF 的流程分三个阶段。第一阶段是监督微调(Supervised Fine-Tuning,SFT):收集高质量的示范数据,让人类专家演示如何对各类问题给出好的回应,然后在这些数据上对预训练模型进行监督学习微调,让模型初步学会有帮助的对话行为。第二阶段是训练奖励模型(Reward Model Training):让模型对同一个问题生成多个回应,由人类标注员对这些回应按照质量进行排序,然后训练一个独立的奖励模型,让它能够预测人类对各种回应的偏好打分。这个奖励模型代替人类,为后续强化学习阶段提供自动化的奖励信号。第三阶段才是强化学习微调:以奖励模型的打分为奖励,用 PPO 等算法对语言模型进行强化学习训练,让模型学会生成奖励模型(以及背后的人类)更喜欢的回应。

RLHF 的局限性也很清晰。奖励模型只是人类偏好的一个近似,智能体会针对这个近似做过度优化,可能导致"讨好评委"而不是真正有用的行为。人类标注员本身的偏好也可能存在偏差、不一致甚至恶意。这些问题让 RLHF 对齐并不完美,但它代表了目前最主流、最成熟的大模型对齐路线。


20. 强化学习的局限与未来方向

强化学习经历了过山车式的发展历程——理论突破带来热情,工程困难带来失望,再被新的突破重新点燃。理性地看待它的局限,和理解它的能力同样重要。

样本效率低是长期的核心痛点。人类学习走路花几个月,但每一次跌倒和站起来都包含了极其丰富的信息,学习效率很高。目前的深度强化学习算法需要数百万次试验才能学会人类孩子几个小时就能掌握的简单技能,差距悬殊。课程学习(Curriculum Learning)——从简单任务开始,逐步增加难度——是提升学习效率的有效手段,模仿了人类教育由浅入深的自然顺序。少样本强化学习(Few-Shot RL)元强化学习(Meta-RL) 则试图让智能体学会"如何快速学习新任务"的元能力,在遇到新任务时能够快速适应,而不是从零开始。

奖励函数的依赖是强化学习能否走向通用智能的关键瓶颈。当前方法几乎所有的成功都依赖于精心设计的奖励函数,但很多真实任务的目标难以用奖励量化。逆向强化学习(Inverse Reinforcement Learning,IRL) 试图从专家行为中反推奖励函数,模仿学习(Imitation Learning) 则直接从示范数据中学习策略,绕过了奖励设计的困难。基础模型驱动的强化学习 是前沿方向——用大语言模型来生成奖励函数的描述或直接作为奖励模型,利用模型存储的世界知识来弥补环境反馈的不足。

推广性(Generalization) 也是当前强化学习的软肋。在特定环境中训练好的策略,往往在环境稍有变化时(物体换个颜色、地形稍有不同、对手换了风格)就显著退化。策略学到的更多是针对特定环境的"记忆",而非可迁移的通用技能。世界模型(World Model) 方向试图让智能体建立对世界的抽象理解,从而实现更好的推广。

尽管挑战重重,强化学习代表的"在交互中学习"这一范式有其独特的魅力和不可替代性。当监督学习和生成式 AI 处理的是静态数据中的模式,强化学习处理的是时间、行动、后果之间的动态关系——这正是智能行为最核心的结构。随着算法、算力和数据三者继续进化,强化学习在机器人、科学发现、个性化决策等领域的潜力,仍然远未被充分挖掘。


21. 核心公式速查

21.1 MDP 与累计回报

马尔可夫决策过程通常写为五元组 \((\mathcal{S},\mathcal{A},P,R,\gamma)\),分别表示状态、动作、状态转移、奖励和折扣因子。时刻 \(t\) 的折扣累计回报为:

\[ G_t=\sum_{k=0}^{\infty}\gamma^kR_{t+k+1},\qquad 0\le\gamma<1 \]

\(\gamma\) 越接近 0,策略越重视即时奖励;越接近 1,越重视长期结果。

21.2 价值函数与 Bellman 方程

状态价值和动作价值定义为:

\[ V^{\pi}(s)=\mathbb{E}_{\pi}[G_t\mid S_t=s] \]
\[ Q^{\pi}(s,a)=\mathbb{E}_{\pi}[G_t\mid S_t=s,A_t=a] \]

最优动作价值满足 Bellman 最优方程:

\[ Q^*(s,a)=\mathbb{E}\left[R_{t+1}+\gamma\max_{a'}Q^*(S_{t+1},a')\mid s,a\right] \]

21.3 时序差分与 Q-Learning

TD 误差为:

\[ \delta_t=R_{t+1}+\gamma V(S_{t+1})-V(S_t) \]

Q-Learning 更新为:

\[ Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\alpha\left[R_{t+1}+\gamma\max_aQ(S_{t+1},a)-Q(S_t,A_t)\right] \]

其中 \(\alpha\) 是学习率。它是离策略算法:行为策略可以探索,更新目标仍使用下一状态的最大动作价值。

21.4 策略梯度与 PPO

策略梯度的核心形式为:

\[ \nabla_\theta J(\theta)=\mathbb{E}_{\pi_\theta}\left[\nabla_\theta\log\pi_\theta(a_t\mid s_t)\,A_t\right] \]

优势函数 \(A_t\) 表示当前动作相对平均水平好多少。PPO 使用裁剪目标限制一次更新幅度:

\[ L^{CLIP}(\theta)=\mathbb{E}_t\left[\min\left(r_t(\theta)A_t,\operatorname{clip}(r_t(\theta),1-\epsilon,1+\epsilon)A_t\right)\right] \]

其中 \(r_t(\theta)=\pi_\theta(a_t\mid s_t)/\pi_{\theta_{old}}(a_t\mid s_t)\)。裁剪不能保证绝对稳定,仍需监控 KL 散度、熵、奖励和价值损失。


22. 延伸阅读

系统课程

书籍推荐

重要论文

  • DQN(2015,DeepMind):《Human-level control through deep reinforcement learning》——第一个证明深度强化学习可以从像素直接学习复杂技能的里程碑工作
  • PPO(2017,OpenAI):《Proximal Policy Optimization Algorithms》——目前工业界最广泛使用的策略梯度算法
  • AlphaGo(2016)/ AlphaZero(2017,DeepMind):强化学习与树搜索结合,在围棋上超越人类顶尖水平的历史性成果
  • RLHF(2022,OpenAI):《Training language models to follow instructions with human feedback》——让 GPT-3 变成 InstructGPT 的核心技术,奠定了大语言模型对齐的主流路线

深度好文


本文档持续维护更新。如有错误或建议,欢迎提交 Issue 或 PR。