强化学习入门指南 (Reinforcement Learning Primer)

📚 学习目标:掌握强化学习的核心概念、主要算法分类等,为深入学习强化学习奠定坚实基础。

本文面向初学者,系统介绍强化学习的核心概念与算法。强化学习广泛应用于游戏 AI、机器人控制、推荐系统与自动驾驶等领域。

1
2
3
4
import numpy as np

a = np.ones(1)

1
2
3
#include<iostream>

using namespace std;

📋 目录导航

1. 什么是强化学习 (Reinforcement Learning)?

强化学习研究智能体 (Agent)环境 (Environment) 中如何选择行动,以最大化累积奖励 (Reward)。不同于监督/无监督学习,它通过与环境的持续交互来学习最优策略。

🎯 核心交互流程

graph TD
    A["🤖 智能体
(Agent)"] --> B["🎯 选择行动
(Action)"] B --> C["🌍 环境
(Environment)"] C --> D["📍 新状态
(State)"] C --> E["🎁 奖励
(Reward)"] D --> A E --> A style A fill:#e1f5fe,stroke:#01579b,stroke-width:2px style C fill:#f3e5f5,stroke:#4a148c,stroke-width:2px style D fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px style E fill:#fff3e0,stroke:#e65100,stroke-width:2px

🐕 生活化类比:训练宠物狗

为了更好地理解强化学习,用训练宠物狗的例子来类比:

  • 智能体 (Agent) 🐕:你的宠物狗,需要学习新技能的学习者
  • 环境 (Environment) 🏠:训练场地,包括房间布局、家具摆放等外部条件
  • 状态 (State) 📍:狗狗当前的姿势和位置,比如"站立在客厅中央"
  • 行动 (Action) 🎯:狗狗可以做出的选择,如"坐下"、“握手”、“转圈”
  • 奖励 (Reward) 🦴:你给的反馈,做对了给零食(+1),做错了没奖励(0)或轻声责备(-1)
  • 策略 (Policy) 🧠:狗狗学会的"行为准则",即在特定情况下应该做什么

🎯 核心定义:从交互中学习以实现目标

强化学习的核心思想是**“试错学习” (Trial-and-Error)**。与传统的监督学习不同:

特征 监督学习 强化学习
学习方式 从标注数据中学习 从环境交互中学习
反馈类型 正确答案 奖励信号
数据获取 静态数据集 动态交互过程
目标 预测准确性 长期累积奖励最大化

智能体不会被直接告知应该做什么,而是必须通过与环境的交互来发现哪些行动序列可以带来最高的长期回报。这种学习方式更接近人类和动物的自然学习过程。

🌟 强化学习的独特优势

  1. 适应性强:能够适应动态变化的环境
  2. 无需大量标注数据:通过交互自主学习
  3. 目标导向:直接优化最终目标,而非中间指标
  4. 序列决策:考虑行动的长期影响,而非单步最优

2. 强化学习的核心要素

强化学习系统是一个复杂的交互系统,由以下六个关键组件构成。理解这些要素及其相互关系是掌握强化学习的基础。

🧩 六大核心组件详解

1. 🤖 智能体 (Agent)

定义:学习者和决策者,是整个系统的核心。

特征

  • 具有感知环境状态的能力
  • 能够执行行动影响环境
  • 具备学习和改进策略的机制
  • 目标是最大化长期累积奖励

实例

  • 🎮 游戏AI(如AlphaGo中的围棋程序)
  • 🤖 自主机器人(如扫地机器人)
  • 💰 交易系统(如股票交易算法)
  • 🚗 自动驾驶车辆的决策系统

2. 🌍 环境 (Environment)

定义:智能体交互的外部世界,智能体无法完全控制但可以影响。

特性

  • 状态空间:所有可能状态的集合 S
  • 动态性:状态会根据智能体的行动和环境规律发生变化
  • 随机性:状态转移可能具有不确定性
  • 部分可观测性:智能体可能无法观测到环境的完整状态

分类

  • 确定性环境 vs 随机性环境
  • 完全可观测 vs 部分可观测
  • 单智能体 vs 多智能体
  • 静态 vs 动态

3. 📍 状态 (State)

定义:描述环境当前情况的信息集合,记作 stS

重要概念

  • 马尔可夫性质:未来状态只依赖于当前状态,而不依赖于历史
  • 状态表示:如何有效地表示和编码状态信息
  • 状态空间大小:离散有限、离散无限、连续

4. 🎯 行动 (Action)

定义:智能体可以执行的操作,记作 atA

分类

  • 离散行动空间:有限个可选行动(如游戏中的上下左右)
  • 连续行动空间:连续取值的行动(如机器人关节角度)
  • 混合行动空间:同时包含离散和连续行动

5. 🎁 奖励 (Reward)

定义:环境对智能体行动的即时反馈,记作 rtR

设计原则

  • 稀疏奖励 vs 密集奖励
  • 塑形奖励:通过中间奖励引导学习
  • 奖励函数设计:避免奖励黑客攻击

数学表示
奖励函数可以表示为:R:S×A×SR

6. 🧠 策略 (Policy)

定义:智能体的行为准则,定义了在每个状态下应该采取什么行动。

数学表示

  • 确定性策略π:SA
  • 随机性策略π(a|s)=P(At=a|St=s)

策略类型

  • 贪心策略:总是选择当前最优行动
  • ε-贪心策略:以概率 ε 随机探索
  • 软最大策略:基于动作价值的概率分布

🔄 标准交互流程(简述)

强化学习的交互通常以 MDP 进行形式化:在状态下选择动作,环境按转移概率演化并给出奖励,循环往复。关于 MDP 的完整数学定义、价值函数与最优性方程,请查看专章:[马尔可夫决策过程 (MDP) 入门](02-马尔可夫决策过程 (MDP) .md)。

sequenceDiagram
    participant A as 🤖 智能体
    participant E as 🌍 环境
    
    Note over A,E: 时刻 t
    A->>A: 观察状态 S_t
    A->>A: 根据策略 π 选择行动
    A->>E: 执行行动 A_t
    E->>E: 状态转移
    E->>A: 返回新状态 S_{t+1}
    E->>A: 返回奖励 R_{t+1}
    A->>A: 更新策略/价值函数
    
    Note over A,E: 循环继续...

🎯 关键概念补充

价值函数 (Value Functions)

虽然不是直接的交互要素,但价值函数是理解和优化策略的重要工具:

  • 状态价值函数 Vπ(s):在状态 s 下遵循策略 π 的期望回报
  • 动作价值函数 Qπ(s,a):在状态 s 下执行动作 a 后遵循策略 π 的期望回报

模型 (Model) - 可选组件

定义:对环境动态的数学描述,包括:

  • 转移概率P(s|s,a) - 在状态 s 执行动作 a 后转移到状态 s 的概率
  • 奖励函数R(s,a,s) - 对应的期望奖励

应用

  • 基于模型的方法:利用模型进行规划和搜索
  • 无模型方法:直接从经验中学习,不需要显式模型

3. 强化学习的分类

强化学习算法种类繁多,理解不同算法的分类和特点有助于我们根据具体问题选择合适的方法。以下是主要的分类维度和代表性算法。

🗂️ 算法分类全景图

graph TD
    A["🧠 强化学习算法"] --> B["🏗️ 基于模型
(Model-Based)"] A --> C["🎯 无模型
(Model-Free)"] B --> B1["📊 动态规划
(Dynamic Programming)"] B --> B2["🔍 搜索算法
(Search-Based)"] B --> B3["🎲 基于采样的规划
(Sample-Based Planning)"] C --> C1["💎 基于价值
(Value-Based)"] C --> C2["🎭 基于策略
(Policy-Based)"] C --> C3["🎪 演员-评论家
(Actor-Critic)"] B1 --> B11["策略迭代
价值迭代"] B2 --> B21["MCTS
AlphaGo"] B3 --> B31["Dyna-Q
PETS"] C1 --> C11["🔢 表格方法
Q-Learning
SARSA"] C1 --> C12["🧠 深度方法
DQN
Double DQN
Dueling DQN"] C2 --> C21["🎯 策略梯度
REINFORCE
TRPO
PPO"] C2 --> C22["🎪 进化策略
ES
CMA-ES"] C3 --> C31["🎭 传统AC
A2C
A3C"] C3 --> C32["🚀 高级AC
SAC
TD3
DDPG"] style A fill:#f9f,stroke:#333,stroke-width:3px style B fill:#bbf,stroke:#333,stroke-width:2px style C fill:#fbf,stroke:#333,stroke-width:2px

🏗️ 3.1 基于模型 vs 无模型的学习

这是强化学习最基本也是最重要的分类维度。

基于模型的学习 (Model-Based RL)

核心思想:智能体首先学习环境的动态模型,然后利用这个模型进行规划和决策。

优势

  • 数据效率高:可以通过模型生成虚拟经验
  • 规划能力强:能够前瞻性地评估行动后果
  • 泛化能力好:模型可以推广到未见过的状态

劣势

  • 模型偏差:不准确的模型会导致次优策略
  • 计算复杂度高:规划过程通常计算量大
  • 难以建模:复杂环境难以准确建模

代表算法

  • 动态规划:策略迭代、价值迭代
  • 蒙特卡洛树搜索 (MCTS):AlphaGo、AlphaZero
  • 基于模型的深度RL:Dyna-Q、PETS、MuZero

应用场景

  • 🎲 棋类游戏(规则明确,易于建模)
  • 🤖 机器人控制(物理模型相对确定)
  • 📈 金融交易(历史数据丰富)

无模型的学习 (Model-Free RL)

核心思想:智能体不学习环境模型,而是直接从经验中学习价值函数或策略。

优势

  • 实现简单:不需要建模环境动态
  • 适用性广:适用于复杂、难以建模的环境
  • 鲁棒性强:不受模型误差影响

劣势

  • 数据需求大:需要大量的环境交互
  • 样本效率低:学习速度相对较慢
  • 缺乏规划:无法进行前瞻性决策

🎯 3.2 无模型学习的三大流派

💎 基于价值的学习 (Value-Based)

核心思想:学习状态或状态-动作对的价值函数,然后基于价值选择最优动作。

数学基础

  • 状态价值函数:V(s)=E[Gt|St=s]
  • 动作价值函数:Q(s,a)=E[Gt|St=s,At=a]

决策规则π(s)=argmaxaQ(s,a)

代表算法

  • 表格方法:Q-Learning、SARSA、Expected SARSA
  • 函数逼近:DQN、Double DQN、Dueling DQN、Rainbow DQN

适用场景

  • 离散动作空间
  • 需要确定性策略的场景
  • 对样本效率要求不是极高的情况

🎭 基于策略的学习 (Policy-Based)

核心思想:直接学习参数化的策略函数,通过策略梯度方法优化策略参数。

数学基础
策略梯度定理:θJ(θ)=Eπθ[θlogπθ(a|s)Qπθ(s,a)]

直觉理解:提高那些带来较高回报的动作概率。公式将“哪些动作值得更常做”的信息通过 Qπθ(s,a) 注入,并用 θlogπθ(a|s) 指引策略参数朝“更可能选优质动作”的方向更新。

优势

  • 连续动作空间:天然适用于连续控制
  • 随机策略:可以学习随机策略
  • 策略表达能力强:可以表示复杂的策略

代表算法

  • 基础方法:REINFORCE、Actor-Only
  • 高级方法:TRPO、PPO、A3C
  • 进化方法:Evolution Strategies (ES)

🎪 演员-评论家 (Actor-Critic)

核心思想:结合价值学习和策略学习的优势,用两个网络分别学习策略和价值函数。

架构设计

  • Actor (演员):学习策略 πθ(a|s),负责动作选择
  • Critic (评论家):学习价值函数 Vϕ(s)Qϕ(s,a),负责价值评估

优势

  • 方差更小:Critic提供基线,减少策略梯度的方差
  • 偏差更小:Actor直接优化策略,避免价值函数的偏差
  • 适应性强:同时适用于离散和连续动作空间

代表算法

  • 同步方法:A2C、PPO、TRPO
  • 异步方法:A3C、IMPALA
  • 确定性方法:DDPG、TD3、SAC

🔄 3.3 按学习更新方式分类

蒙特卡洛方法 (Monte Carlo, MC)

特点

  • 需要完整的 Episode 才能更新
  • 使用实际回报 Gt 进行学习
  • 无偏估计,但方差较大

更新公式

V(St)V(St)+α[GtV(St)]

直觉理解:直接用一整段经历的真实回报来校正估计,方向准确(无偏),但每段经历差异较大,波动也就更大(高方差)。

适用场景

  • Episode 较短的环境
  • 需要无偏估计的场景

时序差分方法 (Temporal Difference, TD)

特点

  • 每步都可以更新,无需等待 Episode 结束
  • 使用bootstrapping,即用估计值更新估计值
  • 有偏但方差较小

TD(0)更新公式

V(St)V(St)+α[Rt+1+γV(St+1)V(St)]

直觉理解:不等到一整段结束,用“即时奖励 + 下一状态的当前估计”作为近似目标,更新更快、波动更小,但因目标本身是估计而引入偏差(偏差-方差权衡)。

变种

  • TD(λ):结合多步回报的方法
  • Q-Learning:Off-policy TD方法
  • SARSA:On-policy TD方法

🎯 3.4 按策略更新方式分类

On-Policy vs Off-Policy

On-Policy(同策略)

  • 学习的策略与生成数据的策略相同
  • 代表算法:SARSA、A2C、PPO
  • 优点:稳定性好,收敛性有保证
  • 缺点:数据利用效率相对较低

Off-Policy(异策略)

  • 学习的策略与生成数据的策略不同
  • 代表算法:Q-Learning、DQN、DDPG
  • 优点:数据利用效率高,可以重用历史数据
  • 缺点:可能存在分布偏移问题

关键差异(易混点):On-Policy 更强调“按当前策略评估当前策略”;Off-Policy 允许“用行为策略采集数据,评估和改进另一套目标策略”,因此更高效但更易受分布不匹配影响。

📊 算法选择指南

环境特征 推荐算法类型 代表算法
离散动作空间 基于价值 DQN、Rainbow
连续动作空间 Actor-Critic PPO、SAC、TD3
高维状态空间 深度RL DQN、A3C、PPO
样本效率要求高 基于模型 MCTS、MuZero
需要随机策略 基于策略 PPO、SAC
多智能体环境 专门算法 MADDPG、QMIX

4. 探索 (Exploration) 与利用 (Exploitation)

探索-利用权衡指的是在获取新信息(探索)与依据已知获得稳定回报(利用)之间取得平衡,这是几乎所有强化学习算法都会面对的核心问题。其经典形式化与代表算法已在专章详述,请参阅专门文档:探索与利用:强化学习的核心困境

提示:如需快速上手,可在实践中先使用简易基线(如衰减 ϵ-greedy),再逐步替换为 UCB 或汤普森采样以提升样本效率与收敛质量。

5. 强化学习的关键方程:贝尔曼方程 (Bellman Equation)

贝尔曼方程是强化学习的理论基石,几乎所有强化学习算法都建立在这个优雅的数学框架之上。它揭示了价值函数的递归结构,为我们理解和求解强化学习问题提供了根本性的洞察。

🧮 数学基础:回报与价值函数

回报 (Return) 的定义

回报 Gt 是从时刻 t 开始的所有未来奖励的折扣总和:

Gt=Rt+1+γRt+2+γ2Rt+3+=k=0γkRt+k+1

折扣因子 (Discount Factor) γ

折扣因子 γ[0,1] 控制了对未来奖励的重视程度:

graph LR
    A["γ = 0
🏃‍♂️ 完全短视"] --> B["γ = 0.5
⚖️ 平衡考虑"] B --> C["γ = 0.9
🔮 较有远见"] C --> D["γ = 1
👁️ 完全远见"] style A fill:#ffcdd2 style B fill:#fff3e0 style C fill:#e8f5e8 style D fill:#e3f2fd

折扣因子的作用

  • 数学收敛性:保证无限序列收敛
  • 不确定性建模:未来越远越不确定
  • 实际意义:体现时间价值(如利率)

📊 价值函数的定义

状态价值函数 Vπ(s)

定义:在状态 s 下遵循策略 π 的期望回报。

Vπ(s)=Eπ[Gt|St=s]=Eπ[k=0γkRt+k+1|St=s]

动作价值函数 Qπ(s,a)

定义:在状态 s 下执行动作 a,然后遵循策略 π 的期望回报。

Qπ(s,a)=Eπ[Gt|St=s,At=a]

两者关系

Vπ(s)=aAπ(a|s)Qπ(s,a)

🔄 贝尔曼方程推导与直觉

核心洞察:递归分解

贝尔曼的天才洞察是:价值可以递归分解为即时奖励加上后续状态的折扣价值

graph TD
    A["当前状态 s 的价值"] --> B["即时奖励期望"]
    A --> C["+ γ × 下一状态价值期望"]
    
    B --> B1["根据策略π选择动作"]
    B --> B2["获得即时奖励 R(s,a)"]
    
    C --> C1["转移到下一状态 s'"]
    C --> C2["该状态的价值 V(s')"]
    
    style A fill:#e1f5fe
    style B fill:#e8f5e8
    style C fill:#fff3e0

贝尔曼期望方程推导

从价值函数定义开始:

Vπ(s)=Eπ[Gt|St=s]

展开回报定义:

Vπ(s)=Eπ[Rt+1+γGt+1|St=s]

利用期望的线性性:

Vπ(s)=Eπ[Rt+1|St=s]+γEπ[Gt+1|St=s]

注意到 Eπ[Gt+1|St=s]=Eπ[Vπ(St+1)|St=s]

Vπ(s)=Eπ[Rt+1+γVπ(St+1)|St=s]

📐 贝尔曼方程的完整形式

Vπ(s)=aAπ(a|s)sSP(s|s,a)[R(s,a,s)+γVπ(s)]

直觉理解

  • 外层求和:遍历所有可能的动作
  • π(a|s):选择动作 a 的概率
  • 内层求和:遍历所有可能的下一状态
  • P(s|s,a):状态转移概率
  • R(s,a,s)+γVπ(s):即时奖励 + 折扣未来价值

动作价值函数的贝尔曼期望方程

Qπ(s,a)=sSP(s|s,a)[R(s,a,s)+γVπ(s)]

或者:

Qπ(s,a)=sSP(s|s,a)[R(s,a,s)+γaAπ(a|s)Qπ(s,a)]

🎯 贝尔曼最优方程

对于最优策略 π,我们有贝尔曼最优方程:

最优状态价值函数

V(s)=maxaAsSP(s|s,a)[R(s,a,s)+γV(s)]

最优动作价值函数

Q(s,a)=sSP(s|s,a)[R(s,a,s)+γmaxaAQ(s,a)]

🔧 贝尔曼方程的应用

1. 动态规划算法

策略评估 (Policy Evaluation)

1
2
3
重复直到收敛:
对所有状态 s:
V(s) ← Σ_a π(a|s) Σ_s' P(s'|s,a)[R(s,a,s') + γV(s')]

价值迭代 (Value Iteration)

1
2
3
重复直到收敛:
对所有状态 s:
V(s) ← max_a Σ_s' P(s'|s,a)[R(s,a,s') + γV(s')]

2. 时序差分学习

TD(0) 更新规则

V(St)V(St)+α[Rt+1+γV(St+1)V(St)]

其中 Rt+1+γV(St+1)V(St) 称为 TD 误差

3. Q-Learning算法

Q(St,At)Q(St,At)+α[Rt+1+γmaxaQ(St+1,a)Q(St,At)]

🎪 贝尔曼方程的几何解释

贝尔曼方程可以看作是在价值函数空间中的压缩映射 (Contraction Mapping)

graph TD
    A["价值函数空间"] --> B["贝尔曼算子 T"]
    B --> C["新的价值函数"]
    C --> D["不动点 = 真实价值函数"]
    
    B --> B1["T[V](s) = max_a Σ_s' P(s'|s,a)[R + γV(s')]"]
    
    style D fill:#e8f5e8

压缩性质||T[V1]T[V2]||γ||V1V2||

这保证了价值迭代算法的收敛性。

💡 实际意义与直觉

  1. 递归结构:复杂问题分解为子问题
  2. 动态规划原理:最优决策的子结构性质
  3. 时间一致性:当前最优决策考虑未来最优性
  4. 算法基础:几乎所有RL算法的理论根基

🎯 小结

贝尔曼方程不仅是数学上的优雅表达,更是理解强化学习本质的钥匙。它告诉我们:

  • 价值函数具有递归结构
  • 当前决策应该考虑长远影响
  • 最优策略满足动态规划的最优子结构性质
  • 通过迭代求解可以逼近真实价值函数

掌握贝尔曼方程是深入理解强化学习算法的必经之路。

💡 最后的话:强化学习的魅力在于它模拟了生物学习的本质过程——通过试错和反馈不断改进。就像人类学习骑自行车一样,强化学习让机器也能在与环境的交互中获得智慧。愿这份指南能为您的强化学习之旅提供坚实的起点!

附注:探索与利用的进一步阅读