Reinforcement learning by David Silver in RLDM 2015

我们能够将深度学习应用在强化学习中。使用深度神经网络来端对端表示值函数/策略/模型,然后借助随机梯度下降进行参数更新。

深度值函数


Bellman 方程

  • Bellman 期望方程将值函数 Q^{\pi} 展开:

Q^\pi(s,a) = \mathbb{E}~[r_{t+1} + \gamma r_{t+1} + \gamma^2r_{t+1} + \dots | s,a] =\mathbb{E}_{s',a'}[r + \gamma Q^\pi(s',a') | s, a]

  • Bellman 最优方程将最优值函数 Q^* 展开:

Q^*(s,a) = \mathbb{E}_{s'} [r + \gamma \max_{a'} Q^*(s',a') | s, a]

  • 策略迭代算法求解了 Bellman 期望方程

Q_{i+1}(s,a) = \mathbb{E}_{s'} [r + \gamma Q_i(s', a') | s,a]

  • 值迭代算法求解了 Bellman 最优方程

Q_{i+1} (s, a) = \mathbb{E}_{s',a'} [r + \gamma \max_{a'} Q_i(s',a')|s,a]

非线性 Sarsa 策略迭代

  • 使用参数为 w 的 Q-network 来表示值函数

Q(s, a, w) \approx Q^\pi(s,a)

  • 通过 Q-值的均方误差来定义目标函数

\mathcal{L}(w) = \mathbb{E} [(r + \gamma Q(s',a',w) - Q(s,a,w))^2]

  • 我们就有了下面的 Sarsa 梯度

\frac{\partial \mathcal{L}(w)}{\partial w} = \mathbb{E}[(r + \gamma Q(s',a',w) - Q(s,a,w)) \frac{\partial Q(s,a,w)}{\partial w}]

  • 借助 SGD 使用 \frac{\partial \mathcal{L}(w)}{\partial w} 端对端优化目标函数

深度强化学习的稳定性问题

基本的 Q-学习采用神经网络会出现振荡或者发散的情况

  1. 数据是序列化的
    1. 相邻的样本是相关的,非独立同分布的
  2. Q-值微小变化会导致策略迅速变化
    1. 策略可能会振荡
    2. 数据的分布会从一个极端摇摆到另一个极端
  3. 奖励和 Q-值的范围未知
    1. 基本的 Q-学习梯度会在反响传播时变得很大从而不能稳定

深度 Q-网络(DQN)

DQN 为深度基于值的强化学习问题提供了一种稳定解决方案

  1. 使用经验回放
    1. 将数据之间的关联打破,重回独立同分布的设定下
    2. 从过去的策略中学习
    3. 使用 免策略 Q-学习
  2. 冻结 目标 Q-网络
    1. 避免振荡
    2. 将 Q-网络和目标网络之间的关联打破
  3. 截断奖励或者正规化网络,适应到合适的范围内
    1. 可以得到健壮的梯度

稳定的深度强化学习(1):经验回放

为了打破关联,我们从 agent 自己的经验中构建数据集

  1. 根据 \epsilon-贪婪策略采取行动 a_t
  2. 将转换 (s_t, a_t, r_{t+1}, s_{t+1}) 存放在记忆 \mathcal{D}
  3. \mathcal{D} 中随机采样一个小批量样本 (s,a,r,a')
  4. 优化 Q-网络和 Q-学习目标之间的均方误差 MSE,如

\mathcal{L}(w) = \mathbb{E}_{s,a,r,s' \sim \mathcal{D}} [(r + \gamma \max_{a'}Q(s',a',w) - Q(s,a,w))^2]

稳定的深度强化学习(2):固定目标 Q-网络

为了避免振荡,固定在 Q-学习目标网络的参数

  • 根据旧的,固定的参数 w^- 计算 Q-学习目标函数

r + \gamma \max_{a'} Q(s',a',w^-)

  • 优化 Q-网络和 Q-学习目标之间的均方误差 MSE

\mathcal{L}(w) = \mathbb{E}_{s,a,r,s'\sim \mathcal{D}} [(r + \gamma \max_{a'}Q(s',a',w^-)-Q(s,a,w))^2]

  • 周期化地更新固定参数 w^- \leftarrow w

稳定的深度强化学习(3):奖励/值范围

  • DQN 截断奖励在 [-1,+1] 之间
  • 让 Q-值不会过大
  • 确保梯度完好(well-conditioned)
  • 不能够区分奖励的大小
  • 更好的方式:正规化网络输出
  • 比如,通过 batch 正规化

连续行动上的策略梯度

  • 使用一个权重为 u 的深度神经网络 a = \pi(s,u) 来表示策略
  • 定义目标函数为总折扣奖励

J(u) = \mathbb{E} [r_1 + \gamma r_2 + \gamma^2 r_3 + \dots]

  • 使用 SGD 来端对端优化目标函数
  • 即,调整策略参数 u 来达到更大的奖励

确定型策略梯度

策略的梯度由下式给出

\frac{\partial J(u)}{\partial u} = \mathbb{E}_s [\frac{\partial Q^\pi(s,a)}{\partial u}] = \mathbb{E}_s [\frac{\partial Q^\pi(s,a)}{\partial a} \frac{\partial \pi(s,u)}{\partial u}]

策略梯度是最大化提升 Q 的方向

确定型 Actor-Critic

使用两个网络

  • Actor 是参数为 u 的策略 \pi(s, u)

s \xrightarrow[u_1]{}\dots\xrightarrow[u_n]{} a

  • Critic 是参数为 w 的值函数 Q(s, a, w)

s,a \xrightarrow[w_1]{}\dots\xrightarrow[w_n]{} Q

  • Critic 为 Actor 提供损失函数

s \xrightarrow[u_1]{}\dots\xrightarrow[u_n]{} a\xrightarrow[w_1]{}\dots\xrightarrow[w_n]{} Q

  • 梯度从 Critic 到 Actor 反向传播

\frac{\partial a}{\partial u} \xleftarrow[]{}\dots\xleftarrow[]{} \frac{\partial Q}{\partial a} \xleftarrow[]{} \dots\xleftarrow[]{}

确定型 Actor-Critic:学习规则

  • Critic 通过 Q-学习估计当前策略的值

\frac{\partial \mathcal{L}(w)}{\partial w} = \mathbb{E} [(r + \gamma Q(s',\pi(s'),w)-Q(s,a,w)) \frac{\partial Q(s,a,w)}{\partial w}]

  • Actor 按照提升 Q 的方向更新策略

\frac{\partial J(u)}{\partial u} = \mathbb{E}_s [\frac{\partial Q(s,a,w)}{\partial a} \frac{\partial \pi(s,u)}{\partial u}]

确定型深度策略梯度(DDPG)

  • 基本的 actor-critic 使用神经网络会振荡或者发散
  • DDPG 给出了稳定解
  1. 对 actor 和 critic 均使用经验回放
  2. 冻结目标网络来避免振荡

\frac{\partial \mathcal{L}(w)}{\partial w} = \mathbb{E}_{s,a,r,s'\sim \mathcal{D}} [(r + \gamma Q(s',\pi(s',u^-),w^-)-Q(s,a,w)) \frac{\partial Q(s,a,w)}{\partial w}]

\frac{\partial J(u)}{\partial u} = \mathbb{E}_{s,a,r,s'\sim \mathcal{D}}[\frac{\partial Q(s,a,w)}{\partial a} \frac{\partial \pi(s,u)}{\partial u}]

用于连续行动控制的 DDPG

  • 从原始像素 s 端对端学习控制策略
  • 输入状态 s 是前 4 帧的图像的原始像素的栈
  • Q\pi 两个不同的卷积网络
  • 在 MuJoCo 中进行模拟

基于模型的强化学习

学习环境的转移模型:p(r,s'|s,a)

使用转换模型来进行规划

  • 使用转移模型来查找最优行动

深度模型

  • 使用深度神经网络来表示转移模型 p(r,s'|s,a)
  • 定义目标函数来评价模型的好坏
  • 如,重新创建下一状态的比特数(Gregor et al.)
  • 通过 SGD 来优化目标函数

基于模型的强化学习的挑战

综合误差

  • 转换模型的误差会整个轨迹上复合
  • 长轨迹的结尾,奖励就完全错了
  • 基于模型的强化学习在 Atari 游戏上无效(到目前为止)

值/策略的深度神经网络可以隐式地“规划”

  • 网络的每层执行任意的计算步骤
  • n-层网络可以向前看 n 步
  • 转换模型是否需要?

围棋中的深度学习

Monte-Carlo 搜索

  • MCTS 模拟未来轨迹
  • 构建巨大的拥有百万位置的向前搜索树
  • 目前最佳 19X19 程序使用的是 MCTS
  • 例如,第一个强大的围棋程序 MoGo (Gelly et al.)

卷积网络

  • 12 层的卷积网络可以训练来预测专家走法
  • 简单的卷积网络(只看一个位置,没有搜索)
  • 等价于有 10^5 位置的搜索树的 MoGo (Maddison et al.)

结论

  • 强化学习为人工智能提供了一个通用途径的框架
  • 强化学习问题可以用端对端深度学习解决
  • 单个 agent 现在可以解决很多挑战性问题
  • 强化学习 + 深度学习 = 人工智能

问题?

“The only stupid question is the one you never asked.” – Richard Sutton

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s