Reinforcement Learning

强化学习定义

  • 强化学习是第三种机器学习范式。
  • 与监督/无监督学习不同,它强调交互,核心是训练一个“智能体(agent)”去和环境交互,从而最大化奖励。

基本组成

强化学习问题中主要包含两个参与者:

  1. 代理(Agent):可以是机器人、程序等,负责做决策。
  2. 环境(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

各部分含义如下:

  1. S:状态空间(States)

    • 包含所有可能的环境状态 s,例如机器人的位置、速度等。
    • 可以是有限或无限集合。
  2. A:动作空间(Actions)

    • 代理(Agent)在每个状态下可选择的动作集 a。
  3. R:奖励分布(Reward function)

    • :在状态 s 采取动作 a 后获得奖励 r 的概率分布。
    • 描述“做对了能获得什么好处”。
  4. P:状态转移概率(Transition probability)

    • :在状态 s 下采取动作 a 后转移到下一个状态 的概率。
    • 即:当前状态 + 当前动作 → 下一状态的分布。
  5. :折扣因子(Discount factor)

    • in [0,1],控制未来奖励的“重要程度”。
    • γ 越小,越重视短期回报;γ 越大,越看重长期规划
    • 类似“金钱的通胀率”,现在的奖励更“值钱”。

马尔可夫性质(Markov Property

MDP 的“马尔可夫性”是指:

未来只依赖于当前,而与过去无关

也就是说:

给定当前状态 和动作 ,下一状态 的分布与之前的历史 , , …, , 无关

这种“记忆无关性”使得建模和计算更加简洁。

代理的行为形式化:策略

  • 策略 是一个给定状态下采取动作的概率分布
  • 目标是找到最优策略 ^ *,最大化期望累计折扣奖励

代理与环境的交互过程(也即 MDP 的运行流程)

初始步骤:

  • 环境采样初始状态:

每个时间步 t 的交互过程:

  1. 代理选择动作

根据当前状态 $s_t$ ,策略 $\pi$ 给出动作分布,从中采样出一个动作 $a_t$ 。
  1. 环境反馈奖励

    $$

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}$ ,用于更新自身策略。
  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 核心流程)

  1. 用神经网络 初始化 Q 函数
  2. 在环境中采样轨迹:( )
  3. 用当前网络计算目标值:

  1. 用平方误差作为损失:

  1. 对损失进行梯度下降,更新

重复上面过程,训练网络逼近

四、策略执行:如何用训练好的网络行动?

一旦训练好了神经网络,我们就可以用它来“选动作”:

也就是在每个状态下,选择 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
2
3
4
5
Input: 4 x 84 x 84 (stack of 4 grayscale frames)
↓ Conv Layer 1: 16 filters, 8x8 kernel, stride 4
↓ Conv Layer 2: 32 filters, 4x4 kernel, stride 2
↓ FC Layer: 256 units
↓ Output Layer: |A| units (Q-values for each action)
  • 最后一层输出的是每个动作的 Q 值:

$$

Q(s_t, a_1), Q(s_t, a_2), …, Q(s_t, a_n)

$$

三、训练方法:使用 DQN(Deep Q-Learning)

关键思想:

  1. Q 函数近似
    $$

Q(s, a; \theta) \approx Q^*(s, a)

$$
用神经网络预测每个状态-动作对的 Q 值。

  1. 贝尔曼目标(Bellman Target)

$$

y = r + \gamma \max_{a{\prime}} Q(s{\prime}, a{\prime}; \theta^-)

$$
- 目标值使用 目标网络 \theta^-(定期复制主网络参数)生成,避免目标随主网络变化而震荡。

  1. 损失函数(loss)
    $$

L = \left(Q(s, a; \theta) - y\right)^2

$$
- 用梯度下降训练网络。

  1. 经验回放(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: 推导链条

  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 算法步骤(数学视角)

  1. 初始化策略参数

  2. 对于每一轮:

    • 从环境中采样若干条轨迹
    • 对每条轨迹计算总奖励
    • 对每个时间步累积:

$$

\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 总结

目标:训练一个函数 ,对每个状态-动作对 (s, a) 估计未来累计奖励。

训练方式:使用

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(策略梯度)总结

目标:训练一个策略函数 ,直接输出动作的概率分布,而非间接地用 Q 值。

训练方式:使用

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

思想:学习一个世界模型 ,即状态转移函数,然后在这个模型上做**规划(planning)**来决定动作。

数学模型:

  • 学到的模型:

$$

\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) 等操作,它们是不可微分的,此时反向传播不能工作。

示例一:

路由网络的策略梯度训练

系统结构:

  1. 一张图片经过一个**“路由器”CNN网络**,输出选择概率:

    • P(orange) = 0.2

    • P(blue) = 0.1

    • P(green) = 0.7

  2. 从这个分布中采样选择一个网络(比如 sample green CNN);

  3. 图片通过该 CNN 得到输出(比如分类);

  4. 计算损失 Loss;

  5. 将 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:在每个时刻采样一个位置作为注意力(不可微,需用策略梯度)。

数学建模:

  1. 每一时刻输出注意力位置的策略

  2. 使用策略梯度,目标是最大化整个序列的 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]

$$


四、总结提升

这两个例子说明了强化学习的两大突破性用途

  1. 优化非可导图中的控制逻辑

    • 如选择网络、模块路由、注意力位置。

    • 普通反向传播无法触达,而 RL 的策略梯度却可以!

  2. 泛化了 RL 的应用边界

    • 不仅是“智能体-环境”的形式,还可以训练“模型内部的结构控制”,为构建更复杂架构(如分层网络、动态结构网络)提供可能。

关于可视化注意力机制

  • soft-attention 热力图
  • hard-attention 强化学习,从分布 sample