news 2026/7/28 12:09:05

从蒙特卡洛到时序差分:无模型强化学习核心算法原理与实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从蒙特卡洛到时序差分:无模型强化学习核心算法原理与实战

大家好,我是专注于技术分享的博主。在强化学习的入门道路上,很多同学在理解了动态规划(DP)之后,面对更贴近现实的无模型(Model-Free)场景时,常常会感到迷茫:环境模型未知,如何评估策略、更新价值函数?今天,我们就来深入探讨解决这一核心问题的两大基石算法——蒙特卡洛方法和时序差分算法。本文将从零开始,用通俗的语言和完整的代码示例,带你彻底搞懂它们的原理、区别与实现,无论是生物信息学、计算生物学还是其他交叉学科的同学,都能轻松上手,为后续学习Q-learning、DQN等高级算法打下坚实基础。

1. 背景与核心概念:从有模型到无模型

在上一讲动态规划中,我们假设智能体拥有环境的完整模型,即知道状态转移概率 $P(s'|s, a)$ 和即时奖励 $R(s, a, s')$。这就像你有一张完整的游戏地图和规则说明书。然而,在绝大多数现实问题中,比如预测蛋白质结构、设计药物分子或训练游戏AI,我们无法事先获得这个“完整说明书”。环境是黑盒,智能体只能通过试错与环境交互,获得状态、动作、奖励的序列数据。

这就是无模型强化学习的核心挑战。蒙特卡洛方法和时序差分算法正是为解决这一问题而诞生的两种经典思路。

  • 蒙特卡洛方法:其核心思想非常直观——通过大量完整的“实验”或“回合”来估计价值。想象一下,你要评估一种新药的治疗方案(策略),你不会去模拟每个人体内的生化反应(模型),而是招募大量患者进行临床试验(回合),记录下从开始治疗到结束的整个过程和最终疗效(回报),然后用这些试验结果的平均值来估计该方案的价值。MC方法强调“完整性”,必须等到一个回合(如一局游戏、一次实验)结束,有了最终结果(回报)后,才回过头来更新这个回合中经历的所有状态的价值。
  • 时序差分算法:它则像是一个更“实时”的学习者。TD算法不等待回合结束,而是利用相邻时间步的估计值进行迭代更新。这就好比在临床试验中,研究者不仅看最终结果,还会根据患者中期检查的指标变化,实时调整对疗效的预期。TD算法的核心是“自举”,即用当前的估计值去更新之前的估计值,实现了更高效、更在线(online)的学习。

简单来说,MC是“事后总结”,TD是“实时调整”。理解这一根本区别,是掌握后续所有无模型算法的关键。

2. 环境准备与版本说明

为了让大家能够亲手实践,我们将使用gym库中的经典环境Blackjack-v1(21点)作为示例。这个环境规则明确,状态空间适中,非常适合演示MC和TD算法。

环境配置:

  • 操作系统:Windows 10/11, macOS, 或 Linux (本文示例在Windows 11下完成)
  • Python版本:>= 3.8 (推荐3.8或3.9)
  • 核心库
    • gym:强化学习标准环境库。
    • numpy:数值计算。
    • matplotlib:结果可视化。

安装命令:打开你的终端或命令提示符,执行以下命令来安装必要的库。

pip install gym numpy matplotlib

验证安装:创建一个新的Python文件(如test_env.py),运行以下代码检查环境是否正常。

import gym # 创建21点环境 env = gym.make('Blackjack-v1', sab=True) # sab=True 使用简化规则 print(f"观测空间: {env.observation_space}") print(f"动作空间: {env.action_space}") # 重置环境,获得初始状态 state = env.reset() print(f"初始状态: {state}") # 执行一个随机动作 action = env.action_space.sample() # 0: 停牌, 1: 要牌 next_state, reward, done, info = env.step(action) print(f"执行动作 {action} 后,新状态: {next_state}, 奖励: {reward}, 是否结束: {done}") env.close()

如果运行成功,你会看到类似以下的输出,表明环境配置成功:

观测空间: Tuple(Discrete(32), Discrete(11), Discrete(2)) 动作空间: Discrete(2) 初始状态: (15, 10, False) 执行动作 1 后,新状态: (25, 10, False), 奖励: 0.0, 是否结束: False

状态是一个三元组(玩家点数, 庄家明牌点数, 是否有可用Ace)。动作0代表“停牌”,1代表“要牌”。

3. 核心原理拆解:MC与TD的数学直觉

在深入代码前,我们需要理解两者更新价值函数的核心公式。我们以估计状态价值函数 $V(s)$ 为例。

3.1 蒙特卡洛方法:基于回报平均

MC方法的目标是学习策略 $\pi$ 下的状态价值函数 $V^{\pi}(s)$。对于一个状态 $s$,其价值定义为在该状态后,遵循策略 $\pi$ 所能获得的期望回报(累计折扣奖励)。

$$ V^{\pi}(s) = \mathbb{E}_{\pi}[G_t | S_t = s] $$

其中, $G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + ...$ 是从时刻 $t$ 开始的回报,$\gamma$ 是折扣因子。

由于没有模型,MC通过经验平均来估计这个期望值。它收集多个以状态 $s$ 开始的完整回合的回报,然后取平均值。

首次访问型MC预测算法的更新公式为: 对于每个回合中的每个状态 $s$,仅在该状态第一次出现时:

  1. 计算从该状态开始到回合结束的实际回报 $G_t$。
  2. 更新该状态的估计值: $$ V(S_t) \leftarrow V(S_t) + \alpha [G_t - V(S_t)] $$ 这里 $\alpha$ 是学习率
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 12:05:49

羽绒服面料核心技术指标与优质供应商选择指南

1. 羽绒服面料行业现状与核心痛点羽绒服作为冬季功能性服装的代表品类,其面料品质直接决定了产品的保暖性、耐用性和市场竞争力。当前行业呈现明显的两极分化态势:头部品牌采用20D-40D高密度尼龙面料配合PU防水涂层,而低端市场仍大量使用涤纶…

作者头像 李华
网站建设 2026/7/28 12:05:20

Gitee本土化DevOps平台提升企业研发效能实践

1. Gitee与本土化DevOps平台的崛起 十年前我第一次接触代码托管平台时,国内开发者还普遍依赖GitHub。每次push代码都要忍受跨国网络的延迟,团队协作时更是苦不堪言。直到2013年发现Gitee这个本土化代码托管平台,才真正体会到"家门口&quo…

作者头像 李华
网站建设 2026/7/28 12:03:35

MATLAB实现RSA加密算法:从原理到攻防实践

1. 项目概述:当MATLAB遇上RSA 在密码学和信息安全的教学、研究与原型验证领域,MATLAB一直扮演着一个独特而重要的角色。它不像Python那样拥有庞大的密码学库生态,也不像C/C那样追求极致的性能,但其强大的矩阵运算能力、直观的可视…

作者头像 李华
网站建设 2026/7/28 12:02:39

Umi-OCR批量处理终极指南:如何3步高效完成数百张图片的文字识别

Umi-OCR批量处理终极指南:如何3步高效完成数百张图片的文字识别 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内…

作者头像 李华