RLDM 强化学习教程-David Silver
Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist,致力于推进世界人工智能化进程。制定并实施 UAI 中长期增长战略和目标,带领团队快速成长为人工智能领域最专业的力量。
作为行业领导者,他和UAI一起在2014年创建了TASA(中国最早的人工智能社团), DL Center(深度学习知识中心全球价值网络),AI growth(行业智库培训)等,为中国的人工智能人才建设输送了大量的血液和养分。此外,他还参与或者举办过各类国际性的人工智能峰会和活动,产生了巨大的影响力,书写了60万字的人工智能精品技术内容,生产翻译了全球第一本深度学习入门书《神经网络与深度学习》,生产的内容被大量的专业垂直公众号和媒体转载与连载。曾经受邀为国内顶尖大学制定人工智能学习规划和教授人工智能前沿课程,均受学生和老师好评。
更好的渲染效果,请到 这里 来
title: RLDM 强化学习教程-David Silver
date: 2016-05-31 10:50:57
tags: [rl, reinforcement learning, deep learning, value iteration, policy gradient, DQN, Bellman equation, actor-critic, DeepMind]
我们能够将深度学习应用在强化学习中。使用深度神经网络来端对端表示值函数/策略/模型,然后借助随机梯度下降进行参数更新。
深度值函数
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-学习采用神经网络会出现振荡或者发散的情况
数据是序列化的
相邻的样本是相关的,非独立同分布的
Q-值微小变化会导致策略迅速变化
策略可能会振荡
数据的分布会从一个极端摇摆到另一个极端
奖励和 Q-值的范围未知
基本的 Q-学习梯度会在反响传播时变得很大从而不能稳定
深度 Q-网络(DQN)
DQN 为深度基于值的强化学习问题提供了一种稳定解决方案
使用经验回放
将数据之间的关联打破,重回独立同分布的设定下
从过去的策略中学习
使用 免策略 Q-学习
冻结 目标 Q-网络
避免振荡
将 Q-网络和目标网络之间的关联打破
截断奖励或者正规化网络,适应到合适的范围内
可以得到健壮的梯度
稳定的深度强化学习(1):经验回放
为了打破关联,我们从 agent 自己的经验中构建数据集
根据 $\epsilon$-贪婪策略采取行动 $a_t$
将转换 $(s_t, a_t, r_{t+1}, s_{t+1})$ 存放在记忆 $\mathcal{D}$ 中
从 $\mathcal{D}$ 中随机采样一个小批量样本 $(s,a,r,a')$
优化 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 给出了稳定解
对 actor 和 critic 均使用经验回放
冻结目标网络来避免振荡
$\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