1 of 40

黄哲威

Zhewei Huang

衡稳

Wen

Heng

周舒畅

Shuchang

Zhou

深度强化学习与

LearningToPaint

Megvii AIC team

2 of 40

3 of 40

Reinforcement Learning

  • Basic idea:
    • Receive feedback in the form of rewards
    • Agent’s utility is defined by the reward function
    • Must (learn to) act so as to maximize expected rewards
    • All learning is based on observed samples of outcomes!

Environment

Agent

Actions: a

State: s

Reward: r

4 of 40

5 of 40

Benchmark

6 of 40

Benchmark

7 of 40

形式化:Markov 决策过程

马尔科夫决策过程一般包含如下五个元素:

•状态集S。比如,在物体位置坐标。

•动作集A。比如,执行上下左右等一系列可行的动作集。

•状态转移概率P(s, a)。表示在状态 s 状态下执行动作 a 后转移到下一个状态的概率分布。

•回报函数R(s, a), SxA 到实数的一个映射,表示当前状态下执行某个动作能得到的奖励值。

•折扣因子 (discount factor)

8 of 40

形式化:Markov 决策过程

总的回报值V:

如果回报函数R只和状态S有关而与动作无关:

选择一个策略π使得回报最大

9 of 40

Bellman 等式

定义值函数V为在状态s下执行策略π能得到的期望的累积折扣回报:

表示为当前回报和后续回报的形式(如果没有后续状态,只有第一项)

假设有最优策略,则有 Bellman 等式

10 of 40

Q-Learning —— Q值表

11 of 40

Q-Learning 更新规则

Amazing result: Q-learning converges to optimal policy -- even if you’re acting suboptimally!

This is called off-policy learning

离线和在线的区别:是否要求用于更新的样本是当前策略做出的

通常还会加上一个指数滑动平均

12 of 40

为什么要引入深度学习?

1. 输入维数很大,比如图像,期望用 NN 自动做特征工程,直接从高维原始数据学习控制策略。

2. DeepMind 的实证,CNN + Q-learning = DQN 很 work

《Human-level control through deep reinforcement learning》

13 of 40

为什么要引入深度学习?

14 of 40

为什么要引入深度学习?

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 函数的极大值点。

15 of 40

怎么训这个网络?

1. actor 和一个环境交互,不停地产生形如 (S, a, S’, r) 这样的四元组,有时还有个标记表示是否是终止状态,把这些四元组存在一个队列里。

2. 更新策略:从队列里采出一组样本,loss = MSE(Q(S, a), r + Q(S’, π(a)),梯度下降。

3. 通常的瓶颈是数据采得很慢(即使有并行),本质原因是探索低效、需要的数据量大。

16 of 40

LearningToPaint

17 of 40

18 of 40

ICLR 2018(oral) SPIRAL —— Deepmind

Synthesizing Programs for Images using Reinforced Adversarial Learning

19 of 40

LearningToPaint —— Overview

GAN Loss

L2 Loss

RL

从强化学习的角度看,我们需要设计一个 AI,给它一个画布和目标图。AI 的每一步在画布上画一个笔画,当它画的笔画使画布和目标图更像时,我们就给它奖励,驱动它学习。我们可以设定一个笔画上限,让 AI 在给定的笔画数后终止。

20 of 40

SPIRAL —— WGAN + RL

21 of 40

SPIRAL —— Architecture

Resnet18

LSTM + Decoder

Embedding

22 of 40

BMVC2018 Doodle-SDQ —— UCLA, Adobe

23 of 40

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

24 of 40

LearningToPaint —— Megvii

25 of 40

LearningToPaint —— 深度强化学习为什么难训练?

深度学习的成功依赖于大量的有标签的样本,从而进行有监督学习。而强化学习只有一个reward返回值,并且这个值还常常带有噪声,延迟。使得agent对任务建模困难。

怎么解决?

  1. DDPG 算法,经验回放离线训练。
  2. Patch Q (为每个 patch 出一个 reward)
  3. Model-based DRL (基于 NN 的笔画渲染器)

26 of 40

LearningToPaint——DDPG

DDPG 运用了演员-评论家(Actor - Critic) 框架,其中策略网络被称为 Actor,而价值网络被称为 Critic。简单理解就是,Critic 估计 Q 函数,Actor估计 Q 函数的极大值点。

在画画这个任务中,Actor 每次画一个笔画,而 Critic 来为 Actor 的这个笔画做一个评价,Actor 的目标是得到更好的评价,Critic 的目标是评价得更准确。

DDPG 的优点是能够在连续的动作空间上作决策,也就是说,我们可以设计一个 k 维向量,其中每一维在 0 到 1 之间,来控制笔画的不同属性。

DDPG 可以离线训练,即 AI 对环境的探索信息可以存储在一个队列中,训练从其中采样,一个信息可以重复使用。

27 of 40

LearningToPaint —— 深度强化学习为什么难训练?

深度学习的成功依赖于大量的有标签的样本,从而进行有监督学习。而强化学习只有一个reward返回值,并且这个值还常常带有噪声,延迟。使得agent对任务建模困难。

怎么解决?

  1. DDPG 算法,经验回放离线训练。
  2. Patch Q (为每个 patch 出一个 reward)
  3. Model-based DRL (基于 NN 的笔画渲染器

28 of 40

LearningToPaint —— NN Renderer

9 * n * n --> 1 * 3n * 3n

比Upsample显著涨点加速

29 of 40

LearningToPaint —— SVHN AE

SVHN

Extracted

Strokes

Binarized Image

30 of 40

LearningToPaint —— SVHN AE

Synthetic

SVHN

Reconstructed

Images

Ground

Truth

31 of 40

LearningToPaint —— 深度强化学习为什么难训练?

深度学习的成功依赖于大量的有标签的样本,从而进行有监督学习。而强化学习只有一个reward返回值,并且这个值还常常带有噪声,延迟。使得agent对任务建模困难。

怎么解决?

  1. DDPG 算法,经验回放离线训练。
  2. Patch Q (为每个 patch 出一个 reward)
  3. Model-based DRL (基于 NN 的笔画渲染器)

32 of 40

LearningToPaint —— DDPG

33 of 40

LearningToPaint —— Architecture

GAP是全局平均池化

# Step 是一个用来指示当前步数的通道

Actor 用了 BN,Critic 和 Discriminator 用了 WN

34 of 40

LearningToPaint —— Experiments

35 of 40

LearningToPaint —— Ablation Study

为了加速收敛,我们提出了一个称为Action Bundle的Trick,让Actor一次前传得出之后若干个笔画,目的是减少总步数,加快Critic收敛

比如原来 1 x 200 笔画,每次出 5 笔,就变成 5 x 40

36 of 40

LearningToPaint —— Ablation Study

37 of 40

LearningToPaint —— Different Strokes

38 of 40

LearningToPaint —— Future work

虽然 model-based 效果好,但是 model free 很重要。SPIRAL把画笔画的渲染器看成黑箱是有道理的,因为可以泛化到其它任务上。

比如 ISP 中的很多操作,很难做成可微的,但我们依然想知道图片集 A 怎么处理一下能比较像图片集 B。

PatchQ 和 Action Bundle 感觉可以再继续探索。

谢谢大家!欢迎提问。

39 of 40

相关链接

40 of 40

彩蛋

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

最终调参