热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LearningtoPaintwithModel-basedDeepReinforcementLearning

本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。

Learning to Paint with Model-based Deep Reinforcement Learning

  • Abstract
  • Introduction
  • Related work
  • Painting Agent
    • Overview
    • The Model
    • Learning
      • Model-based DDPG
        • 原始的DDPG
        • 基于模型的DDPG
    • Action Bundle
    • WGAN Reward
    • Network Architectures
  • Stroked-based Renderer
    • Neural Renderer
    • Stroke Design
  • Training
  • Ablation Studies(对比实验的结果)
    • Model-based vs. Model-free DDPG
    • Rewards
    • Stroke Number and Action Bundle
  • Conclusion
  • 论文地址


Abstract

通过结合神经渲染器和基于模型的深度强化学习(DRL),教机器像人类画家一样画画。agent可以产生笔画的坐标点、半径、透明度、颜色值等。

Introduction

本文定义了人工智能绘画,agent可以按顺序在画布上绘制笔画,以生成类似于给定目标图像的绘画。

agent绘制纹理丰富的图像存在三个挑战:

  • 首先,要像人一样绘画,需要agent具有将给定目标图像在空间上分解为笔画,然后以正确顺序将它们画在画布上的能力。agent需要可视地解析目标图像,了解画布的当前状态,并制定有关未来笔画的预见计划。为了解决此问题,一种常见的方法是在每个步骤中为笔画分解提供有监督的损失。这种方法在计算上是消耗非常大的。同样,纹理丰富的图像绘画通常需要数百次笔画才能生成与目标图像相似的绘画,这比涂鸦,素描或字符书写要高数十倍。为了处理这样的长期计划任务,强化学习(RL)是一个不错的选择,因为RL的目的是使整个绘画过程的累积奖励最大化,而不是使每个步骤的监督损失最小化。这使agent具有远见卓识,计划笔画分解和大量步骤的绘画。此外,本文采用对抗训练策略来训练绘画agent。该策略已成功用于像素级图像生成任务,并且还可以帮助agent进行绘制;
  • 第二,细微的笔画参数空间(包括笔画位置和颜色)对于绘画至关重要。先前的工作将笔画参数空间设计为离散的,并且每个参数只有有限的选择数量,这不再适用于纹理丰富的绘画。由于大多数RL算法处理细粒度参数空间的能力较弱(例如 深度Q网络(DQN)和策略梯度(PG)),因此在连续空间上定义笔画参数提出了巨大挑战。相反,深度确定性策略梯度(DDPG)设计用于处理连续的动作空间,使用DDPG训练的agent已经显示出微妙的控制性能。本文在方法中采用DDPG,以使agent具有绘画能力;
  • 第三,高效的绘画模拟器对于agent的性能至关重要,尤其是在画布上绘画数百个笔划的情况下。大多数工作通过与模拟的绘画环境进行交互来绘画。这种方法既费时又不灵活。取而代之的是,本文使用神经网络(NN)训练端到端渲染器,该渲染器将笔画参数直接映射到笔画。渲染器可以实现各种笔画设计。 而且,渲染器是可以与DDPG巧妙地组合在一起的差分模型,是一种基于模型的DRL算法,极大地提高了原始DDPG的性能。

强化学习(RL)旨在最大化整个绘画过程的累积回报,而不是最小化每一步的监督损失,这使得agent有先见之明计划笔画分解和大规模步骤绘画。此外,本文采取对抗训练策略来训练绘画agent。这种策略成功地用于像素级图像生成任务,也有助于agent绘制。
使用神经网络(NN)来训练端到端渲染器,该渲染器直接将笔画参数映射到笔画。渲染器可以实现各种笔画设计。此外,渲染器是差分,可以与DDPG巧妙地结合作为一种基于模型的DRL算法,这极大地提高了原始DDPG的性能。

总而言之,本文的贡献如下:

  • 本文使用基于模型的DRL算法解决绘画任务,允许agent按顺序将目标图像分解为数百个笔触,以生成类似于目标图像的绘画;
  • 神经渲染器用于高效绘画,并且还与各种笔划设计兼容。 此外,神经渲染器有助于本文提出的基于模型的DDPG;
  • 本文所提出的绘画agent可以很好地处理多种类型的目标图像,包括数字,门牌号,肖像和自然场景图像。

Related work

基于笔画的渲染(SBR)是一种通过放置离散元素(例如笔画或点画)来创建非真实感图像的自动方法,这与本文提出的任务类似。大多数基于笔划的渲染算法会贪婪地专注于每个步骤或需要用户交互。

与本文的agent类似,SPIRAL是经过对抗训练的RL agent,能重建图像的高级结构。StrokeNet结合了可区分的渲染器和递归神经网络(RNN)来训练agent进行绘画,但是无法在彩色图像上进行泛化。这些方法不足以处理这项复杂的任务,并且需要大量的计算资源。Doodle-SDQ训练agent以DQN模拟人类涂鸦。先前,Sketch-RNN使用顺序数据集在草图中获得良好的结果。Artist Agent探索使用RL自动生成单个笔画。

这些算法是无模型的,这意味着agent仅需要根据来自环境的样本来最大化期望的回报。对于某些任务,agent可以通过做出预测来更好地了解环境。另一种有效的方法是建立一个生成神经网络模型。 Gu等人探索使用基于模型的方法来加速DQN。

Painting Agent

Overview

绘画agent的目标是首先用笔画表示分解给定的目标图像,然后在画布上绘制笔画以形成绘画。 为了模仿人类的绘画过程,agent被设计成基于观察画布的当前状态和目标图像来预测下一个笔画。 更重要的是,为了使agent获得一次预测一个合适的笔画的能力,即笔画与先前的笔画和未来的笔画很好地兼容,它需要精心设计反馈机制。 本文假设反馈应该是完成一笔绘画后获得的奖励,并且agent在完成所有笔画之后追求最大化累积奖励。 本文给出了图2中整体架构的图表。

在这里插入图片描述
(a)在每一步,the policy (aka actor)都会根据画布和目标图像给出一组笔画参数。 渲染器跟据这一组笔画参数在画布上渲染笔画。(b)在学习期间,the evaluator (aka critic)根据目标图像和渲染的画布评估动作。 在本文的实现中,policy,evaluator和渲染器都是使用神经网络实现。

The Model

在这里插入图片描述

  • State and Transition Function:状态空间由agent可以观察到的环境中的所有可能的信息构成。我们将状态定义为三个部分:画布,目标图像和步骤编号。
    在这里插入图片描述
    转移函数st+1=trans(st;at)s_{t + 1} = trans(st; at)st+1=trans(st;at)给出状态之间的转移过程,该过程通过在当前画布上绘制笔画来实现。

  • Action:动作空间是agent可以执行的一组操作。 一个动作ata_{t}at是一组参数,用于控制在步骤ttt绘制的笔画的位置,形状,颜色和透明度。We define the behavior of an agent as a policy function ΠΠΠ that maps states to deterministic actions
    在这里插入图片描述
    agent观察状态sts_{t}st然后给出下一个笔画的笔画参数ata_{t}at。The state evolutes based on the transition function
    在这里插入图片描述

  • Reward:奖励功能用于评估policy做出的动作。 选择合适的度量来测量画布和目标图像之间的差异对于训练绘画agent至关重要。 奖励的设计如下:
    在这里插入图片描述
    为了确保最终画布类似于目标图像,应该最大化上述累积奖励,因为要保证损失越来越小。即最大化累计奖励Reward:
    在这里插入图片描述


Learning

在本节中,将介绍如何使用精心设计的基于模型的DDPG训练agent。
在这里插入图片描述
在原始的DDPG中,Critic需要学习隐式建模环境。在基于模型的DDPG中,通过神经渲染器对环境进行了显式建模,这有助于训练高效的代理。

Model-based DDPG

本文首先描述原始的DDPG,然后引入基于模型的DDPG来有效地训练agent。按照定义,绘画任务中的动作空间是连续的,具有高维度。将动作空间离散化以适应某些DRL方法(例如DQN和PG),将失去笔画表示的精度,并且需要手动结构设计中的大量工作来应对离散空间中参数组合的爆炸式增长。DPG被提出使用确定性策略来解决由高维连续动作空间引起的困难。此外,提出了将DPG与NN相结合的DDPG,以增强其在许多控制任务中的性能。

原始的DDPG

在原始DDPG中,有两个网络:the actor Π(s)Π(s)Π(s) and critic Q(s;a)Q(s; a)Q(s;a)
在这里插入图片描述
我们无法使用原始DDPG来训练一名表现出色的绘画agent,因为该agent很难在学习过程中很好地建模由任何类型的真实世界图像组成的复杂环境。(为什么不能?因为实验结果不好吗?文章中这里解释得不是很清楚)

基于模型的DDPG

本文将DDPG与可以基于环境访问渐变的actor称为基于模型的DDPG。使用基于模型的DDPG进行agent的优化与使用原始DDPG进行的优化不同。

在这里插入图片描述
Critic仍然预测该状态的预期奖励,但不再包括当前动作引起的奖励。

Action Bundle

跳帧是许多RL任务的强大参数。该agent只能观察环境,并且每k帧执行一次操作,而不是一帧。该技巧使agent具有更好的能力来学习在时间上更远的状态和动作之间的关联。受此技巧的启发,我们使actor每一步输出了k个笔画的参数。渲染器将同时渲染k个笔画,以大大加快绘画过程。实验发现每次增加五个笔画效果最好。值得注意的是,为了保持一致性,我们将奖励折扣系数从γγγ修改为γkγ^kγk

WGAN Reward

GAN已被广泛用作迁移学习,文本模型和图像恢复中的特定损失函数,因为它具有测量生成数据和目标数据之间分布距离的强大能力。Wasserstein 生成对抗损失函数 (WGAN Loss)。我们需要度量画布和目标图的相似度以给出奖励函数,我们发现 WGAN Loss 是一种比欧几里得距离更好的度量,使得最后画出来的图细节更丰富。

Network Architectures

由于现实世界图像的高度可变性和高度复杂性,我们使用类似于ResNet-18的残差结构作为actor和critic中的特征提取器。actor与批处理归一化(BN)配合良好,但BN不能显着加快critic训练的速度。本文对critic使用WN和Translated ReLU(TReLU)来稳定训练。另外,本文使用CoordConv作为actor和critic的第一层。对于判别器,本文使用与PatchGAN类似的网络结构。本文在判别器中也使用了WN和Translated ReLU(TReLU)。在原始DDPG论文之后,本文使用了软目标网络,这意味着为actor和critic创建一个副本,并通过让他们缓慢地跟踪学习的网络来更新其参数。即分online network和target network。下图是网络结构图:
在这里插入图片描述

Stroked-based Renderer

Neural Renderer

使用神经网络生成笔画有两个优点:

  • 首先,神经渲染器可以灵活地生成任何类型的笔画,并且比手工制作笔画模拟器更有效。
  • 其次,神经渲染器是可微分的,可以很好地为原始DDPG建模环境,从而提高agent的性能。

具体地,向神经渲染器馈送一组笔画参数,然后输出渲染的笔画图像S。使用图形渲染器程序随机生成训练样本。 神经渲染器可以通过监督学习快速训练并在GPU上运行。 因此,本文获得了一个可区分且快速运行的环境。一些简单的几何渲染可以在没有神经网络的情况下完成,也可以给出渐变。 但神经网络可以帮助本文省略繁琐的公式计算。神经渲染器网络由几个完全连接的层和卷积层组成。 采用Sub-pixel来增加网络中笔画的分辨率。

Stroke Design

在这里插入图片描述

Training

在这里插入图片描述

Ablation Studies(对比实验的结果)

在本节中,主要研究组件或技巧(包括基于模型的DDPG,Action Bundle和WGAN奖励)如何影响agent的性能。为简单起见,本部分仅在CelebA上进行实验。

Model-based vs. Model-free DDPG

本文探索了与原始DDPG相比,基于模型的DDPG有多少优势。众所周知,原始的DDPG只能以隐式方式对环境进行建模,并具有对环境的观察和回报。此外,高维动作空间还限制了无模型方法在绘画任务中使用。为了进一步探索无模型方法的功能,我们采用了受PatchGAN启发的方法来改进原始DDPG。本文先将图像分成小块,然后再将这些小块放入critic中,然后使用小块级别的奖励来优化critic。本文将此方法称为PatchQ。 通过在训练中提供更多的监督信号,PatchQ可以提高采样效率并提高agent的性能。

本文在图7(a)中显示了使用不同算法训练的agent的性能。基于模型的DDPG优于原始DDPG和带有PatchQ的DDPG。尽管与基于模型的DDPG相比性能不佳,但具有PatchQ的DDPG却在性能上大大优于原始DDPG。
在这里插入图片描述

Rewards

在这里插入图片描述
在这里插入图片描述

Stroke Number and Action Bundle

绘画的笔画数对于最终的绘画效果至关重要,特别是对于纹理丰富的图像而言。本文训练可以绘制100、200、400和1000笔画的agent,损失曲线如图7(c)所示。据观察,更大的笔画数有助于更好的绘画效果。因为更多的笔画有助于重建画中的细节。

Action Bundle是加快绘画过程的技巧。除此之外,我们还将探讨Action Bundle如何影响agent的性能。本文在图7(b)中显示了Action Bundle的几种设置的损耗曲线。根据损失曲线,每次增加5个笔画的可以获得最佳的效果。

Conclusion

在这里插入图片描述

论文地址

Learning to Paint with Model-based Deep Reinforcement Learning


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
  • 判断编码是否可立即解码的程序及电话号码一致性判断程序
    本文介绍了两个编程题目,一个是判断编码是否可立即解码的程序,另一个是判断电话号码一致性的程序。对于第一个题目,给出一组二进制编码,判断是否存在一个编码是另一个编码的前缀,如果不存在则称为可立即解码的编码。对于第二个题目,给出一些电话号码,判断是否存在一个号码是另一个号码的前缀,如果不存在则说明这些号码是一致的。两个题目的解法类似,都使用了树的数据结构来实现。 ... [详细]
  • WPF之Binding初探
      初学wpf,经常被Binding搞晕,以下记录写Binding的基础。首先,盗用张图。这图形象的说明了Binding的机理。对于Binding,意思是数据绑定,基本用法是:1、 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
author-avatar
拍友2502911223
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有