2019-01-27 23:40:04

假设我们有一个卧室图像数据集和一个在这个数据集上训练的图像分类器CNN,它告诉我们给定的输入图像是否是卧室。假设图像大小为16 * 16。每个像素可以有256个可能的值。所以存在无限大量的可能输入(即25616*16或~10616可能的组合)。这使得我们的分类器模型成为一个高维概率分布函数,它给出了来自这个大输入空间的给定输入作为卧室的概率。

那么,如果我们可以从卧室图像的数据分布中学习这种高维知识来进行分类,我们肯定能够利用相同的知识甚至生成全新的卧室图像。

虽然有多种生成建模方法,但我们将在本文中探讨生成对抗网络。GAN的原始论文(arxiv.org/pdf/1406.2661.pdf)发表于2014年,在这篇论文(arxiv.org/pdf/1511.06434.pdf)引入了深度卷积生成对抗网络(deep tional generate adversarial networks, DCGAN),并作为一种流行的参考。这篇文章是基于这两篇论文的研究,对GAN做了很好的介绍。

GAN是同时训练生成模型G和判别模型D的网络。生成模型将通过捕获与训练数据集相关的数据分布来生成新的卧室图像。训练判别模型将给定的输入图像正确分类为真实(即来自训练数据集图像)或虚假(即生成模型生成的合成图像)。简单的说,判别模型是典型的CNN图像分类器模型,或者更具体地说是二元图像分类器。

生成模型与判别模型略有不同。它的目标不是分类而是生成。当判别模型给出一个代表不同的类的激活向量时给出一个输入图像,生成模型就会反向执行。

生成与判别模型

它可以被认为是反向CNN,在某种意义上它将随机数的向量作为输入并生成图像作为输出,而正常的CNN则相反地将图像作为输入并生成数字向量或激活(对应于不同的类)作为输出。

但是这些不同的模型如何协同工作?下图给出了网络的图示。首先,我们将随机噪声向量作为生成模型的输入,生成模型生成图像输出。我们将这些生成的图像称为伪图像或合成图像。然后判别模型将训练数据集中的假图像和真图像都作为输入,并生成一个输出来分类图像是假图像还是真图像。

生成敌对网络的说明

使用这两个模型对该网络的参数进行训练和优化。判别模型的目标是最大限度地正确分类图像的真伪。相反,生成模型的目标是最小化判别器正确地将假图像分类为假的。

反向传播和普通卷积神经网络(CNN)一样,是用来训练网络参数的,但是由于涉及到两个目标不同的模型,使得反向传播的应用有所不同。更具体地说,涉及的损失函数和在每个模型上执行的迭代次数是GAN不同的两个关键领域。

判别模型的损失函数将是一个与二元分类器相关的正则交叉熵损失函数。根据输入图像,损失函数中的一项或另一项将为0,结果将是模型预测图像被正确分类的概率的负对数。换句话说,在我们的上下文中,对于真实图像,“y”将为“1”,对于假图像,“1-y”将为“1”。“p”是图像是真实图像的预测概率,“1-p”是图像是假图像的预测概率。

二元分类器的交叉熵损失

上面的概率p可以表示为D(x),即判别器D估计的图像“x”是真实图像的概率。重写,如下图所示:

根据我们如何分配上下文,方程的第一部分将被激活,第二部分对于真实图像将为零。反之亦然。第二部分中图像“x”的表示可以用“G(z)”代替。也就是说,在给定输入z的情况下,将假图像表示为模型G的输出。“z”只不过是建模“G”产生“G(z)”的随机噪声输入向量。这些符号在初看时令人困惑,但论文中的算法通过“ascending”其随机梯度来更新判别器,这与上文所述的最小化损失函数相同。下面是论文中函数的快照:

回到生成函数G,G的损失函数将反过来,即最大化D的损失函数。但是等式的第一部分对生成器没有任何意义,所以我们真正说的是第二部分应该最大化。所以G的损失函数与D的损失函数相同,只是符号颠倒了,第一项被忽略了。

生成器的损失函数

以下是论文中生成器损失函数的快照:

正如DCGAN内容所示,这是通过重塑和转置卷积的组合来实现的。以下是生成器的表示:

DCGAN生成器

转置卷积与卷积的逆不同,它不能恢复给定卷积输出的输入,只是改变了卷积的形状。下面的例子说明了上述生成器模型背后的数学原理,特别是卷积层。

在CNN中使用的常规卷积图示,以及通过转置卷积实现的上采样的两个示例。第一示例的结果用作第二和第三示例中具有相同内核的输入,以证明转换与反卷积不相同,并不是为了恢复原始输入。

论文算法的内部for循环。这意味着,对于k> 1,我们在G的每次迭代中对判别器D执行多次训练迭代。这是为了确保D'被充分训练并且比G更早地学习。我们需要一个好的D来欺骗G。

另一个相关的重点是生成器可能记忆输入示例的问题,DCGAN通过使用3072-128-3072、降噪、dropout、正则化、RELU和自动编码器来解决,基本上是减少和重构机制,以最小化记忆。

DCGAN中还重点介绍了生成器在操作时如何忘记它正在生成的卧室图像中的某些对象。他们通过从第二层卷积层特征集中删除对应窗口的特征映射来实现这一点,并展示了网络是如何用其他对象替换窗口空间的。

了解GAN背后的设计,训练,损失函数和算法相关推荐

  1. 换个角度看GAN:另一种损失函数

    转载自:机器之心 选自Medium 作者:Phúc Lê 机器之心编译 参与:张玺 「本质上,GAN 就是另一种.」 Jeremy Howardf 老师曾在(GAN)课程中说过:「--本质上,GAN ...

  2. 模拟上帝之手的对抗博弈——GAN背后的数学原理

    模拟上帝之手的对抗博弈--GAN背后的数学原理 深度学习 人工智能 机器学习 神经网络 神经网络与机器学习-英文版 阅读1984  作者:李乐 CSDN专栏作家 简介 深度学习的潜在优势就在于可以利用 ...

  3. 云盘存储 教学反思_对设计训练的设计:以建筑工房工作模型课题的教学实验为例对设计训练方法论的反思...

    「建筑工房」第四期专题报名点击 图像的记忆与城市空间 原文于2019年第2期<时代建筑> 本文阅读时长约15分钟 摘要:围绕建筑设计能力如何被训练这一话题,建筑工房以工作模型为基本教具完成 ...

  4. 【阿里云课程】生成模型之GAN优化目标设计与改进

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第11课中的一节,介绍如下: GAN优化目标设计与改进 本次课程是阿里天池联合有三AI推出的深度学习系列课程第11期,深度生 ...

  5. 消息队列背后的设计思想

    作者:jaydenwen,腾讯 PCG 后台开发工程师 消息队列也通常称为消息中间件,提到消息队列,大部分互联网人或多或少都听过该名词.对于后端工程师而言,更是日常开发中必备的一项技能.随着大数据时代 ...

  6. Pytorch(1)-内置/自己设计的损失函数使用

    内置/自己设计的损失函数使用对比 1.内置损失函数 2.自己设计损失函数 Pytorch内置了许多常用的损失函数,但是,实际应用中,往往需要依据不同的需求设计不同的损失函数.本篇博文对比总结了使用 内 ...

  7. 消息中间件学习总结(5)——RocketMQ之Apache RocketMQ背后的设计思路与最佳实践

    摘要:为了更好地让开发者们更加深入了解阿里开源,阿里云云栖社区在3月1号了举办"阿里开源项目最佳实践"在线技术峰会,直播讲述了当前阿里新兴和经典开源项目实战经验以及背后的开发思路. ...

  8. 一维信号 处理分析 c语言,信号处理与分析课程设计训练任务书.doc

    信号处理与分析课程设计训练任务书 电子工程学科部 2015年4月 第一部分:语音信号部分 题目一:基于归一化互相关函数的基音检测 (负责人:贾懋珅) 本课题是根据电子信息类本科生信号处理和分析课程的学 ...

  9. L频段GaN功率放大器的设计关键点

    氮化镓技术的不断进步促使设备在更高的功率.电源电压和频率下工作. ​图1 QPD1013 晶体管的照片 如图1所示, QPD1013晶体管采用0.50 μm GaN-on-SiC技术.它采用具有成本效 ...

最新文章

  1. LNMP_ 配置文件
  2. leetcode算法题--最大加号标志★
  3. swoole 定时器
  4. shell脚本常用命令
  5. CentOS7 常用命令集合
  6. 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13... 求出这个数列的前20项之和。...
  7. ajax异步同步加载PHP代码,jquery中的ajax同步和异步详解
  8. Java并发编程的艺术笔记(四)——ThreadLocal的使用
  9. 区块链技术指南pdf
  10. 常用的图像标注工具汇总
  11. 关于使用nRF Studio 批量烧写NRF52840 不成功的解决方案
  12. RQNOJ 169 最小乘车费用
  13. No instances available for provider
  14. 我的Unity3d学习总结
  15. [Tips]Ubuntu20.04域名解析失败或网速很慢
  16. 产品隐私政策与使用条款
  17. 牛顿下山法(C语言实现)
  18. 机房管理系列(1) 联想保护系统EDU7.5在同传CMOS参数后奔溃的解决办法
  19. Centos安装traceroute
  20. ABB KUC321AE HIEE300698R0001、KUC755AE106 3BHB005243R0106、KUC711AE 3BHB004661R0001、KUC720AE01

热门文章

  1. java web服务与配置,Java Web远端服务器的配置与部署
  2. path与classpath区别 path是Windows查找.exe文件的路径;classpath是jvm查找.class文件的路径
  3. No module named ‘jieba‘ python3.7
  4. 一张图看懂encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别 一、这四个方法的用处 1、用来编码和解码URI的 统一资源标识符
  5. 华为报告称2013年大数据将引发IT系统大变革
  6. 直播活动丨BMMeetup第2期:大模型计算加速技术,2场特邀和7位青年学者技术报告联袂上演...
  7. 计算机视觉未来走向:视频理解等5大趋势详解
  8. 智源沙龙 | 人工智能“3个30年”之后,下个30年将走向何方?
  9. 智源研究院发布“智能体系架构与芯片”重大研究方向,打造通用智能处理器,突破“算法共性特征”难题...
  10. JS大宗师Douglas新书即将开印,就差一个书名了