强化学习定义
- 强化学习是第三种机器学习范式。
- 与监督/无监督学习不同,它强调交互,核心是训练一个“智能体(agent)”去和环境交互,从而最大化奖励。
基本组成
强化学习问题中主要包含两个参与者:
- 代理(Agent):可以是机器人、程序等,负责做决策。
- 环境(Environment):代理所处的外部世界,给出状态、接受动作并返回奖励。
它们的交互机制如下:
- 环境提供一个状态(state)
- 代理基于状态,选择并执行一个动作(action)。
- 环境根据动作反馈一个奖励(reward),表示行为的好坏。
- 环境和代理状态更新,进入下一轮循环。
这个过程在多个时间步(timesteps)中反复进行,是一个长期、动态的交互过程。
应用
强化学习相较于监督学习的四大挑战**
随机性(Stochasticity)
- 在监督学习中:
- 同一个输入 x,总会有确定性的输出 y,损失也是固定的。
- 在强化学习中:
- 相同状态 + 相同行动,得到的奖励可能不同,因为环境可能包含噪声或不确定性。
- 状态可能是部分可观测、嘈杂或不完整。
因此,智能体必须学会如何在不确定和随机的环境中做出决策。
信用分配(Credit Assignment)
- 强化学习中的奖励往往是延迟的(delayed)。
- 比如:送咖啡的机器人拿到奖励,是之前连续多个动作积累的结果。
- 这就出现了**“我现在收到的奖励是由于哪个动作?”**的疑问:
- 是刚才的动作?
- 是几步前的动作?
- 还是一连串行为的组合?
- 这就是“长期信用分配问题”,是强化学习的核心挑战之一。
- 但在监督学习中,每个损失值都直接对应当前预测,没有这种长期因果关系的追踪问题。
不可微性(Non-differentiability)
- 在监督学习中,损失函数通常是可导的,可以**反向传播(backpropagation)**训练神经网络。
- 但在强化学习中,奖励信号是环境产生的,我们不能对环境求导。
- 比如:
- 如果奖励来自现实世界,我们没法对现实做反向传播。
- 所以需要一些替代方法(如策略梯度)来解决这个问题,这让RL更难训练。
非平稳性(Non-stationarity)
- 在监督学习中:
- 数据集是静态的,每次模型训练都来自固定分布。
- 在强化学习中:
- 状态的分布会随着代理策略的改变而改变。
- 代理越学越好,会探索到新的状态、接触到新的数据。
- 这意味着:
- 数据分布是动态变化的 → 模型始终在追逐一个不断移动的目标。
- 类似现象也出现在 生成对抗网络(GAN) 中:
- 生成器和判别器互相博弈 → 彼此依赖、彼此影响 → 训练也变得困难。
马尔可夫决策过程(Markov Decision Process,简称 MDP)
MDP 的定义与组成
MDP 是一个五元组,写作:
a
各部分含义如下:
S:状态空间(States)
- 包含所有可能的环境状态 s,例如机器人的位置、速度等。
- 可以是有限或无限集合。
A:动作空间(Actions)
- 代理(Agent)在每个状态下可选择的动作集 a。
R:奖励分布(Reward function)
:在状态 s 采取动作 a 后获得奖励 r 的概率分布。 - 描述“做对了能获得什么好处”。
P:状态转移概率(Transition probability)
:在状态 s 下采取动作 a 后转移到下一个状态 的概率。 - 即:当前状态 + 当前动作 → 下一状态的分布。
:折扣因子(Discount factor) in [0,1],控制未来奖励的“重要程度”。 - γ 越小,越重视短期回报;γ 越大,越看重长期规划。
- 类似“金钱的通胀率”,现在的奖励更“值钱”。
马尔可夫性质(Markov Property
MDP 的“马尔可夫性”是指:
未来只依赖于当前,而与过去无关。
也就是说:
给定当前状态
这种“记忆无关性”使得建模和计算更加简洁。
代理的行为形式化:策略
- 策略
是一个给定状态下采取动作的概率分布。 - 目标是找到最优策略
^ *,最大化期望累计折扣奖励:
代理与环境的交互过程(也即 MDP 的运行流程)
初始步骤:
- 环境采样初始状态:
每个时间步 t 的交互过程:
- 代理选择动作:
根据当前状态 $s_t$ ,策略 $\pi$ 给出动作分布,从中采样出一个动作 $a_t$ 。
环境反馈奖励:
$$
r_t \sim R(r \mid s_t, a_t)
$$
3. 环境更新状态:
$$
s_{t+1} \sim P(s \mid s_t, a_t)
$$
4. 代理接收反馈:
得到 $r_t$ 和 $s_{t+1}$ ,用于更新自身策略。
- 进入下一轮循环。
这一过程不断重复,直至达到某个终止状态或最大时间步。
强化学习目标
强化学习的最终目标是:
找到一个策略
^ ,使得*累计折扣奖励最大化:
$$
\pi^* = \arg\max_{\pi} \mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t r_t\right]
$$
Value Function和Q-Function
为什么需要值函数?
我们想学习一个最优策略
但强化学习中环境是随机的,所以我们需要用期望值来评估一个策略的好坏,而这正是值函数的作用。
值函数(Value Function)
公式:
$$
V^\pi(s) = \mathbb{E} \left[ \sum_{t=0}^{\infty} \gamma^t r_t ,\middle|, s_0 = s, \pi \right]
$$
含义:
在策略
下,从状态 s 开始,未来能期望获得的累计折扣奖励。
解读:
这是一个关于状态 s 的函数。
如果
很大,表示从 s 开始,继续执行策略 ,会获得很多奖励。如果
很小,表示这个状态“没啥前景”,继续执行策略也不会得到太多奖励。
三、动作值函数(Q 函数)
公式:
$$
Q^\pi(s, a) = \mathbb{E} \left[ \sum_{t=0}^{\infty} \gamma^t r_t ,\middle|, s_0 = s, a_0 = a, \pi \right]
$$
含义:
在策略
下,从状态 s 出发,第一步采取动作 a,之后继续执行策略 ,未来能期望获得的累计折扣奖励。
解读:
Q 函数不仅考虑状态,还考虑初始动作。
它回答的问题是:“如果我现在在状态 s,执行动作 a,然后继续按策略
行动,未来能有多好?”Q 函数在实际算法中更常用,因为它可以直接用来做策略优化,比如选最大值(贪心)
V 函数和 Q 函数的关系
二者之间有紧密联系:
$$
V^\pi(s) = \mathbb{E}_{a \sim \pi(\cdot|s)} \left[ Q^\pi(s, a) \right]$$
也就是说:状态值 = 对所有可能动作的 Q 值加权平均(按策略
PS. 轨迹
这表示代理在环境中实际经历的一串状态-动作-奖励序列。值函数和 Q 函数的期望正是对所有轨迹的加权平均。
Bellman方程&Value Iteration算法
一、最优 Q 函数(Q)*
定义:
含义:
从状态 s 开始执行动作 a,然后一直按照某个策略
最优策略与 Q 的关系:*
含义:
最优策略就是从 Q* 中在每个状态下选择 Q 值最大的动作。
二、贝尔曼最优方程(Bellman Optimality Equation)
:从当前状态 s 执行动作 a 得到的奖励。 :下一状态。
直觉解释:
- 执行 a 后你会:
- 获得一个即时奖励 r
- 转移到新状态
- 然后从
开始采取最优动作,继续积累奖励
这就是一种**“未来价值 = 当前奖励 + 未来最大奖励”的递归形式**。
三、值迭代算法(Value Iteration)
目标:
找到满足 Bellman 方程的 Q 函数,就等于找到了 Q*。
更新公式(近似迭代):
- 初始:用一个随机 Q 函数开始(比如全为 0)
- 每次迭代:使用上一轮的 Q 值带入 Bellman 方程,更新为新的一轮 Q 值
- 重复这个过程,理论上
当
优点:
- 只要反复迭代,就能收敛到最优 Q 函数
问题:
- 需要为所有状态-动作对 (s, a) 存储并更新 Q 值 → 状态空间大或无限时不可行
四、解决大状态空间的问题:引入神经网络近似 Q 函数(DQN 背后核心思想)
关键思想:
用神经网络
- 输入:状态 s、动作 a
- 输出:Q 值(预测未来总奖励)
- 参数:
,表示神经网络的权重
使用贝尔曼方程作为损失函数:
- 理想情况下,Q 函数应该满足贝尔曼方程
- 所以我们希望网络输出和右侧目标值越接近越好 → 用差的平方作为损失,优化神经网络参数
贝尔曼方程让我们能“一步步地”逼近最优策略,而神经网络让这一逼近在复杂问题中成为可能。
Deep Q-Learning
一、动机:为什么需要 Deep Q-Learning?
传统的 Q-learning 要保存一个完整的 Q 表(表格),记录每个状态-动作对的 Q 值:
但如果状态或动作空间很大(甚至连续),就不可能保存完整表格,所以我们使用神经网络来近似 Q 函数:
其中:
:状态和动作 :神经网络的参数(权重)
二、目标函数:如何训练神经网络?
1. 目标是逼近最优 Q 函数
贝尔曼最优方程是:
我们不能直接得到
2. 使用贝尔曼方程构造目标值(target)
用当前网络近似计算目标
这表示:
- 当前采取动作 a 得到的即时奖励 r
- 加上转移到下一个状态
后能获得的最大 Q 值 - 这个就是当前状态-动作对的理想 Q 值
3. 损失函数(Loss Function)
用神经网络当前预测值与目标值之间的差值定义损失函数:
这个损失函数的意义:
- 如果当前网络的 Q 预测和贝尔曼目标之间有差距,我们就用梯度下降来更新 \theta
- 这就像训练回归模型一样,只不过目标是贝尔曼方程给的期望回报
三、训练过程(Deep Q-Learning 核心流程)
- 用神经网络
初始化 Q 函数 - 在环境中采样轨迹:(
) - 用当前网络计算目标值:
- 用平方误差作为损失:
- 对损失进行梯度下降,更新
重复上面过程,训练网络逼近
四、策略执行:如何用训练好的网络行动?
一旦训练好了神经网络,我们就可以用它来“选动作”:
也就是在每个状态下,选择 Q 值最大的动作。
Deep Q-Learning 的挑战
一、回顾:Deep Q-Learning
我们希望用神经网络近似最优 Q 函数:
用贝尔曼方程计算“目标值” y_{s,a,\theta}:
再使用平方误差作为损失函数进行训练:
二、
问题1:非平稳性(Nonstationarity)
原因:
- “目标”
是用当前网络本身的输出计算出来的。 - 所以当网络参数
每更新一次,目标值也变了。 - 换句话说:训练目标在变化,训练“方向”也在变。
影响:
- 容易导致训练不稳定、震荡甚至发散。
- 类似于你一边学数学一边改数学教材,会很混乱。
实际应对方法(后续课程常见改进):
- 使用“目标网络”(Target Network):
用一个“延迟更新”的副本网络 Q_{\theta^-} 来生成目标值:
$$
y_{s,a} = r + \gamma \max_{a{\prime}} Q(s{\prime}, a{\prime}; \theta^-)
$$
-
- 使用经验回放来缓解数据相关性问题。
三、
问题2:如何采样训练数据?
原因:
- 我们从与环境交互中获得的数据(状态、动作、奖励、下一个状态)是时序相关的。
- 如果我们直接按顺序训练神经网络,数据高度相关,违反了深度学习中的独立同分布(i.i.d.)假设。
问题表现:
- 导致训练收敛慢、不稳定,容易陷入局部最优或过拟合。
实际应对方法:
- Experience Replay(经验回放):
- 将所有交互数据 (
) 存入一个“记忆池” replay buffer。 - 每次训练时,从这个池中随机采样小批量样本(mini-batch),使样本更加独立、分布更广。
- 将所有交互数据 (
四、补充术语区分
- Q-Learning:传统方法,用 Q 表存储所有 (s, a) 对的值。
- Shallow Q-Learning(浅层 Q 学习):
- 用简单函数逼近器(如线性回归)逼近 Q 函数。
- Deep Q-Learning(深度 Q 学习):
- 用神经网络作为函数逼近器。
案例: DeepMind的DQN(Deep Q Network )算法
一、任务描述:Playing Atari Games
目标(Objective):
让智能体学习以最高得分通关 Atari 游戏(如《打砖块》、Pong、Space Invaders 等)。
强化学习三要素:
元素 | 在 Atari 游戏中的体现 |
---|---|
状态 s | 游戏画面(像素图) |
动作 a | 控制按键(如左、右、上、下) |
奖励 r | 得分的变化(比如球击中砖块+1分) |
二、网络结构(DQN 架构)
网络输入:4 帧游戏画面的堆叠(4x84x84)
每一帧先转为灰度图(减少通道数)
再下采样裁剪到 84\times84 像素
为什么用 4 帧堆叠?
→ 捕捉游戏的动态性(如方向、速度)
卷积神经网络结构如下:
1 | Input: 4 x 84 x 84 (stack of 4 grayscale frames) |
- 最后一层输出的是每个动作的 Q 值:
$$
Q(s_t, a_1), Q(s_t, a_2), …, Q(s_t, a_n)
$$
三、训练方法:使用 DQN(Deep Q-Learning)
关键思想:
- Q 函数近似:
$$
Q(s, a; \theta) \approx Q^*(s, a)
$$
用神经网络预测每个状态-动作对的 Q 值。
- 贝尔曼目标(Bellman Target):
$$
y = r + \gamma \max_{a{\prime}} Q(s{\prime}, a{\prime}; \theta^-)
$$
- 目标值使用 目标网络 \theta^-(定期复制主网络参数)生成,避免目标随主网络变化而震荡。
- 损失函数(loss):
$$
L = \left(Q(s, a; \theta) - y\right)^2
$$
- 用梯度下降训练网络。
经验回放(Experience Replay):
将游戏过程中获得的转移样本 (
) 存储在 buffer 中每轮训练从 buffer 随机采样 mini-batch,打破数据相关性,提高训练稳定性
四、实验结果:自动学习策略
- 初期网络表现差,因为权重随机,动作选择基本靠运气
- 随着训练进行:
- 网络学会追踪球位置
- 控制球拍接球、反弹
- 最终发现将球打到墙角上方形成“破局通道”等高级策略,甚至超过人类表现
特别之处:
- 没有给网络任何“游戏规则”或“物体含义”
- 输入只是原始像素,奖励只是分数
- 纯粹通过试错 + 贝尔曼更新训练出来
Policy Gradient & REINFORCE 算法
一、目标函数与优化目标
我们学习一个参数化策略
$$
J(\theta) = \mathbb{E}{\tau \sim p\theta(\tau)} \left[ \sum_{t=0}^\infty \gamma^t r_t \right]
$$
其中:
:策略神经网络的参数 :整条轨迹 :轨迹在策略 下出现的概率
我们的目标是最大化
$$
\theta^* = \arg\max_\theta J(\theta)
$$
二、核心问题:如何求导 ?
这就是策略梯度的核心问题 —— 期望项是关于随机轨迹的,不直接可微。
于是我们将其一般化为数学表达式:
$$
J(\theta) = \mathbb{E}{x \sim p\theta(x)} \left[ f(x) \right]
\nabla_\theta J(\theta) = \nabla_\theta \mathbb{E}{x \sim p\theta(x)}[f(x)]
$$
三、关键技巧:
Likelihood Ratio Trick
(似然比技巧)
我们不能直接对期望项求导,但可以通过如下技巧进行转化:
Step 1: 推导链条
- 把期望写成积分:
$$
\frac{\partial}{\partial \theta} \mathbb{E}{x \sim p\theta(x)}[f(x)] = \frac{\partial}{\partial \theta} \int p_\theta(x) f(x) dx
= \int \frac{\partial}{\partial \theta} p_\theta(x) f(x) dx
\frac{\partial}{\partial \theta} p_\theta(x) = p_\theta(x) \frac{\partial}{\partial \theta} \log p_\theta(x)
= \int p_\theta(x) \frac{\partial}{\partial \theta} \log p_\theta(x) f(x) dx
= \mathbb{E}{x \sim p\theta(x)} \left[ f(x) \frac{\partial}{\partial \theta} \log p_\theta(x) \right]
$$
这就是 Policy Gradient Theorem 的核心:
$$
\nabla_\theta J(\theta) = \mathbb{E}{\tau \sim p\theta} \left[ f(\tau) \nabla_\theta \log p_\theta(\tau) \right]
$$
其中
四、将其应用于强化学习轨迹
假设轨迹为:
轨迹的概率由环境转移概率和策略决定:
$$
p_\theta(\tau) = \prod_{t=0}^{T} P(s_{t+1} \mid s_t, a_t) \pi_\theta(a_t \mid s_t)
$$
其中:
- 红色项
:环境,我们无法建模 - 蓝色项
:策略,我们在学习
所以:
$$
\log p_\theta(\tau) = \sum_{t=0}^{T} \log \pi_\theta(a_t \mid s_t) + \text{const}
\nabla_\theta \log p_\theta(\tau) = \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t \mid s_t)
\nabla_\theta J(\theta) = \mathbb{E}{\tau \sim p\theta} \left[ \left( \sum_{t=0}^{T} r_t \right) \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t \mid s_t) \right]
$$
这就是经典 REINFORCE 算法:
五、REINFORCE 算法步骤(数学视角)
初始化策略参数
对于每一轮:
- 从环境中采样若干条轨迹
- 对每条轨迹计算总奖励
- 对每个时间步累积:
- 从环境中采样若干条轨迹
$$
\nabla_\theta J(\theta) \approx \sum_{t} R(\tau) \nabla_\theta \log \pi_\theta(a_t \mid s_t)
\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)
$$
**六、直觉解释
策略梯度的方法中我们只知道“轨迹整体的表现”好不好,而不知道每个动作好不好,这就引出了信用分配问题。
如果一整条轨迹表现很好,那我们假设所有的动作都“做对了”,于是就奖励它们。反之亦然。
这正是策略梯度方法收敛慢的核心原因 —— 我们在用非常粗糙的信号训练策略。
总结以及改进
一、Q-Learning 总结
目标:训练一个函数
训练方式:使用
Bellman 方程
作为损失函数
Bellman 目标:
$$
y_{s,a,\theta} = \mathbb{E}{r, s{\prime}} \left[ r + \gamma \max{a{\prime}} Q(s{\prime}, a{\prime}; \theta) \right] \quad\text{where } r \sim R(s, a),\ s{\prime} \sim P(s, a)
L(s, a) = \left(Q(s, a; \theta) - y_{s,a,\theta}\right)^2
$$
我们用这个损失进行梯度下降来更新参数
二、Policy Gradients(策略梯度)总结
目标:训练一个策略函数
训练方式:使用
REINFORCE 算法
和似然比技巧推导的梯度公式
策略目标函数:
$$
J(\theta) = \mathbb{E}{x \sim p\theta}[f(x)] \quad\text{(期望累计奖励)}
\nabla_\theta J(\theta) = \mathbb{E}{x \sim p\theta} \left[ f(x) \sum_{t=0}^\infty \nabla_\theta \log \pi_\theta(a_t \mid s_t) \right]
$$
其中 f(x) 是从轨迹中得到的累计回报(或折扣回报)
每个时间步的动作概率导数都对总奖励起作用
模块 | Q-Learning | Policy Gradient |
---|---|---|
目标 | 学 Q(s, a) | 学策略 |
核心训练方式 | Bellman 方程损失 | REINFORCE/策略梯度公式 |
更新类型 | 梯度下降 | 梯度上升 |
表现形式 | Q值估计 + greedy | 概率分布采样 |
改进技巧 | 目标网络、经验回放 | baseline、actor-critic |
四、改进策略梯度的方法:Baseline
在策略梯度中使用:
$$
\nabla_\theta J(\theta) = \mathbb{E} \left[ (R - b) \nabla_\theta \log \pi_\theta(a_t \mid s_t) \right]
$$
其中:
R:轨迹或一步的实际回报
b:baseline(可以是状态价值函数 V(s_t),或者平均奖励)
这个技巧不会改变 期望梯度,但显著降低方差,提高训练稳定性。
五、下一步方向
讲者在最后指出:
“这些只是最简单的强化学习算法,还有很多更复杂的方法,比如 Actor-Critic、PPO、TRPO、A3C、DDPG、SAC…”
这些方法多数是对 Q-Learning 和 Policy Gradient 的 融合或改进,比如:
使用 Critic 网络估计 V(s) 或 Q(s,a) 来帮助策略训练
使用 Trust Region 控制策略更新步长
采用 经验回放、多线程并行 等工程优化
其他强化学习方法
Model-Based Reinforcement Learning
思想:学习一个世界模型
数学模型:
- 学到的模型:
$$
\hat{P}\phi(s{t+1} \mid s_t, a_t)
$$
再利用该模型进行规划,如使用:
Model Predictive Control(MPC)
或基于贝尔曼方程在模型中模拟 rollouts 来选择动作:
$$
a_t = \arg\max_{a} \mathbb{E}{\hat{P}} \left[ \sum{t{\prime}=t}^T \gamma^{t{\prime}-t} r(s_{t{\prime}}, a_{t{\prime}}) \right]
$$
优点:数据效率高、适合机器人等连续控制问题。
挑战:模型不精确时会误导策略(model bias)。
Actor-Critic
结合了:
- Actor:策略网络
,用来生成动作; - Critic:估计动作的价值 Q(s, a) 或 V(s),用于指导 Actor。
数学上:
Actor 的梯度使用 Critic 来估计:
$$
\nabla_\theta J(\theta) = \mathbb{E}{s \sim \pi} \left[ \nabla\theta \log \pi_\theta(a \mid s) \cdot Q^\pi(s, a) \right]
$$
相比纯策略梯度(REINFORCE):
- 更稳定、方差更低;
- Critic 提供估计值,而不是直接用返回。
Imitation Learning(模仿学习)
目标:用监督学习模仿专家的行为。
pattern
- 数据:专家轨迹
- 训练策略
来拟合专家行为:
$$
\theta^* = \arg\min_\theta \sum_t \mathcal{L}(\pi_\theta(a_t \mid s_t), a_t)
$$
优点:不需要环境反馈,不涉及奖励函数;
缺点:无法处理专家未见过的状态。
Inverse Reinforcement Learning(逆向强化学习, IRL)
目标:先学习专家最可能使用的奖励函数 R(s, a),然后再使用 RL 去优化它。
数学上:
假设专家是最大化某个未知的 R,我们试图:
$$
\max_{R} \quad \mathbb{E}_{\text{expert}} \left[ \sum_t R(s_t, a_t) \right] - \log Z(R)
$$
其中 Z(R) 是归一化项,表示所有策略下的期望。
然后使用强化学习来学一个策略最大化该 R。
IRL 的难点:奖励函数不唯一;需要复杂的优化方法。
Adversarial Learning(对抗式模仿学习)
目标:让学习到的轨迹看起来像专家的轨迹。
与 GAN 类似:
- 判别器 D:判断一条轨迹是专家的还是真实的;
- 生成器(策略) \pi:产生轨迹欺骗判别器。
数学形式(以 GAIL 为例):
最大化目标:
$$
\min_\pi \max_D \ \mathbb{E}{\pi}[\log D(s, a)] + \mathbb{E}{\pi_E}[\log(1 - D(s, a))]
$$
训练过程就是一种博弈:策略网络想骗过判别器。
方法 | 核心思想 | 是否用奖励 | 是否学模型 | 是否模仿专家 |
---|---|---|---|---|
Q-Learning / Policy Gradient | 直接学策略或Q值 | y | y | n |
Model-Based RL | 学环境模型做规划 | y | y | n |
Actor-Critic | 策略 + 价值函数联合训练 | y | n | n |
Imitation Learning | 模仿专家行为 | n | n | y |
Inverse RL | 学专家的奖励函数 | y(从专家反推) | n | y |
Adversarial Learning | 像GAN那样模仿专家 | n | n | y(间接) |
Stochastic Computation Graphs
背景问题
神经网络中存在不可微操作
通常我们训练神经网络依赖的是梯度下降法,但一旦模型中出现 采样(sample)、选择(argmax) 等操作,它们是不可微分的,此时反向传播不能工作。
示例一:
路由网络的策略梯度训练
系统结构:
一张图片经过一个**“路由器”CNN网络**,输出选择概率:
P(orange) = 0.2
P(blue) = 0.1
P(green) = 0.7
从这个分布中采样选择一个网络(比如 sample green CNN);
图片通过该 CNN 得到输出(比如分类);
计算损失 Loss;
将 Reward = -Loss 作为回报信号,用策略梯度更新“路由器”网络的参数。
数学形式:
将路由器视为策略网络 π_θ,Loss 为环境给出的反馈,我们想最大化:
$$
\mathbb{E}{a \sim \pi\theta}[R] \Rightarrow \nabla_\theta J(\theta) = \mathbb{E}{a \sim \pi\theta} [R \nabla_\theta \log \pi_\theta(a)]
$$
其中 a 是选中的分支,
三、示例二:
Attention中的强化学习——Hard Attention
对比说明:
Soft Attention:对不同区域加权平均(可微,可反传);
Hard Attention:在每个时刻采样一个位置作为注意力(不可微,需用策略梯度)。
数学建模:
每一时刻输出注意力位置的策略
使用策略梯度,目标是最大化整个序列的 reward R,例如 BLEU 分数或 loss 的反值:
$$
\nabla_\theta J(\theta) = \mathbb{E}{l \sim \pi\theta} \left[ R \sum_t \nabla_\theta \log \pi_\theta(l_t | x_t) \right]
$$
四、总结提升
这两个例子说明了强化学习的两大突破性用途:
优化非可导图中的控制逻辑:
如选择网络、模块路由、注意力位置。
普通反向传播无法触达,而 RL 的策略梯度却可以!
泛化了 RL 的应用边界:
- 不仅是“智能体-环境”的形式,还可以训练“模型内部的结构控制”,为构建更复杂架构(如分层网络、动态结构网络)提供可能。
关于可视化注意力机制
- soft-attention 热力图
- hard-attention 强化学习,从分布 sample