强化学习课程:stanford_cs234 学习笔记(1)introduction to RL
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 1、强化学习基础
- 1.1 强化学习概念
- 1.2 强化学习常用符号与定义
- 1.3 奖励(reward)和 回报(return)
- 1.4 收益的期望 r ( s , a ) r(s,a) r(s,a) 和 r ( s , a , s ′ ) r ( s , a , s') r(s,a,s′)
- 2、强化学义的一些应用
- 2.1 chartgpt 的训练
- 3、强化学习涉及方面
- 3.1 优化
- 3.2 延迟后果
- 3.3 探索
- 3.4 泛化
- 3.4.1 **通过环境随机化(Environment Randomization)增强泛化**:
- 3.4.2 通过数据增强(Data Augmentation)提升泛化
- 3.4.3 通过探索(Exploration)促进泛化
- 3.4.4 通过正则化(Regularization)防止过拟合
- 3.4.5 通过元学习(Meta-Learning)提升适应能力
- 3.4.6 通过无模型 RL(Model-Free RL)与有模型 RL(Model-Based RL)结合
- 3.4.7 通过多任务学习(Multi-Task Learning, MTL)提升泛化
- 4、强化学义最擅长的两个问题
- 4.1 没有期望行为的示例(No Examples of Desired Behavior)
- 4.2 大规模搜索或优化问题,且结果具有延迟(Enormous Search or Optimization Problem with Delayed Outcomes)
前言
我个人学习笔记,这个笔记中有视频内容,也有很多我个人理解,分享出来即是鞭策自己,也是欢迎大家指正。
1、强化学习基础
1.1 强化学习概念
视频这里 有点啰嗦,我找了一些常用词汇补充
强化学习(Reinforcement Learning, RL):
主要用于训练智能体(agent)在环境(environment)中进行决策,使其通过与环境的交互获得最优策略(policy),以最大化累积奖励(reward)。
这里要区分下:
监督学习:模型学习输入到输出的映射,需要标注数据。
无监督学习:发现数据中的模式,不需要明确的标注。
强化学习:智能体自主探索环境,通过试错学习最优决策策略。
1.2 强化学习常用符号与定义
符号 | 意义 |
---|---|
≐ | 定义符号 |
≈ \approx ≈ | 约等于 |
ϵ \epsilon ϵ | ϵ贪心策略中随机采取动作的概率 |
γ \gamma γ | 折扣系数 |
λ \lambda λ | 迹中的衰减率 |
← \leftarrow ← | 赋值符号 |
s, s ′ | 状态s |
a | 动作a |
r | 收益r(reward) |
t | 离散的时间步,或称为时刻 |
π \pi π | 策略(决策规则) |
π ( s ) \pi(s) π(s) | 根据确定性策略 π 在状态 s 时选取的动作 |
π \pi π(a|s) | 根据随机性策略 π 在状态 s 时选取的动作 a 的概率 |
A t {A_t} At | t 时刻的动作 |
S t S_{t} St | t 时刻的状态,通常由 S t − 1 S_{t − 1} St−1 和 A t − 1 A_{t-1} At−1随机决定 |
R t R_{t} Rt | t 时刻的状态,通常由 S t − 1 S_{t − 1} St−1 和 A t − 1 A_{t-1} At−1随机决定 |
G t G_t Gt | t 时刻的回报(return)和奖励的差别我会详细讨论 |
p ( s ′ , r ∣ s , a ) p ( s' , r ∣ s , a ) p(s′,r∣s,a) | 从状态 s 采取动作 a 转移到状态 s ′ 并获得收益 r 的概率 |
p ( s ′ ∣ s , a ) p ( s'∣ s , a ) p(s′∣s,a) | 从状态 s 采取动作 a 转移到状态 s ′ 的概率 |
r ( s , a ) r ( s , a ) r(s,a) | 从状态 s 采取动作 a 获得的即时收益的期望 |
r ( s , a , s ′ ) r ( s , a , s') r(s,a,s′) | 从状态 s 采取动作 a 转移到状态 s ′ 获得的即时收益的期望 我后面也会详细讲 |
v π ( s ) v_\pi(s) vπ(s) | π(s)状态 s 在策略 π \piπ 下的价值(期望回报) |
v ∗ ( s ) v_∗( s ) v∗(s) | v ∗ ( s ) v_*(s) v∗(s)状态 s 在最优策略下的价值 |
q π ( s , a ) q_\pi(s, a) qπ(s,a) | 状态 s在策略 π \piπ 下采取动作 a 的价值 |
q ∗ ( s , a ) q_*(s, a) q∗(s,a) | s 在最优策略下采取动作 a 的价值 |
$V, V_{t} | 状态价值函数 |
Q, Q_{t} | 动作价值函数 |
1.3 奖励(reward)和 回报(return)
奖励(Reward,
R
t
R_t
Rt):即时反馈
,反映智能体当前决策的好坏。例如,在游戏中吃金币获得 +10 分。
回报(Return,
G
t
G_t
Gt):未来奖励的累积和
,决定智能体应该选择哪种策略来获得长期最大收益,即衡量长期收益
。例如,AI 可能会放弃短期收益以换取未来更大的奖励。
假设一个每个时间步的奖励如下:
时间步长t | 奖励 R t R_t Rt |
---|---|
1 | +1 |
2 | +0 |
3 | +2 |
4 | +3 |
5 | +5 |
如果 𝛾=1(无折扣),回报计算如下:
G
1
=
R
2
+
R
3
+
R
4
+
R
5
=
0
+
2
+
3
+
5
=
10
{G1=R_2+R_3+R_4+R_5 =0+2+3+5=10}
G1=R2+R3+R4+R5=0+2+3+5=10
G
2
=
R
3
+
R
4
+
R
5
=
2
+
3
+
5
=
10
{G2=R_3+R_4+R_5 =2+3+5=10}
G2=R3+R4+R5=2+3+5=10
G
3
=
+
R
4
+
R
5
=
3
+
5
=
8
{G3=+R_4+R_5 =3+5=8}
G3=+R4+R5=3+5=8
如果 𝛾=0.9(有折扣),回报计算如下:
G
1
=
0
+
0.9
×
2
+
0.
9
2
×
3
+
0.
9
3
×
5
≈
7.07
{G1=0+0.9×2+0.9^2×3+0.9^3×5≈7.07}
G1=0+0.9×2+0.92×3+0.93×5≈7.07
G
2
=
2
+
0.9
×
3
+
0.
9
2
×
5
≈
7.23
{G2=2+0.9×3+0.9^2×5≈7.23}
G2=2+0.9×3+0.92×5≈7.23
可以见到,选择合适的折扣因子 ,所以𝛾 很重要:
𝛾过大,智能体更关注长期收益(但可能难以学到短期最优)。
𝛾过小,智能体更关注短期奖励(可能忽略远期更好的决策)。
1.4 收益的期望 r ( s , a ) r(s,a) r(s,a) 和 r ( s , a , s ′ ) r ( s , a , s') r(s,a,s′)
查了一些网页,基本上:
r
(
s
,
a
)
=
E
[
R
t
∣
S
t
=
s
,
A
t
=
a
]
r(s,a) = E[R_t|S_t = s, A_t = a]
r(s,a)=E[Rt∣St=s,At=a] 这里的 E就是期望
。
例1:
如果在某个状态 𝑠下执行动作 𝑎可能会有 50% 的概率得到奖励 +1,50% 的概率得到奖励 -1,则:
r(s, a) = 0.5 * 1 + 0.5 * (-1) = 0
r
(
s
,
a
,
s
′
)
=
E
[
R
t
∣
S
t
=
s
,
A
t
=
a
,
S
t
+
1
=
s
′
]
r(s,a,s') = E[R_t∣S_t =s, A _t = a, S_{t+1} =s']
r(s,a,s′)=E[Rt∣St=s,At=a,St+1=s′] 同理,这里的 E也是期望
,只不过这里有个 转移概率
P
(
s
′
∣
s
,
a
)
P(s'|s, a)
P(s′∣s,a)
例2:
在自动驾驶任务中,如果车子在状态 𝑠(前方有红灯)执行动作 𝑎(刹车),可能会有不同情况:
caseA: 90% 概率停下(𝑠’= 车停在红灯前),奖励 r=+10(遵守交通规则)。
caseB: 10% 概率停下(𝑠’= 车压线),奖励 r=-10(违规)。
2、强化学义的一些应用
用蒙特卡洛树来下围棋
用 强化学习考虑如何用磁场控制核聚变将其一直保持在一个区域内
用强化学习来看一个人是否需要检查新冠
这里有个 chatgpt 的 用强化学习的优化需要讲下:
2.1 chartgpt 的训练
chartgpt 其实是有监督和无监督。
step1:监督学习(supervised Fine-tuning SFT)。
过程1:从数据中采样提示(prompt),比如我写一个了一个 prompt:请解释强化学习。
过程2:人工给出标准回答。
过程3:用这个 标注好的数据来微调 gpt - 3.5,这里依然是监督学习
自此得到一个初步模型
step2:训练奖励模型(Train a Reward Model)
过程1:采样一个提示(prompt),就是刚才那个 “请解释强化学习”。
过程2:模型生成多个可能得回答
过程3:人工标注这些答案的顺序排序
过程4:使用这些 排名数据训练一个奖励模型(Reward Model,RM),使其能自动预测输出质量。
自此得到一个 能预测模型输出质量的奖励模型(RM)
**step3:**使用 PPO 强化学习优化策略
PPO 这个网址讲的很好:https://blog.csdn.net/qq_30615903/article/details/86308045)
过程1:我们得到一个 新的 提示词:讲一个有关水獭的故事
过程2:使用 SFT模型做PPO强化学习的初始策略。
过程3:用 step1 的 有监督模型生成一个结果:从前有个小水獭它叫hehe…
过程4:奖励模型得到分数,评估答案的回答质量,并给出分数
过程5:使用PPO 调整chart gpt 的策略
经过上述策略,可以做奥数题了,而且还是银牌水平…
3、强化学习涉及方面
3.1 优化
寻找最优解,没啥
3.2 延迟后果
什么是“延迟后果(delayed consequences)”?就是当前看起来没有影响,只是影响在未来一段时间后才显现。
所以这里有两个挑战:
1 在规划时:决策不仅要看眼前,还要考虑未来,例如局部最优和全局最优。
2 在学习时:时间信用分配问题(temporal credit assignment),就是学习过程中多个步骤后才会得到奖励,如何合理分配奖励给过去的决策。
强化学习如何做:
强化学习算法如何处理延迟奖励?
(1)使用折扣因子(Discount Factor, 𝛾)来平衡短期和长期奖励:
G
t
=
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
.
.
.
{G_t=R_{t+1}+γR_{t+2}+γ^2R_{t+3}+...}
Gt=Rt+1+γRt+2+γ2Rt+3+...
(2)深度 Q 网络(DQN)和策略梯度方法(如 PPO)使用回溯机制(Backpropagation)来调整决策影响。
3.3 探索
什么是探索
强化习中的探索方法:
(1)ε-greedy 方法:以 1−ϵ 的概率 选择当前最优动作(利用)。以 ϵ 的概率 随机选择动作(探索)。
(2)Upper Confidence Bound (UCB)。在多臂老虎机(multi-armed bandit)问题中,智能体根据不确定性进行探索,选择高置信区间的动作。
(3)贝叶斯优化(Bayesian Optimization)
通过对奖励的概率分布建模来进行智能探索。
3.4 泛化
这里 的 ppt讲解了一个 打砖块游戏,DeepMind 在 2015 年展示了这个 可以被 Atari 自己玩。
我这里 有个问题,一般的强化学习如何做到泛化?
3.4.1 通过环境随机化(Environment Randomization)增强泛化:
(1) 领域随机化(Domain Randomization)
核心思想:在训练过程中随机改变环境参数,让智能体学习在多种环境中都能适应。
应用示例:
机器人学(Robotics):在模拟训练中随机改变摩擦力、重力、光照、物体颜色等,使训练出的策略能适用于真实世界。
我平常在训练降噪网络时,也会引入更多场景。
(2) 任务随机化(Task Randomization)
核心思想:在训练过程中,让智能体经历不同的任务设置,使其学会适应不同的目标。
示例:
在迷宫导航任务中,每次训练时迷宫结构都不同,使智能体学会在新迷宫中也能找到出口。
3.4.2 通过数据增强(Data Augmentation)提升泛化
传统深度学习中的数据增强(Data Augmentation) 方法同样适用于强化学习:
图像增强(Image Augmentation):使用翻转、缩放、颜色扰动等方式来增强输入数据,使智能体学会忽略非关键因素。——用过很常见
状态扰动(State Perturbation):在训练过程中,对输入状态增加噪声,提高模型的鲁棒性。——这个很常见
示例:
DeepMind 的 Atari 游戏 RL 研究使用图像数据增强(如随机裁剪、颜色变换)来提升泛化能力。
3.4.3 通过探索(Exploration)促进泛化
智能体如果过早收敛到一个特定策略,就可能导致泛化能力不足。鼓励智能体更全面地探索环境有助于提高泛化能力。
常见探索方法:
(1)ε-greedy 探索(随机探索一定比例的动作)。——有待探索
(2)软 Q 学习(Soft Q-Learning):在策略中引入随机性,让智能体更关注不同可能性。——有待探索
(3)最大熵强化学习(Max-Entropy RL):如 SAC(Soft Actor-Critic),鼓励智能体探索更多可能的策略。——有待探索
例:在稀疏奖励任务(Sparse Reward Tasks)中,智能体如果只学习局部最优策略,就可能无法泛化。鼓励探索不同策略可以帮助智能体发现更广泛的策略空间。
3.4.4 通过正则化(Regularization)防止过拟合
在监督学习中,正则化(Regularization) 被用于防止模型对训练数据过拟合。在 RL 中,我们可以使用类似方法:
(1)权重衰减(Weight Decay):在神经网络优化时,对权重施加 L2 正则化,防止模型过度依赖特定状态。
(2)Dropout:在神经网络中随机屏蔽一部分神经元,以提高模型的鲁棒性。——这个确实可以,很常见
(3)随机裁剪(Random Crop):对输入状态(如图像)进行裁剪,使智能体不完全依赖固定像素区域。———这个我在训练中确实尝试过,也是很常见
例:DeepMind 在训练 RL 代理时发现,使用 Dropout 的 DQN 代理在新环境中表现更稳定。
3.4.5 通过元学习(Meta-Learning)提升适应能力
核心思想:让智能体学会快速适应新的环境,而不是仅仅优化单一策略。
方法:
(1)MAML(Model-Agnostic Meta-Learning):在训练过程中,让智能体接触不同的任务,使其学会在新任务中快速适应。———没用过
(2)RL²(Reinforcement Learning Squared):使用 RNN 记忆多个任务的经验,使智能体能够在新任务中利用过去的知识。——没用过
例:OpenAI 训练 RL 代理在多个任务上优化,使其在新任务上快速适应。
3.4.6 通过无模型 RL(Model-Free RL)与有模型 RL(Model-Based RL)结合
传统强化学习一般分为:
(1)无模型 RL(Model-Free RL):智能体直接学习最优策略,如 DQN、PPO、SAC。
(2)有模型 RL(Model-Based RL):智能体学习环境的动态模型,如 MuZero 。
结合 Model-Based RL + Model-Free RL:让智能体学习环境的动态模型,并结合策略优化,提高泛化能力。
例: MuZero(AlphaZero 的改进版),在多个环境中都能表现出色。
3.4.7 通过多任务学习(Multi-Task Learning, MTL)提升泛化
核心思想:在多个任务上训练智能体,让它学会共享特征,提高适应能力。主要有:
(1)同时训练多个任务,使其在不同环境中都能有效工作。
(2)使用参数共享(Parameter Sharing)或多个策略头(Multi-Head Policy)提升泛化能力。
最著名的例子:ProcGen Benchmark
4、强化学义最擅长的两个问题
cs234 的幻灯片包括老师的演讲,其实只是展示了 AlphaTensor,这是 DeepMind 开发的一个强化学习系统,专门用于优化矩阵乘法算法。强化学习通过搜索不同的矩阵乘法分解方式,找到更高效的方法。并使用 AlphaZero 风格的训练策略,通过自我博弈不断优化算法。最终发现了一些比 Strassen 算法更优的矩阵乘法方法。
引出:强化学习(RL)在某些类型的问题上特别强大,主要包括以下两类:
4.1 没有期望行为的示例(No Examples of Desired Behavior)
当目标是超越人类的智慧能力时(e.g., AlphaGo 目标是超越最强棋手)。涉及的任务没有现成数据,因此无法用监督学习训练(例如发现新的数学公式)。
最典型的案例:
(1)AlphaGo / AlphaZero:通过自我博弈训练 AI,而不是依赖人类棋谱。
(2)AlphaTensor(DeepMind, 2022):用于优化矩阵乘法计算方式,寻找比已知算法更优的方法。
(3)科学发现:在物理、化学等领域寻找新的理论(如自动发现物理定律)。
4.2 大规模搜索或优化问题,且结果具有延迟(Enormous Search or Optimization Problem with Delayed Outcomes)
该类的问题特点就是搜索空间极大,无法暴力枚举所有解法
。同时奖励是延迟的
,推理时无法立即知道当前决策的最终好坏。
比如:
(1)强化学习玩游戏(Atari, AlphaZero):决策影响远期得分,必须优化长期策略。
(2)AlphaFold(蛋白质折叠预测):在庞大的搜索空间中寻找最优蛋白质折叠方式。
(3)自动化数学推理(如 AlphaTensor):寻找最优数学计算方式,例如更高效的矩阵乘法方法。
(4)自动驾驶:车辆决策影响未来安全性,反馈信号通常是延迟的。