当前位置: 首页 > news >正文

《Improved Techniques for Training GANs》-论文阅读笔记

《Improved Techniques for Training GANs》-论文阅读笔记

文章目录

  • 《Improved Techniques for Training GANs》-论文阅读笔记
    • 论文结构
    • 摘要
      • 原文
      • 核心
    • 研究背景
      • 纳什均衡
    • 研究意义
    • 训练改进
      • 收敛性的问题
      • 特征匹配
      • 小批量判别
      • 历史平均
      • 单向的标签平滑
      • 虚拟批归一化
    • 图像质量评价
      • 人工评价
      • Inception Score
    • Semi-supervised Learning
    • 实验结果
      • MNIST
      • CIFAR-10
      • ImageNet
    • 论文总结

论文地址: Improved Techniques for Training GANs-ReadPaper论文阅读平台

论文结构

  1. Introduction
  2. Related work
  3. Toward Convergent GAN Training
    3.1 Feature matching
    3.2 Minibatch discrimination
    3.3 Historical averaging
    3.4 One-sided label smoothing
    3.5 Virtual batch normalization
  4. Assessment of image quality
  5. Semi-supervised learning
    5.1 Importance of labels for image quality
  6. Experiments
    6.1 MNIST
    6.2 CIFAR-10
    6.3 SVHN
    6.4 ImageNet
  7. Conclusion

摘要

原文

We present a variety of new architectural features and training procedures that we apply to the generative adversarial networks (GANs) framework. We focus on two applications of GANs: semi-supervised learning, and the generation of images that humans find visually realistic. Unlike most work on generative models, our primary goal is not to train a model that assigns high likelihood to test data, nor do we require the model to be able to learn well without using any labels. Using our new techniques, we achieve state-of-the-art results in semi-supervised classification on MNIST, CIFAR-10 and SVHN. The generated images are of high quality as confirmed by a visual Turing test: our model generates MNIST samples that humans cannot distinguish from real data, and CIFAR-10 samples that yield a human error rate of 21.3%. We also present ImageNet samples with unprecedented resolution and show that our methods enable the model to learn recognizable features of ImageNet classes.

核心

  1. 提出了一系列新的GAN结构和训练方式
  2. 进行了半监督学习和图像生成相关实验
  3. 新的技术框架在MNIST、CIFAR-10和SVHN的半监督分类中取得了良好效果
  4. 通过视觉图灵测试证明,生成的图像同真实图像已难以区分
  5. 在ImageNet上训练,模型学习到了原图的显著特征

研究背景

纳什均衡

又称为非合作博弈均衡,对于一个策略组合,当其他所有人都不改变策略时,没有人会改变自己的策略,则该策略组合就是一个纳什均衡

半监督学习
流形假设(Manifold Assumption):将高维数据嵌入到低维流形中,当两个样例位于低维流形中的一个小局部邻域内时,它们具有相似的类标签

研究意义

  • 在DCGAN的基础上,通过多种正则化手段提升可收敛性
  • 综合质量和多样性,给出了一条评价GAN生成效果的新路径
  • 展示了把GAN生成图像,作为其他图像任务训练集的可行性

训练改进

收敛性的问题

  • GAN网络的目的是在高维非凸的参数空间中,找到一个价值函数的纳什均衡点
  • 使用梯度下降来优化GAN网络,只能得到较低的损失,不能找到真正的纳什均衡
  • 例如,一个网络修改x来最小化xy,另一个网络修改y来最小化-xy,使用梯度下降进行优化,结果进入一个稳定的轨道中,并不会收敛到(0,0)点
  • 作者引入了一些方法,希望提高网络的收敛性

特征匹配


判别器的隐层中,经过训练逐渐得到了可用于区分真假样本的特征

生成器生成样本的过程中,如果也生成近似这些特征的样本,就可以
更好的近似真实样本

尽管不能保证到达均衡点,不过收敛的稳定性应该是有所提高

用f(x)表示判别器隐层中的特征,生成器新的目标函数可以被定义为:

image-20220929222708392

小批量判别


没有一个机制保证生成器需要生成不一样的数据

当模式崩溃即将发生时,判别器中许多相似点的梯度会指向一个相近的方向

计算判别器中某一层特征中,同一个batch各样本特征间的差异,来作为下一层的额外输入

这种方法使我们能够非常快速地生成视觉上吸引人的样本,并且它的效果优于特征匹配

如果使用第5节中描述的半监督学习方法获得强分类器,则特征匹配比本方法效果更好

历史平均

在生成网络和判别网络的损失函数中添加一个历史参数的平均项,这个项在网络训练过程中也会更新

θ[i]是过去第i时刻,模型的所有参数值

加入历史平均项后,梯度就不容易进入稳定的轨道,能够继续朝着均衡点前进

image-20220929223129092

单向的标签平滑

判别器的目标函数中正负样本的目标输出α和β不再是1和0,而
是接近它们的数字,比如0.9和0.1,则优化目标变为D(X)

最近的研究显示,这项技术可以增强分类网络对于对抗样本的
鲁棒性

在pdata接近0,而pmodel很大时,D(X)的梯度也接近0,无法优化

只将正样本的标签做平滑,负样本的标签仍然设为0

虚拟批归一化


Batch normalization在DCGAN中被应用,能大大减少GAN优化的
难度

但BN层有个缺点,它会使生成的同一个batch中,每张图片之间存在关联(如一个batch中的图片都有比较多的绿色)

为了解决这个问题,训练开始前先选择一个固定的reference batch,每次算出这个特定batch的均值和方差,再用它们对训练中的batch进行normalization

这种方法的缺点是需要进行两次前向传播,增加了计算成本,所以只在生成器上进行应用

图像质量评价

人工评价


使用Amazon Mechanical Turk,即亚马逊众包平台进行人工标注

将真实图片和生成图像掺杂在一起,标注者需要逐个指出给定图像是真实的还是生成的

当给标注者提供标注反馈时,结果会发生巨大变化;通过学习这些反馈,标注者能够更好地指出生成图像中的缺陷,从而更倾向于把图像标记为生成的

image-20220929223310196

Inception Score


提出了一种自动评估样本的方法,这个方法评估的结果与人类的评估高度相关

使用Inception模型,以生成图片x为输入,以x的推断类标签概率p(y|x)为输出

单个样本的输出分布应该为低熵,即高预测置信度,好样本应该包含明确有意义的目标物体

所有样本的输出整体分布应该为高熵,也就是说,所有的x应该尽量分属于不同的类别,而不是属于同一类别

image-20220929223443390

Semi-supervised Learning


普通的分类任务属于有监督学习,模型通过最小化交叉熵损失,获得最优的网络参数

在分类网络的基础上,加入GAN的生成数据,就可以把有监督学习转变成半监督学习

对于训练集中的有标签样本,考察估计的标签是否正确。即,计算分类为相应的概率
对于训练集中的无标签样本,考察是否估计为“真”。即,计算不估计为K+1类的概率
对于生成器产生的伪样本,考察是否估计为“伪”。即,计算估计为K+1类的概率

image-20220929223551806


除了在半监督学习中实现最先进的结果之外,经过主观评测发现,使用半监督学习训练出的生成器,其生成的图像相比于原始生成器也得到了让人意外的提升

这说明我们的视觉系统,对图像类别的理解和对图像质量的理解存在显著相关性,这也佐证了使用Inception score 来评价生成图像质量的合理性

这个关联性可以用来理解迁移学习的作用,并且存在广泛的应用前景

实验结果

MNIST


分别使用20、50、100和200个带标签图像进行训练,剩余的训练图像则没有标签

结果在10个带标签数据的随机子集上取平均值,每个子集中,保证各个类别的数量均衡

网络各有5个隐层,使用了权重归一化,并且将高斯噪声加入到判别器每一层的输出

使用Feature Matching的模型,生成的图像质量一般

使用 Minibatch判别的模型,生成的图像质量非常好,经众包标注和内部人员评测,已基本无法与真实数据相区分

image-20220929223712916

image-20220929223722326

CIFAR-10


判别器使用带Dropout和权重归一化的9层CNN,生成器使用带BN层的4层CNN

使用50%的真实数据和50%由最佳模型生成的数据进行人工评测,众包用户的分类正确率是78.7%,作者们的分类正确率是95%

其中Inception score(IS)得分最高的1%生成图像,众包用户的分类准确率是71.4%

image-20220929223912825

image-20220929223924191


来自数据集的真实图像IS得分最高,而所有甚至部分发生模式崩溃的模型IS得分相对较低

下表中的Our methods,应用了除特征匹配和历史平均之外,上文提到的所有优化方法

IS得分只能用来做模型生成图像质量的粗略评估指标,而不能加入到训练中的损失函数中,
否则将产生对抗性样本,使得IS得分失效

image-20220929223840930

ImageNet


使用ILSVRC2012数据集的128×128图像,包含1000个类别,此前还没有人尝试过这个训练集

由于GAN倾向于低估分布的熵值,因此大量的类别对于GAN来说非常具有挑战性

在TensorFlow的DCGAN实现基础上进行了大量的修改,并使用多GPU以提高性能

原始的DCGAN学习到了一些基本的图像统计信息,生成了具有某种自然颜色和纹理的连续形状,但没有学习到任何物体

使用本文中描述的技术,能够生成一些看起来像动物,但没有正确结构的图像

论文总结

  • 生成式对抗性网络是一类很有潜力的生成式模型,但迄今为止一直存在着训练不稳定和缺乏合适评价指标的问题,本文的工作提供了部分解决方案
  • 提出了几种提升训练稳定性的技术,使以前无法收敛的模型可以稳定训练
  • 提出的评价指标 Inception score 可以用来比较模型的生成效果
  • 将这些技术应用于半监督学习中,在多个数据集上取得了state-of-the-art
  • 希望在未来的工作中进行更严格的理论推导

相关文章:

  • 十一假期,分享几个好玩儿的GitHub项目
  • AcWing 第71场周赛
  • Redis实战 - 02 Redis 保存短信验证码实现用户注册
  • AcWing——第 71 场周赛
  • 利用Vulhub复现log4j漏洞CVE-2021-44228
  • 【学生网页设计作业源码】基于html+css保护海豚主题网页设计与制作(7页)
  • 频率响应说明
  • C++教程系列之-01-C++概述与NOIP案例
  • Network 之十四 email 通信架构、Postfix 部署详解
  • Tableau8——数据操作
  • python基础知识笔记
  • 基于FPGA的PID控制器设计
  • 程序设计与c语言笔记(一)
  • 【.Net实用方法总结】 整理并总结.NET 中的 System.IO.Pipelines(管道)
  • 深度学习10——卷积神经网络
  • 230. Kth Smallest Element in a BST
  • gcc介绍及安装
  • input的行数自动增减
  • Java程序员幽默爆笑锦集
  • JS学习笔记——闭包
  • Just for fun——迅速写完快速排序
  • spark本地环境的搭建到运行第一个spark程序
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端js -- this指向总结。
  • 驱动程序原理
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 微信公众号开发小记——5.python微信红包
  • PostgreSQL之连接数修改
  • Spring第一个helloWorld
  • 进程与线程(三)——进程/线程间通信
  • #etcd#安装时出错
  • #pragam once 和 #ifndef 预编译头
  • #微信小程序:微信小程序常见的配置传值
  • (30)数组元素和与数字和的绝对差
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (过滤器)Filter和(监听器)listener
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (一)80c52学习之旅-起始篇
  • (转)JAVA中的堆栈
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core跨平台微服务学习资源
  • .NET Core中的去虚
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net 发送邮件
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • /boot 内存空间不够
  • @Autowired @Resource @Qualifier的区别
  • @Bean有哪些属性
  • @Validated和@Valid校验参数区别