Improved Techniques for Training GANs
Improved Techniques for Training GANs
paper
code
Introduce
对抗网络主要有两个应用:半监督学习和生成视觉相似图片。对抗网络的目的要训练生成网络 G(z;θG) G(z;\theta^{G}),输入噪声 z z生成x=G(z;θG)x=G(z;\theta^{G}),x为一幅图片,并且x满足真实的数据分布 pdata(x) p_{data}(x)。判别网络 D(x) D(x)判断生成的图片真假。
对抗网络的双方都想要最小化自己的损失函数。假设 JD(θ(D),θ(G)) J^D(\theta^{(D)}, \theta^{(G)})是判别网络的损失函数, JG(θ(D),θ(G)) J^G(\theta^{(D)}, \theta^{(G)})是生成网络的损失函数。纳什均衡点就是参数空间的点 (θ(D),θ(G)) (\theta^{(D)}, \theta^{(G)}), JD J^D对于 θ(D) \theta^{(D)}取得最小值, JG J^G对于 θ(G) \theta^{(G)}取得最小值。对抗网络中, θ(D) \theta^{(D)}的更新减少了 J(D) J^{(D)},但是同时又增加了 J(G) J^{(G)}, θ(G) \theta^{(G)}的更新减少了 J(G) J^{(G)},同样又增加了 J(D) J^{(D)}。例如下面的例子,一个网络想要通过修改 x x来最小化xyxy,另一个网络想要通过修改 y y来最小化−xy-xy,使用梯度下降的方法会进入一个稳定的轨道中,并不会收敛到 (0,0) (0,0)点。
对抗网络的目的需要在高维非凸的参数空间中,找到一个纳什均衡。但是GAN网络使用梯度下降的方法只会找到低的损失,不能找到真正的纳什均衡。本论文中,作者通过引入了一些方法,提高网络的收敛。
Toward Convergent GAN Training
Feature Matching
原始的GAN网络的目标函数需要最大化判别网络的输出。作者提出了新的目标函数,motivation就是让生成网络产生的图片,经过判别网络后的中间层的feature 和真实图片经过判别网络的feature尽可能相同。假定 f(x) f(x)为判别网络中间层输出的feature map。生成网络的目标函数定义如下:
||E_{x\sim p_{data}}f(x) - E_{z\sim p_z(z)}f(G(z))||_2^2
判别网络按照原来的方式训练。相比原先的方式,生成网络G产生的数据更符合数据的真实分布。作者虽然不保证能够收敛到纳什均衡点,但是在传统GAN不能稳定收敛的情况下,新的目标函数仍然有效。个人觉得,判别网络从输入到输出逐层卷积,pooling,图片信息逐渐损失,因此中间层能够比输出层得到更好的原始图片的分布信息,拿中间层的feature作为目标函数比输出层的结果,能够生成图片信息更多。可能采用这种目标函数,生成的图片会效果会更好。
MiniBatch discrimination
判别网络如果每次只看单张图片,如果判断为真的话,那么生成网络就会认为这里一个优化的目标,导致生成网络会快速收敛到当前点。作者使用了minibatch的方法,每次判别网络输入一批数据进行判断。假设 f(x)∈RA f(x)\in R^A表示判别网络中间层的输出向量。作者将 f(x) f(x)乘以矩阵 T∈RA×B×C T\in R^{A \times B \times C},得到一个矩阵 Mi∈RB×C M_i \in R^{B \times C}。计算矩阵 Mi M_i每行的L-1距离,得到 cb(xi,xj)=exp(−||Mi,b−Mj,b||L1∈R c_b(x_i, x_j) = exp(-||M_{i,b} - M_{j, b}||_{L_1} \in R 。
定义输入 xi x_i的输出 o(xi) o(x_i)如下:
o(x_i)_b = \sum_{j= 1} ^ n c_b(x_i, x_j)\in R\\ ~o(x_i) = [o(x_i)_1, o(x_i)_2, o(x_i)_3, ......o(x_i)_n] \\ o(X) \in R^{n\times B}
将 o(xi) o(x_i)作为输入,进入判别网络下一层的输入。
Historical averaging
在生成网络和判别网络的损失函数中添加一个项:
||\theta - \frac{1}{t}\sum_{i=1}^t\theta[i]||^2
公式中 θ[i] \theta[i]表示在i时刻的参数。这个项在网络训练过程中,也会更新。加入这个项后,梯度就不容易进入稳定的轨道,能够继续向均衡点更新。
One-side label smooth
将正例label乘以 α \alpha,, 负例label乘以 β \beta,最优的判别函数分类器变为:
D(x)=\frac{\alpha p_{data}(x) + \beta p_{model}(x)}{p_{data}(x) + p_{model}(x)}
本文中作者将正例乘以 α \alpha, 负例乘0。这里我也没看明白,如果后面明白以后, 持续更新……。
Virtual batch normalization
BN使用能够提高网络的收敛,但是BN带来了一个问题,就是layer的输出和本次batch内的其他输入相关。为了避免这个问题,作者提出了一种新的bn方法,叫做virtual batch normalization。首先从训练集中拿出一个batch在训练开始前固定起来,算出这个特定batch的均值和方差,进行更新训练中的其他batch。VBN的缺点也显而易见,就是需要更新两份参数,比较耗时。
Semi-supervised learning
标准的分类网络将数据 x x输出为可能的KK个classes,然后对K维的向量使用softmax: pmodel(y=j|x)=exp(lj)∑kk=1exp(lk) p_{model}(y = j|x) = \frac{exp(l_j)}{\sum_{k=1}^kexp(l_k)}。标准的分类是有监督的学习,模型通过最小化交叉熵损失,获得最优的网络参数。
对于GAN网络,可以把生成网络的输出作为第K+1类,相应的判别网络变为K+1类的分类问题。用 Pmodel(y=K+1|x) P_{model}(y=K+1|x)表示生成网络的图片为假,用来代替GAN的 1−D(x) 1-D(x)。对分类网络,只需要知道某一张图片属于哪一类,不用明确知道这个类是什么,通过 pmodel(y∈1,2,...,k|x) p_{model}(y\in{1, 2, ..., k} | x)就可以训练。
所以损失函数就变为了:
L = -E_{x, y \sim p_{data}(x, y)}[logp_{model}(y|x)] - E_{x\sim G}[logp_{model}(y=K+1|x)] \\ = L_{supervised} + L_{unsupervised},
L_{supervised} = -E_{x, y \sim p_{data}(x, y)}[logp_{model}(y|x)]
L_{unsupervised} = - E_{x\sim G}[logp_{model}(y=K+1|x)]
如果把 D(x)=1−pmodel(y=K+1|x) D(x)=1-p_{model}(y=K+1|x),上述无监督的表达式就是GAN的形式:
L_{unsupervised}=-{E_{x\sim p_{data}(x)}logD(x) + E_{z\sim noise }log(1-D(G(Z)))}
Experiment
作者在mnist, cifar10, svhn数据集上做了实验,在这里只贴了cifar10的实验结果了。
![](/assets/blank.gif)
Conclusion
表示大牛写的文章,高度太高,很难理解,博客中有错误的地方,希望大家能多多指教,共同讨论。
Reference
纳什均衡 :https://en.wikipedia.org/wiki/Nash_equilibrium
Tim Salimans, Ian Goodfellow, Wojciech Zaremba, Vicki Cheung, Alec Radford, Xi Chen Improved Techniques for Training GANs
Improved Techniques for Training GANs相关推荐
- Improved Techniques for Training GANs 代码执行中的坑 python3.6 tf环境
improved-gan-master:中的代码: **Status:** Archive (code is provided as-is, no updates expected) # improv ...
- 《Improved Techniques for Training GANs》-论文阅读笔记
<Improved Techniques for Training GANs>-论文阅读笔记 文章目录 <Improved Techniques for Training GANs& ...
- Improved Techniques for Training GANs论文中的创新和理解
一.题外话:非平稳性纹理合成 1.目的:使用生成对抗网络来将小纹理扩展为类似于原始样本的较大纹理: 基于实例的纹理合成的目的是生成纹理,捕获样本的视觉特征并保持逼真的外观. 非平稳性纹理包括大规模不规 ...
- 学习笔记:Improved Techniques for Training GANs理解
论文链接:https://arxiv.org/abs/1606.03498 这是一篇对GAN的训练作出改进的文章,众所周知,GAN的训练是极其不稳定的.转载请注明. 1 主要内容 对GAN网络提出一些 ...
- ContraD论文部分翻译与解读(Training GANs with Stronger Augmentations via Contrastive Discriminator)
Training GANs with Stronger Augmentations via Contrastive Discriminator 借助对比判别器实现的通过更强的数据增强来训练生成对抗网络 ...
- Improved Techniques for Grid Mapping With Rao-Blackwellized Particle Filters-翻译
Improved Techniques for Grid Mapping With Rao-Blackwellized Particle Filters Abstract 近年来,Rao-Blackw ...
- Diffusion-GAN: Training GANs with Diffusion 解读
Diffusion-GAN: 将GAN与diffusion一起训练 paper:https://arxiv.org/abs/2206.02262 code:GitHub - Zhendong-Wang ...
- Improved Consistency Regularization for GANs
Improved Consistency Regularization for GANs 最近的工作(Zhang et al. 2020)通过在鉴别器上强制一致性代价,提高了生成对抗网络(gan)的性 ...
- Improved Techniques for Grid Mapping With Rao-Blackwellized Particle Filters全文翻译Gmapping
Improved Techniques for Grid Mapping With Rao-Blackwellized Particle Filters全文翻译Gmapping Improved Te ...
最新文章
- 计算机组成考试题及答案,计算机组成测试题一参考答案
- oracle 11g wm_concat 、 listagg 函数的使用(合并数据)
- 鸿蒙2.0开始推送,华为OS首次登陆手机,亮点槽点都在这里
- 顶部对齐css表单,vertical-align 表单元素垂直对齐的解决方法
- FastAPI使用async?乱用async导致灾难,不如直接不用
- !doctype html报错h5,【Web前端问题】javascript import 报错
- django-关闭调试模式-保护网站安全
- java中的链接之其他窗体_两个窗体之间的链接
- js 获取最后一个字符
- linux 获取指定目录最大深度(层数)02
- Two Sum(C、C++、Python)
- C#Socket客户端
- 城市综合杆道路智慧路灯多杆合一项目解决方案解析
- u盘复制一直正在计算机,解决U盘复制文件时电脑总是重启的方法
- HTML实现怀旧小游戏,超级玛丽、飞机大战…等十余款【完整源码分享】
- 重磅!中国科学技术大学,成立新学院!
- 修改注册表值scancode map来屏蔽键盘上的键
- 沙盒隔离技术的本质与背景
- 邵柏庆与Ace Lead Profits Ltd.在英属维尔京群岛针对和利时自动化科技有限公司提起诉讼
- 易风神盾防火墙 v1.0 官方
热门文章
- 每天读一点儿APM(PIX)代码之四:minimosd
- SSL证书过期怎么办?只需几步就能轻松解决!
- (一)地理信息中对地球的描述-经纬度、赤道、本初子午线、海拔高度、中央子午线
- 帝国cmssitemap.php,帝国CMS网站地图sitemap制作与自动更新
- 【Linux基础命令】
- 喝普洱熟茶为什么嗓子会发干发痛?
- linux系统怎么查看raid卡信息,LINUX下查SCSI卡、RAID卡信息的命令
- 如何实现一个无边框Form的移动和改变大小(二)
- 30个最优秀的在线照片编辑工具
- IT行业,唯一不变的原则—“变”!