我们在强化学习之旅中来到了关键节点
到目前为止,我们探索的环境中,智能体可以明确表示每一个可能的状态 - 动作对。但一旦踏入现实世界的复杂环境,这种 “奢侈” 便不复存在。 |文末点击阅读原文查看网页版|
更多专栏文章点击查看:
LLM 架构专栏
大模型架构专栏文章阅读指南
Agent 系列
强化学习系列
欢迎加入大模型交流群:加群链接 https://docs.qq.com/doc/DS3VGS0NFVHNRR0Ru#
公众号【柏企阅文】
知乎【柏企】
个人网站:https://www.chenbaiqi.com
像网格世界和悬崖行走这样的场景,虽然具有启发性,但它们展现的是最纯粹形式的强化学习。
现实世界并非由离散、定义清晰的状态构成,它是连续的、高维的,且杂乱无章。而函数逼近就像是一把钥匙,将强化学习从一个优雅的理论框架转变为解决复杂问题的实用工具。
目前我们所学方法的缺失之处
到目前为止,我们研究过的方法 —— 动态规划、蒙特卡洛方法和时间差分(TD)学习,都依赖于一种所谓的表格表示法。
简而言之,对于每一个状态 $s$ 和动作 $a$,我们在表格中维护明确的条目:$V(s)$ 或 $Q(s, a)$ 。当状态和动作的数量足够少,能够完全枚举时,这种方法效果很好。
但想想这些场景:
- 自动驾驶汽车导航:状态空间包含像位置、速度、方向以及与无数物体的接近程度等连续变量。
- 机器人操作:关节角度、作用力和物体位置构成了一个高维连续状态空间。
- 围棋游戏:棋盘上大约有 $10^{170}$ 种可能的布局,一个完整的状态 - 值表会比可观测宇宙中的原子数量还要多。
由于所谓的 “维度诅咒”,表格方法失效了。随着状态空间维度的增加,状态的数量呈指数增长。即使是适度的现实问题,也很快会变得难以处理。
别担心,办法总比困难多!
函数逼近:优雅的解决方案
函数逼近提供了一个巧妙的解决办法:我们不再为每个单独的状态存储值,而是构建一个参数化函数,将状态映射到它们的估计值。这个函数可以从它见过的状态推广到它没见过的状态,这是有效学习的标志。
关键的理念是:在有意义的方面 “相似” 的状态,应该具有相似的值。比如在国际象棋中,棋盘边缘仅有一个兵的位置发生变化的局面,其价值可能与原始局面相似。函数逼近从数学上利用了这一直觉。
从表格方法到函数逼近的转变,代表了我们对强化学习思考方式的根本转变。
线性函数逼近(来一点数学知识!)
最简单却又强大的函数逼近形式是线性逼近。在这里,我们将值函数表示为特征的加权和:
其中:
- $v(s, w)$ 是我们对值函数的逼近。
- $w$ 是权重向量(我们的参数)。
- $x(s)$ 是表示状态 $s$ 的特征向量。
类似地,对于动作值:
线性逼近的有效性在很大程度上取决于特征的选择。这些特征必须捕捉到决定状态价值的相关方面。这个过程被称为特征工程,它既包含科学成分,也有艺术成分。
好的特征应该:
- 捕捉关于状态的相关信息。
- 彼此之间合理独立。
- 与目标值有有意义的关系。
- 涵盖重要状态特征的范围。
例如,在像国际象棋这样的游戏中,特征可能包括:
- 子力平衡(双方各有多少棋子)
- 中心控制
- 王的安全性
- 兵型结构
- 棋子机动性
当这些特征帮助智能体从它见过的局面进行推广,以评估它之前未遇到过的局面时,函数逼近的魔力就显现出来了。(机器学习的魅力!)
一旦我们定义了特征,那么如何学习权重呢?主要的方法是使用梯度下降来最小化预测值和目标值之间的差异。
对于使用蒙特卡洛目标的状态值逼近,更新规则变为:
其中:
- $G_t$ 是观测到的回报(我们的目标)。
- $v(S_t, w_t)$ 是我们当前的估计。
- $\nabla_wv(S_t, w_t)$ 是我们的逼近关于权重的梯度。
对于线性逼近,这个梯度简单来说就是我们的特征向量:
$\nabla_wv(S_t, w_t) = x(S_t)$
结果更新公式为:
$w_{t+1} = w_t + \alpha(G_t - v(S_t, w_t))x(S_t)$
其中的逻辑很直观:我们根据预测误差和相应的特征值来调整每个权重。对于某个状态被强烈激活的特征,在该状态的预测出现误差时,其权重的调整幅度会更大。
让我们通过一个例子来理解这些概念!
山地车问题:函数逼近的生动示例
山地车问题很好地阐释了函数逼近。在这个环境中:
- 一辆汽车必须通过反复来回移动积累动量,才能逃离山谷。
- 状态空间是连续的,由位置和速度组成。
- 动作空间是离散的:向左加速、向右加速或不加速。
如果不使用函数逼近,我们就需要对这些连续变量进行离散化,这可能会丢失重要细节,或者创建一个大到不切实际的状态空间。
使用线性函数逼近,我们可以定义如下特征:
- 位置和速度本身。
- 位置和速度的平方(以捕捉非线性效应)。
- 位置 × 速度(以捕捉它们之间的相互作用)。
- 针对状态空间不同区域的指示函数。
这就把一个无限大的状态空间转化为一个只需少量权重就能处理的学习问题。
不过,函数逼近也给强化学习增加了一层复杂性:收敛问题。虽然表格方法在适当探索的情况下能保证最终收敛到最优值,但函数逼近方法可能会发散,或者收敛到次优解。
当将自举(如在 TD 学习中)与函数逼近和离策略学习(如在 Q 学习中)结合时,这个挑战尤为严峻。这种组合有时被称为 “致命三角”,它可能导致不稳定和发散。
有几个因素导致了这个挑战:
- 函数逼近引入了泛化误差。
- 自举为学习创造了一个移动的目标。
- 离策略学习打破了被评估策略和生成数据的策略之间的直接联系。
应对收敛挑战的解决方案
研究人员已经开发出各种方法来解决这些收敛问题:
- 经验回放:存储并重用过去的经验,打破时间相关性。
- 目标网络:使用单独的网络来生成目标和进行预测。
- 梯度 TD 方法:具有更强收敛保证的改进算法。
- 强调 TD 方法:根据状态访问频率对权重进行更新。
- 正则化技术:添加约束以防止过拟合。
这些创新在保持理论正确性的同时,在复杂领域取得了显著成功,这是不断发展的强化学习领域的一个标志。
从线性逼近扩展到非线性函数逼近器
虽然线性函数逼近提供了坚实的基础,但现实世界中的许多复杂关系本质上是非线性的。这促使人们探索非线性函数逼近器,包括:
核方法
核方法将输入空间隐式地映射到一个更高维的空间,在这个空间中线性可分成为可能。“核技巧” 使得这种映射无需显式计算高维表示。
瓦片编码
瓦片编码对状态空间创建多个重叠的分区(瓦片)。每个分区将空间划分为瓦片,一个状态在每个瓦片中恰好激活一个瓦片。这提供了一种稀疏表示,能够实现高效学习。
瓦片编码的优点在于其简单性和有效性:
- 表示是稀疏的(每个瓦片只有一个特征被激活)。
- 重叠的瓦片提供了泛化能力。
- 可以通过调整瓦片的数量和大小来控制分辨率。
- 计算要求不高。
神经网络
神经网络可能是最灵活的函数逼近器,能够捕捉高维空间中的复杂非线性关系。神经网络与强化学习原理的结合催生了深度强化学习,这是我们后续文章的主题。
在强化学习中,神经网络具有以下优势:
- 能够从原始输入中自动提取特征。
- 具有层次化表示,可以捕捉越来越高的抽象层次。
- 可扩展到极其复杂的状态空间。
- 无需显式的特征工程即可进行端到端学习。
然而,它们也带来了一些挑战:
- 样本复杂度增加(需要更多数据来学习)。
- 对超参数更加敏感。
- 计算要求更高。
- 收敛特性更复杂。
总结
从表格方法到函数逼近的转变,使强化学习能够处理跨领域中以前难以解决的问题:
- 机器人学:机械臂的连续控制、腿部运动和灵巧操作。
- 游戏:精通围棋、《星际争霸 II》和《Dota 2》等复杂游戏。
- 资源管理:数据中心冷却优化、交通信号灯控制和电网管理。
- 金融:投资组合优化、交易策略和风险管理。
- 医疗保健:治疗优化、资源分配和个性化医疗。
这些应用具有共同的特点:大状态空间、复杂的动态以及从有限经验中进行泛化的需求,而这正是函数逼近所解决的挑战。
在下一篇文章中,我们将探索深度神经网络如何彻底改变强化学习,使系统能够直接从高维感官输入中学习,并通过端到端训练掌握复杂任务。
推荐阅读
1. DeepSeek-R1 的顿悟时刻是如何出现的? 背后的数学原理
2. 微调 DeepSeek LLM:使用监督微调(SFT)与 Hugging Face 数据
3. 使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT
4. DeepSeek R1:了解 GRPO 和多阶段训练
5. 深度探索:DeepSeek-R1 如何从零开始训练
6. DeepSeek 发布 Janus Pro 7B 多模态模型,免费又强大!
7. 强化学习强在哪里?基础探索
8. 强化学习详解第二部分:基于价值的方法,战略决策的数学之道
9. 强化学习详解第三部分:蒙特卡洛与时间差分学习,从经验中学习
评论