黄哲威
Zhewei Huang
衡稳
Wen
Heng
周舒畅
Shuchang
Zhou
深度强化学习与
LearningToPaint
Megvii AIC team
Reinforcement Learning
Environment
Agent
Actions: a
State: s
Reward: r
Benchmark
Benchmark
形式化:Markov 决策过程
马尔科夫决策过程一般包含如下五个元素:
•状态集S。比如,在物体位置坐标。
•动作集A。比如,执行上下左右等一系列可行的动作集。
•状态转移概率P(s, a)。表示在状态 s 状态下执行动作 a 后转移到下一个状态的概率分布。
•回报函数R(s, a), SxA 到实数的一个映射,表示当前状态下执行某个动作能得到的奖励值。
•折扣因子 (discount factor)
形式化:Markov 决策过程
总的回报值V:
如果回报函数R只和状态S有关而与动作无关:
选择一个策略π使得回报最大
Bellman 等式
定义值函数V为在状态s下执行策略π能得到的期望的累积折扣回报:
表示为当前回报和后续回报的形式(如果没有后续状态,只有第一项)
假设有最优策略,则有 Bellman 等式
Q-Learning —— Q值表
Q-Learning 更新规则
Amazing result: Q-learning converges to optimal policy -- even if you’re acting suboptimally!
This is called off-policy learning
离线和在线的区别:是否要求用于更新的样本是当前策略做出的
通常还会加上一个指数滑动平均
为什么要引入深度学习?
1. 输入维数很大,比如图像,期望用 NN 自动做特征工程,直接从高维原始数据学习控制策略。
2. DeepMind 的实证,CNN + Q-learning = DQN 很 work
《Human-level control through deep reinforcement learning》
为什么要引入深度学习?
为什么要引入深度学习?
1. 输入维数很大,比如图像,期望用 NN 自动做特征工程,直接从高维原始数据学习控制策略。
2. DeepMind 的实证,CNN + Q-learning = DQN 很 work
《Human-level control through deep reinforcement learning》
3. 如果动作空间很大(连续),还可以用 NN 来选动作:
DDPG (深度确定策略梯度)算法。
DDPG 运用了演员-评论家(Actor - Critic) 框架,其中策略网络被称为 Actor,而价值网络被称为 Critic。简单理解就是,Critic 估计 Q 函数,Actor估计 Q 函数的极大值点。
怎么训这个网络?
1. actor 和一个环境交互,不停地产生形如 (S, a, S’, r) 这样的四元组,有时还有个标记表示是否是终止状态,把这些四元组存在一个队列里。
2. 更新策略:从队列里采出一组样本,loss = MSE(Q(S, a), r + Q(S’, π(a)),梯度下降。
3. 通常的瓶颈是数据采得很慢(即使有并行),本质原因是探索低效、需要的数据量大。
LearningToPaint
ICLR 2018(oral) SPIRAL —— Deepmind
Synthesizing Programs for Images using Reinforced Adversarial Learning
LearningToPaint —— Overview
GAN Loss
L2 Loss
RL
从强化学习的角度看,我们需要设计一个 AI,给它一个画布和目标图。AI 的每一步在画布上画一个笔画,当它画的笔画使画布和目标图更像时,我们就给它奖励,驱动它学习。我们可以设定一个笔画上限,让 AI 在给定的笔画数后终止。
SPIRAL —— WGAN + RL
SPIRAL —— Architecture
Resnet18
LSTM + Decoder
Embedding
BMVC2018 Doodle-SDQ —— UCLA, Adobe
LearningToPaint —— Model
Given a target image I and an empty canvas C_0,the agent aims to find a stroke sequence (a_0 , a_1 , ..., a_n−1 ), where rendering at on Ct can get C_t+1.
State and Transition Function
Action
Reward
L_t is the measured loss between I and the C_t
LearningToPaint —— Megvii
LearningToPaint —— 深度强化学习为什么难训练?
深度学习的成功依赖于大量的有标签的样本,从而进行有监督学习。而强化学习只有一个reward返回值,并且这个值还常常带有噪声,延迟。使得agent对任务建模困难。
怎么解决?
LearningToPaint——DDPG
DDPG 运用了演员-评论家(Actor - Critic) 框架,其中策略网络被称为 Actor,而价值网络被称为 Critic。简单理解就是,Critic 估计 Q 函数,Actor估计 Q 函数的极大值点。
在画画这个任务中,Actor 每次画一个笔画,而 Critic 来为 Actor 的这个笔画做一个评价,Actor 的目标是得到更好的评价,Critic 的目标是评价得更准确。
DDPG 的优点是能够在连续的动作空间上作决策,也就是说,我们可以设计一个 k 维向量,其中每一维在 0 到 1 之间,来控制笔画的不同属性。
DDPG 可以离线训练,即 AI 对环境的探索信息可以存储在一个队列中,训练从其中采样,一个信息可以重复使用。
LearningToPaint —— 深度强化学习为什么难训练?
深度学习的成功依赖于大量的有标签的样本,从而进行有监督学习。而强化学习只有一个reward返回值,并且这个值还常常带有噪声,延迟。使得agent对任务建模困难。
怎么解决?
LearningToPaint —— NN Renderer
9 * n * n --> 1 * 3n * 3n
比Upsample显著涨点加速
LearningToPaint —— SVHN AE
SVHN
Extracted
Strokes
Binarized Image
LearningToPaint —— SVHN AE
Synthetic
SVHN
Reconstructed
Images
Ground
Truth
LearningToPaint —— 深度强化学习为什么难训练?
深度学习的成功依赖于大量的有标签的样本,从而进行有监督学习。而强化学习只有一个reward返回值,并且这个值还常常带有噪声,延迟。使得agent对任务建模困难。
怎么解决?
LearningToPaint —— DDPG
LearningToPaint —— Architecture
GAP是全局平均池化
# Step 是一个用来指示当前步数的通道
Actor 用了 BN,Critic 和 Discriminator 用了 WN
LearningToPaint —— Experiments
LearningToPaint —— Ablation Study
为了加速收敛,我们提出了一个称为Action Bundle的Trick,让Actor一次前传得出之后若干个笔画,目的是减少总步数,加快Critic收敛
比如原来 1 x 200 笔画,每次出 5 笔,就变成 5 x 40
LearningToPaint —— Ablation Study
LearningToPaint —— Different Strokes
LearningToPaint —— Future work
虽然 model-based 效果好,但是 model free 很重要。SPIRAL把画笔画的渲染器看成黑箱是有道理的,因为可以泛化到其它任务上。
比如 ISP 中的很多操作,很难做成可微的,但我们依然想知道图片集 A 怎么处理一下能比较像图片集 B。
PatchQ 和 Action Bundle 感觉可以再继续探索。
谢谢大家!欢迎提问。
相关链接
Github 项目主页:https://github.com/hzwer/LearningToPaint
Arxiv:https://arxiv.org/abs/1903.04411
量子位报道:https://zhuanlan.zhihu.com/p/64097633
Youtube:https://youtu.be/YmOgKZ5oipk
彩蛋
2018.12.15
2018.12.25
(WGAN加了weight decay)
2018.12.30
RL去掉了BN,换WN
WGAN也用WN
2018.12.31
环境GPU并行
CNN换ResNet18
2019.1.5
RL只留最后一层FC,分辨率从64升128
2019.1.10
Action Bundle
2019.1.20
去掉AC参数共享
去掉动作的噪声
2019.2.2
调参
2019.2.16
代码优化提速15%,增加训练时长
2019.3
最终调参