《智能计算》期末复习指南
强化学习核心概念与应用
强化学习基础概念
核心要素与定义
强化学习的四大要素
强化学习系统包含四个基本要素:
- 智能体 (Agent): 学习者和决策者
- 环境 (Environment): 智能体交互的对象
- 状态 (State, S): 环境的当前情况描述
- 动作 (Action, A): 智能体可以采取的行为
马尔可夫决策过程 (MDP)
MDP是强化学习的数学框架,定义为五元组:\((S, A, P, R, \gamma)\)
- 状态空间 (S): 所有可能状态的集合
- 动作空间 (A): 所有可能动作的集合
- 转移概率 (P): \(P(s'|s,a)\) 表示在状态\(s\)执行动作\(a\)后转移到状态\(s'\)的概率
- 奖励函数 (R): \(R(s,a,s')\) 表示转移获得的即时奖励
- 折扣因子 (γ): \(0 \leq \gamma \leq 1\),控制对未来奖励的重视程度
未来状态的概率分布仅依赖于当前状态和动作,与历史无关: \[P(S_{t+1}|S_t, A_t, S_{t-1}, A_{t-1}, ...) = P(S_{t+1}|S_t, A_t)\]
策略与值函数
策略 (Policy, π): 从状态到动作的映射 - 确定性策略: \(a = \pi(s)\) - 随机性策略: \(\pi(a|s) = P(A_t = a | S_t = s)\)
状态值函数: \(V^\pi(s) = E[G_t | S_t = s, \pi]\)
动作值函数: \(Q^\pi(s,a) = E[G_t | S_t = s, A_t = a, \pi]\)
其中累积回报: \(G_t = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}\)
Bellman方程
Bellman期望方程
状态值函数的Bellman方程: \[V^\pi(s) = \sum_a \pi(a|s) \sum_{s'} P(s'|s,a)[R(s,a,s') + \gamma V^\pi(s')]\]
动作值函数的Bellman方程: \[Q^\pi(s,a) = \sum_{s'} P(s'|s,a)[R(s,a,s') + \gamma \sum_{a'} \pi(a'|s') Q^\pi(s',a')]\]
Bellman最优方程
最优状态值函数: \[V^*(s) = \max_a \sum_{s'} P(s'|s,a)[R(s,a,s') + \gamma V^*(s')]\]
最优动作值函数: \[Q^*(s,a) = \sum_{s'} P(s'|s,a)[R(s,a,s') + \gamma \max_{a'} Q^*(s',a')]\]
无模型学习方法
蒙特卡洛 (MC) 方法
特点
- 无偏估计: 使用真实的累积回报\(G_t\)
- 高方差: 依赖整个episode的随机性
- 需要完整episode: 必须等到episode结束才能更新
更新规则
\[V(S_t) \leftarrow V(S_t) + \alpha[G_t - V(S_t)]\]
时序差分 (TD) 学习
特点
- 有偏估计: 使用bootstrapping(自举)
- 低方差: 只依赖一步的随机性
- 单步更新: 每一步都可以更新
TD(0) 更新规则
\[V(S_t) \leftarrow V(S_t) + \alpha[R_{t+1} + \gamma V(S_{t+1}) - V(S_t)]\]
特性 | MC方法 | TD方法 |
---|---|---|
偏差 | 无偏 | 有偏 |
方差 | 高 | 低 |
收敛性 | 保证收敛 | 通常收敛 |
更新时机 | Episode结束 | 每一步 |
适用场景 | 有限episode | 持续任务 |
经典控制算法
SARSA (同策略)
更新规则: \[Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha[R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) - Q(S_t, A_t)]\]
特点: - 同策略学习 (On-Policy) - 评估和改进的是当前执行的策略 - 相对保守,适合安全性要求高的场景
Q-Learning (离策略)
更新规则: \[Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha[R_{t+1} + \gamma \max_{a'} Q(S_{t+1}, a') - Q(S_t, A_t)]\]
特点: - 离策略学习 (Off-Policy) - 可以从其他策略的经验中学习 - 更激进,探索性更强
ε-贪婪策略
平衡探索与利用: \[ \pi(a|s) = \begin{cases} 1 - \epsilon + \frac{\epsilon}{|A|} & \text{if } a = \arg\max_{a'} Q(s,a') \\ \frac{\epsilon}{|A|} & \text{otherwise} \end{cases} \]
深度强化学习
函数逼近
当状态空间或动作空间过大时,需要使用函数逼近:
- 线性函数逼近: \(\hat{V}(s,\mathbf{w}) = \mathbf{w}^T \mathbf{x}(s)\)
- 非线性函数逼近: 神经网络等
深度Q网络 (DQN)
关键技术:
- 经验回放 (Experience Replay): 存储\((s,a,r,s')\)经验,随机采样打破相关性
- 目标网络 (Target Network): 提供稳定的学习目标
- 神经网络: 逼近Q函数
损失函数: \[L(\theta) = E[(r + \gamma \max_{a'} Q(s', a'; \theta^-) - Q(s, a; \theta))^2]\]
策略梯度方法
策略梯度定理
\[\nabla J(\theta) = E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(a|s) Q^{\pi_\theta}(s,a)]\]
Actor-Critic方法
结构: - Actor: 学习策略\(\pi_\theta(a|s)\) - Critic: 学习值函数\(V_\phi(s)\)或\(Q_\phi(s,a)\)
优势: - 结合值函数和策略梯度的优点 - 降低方差 - 适合连续动作空间
商业应用场景
常见应用领域
1. 动态定价
- 状态: 需求量、库存、时间、竞争对手价格
- 动作: 设置商品价格
- 奖励: 利润、销量、市场份额
2. 推荐系统
- 状态: 用户历史行为、偏好、上下文信息
- 动作: 推荐的内容/商品
- 奖励: 点击率、转化率、用户满意度
3. 金融风控
- 状态: 用户信用信息、交易历史
- 动作: 批准/拒绝贷款、额度设定
- 奖励: 长期收益(考虑利息和违约风险)
实际应用挑战
1. Sim-to-Real Gap
模拟环境与真实环境的差异可能导致性能下降
2. 奖励函数设计
- 需要准确反映长期商业目标
- 避免”钻空子”行为
- 平衡多个目标
3. 伦理考量
- 算法偏见与公平性
- 透明度与可解释性
- 用户隐私保护
实践工具与框架
OpenAI Gym/Gymnasium
标准化的强化学习环境接口:
import gymnasium as gym
= gym.make("CartPole-v1")
env = env.reset()
observation, info
for _ in range(1000):
= env.action_space.sample() # 随机动作
action = env.step(action)
observation, reward, terminated, truncated, info
if terminated or truncated:
= env.reset()
observation, info
env.close()
Stable Baselines3
预实现的深度强化学习算法库:
from stable_baselines3 import DQN, A2C, PPO
from stable_baselines3.common.env_util import make_vec_env
# 创建环境
= make_vec_env("CartPole-v1", n_envs=4)
env
# 训练DQN模型
= DQN("MlpPolicy", env, verbose=1)
model =25000)
model.learn(total_timesteps
# 评估模型
= env.reset()
obs for i in range(1000):
= model.predict(obs, deterministic=True)
action, _states = env.step(action) obs, reward, done, info
复习练习题
选择题练习
练习1
在强化学习中,折扣因子γ=0.9意味着: A) 智能体只关注即时奖励 B) 智能体更重视长期奖励 C) 10步后的奖励权重降为原来的约35% D) 智能体的学习速度很慢
答案:C
折扣因子γ=0.9意味着: - t+1步的奖励权重为\(\gamma^1 = 0.9\) - t+10步的奖励权重为\(\gamma^{10} = 0.9^{10} ≈ 0.35\)
因此10步后的奖励权重确实降为原来的约35%。
练习2
SARSA和Q-Learning的主要区别在于: A) SARSA是有模型的,Q-Learning是无模型的 B) SARSA使用实际选择的下一个动作,Q-Learning使用最优的下一个动作 C) SARSA适用于连续动作,Q-Learning适用于离散动作 D) SARSA收敛更快
答案:B
- SARSA更新时使用\((S,A,R,S',A')\),其中\(A'\)是实际在\(S'\)选择的动作
- Q-Learning更新时使用\(\max_{a'} Q(S',a')\),即最优动作的Q值
- 这使得SARSA是同策略的,Q-Learning是离策略的
判断题练习
练习3
蒙特卡洛方法的估计是无偏的,时序差分方法的估计是有偏的。
正确
- MC方法使用真实的累积回报\(G_t\),是\(V^\pi(s)\)的无偏估计
- TD方法使用\(R_{t+1} + \gamma V(S_{t+1})\),由于\(V(S_{t+1})\)是估计值,所以是有偏估计
练习4
深度Q网络(DQN)中的目标网络参数需要与主网络同步更新以保证学习稳定性。
错误
目标网络的参数应该定期更新(如每1000步)而不是同步更新,这样可以: - 提供稳定的学习目标 - 避免学习过程中的震荡 - 提高训练稳定性
简答题练习
练习5
场景:智能交通信号控制
某城市希望使用强化学习优化交通信号灯控制,以减少车辆平均等待时间。请分析:
- 如何定义状态空间?
- 如何设计奖励函数?
- 这个应用中可能面临什么挑战?
1. 状态空间定义: - 各方向的车辆排队长度 - 当前信号灯状态和剩余时间 - 各方向的车流密度 - 时间特征(高峰期/非高峰期)
2. 奖励函数设计: - 负奖励:各方向车辆等待时间的加权和 - 正奖励:通过路口的车辆数量 - 平衡各方向的交通流量
3. 可能面临的挑战: - 多智能体协调(相邻路口的信号灯) - 安全约束(最小绿灯时间) - 实时性要求高 - 交通模式的非平稳性
练习6
算法比较:为什么Actor-Critic方法适合处理连续动作空间?
Actor-Critic适合连续动作空间的原因:
- 直接策略输出:Actor网络可以直接输出连续动作的参数(如高斯分布的均值和方差)
- 避免离散化:不需要将连续动作空间离散化,避免精度损失
- 梯度优化:可以直接对策略参数进行梯度优化
- 处理高维动作:相比DQN需要对每个动作计算Q值,Actor-Critic可以高效处理高维连续动作
对比DQN的局限性: - DQN需要\(\max_a Q(s,a)\)操作,在连续空间中难以实现 - 离散化会导致维度灾难或精度损失
计算题练习
练习7
给定一个简单的MDP,状态空间\(S = \{s_1, s_2\}\),动作空间\(A = \{a_1, a_2\}\),折扣因子\(\gamma = 0.9\)。
转移概率和奖励如下: - \(P(s_1|s_1, a_1) = 0.8, R(s_1, a_1, s_1) = 2\) - \(P(s_2|s_1, a_1) = 0.2, R(s_1, a_1, s_2) = 1\) - \(P(s_1|s_1, a_2) = 0.3, R(s_1, a_2, s_1) = 1\) - \(P(s_2|s_1, a_2) = 0.7, R(s_1, a_2, s_2) = 3\)
假设在状态\(s_2\)采取任何动作都会回到\(s_1\)并获得奖励0。
策略\(\pi\)在\(s_1\)等概率选择两个动作。计算\(V^\pi(s_1)\)。
第一步:列出Bellman方程
\(V^\pi(s_1) = \sum_a \pi(a|s_1) \sum_{s'} P(s'|s_1,a)[R(s_1,a,s') + \gamma V^\pi(s')]\)
第二步:计算各项
对于动作\(a_1\): \(0.5 \times [0.8 \times (2 + 0.9 \times V^\pi(s_1)) + 0.2 \times (1 + 0.9 \times V^\pi(s_2))]\)
对于动作\(a_2\): \(0.5 \times [0.3 \times (1 + 0.9 \times V^\pi(s_1)) + 0.7 \times (3 + 0.9 \times V^\pi(s_2))]\)
第三步:计算\(V^\pi(s_2)\)
\(V^\pi(s_2) = 0 + 0.9 \times V^\pi(s_1) = 0.9 V^\pi(s_1)\)
第四步:代入求解
\(V^\pi(s_1) = 0.5 \times [0.8 \times (2 + 0.9 V^\pi(s_1)) + 0.2 \times (1 + 0.81 V^\pi(s_1))]\) \(+ 0.5 \times [0.3 \times (1 + 0.9 V^\pi(s_1)) + 0.7 \times (3 + 0.81 V^\pi(s_1))]\)
\(= 0.5 \times [1.6 + 0.72 V^\pi(s_1) + 0.2 + 0.162 V^\pi(s_1)]\) \(+ 0.5 \times [0.3 + 0.27 V^\pi(s_1) + 2.1 + 0.567 V^\pi(s_1)]\)
\(= 0.5 \times [1.8 + 0.882 V^\pi(s_1)] + 0.5 \times [2.4 + 0.837 V^\pi(s_1)]\)
\(= 0.9 + 0.441 V^\pi(s_1) + 1.2 + 0.4185 V^\pi(s_1)\)
\(= 2.1 + 0.8595 V^\pi(s_1)\)
解得:\(V^\pi(s_1) = \frac{2.1}{1 - 0.8595} = \frac{2.1}{0.1405} ≈ 14.95\)
总结与考试策略
重点概念回顾
- 基础概念:MDP、马尔可夫性质、策略、值函数
- 算法对比:MC vs TD、SARSA vs Q-Learning、同策略 vs 离策略
- 深度学习:DQN的关键技术、Actor-Critic架构
- 应用场景:商业应用的建模思路、伦理考量
答题技巧
选择题
- 仔细区分概念的细微差别
- 注意算法的适用条件和特点
- 关注数值计算的正确性
判断题
- 注意绝对化表述(“总是”、“从不”等)
- 理解概念间的逻辑关系
- 区分理论理想情况与实际应用
简答题
- 结构化回答,分点列述
- 结合具体场景说明概念
- 注意理论与实践的结合
计算题
- 列出相关公式
- 逐步计算,标明每一步
- 检查答案的合理性
- 时间分配:选择题40分钟,判断题20分钟,简答题60分钟
- 审题仔细:注意题目中的关键词和限定条件
- 答案完整:简答题要答全要点,不要遗漏
- 字迹清晰:保证阅卷老师能够清楚识别
祝各位同学考试顺利!