强化学习概述
介绍强化学习的基本范式、核心概念及相关技术,并系统梳理强化学习算法体系
强化学习组成部分
- 强化学习的目标:最大化未来累计奖励
- 某次行动可能会产生长期后果
- 奖励可能会延迟
- 牺牲眼前的回报来获得更多可能会更好的长期奖励
- 在强化学习中,时间步 发生的事情
- Agent
- 执行动作
- 接收到观察
- 接收到奖励
- 环境
- 接收到动作
- 给出观察
- 给出奖励
- 下一个时间步
- 历史序列
- 状态
- 环境的状态
- Agent 的状态
- Agent
- 强化学习 Agent 具有的组件
- 策略
- Agent 的行为函数,从状态到行动的映射
- 确定性:
- 概率分布:
- 价值函数
- 对未来价值的预测,衡量状态 / 行动的好坏
- 模型
- Agent 对环境的表示,预测环境下一步会做什么
- 预测下一个状态:
- 预测下一个即时奖励:
- 策略
强化学习分类
基于价值与基于策略
- 基于价值函数:隐式策略,有价值函数
- Q-Learning、Sarsa
- 投资顾问:假如你想理财,不知道具体怎么投资,投资顾问帮你分析每种投资方式的「回报潜力」(即价值)。然后,你选择回报潜力最高的投资方式。顾问的目标是不断提高其估算价值的准确性
- 基于策略:有策略,无价值函数
- 策略梯度(Policy Gradients)方法,如 PPO、Actor-Critic
- 厨师学徒:假如你想成为厨师,最好的办法是直接模仿和优化你的烹饪方法,而不是先学理论(价值函数)再去试验。通过尝试,你会直接调整策略,例如切菜快一点、火候控制得更精准,从而做出更好的菜
- Actor-Critic:有策略,有价值函数
- 团队合作的过程:Actor 是厨师学徒,试着做菜(决策);Critic 是美食评论家,评价菜的好坏并给出建议(价值评估)
Model-Free 与 Model-Based
- Model-Free:策略 / 价值函数,无模型
- 不对环境进行建模,直接与真实环境进行交互来学习到最优策略
- 泛化性优于 Model-Based
- 盲目尝试的冒险家: 假设你第一次去一个迷宫探险,不熟悉地形,也没有地图,你只能靠反复尝试不同的路径,逐步摸索出哪条路是最好的。你不关心迷宫的结构,只关注行动的效果,例如「向左」可以减少时间,「向右」会遇到障碍
- Model-Based:策略 / 价值函数,有模型
- 根据环境中的经验,构建一个虚拟世界,同时真实环境和虚拟世界中学习
- Model-Based 通常更样本高效,但对模型误差敏感
- 构建环境模型:学会一个函数,能够预测当前状态下的环境动态,即状态转移和奖励函数
- 理性计划的探险家: 假设你去迷宫探险,但这次你拿到了一张迷宫的地图(即环境模型)。在出发前,你可以先研究地图,推测出最短路径或者避开障碍的路线,然后按计划行动。即使还没进入迷宫,你就能做出不错的决策
在线学习与离线学习(Online 与 Offline)
- 在线学习
- 在在线学习中,策略网络会实时与环境进行交互,采集新的数据(状态、动作、奖励等),然后利用这些新数据进行策略更新
- 每次更新策略后,下一轮的数据采集会基于当前的更新后的策略进行,这种交互是动态的
- 离线学习
- 在离线学习中,数据已经预先采集好,存储在固定的数据集中
- 策略更新时不再与环境交互,而是基于静态数据集进行训练
- 这种方式类似于监督学习,目标是最小化策略和标签之间的差异
在策略与离策略(On-Policy 与 Off-Policy)
- On/Off Policy 与 Online/Offline决定了训练数据的来源与使用方式
| 类别 | On-policy Learning | Off-policy Learning |
|---|---|---|
| 学习目标 | 直接学习当前执行的策略 的价值或改进 | 学习目标策略 的价值,但经验来自另一个行为策略 |
| 行为策略 | 行为策略和目标策略一致 | 行为策略和目标策略可能不同 ,也可能是 |
| 数据来源 | 从当前策略 采样的交互经验(行动和状态) | 从其他策略 或环境采样的经验数据 |
| 形象描述 | 在岗位上工作时学习技能 | 通过观察别人工作而学习技能 |
| 优点 | 学习和执行策略一致,简单直观 | 可以探索最优策略 ,学习灵活 |
| 缺点 | 受限于当前策略 ,可能收敛到次优策略 | 需要重要性采样或其他机制解决策略差异引发的偏差 |
| 例子 | SARSA、SARSA (λ) | Q-learning、Off-Policy Q (λ) |
强化学习常见概念
偏差与方差(Bias 与 Variance)
- 简单直觉区别:偏差告诉你模型有没有 “学对”,方差告诉你模型有没有 “学稳”;我们希望模型低偏差、低方差,但往往需要在两者之间做权衡
- 数学公式理解(期望均方误差(MSE)分解):
- 其中:
- :真实函数
- :模型预测值
- :在不同训练集上的平均预测
| 项目 | 偏差(Bias) | 方差(Variance) | 不可约误差 |
|---|---|---|---|
| 定义 | 平均预测值 vs 真值之间的差,表示模型结构本身的能力 | 模型在不同训练数据上的输出波动,反映其对训练数据的敏感程度 | 来自数据本身的噪声或环境的随机性,无法通过任何模型消除 |
| 靶心图例子 | 飞镖总是集中在靶心左下角,系统性偏离 | 飞镖落得很散,有时东有时西,不稳定 | 飞镖围绕靶心附近随机分布,即使瞄得准也有误差 |
| 通俗解释 | 算法是否 “学得准” | 算法是否 “学得稳” | 世界本身是否 “稳定可预测” |
| 理想状态 | 偏差低(拟合好) | 方差低(不敏感) | 越低越好,但不可避免,无法消除 |
学习与规划(Learning 与 Planning)
- 学习 ——MC、TD
- 环境初始是未知的
- Agent 与环境交互后改进策略
- 规划 —— 动态规划
- 环境模型是已知的
- Agent 基于模型执行行动(没有任何外部交互)后改进策略
- 又名深思熟虑、推理、内省、沉思、思考、寻找
探索与利用(Exploration 与 Exploitation)
- 探索
- 尝试新的动作,找到关于环境的更多信息
- 可能带来更高长期回报的策略、动作或状态,帮助智能体避免陷入局部最优解
- 过度探索:智能体会浪费大量时间尝试不太可能带来高回报的动作,无法充分利用已知的信息
- 利用
- 基于已有知识选择最优动作,以最大化当前的即时回报
- 过度利用:智能体可能停留在次优的策略上(局部最优解),无法发现更高回报的选择
- Trade-Off
- 采用上置信界(Upper Confidence Bound, UCB)
- 同时考虑动作的预期回报和不确定性(置信区间)
- 高不确定性和高回报的动作会被优先选择,特别适用于多臂赌博机(Multi-Armed Bandit)问题
- 采用 贪心
- 以 的概率进行探索(随机选择动作)
- 以 的概率进行利用(选择当前最优动作)
- 一般设置初始 较大(偏向探索),然后逐渐减小(偏向利用)
- 采用上置信界(Upper Confidence Bound, UCB)
预测与控制(Prediction 与 Control)
- 预测:评估未来
- 给定一个策略(policy),评估该策略在未来的表现
- 目标:计算每个状态的价值(Value),即该策略从当前状态开始执行后,期望获得的累计回报
- 输入:已知的策略 ,表示在每个状态下选择某动作的概率
- 输出:状态值函数 或状态 - 动作值函数
- :遵循策略 时,从状态 开始的期望总回报
- :遵循策略 时,在状态 执行动作 后的期望总回报
- 这是一个评估任务,因为策略已经固定
- 假设你有一个固定的策略(比如在迷宫中选择路径的方法),Prediction的任务是告诉你如果执行这个策略,每个状态的长期收益会是多少
- 给定一个策略(policy),评估该策略在未来的表现
- 控制:优化未来
- 寻找一个最优策略,使得未来的累计回报最大化
- 目标:找到最佳策略 ,使得每个状态的价值 或 达到最大
- 核心问题:需要探索状态和动作的组合,确定哪个策略可以实现最优回报
- 假设你不知道在迷宫中最优的行走策略,Control的任务是通过试验和学习找到最短路径策略,从而最大化你的目标(如最快到达出口)
- 寻找一个最优策略,使得未来的累计回报最大化
损失与目标(Loss 与 Objective)
- 在所有机器学习问题中,本质只有一句话:选参数,使某个标量目标函数最优
- 损失与目标
- 监督学习的目标是最小化损失(Loss)
- 强化学习(策略梯度)的目标是最大化期望回报
- 这二者数学上是完全等价的
- 强化学习中的目标有什么不同?
- 强化学习中,没有 “标签”,没人告诉” 正确动作 “,只有环境会给出奖励
- 强化学习中,回报来自 “未来”,而不是立即计算出的误差
- 监督学习:“这一次预测错了多少?”
- 强化学习:“这个动作,会不会让未来一整串奖励变好?”
- 所以强化学习中的目标 一般是期望、长期、关于整条轨迹
- 与监督学习不同,强化学习的标签(未来回报)本身依赖于策略的执行
- 这造成了 "自举(Bootstrapping)" 现象:用当前估计去估计未来
强化学习外延
逆向强化学习(Inverse Reinforcement Learning, IRL)
- 核心目标是从专家的行为中推断潜在的奖励函数
- 传统强化学习的逆过程
- 传统强化学习的目标是根据已知的奖励函数找到最优策略
- 逆向强化学习则是通过观察专家的最优策略或行为来推断背后的奖励函数
- 实际应用例子
- 自动驾驶:不直接指定 "安全" 的奖励(例如 "不碰撞 + 10 分"),而是从人类驾驶员的决策中学习,推断其隐含的安全成本、舒适度权衡、风险厌恶程度等
- 机器人学习:观察人类整理房间的方式,推断背后的偏好(易碎物品要轻放 > 整齐排列 > 节省时间),而非事先编码
- LLM 对齐:RLHF 中,通过人类的偏好对比("生成 A 比生成 B 好")推断隐含的价值观("有用性 > 无害性 > 诚实性" 的权重),而不需要为每个维度指定确切奖励
- 为什么 IRL 重要
- 很多实际任务中,奖励函数难以精确定义,但容易通过示范获得
- IRL 使得系统能 "自动学习" 人类的隐含目标,而非盲目执行
- 在人机交互场景中,避免了指定奖励函数的 "赫尔姆斯之舵困境"(目标定得太窄可能导致意想不到的行为)
强化学习算法体系
强化学习
├── [1] 已知MDP(Dynamic Programming)
│ ├── Prediction: 策略评估(Policy Evaluation)
│ └── Control
│ ├── 策略迭代(Policy Iteration)
│ └── 价值迭代(Value Iteration)
│
├── [2] 未知MDP(Sampling Backup)
│ ├── 基于模型(Model-Based RL)
│ │ ├── 环境模型学习
│ │ └── 结合DP方法进行规划
│ │ └── 例如:Dyna-Q
│ │
│ └── 不基于模型(Model-Free RL)
│ ├── Prediction
│ │ ├── MC方法(Monte Carlo)
│ │ └── TD方法(Temporal-Difference)
│ │ └── TD(0), TD(λ)
│ │
│ └── Control
│ ├── On-Policy
│ │ ├── Sarsa
│ │ └── Sarsa(λ)
│ │
│ └── Off-Policy
│ ├── Q-learning(最经典)
│ └── Expected Sarsa
│
├── [3] 深度强化学习(Deep RL)
│ ├── 基于值函数
│ │ └── DQN, Double DQN, Dueling DQN
│ ├── 基于策略梯度
│ │ └── REINFORCE, PPO, A2C, A3C
│ └── Actor-Critic 架构(值函数+策略)
│ └── DDPG, TD3, SAC
│
├── [4] Offline RL(脱离环境,离线数据上训练)
│ └── BC(行为克隆)、BCQ、CQL 等
│
└── [5] Online RL(与环境交互)
└── 几乎所有经典算法(Q-Learning、DQN、PPO等)学习资源
- 文档资源
- Spinning Up documentation:OpenAI 制作的深度强化学习教育资源
- Sutton & Barto's Introduction to Reinforcement Learning:Sutton & Barto 撰写,强化学习的标准的入门教材
- RL Slides by David Silver:David Silver 的强化学习课程配套 PPT
- CS 285:伯克利大学的强化学习课程
- 视频资源
- RL Course by David Silver:David Silver 的强化学习课程
- 博客
- Reinforcement-Learning | Lil'Log:Lil 的强化学习博客
- Deep Reinforcement Learning Explained:Jordi Torries 的强化学习博客
- Deep Reinforcement Learning & Meta-Learning Series:Jonathan Hui 的强化学习系列博客
- What is Reinforcement Learning?:New Facade 的强化学习手册
- 框架
- CleanRL:强化学习算法的单文件实现
- Stable-Baselines3 Docs:Stable-Baselines3 的文档 I
这篇文档有帮助吗?