1. 从“开卷考试”到“闭卷探索”:理解两种强化学习的根本差异

刚开始接触强化学习的时候,我常常被“有模型”和“无模型”这两个词搞得晕头转向。后来,一个很形象的比喻让我豁然开朗。你可以把 Model-base RL(有模型强化学习) 想象成一场“开卷考试”。在考试前,老师已经把整本教科书(也就是环境的完整模型,包括状态转移概率和即时奖励函数)都发给你了。你的任务就是坐在书桌前,利用这本已知的“教科书”,通过反复演算和推理(比如动态规划),来找到最优的答题策略(最优策略)。整个过程,你不需要真的去参加考试(与环境交互)来获取信息,所有的知识都已经在你手上了。

相反,Model-free RL(无模型强化学习) 则是一场彻头彻尾的“闭卷探索”。你被直接扔进一个完全陌生的考场(环境),手里没有任何参考资料。你唯一能做的,就是不断地去尝试答题(执行动作),然后根据老师给的分数(奖励)来一点点摸索出题目的规律(环境模型)和得高分的技巧(最优策略)。你需要通过大量的试错,从自己走过的每一步(轨迹数据)中总结经验教训。我们熟知的AlphaGo早期版本,在自我对弈中不断学习,就是一个典型的无模型探索过程,它并不知道围棋的全部变化,而是通过海量对局来“感受”棋局的优劣。

所以,最核心的差异就在于:智能体在学习和决策时,是否已知或需要依赖一个对环境的精确数学模型。这个模型主要指两样东西:状态转移概率 P(即“在状态s下执行动作a,有多大几率跳到状态s’”)和奖励函数 R(即“在状态s下执行动作a,能立刻得到多少奖励”)。有模型方法把这两样当作已知条件来用,而无模型方法则完全绕过它们,直接从与环境的交互数据中学习价值函数或策略。

2. 技术实现剖析:预测与控制的双重变奏

理解了根本理念,我们再来看看它们在具体技术实现上是如何分道扬镳的。这主要体现在“预测”和“控制”两个核心环节上。预测,就是评估一个给定策略的好坏(计算价值函数);控制,则是直接寻找那个最好的策略。

2.1 预测篇:动态规划、蒙特卡洛与时序差分

在有模型的世界里,预测的王者是动态规划。因为它知道环境的全部“底牌”(模型),所以它可以进行一种“思维实验”。例如,在计算某个状态的价值时,DP会考虑从这个状态出发,所有可能的动作,以及每个动作可能导致的所有后续状态,并利用已知的转移概率和奖励进行加权平均。这就像你在下棋时,已经知道了对手所有可能的应手及其概率,从而能精确推算当前局面的胜率。经典的策略评估算法就是DP的典型应用,它通过反复迭代贝尔曼期望方程,直到价值函数收敛。

而在无模型的领域,智能体没有“上帝视角”,只能靠“实地考察”。这里主要有两员大将:蒙特卡洛方法时序差分学习

  • 蒙特卡洛:它的哲学是“让事实说话”。要评估一个策略,它就老老实实地用这个策略玩完一整个回合(比如一盘游戏直到结束),得到一条完整的轨迹和总回报,然后用这个实际的总回报来更新轨迹中每个状态的价值。MC必须等到回合结束才能更新,这就像你要等整场考试考完,才知道总分,然后回过头来给每一道题的难度打分。它对间歇性任务(有明确终止状态)很友好,但无法用于持续进行的任务。
  • 时序差分:TD则显得更“心急”和“聪明”一些。它不等回合结束,每走一步就更新一次。它的核心思想是自举——基于现有的、可能不准确的估计,来更新当前的估计。最经典的TD(0)更新公式是:V(S_t) ← V(S_t) + α [R_{t+1} + γV(S_{t+1}) - V(S_t)]。你看,它用下一步状态的估计价值 V(S_{t+1}) 来更新当前状态 V(S_t)。这就像考试时,你每做一道题,就根据对下一道题难度的猜测,来调整对当前题分值的估计。TD方法结合了MC的采样思想和DP的自举思想,是RL中最核心、应用最广泛的理念之一,像Q-learning、DDPG等著名算法都建立在TD之上。

我刚开始用TD和MC做实验时,在一个简单的网格世界问题里,明显能感觉到TD学习速度更快,因为它能即时利用每一步的新信息。而MC虽然更新方差大一些,但最终估计是无偏的,在有些场景下更稳定。

2.2 控制篇:从价值迭代到Q-learning

预测是为了更好的控制。在控制环节,两者的差异更加明显。

有模型的控制算法,如策略迭代价值迭代,其优雅之处在于它们能在“脑海”中完成策略的优化。策略迭代交替进行策略评估(预测)和策略改进;价值迭代则更直接,它迭代更新的是最优价值函数,本质上将策略改进隐式地包含在了贝尔曼最优方程的更新中。因为它们有模型,所以可以精确计算任意状态-动作对的长期价值(Q值),然后简单地选取价值最大的动作即可完成策略改进。这就像你有一张完整的、标注了所有道路通行时间的地图,规划最优路径只是一个计算问题。

无模型的控制则充满了“实干”色彩。由于没有模型,无法直接计算状态价值函数V(s),它们转而直接估计状态-动作价值函数Q(s, a)。因为Q函数直接告诉你“在状态s下做动作a有多好”,找到最大的Q值对应的动作,就是最优动作,完美绕开了对模型知识的依赖。

这里有两个里程碑式的算法:

  • 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}。这导致Sarsa通常会学到更安全、更顾忌环境风险的策略。
  • Q-learning:这是一个“激进派”。它采用异策略学习,即它学习的是一个最优策略(目标策略),但可以用完全不同的策略(如ε-greedy)去探索环境。它的核心更新公式是: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值来更新,而不管实际会执行哪个动作。这使得Q-learning能更直接地逼近最优价值函数,但也可能因为过于乐观而在某些随机环境中产生风险。

在实际编码中,这个差异非常直观。下面是一个超简化的伪代码片段,对比了它们更新Q表时的核心区别:

# Sarsa 更新 (同策略)
next_action = policy(next_state) # 根据当前策略选择下一个动作
td_target = reward + gamma * Q[next_state][next_action]
Q[state][action] += alpha * (td_target - Q[state][action])

# Q-learning 更新 (异策略)
best_next_action = argmax(Q[next_state]) # 找到下一个状态下的最佳动作
td_target = reward + gamma * Q[next_state][best_next_action]
Q[state][action] += alpha * (td_target - Q[state][action])

可以看到,Sarsa的td_target依赖于next_action,而这个动作是遵循可能带探索的策略选出来的;Q-learning则直接使用max值,永远看向“最优可能”。我在训练智能体走迷宫时,如果迷宫里有“悬崖”,Sarsa学到的路径通常会离悬崖边远一些,而Q-learning学到的路径是最短的,但偶尔会因为探索而掉下悬崖。

3. 实战选择指南:何时用有模型?何时用无模型?

理论说得再多,不如实战中如何选型来得实在。选择Model-base还是Model-free,绝不是谁优谁劣的问题,而是是否具备条件代价是否划算的问题。

3.1 拥抱Model-base RL的场景

有模型方法并非过时,它在特定场景下威力巨大。

  • 环境模型已知或易于构建:这是最重要的前提。在一些高度可控的仿真环境中,比如机器人内部的精确动力学仿真、某些棋盘游戏(其规则完全明确且状态转移确定)、或者工业流程控制(其物理化学反应模型已知),我们可以获得或构建出足够精确的环境模型。这时,采用像值迭代这样的有模型方法,可以在仿真中快速计算出最优策略,然后直接部署到现实系统,实现“零样本”或“少样本”迁移。特斯拉在训练其自动驾驶系统时,就大量使用了基于精确物理仿真的有模型方法进行前期策略搜索。
  • 安全性要求极高,试错成本巨大:在医疗、航空航天、精密制造等领域,一次失败的交互可能意味着灾难性的后果。我们绝不能让智能体在真实环境中盲目探索。这时,先在数字孪生或高保真仿真模型(有模型)中进行充分的学习和验证,是唯一可行的路径。比如,训练一个机械臂执行复杂手术动作,必须在仿真中达到万无一失,才能考虑真实应用。
  • 需要大量“脑内”推演和规划:有模型赋予了智能体“前瞻”能力。像蒙特卡洛树搜索(MCTS)这类算法,虽然也依赖模拟,但其核心思想是在决策时,利用模型进行大量快速的前向推演(模拟对局),评估各种行动序列的后果,从而选择最优的一步。AlphaGo/AlphaZero的成功,正是MCTS(利用神经网络作为快速评估模型)与无模型强化学习(策略价值网络)结合的典范,这里模型(神经网络)起到了至关重要的作用。

3.2 转向Model-free RL的场景

而无模型方法,则是当今RL应用的主流,尤其是在复杂、未知的环境中。

  • 环境模型未知、复杂或难以建模:这是无模型方法的主战场。现实世界绝大多数问题都属于此类:游戏(Atari, StarCraft II)、自然语言对话、广告推荐、股票交易(市场模型极其复杂)等。我们无法写出描述Atari游戏《打砖块》中球拍、球和砖块所有物理交互的精确方程。这时候,让智能体通过像素输入直接学习,是更可行的方案。DeepMind的DQN系列工作正是攻克了这一难题。
  • 获取交互数据比构建模型更便宜:很多时候,构建一个精确模型的成本(时间、金钱、专业知识)远远高于让智能体去尝试并收集数据。例如,训练一个聊天机器人,与其费力地为所有对话可能性编写规则(建模),不如让它与大量用户直接对话(无模型学习),从数据中自行摸索对话策略。推荐系统也是如此,用户的点击行为数据海量且易得,而用户兴趣的迁移模型却极难构建。
  • 关注端到端学习,避免模型误差累积:有模型方法存在一个“模型误差”的问题。如果你学习的模型不够准确,那么基于这个错误模型规划出的“最优”策略,在真实环境中可能表现很差。而无模型方法直接学习从状态到动作(或价值)的映射,避免了中间模型误差的累积。在视觉导航任务中,直接从图像像素学习控制指令(无模型),往往比先从图像重建3D地图(建模型),再基于地图规划路径(有模型)更鲁棒。

为了更直观地对比,我将它们的关键特性整理成了下面这个表格:

特性维度Model-base RL (有模型)Model-free RL (无模型)
核心依赖已知的环境模型 (P, R)与环境交互的轨迹数据
样本效率通常非常高。可在仿真中无限采样,不浪费真实资源。通常较低。需要大量真实或仿真交互数据。
计算效率规划过程可能计算量大(如DP遍历所有状态),但一次规划,多次使用。学习过程计算量相对可控(如TD更新),但每次决策可能需重新评估。
可解释性相对较好。有明确的模型,决策过程可追溯(为何选此动作?因为模型说它能达到某高价值状态)。通常较差。像一个黑盒,难以理解其内部决策逻辑(为何选此动作?因为神经网络权重这么决定的)。
适用场景模型已知/易建、安全关键、需大量规划、仿真成本低。模型未知/难建、数据获取成本低、端到端学习、复杂高维环境(如图像、语言)。
代表性算法动态规划 (DP)、值迭代、策略迭代、MCTS(规划部分)Q-learning、Sarsa、DQN、Policy Gradient、A3C、PPO

4. 前沿融合与个人实践心得

实际上,现代强化学习的前沿很少将二者截然分开,而是走向融合。一个非常强大的范式是基于模型的强化学习(Model-based RL),它试图结合两者的优点:先通过与环境的交互数据学习一个环境模型(这一步像无模型),然后利用这个学到的模型进行规划或策略优化(这一步像有模型)。这样,既拥有了模型带来的高样本效率(在学到的模型里“想象”),又保持了无模型对复杂环境的适应能力。

我在一些机器人控制仿真项目中尝试过这类方法。例如,先用一些随机数据训练一个神经网络来预测下一状态和奖励(即学习模型),然后使用像模型预测控制(MPC)这样的算法,在每一步都基于当前学到的模型进行短视距的轨迹优化,选择最优动作。这种方法在样本效率上确实比纯无模型方法(如PPO)有显著提升,尤其是在任务早期。但挑战在于,学到的模型如果存在偏差,规划出的动作会不准确,可能导致性能下降甚至不稳定,这需要精心设计模型学习和规划的过程。

踩过几次坑之后,我对于初学者选择入门路径的建议是:从无模型方法开始,特别是Q-learning和Policy Gradient系列。原因很简单,无模型方法更通用,有大量现成的开源代码和教程(如OpenAI的Gym环境+Stable-Baselines3库),能让你快速获得“智能体学会玩游戏”的正反馈,建立直观感受。当你理解了TD误差、探索与利用、策略梯度等核心概念后,再去看有模型的动态规划,你会更深刻地理解贝尔曼方程为何是基石。最后,当你开始苦恼于样本效率太低、训练太慢时,自然就会去探索基于模型的RL那些更高级的“炼丹”技巧了。

记住,没有银弹。在真实项目中,选择哪种路线,最终取决于你的环境特性、数据约束、计算资源和安全要求。多动手写代码,在不同的经典环境(如CartPole, MountainCar, Atari Pong)中把两类基础算法都实现一遍,你自然会对它们的内在差异和应用场景有血肉般的体会。强化学习是一个实验科学,很多直觉都是在调试和观察智能体行为的过程中建立起来的。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐