2021-10-06

论文阅读:O-GAN: Extremely Concise Approach for Auto-Encoding Generative Adversarial Networks

论文地址:https://arxiv.org/abs/1903.01931

GAN的简介

GAN (Generative Adversarial Network)

       GAN 主要包括了两个部分:G 生成器( generator) 与D 判别器( discriminator)。生成器:主要用来学习真实图像分布从而让自身生成的图像更加真实,以骗过判别器。判别器:需要对接收的图片进行真假判别。整个过程中,生成器努力地让生成的图像更加真实,而判别器则努力地去识别出图像的真假。这个过程相当于二人博弈,随着时间的推移,生成器和判别器在不断地进行对抗,最终两个网络达到了一个动态均衡:生成器生成的图像接近于真实图像分布,判别器识别不出真假图像。

GAN的示意图

       首先,有一个一代的 generator,它能生成很差的图片,然后有一个一代的discriminator,准确地对生成的图片和真实的图片进行判断,简而言之,discriminator 就是一个二分类器,对生成的图片输出 0,对真实的图片输出 1。接着,开始训练出二代的 generator,它能生成稍好一点的图片,让一代的 discriminator 认为生成的图片是真实的图片。然后会训练出一个二代的 discriminator,它能准确的识别出真实的图片和二代 generator 生成的图片。以此类推,会有n 代的 generator 和 discriminator,最后 discriminator 无法分辨生成的图片和真实图片,这个网络就拟合了。

        GAN 已经越来越成熟,越做越庞大,诸如 BigGANStyleGAN  等算是目前最先进的 GAN 模型也已被人熟知,甚至玩得不亦乐乎。不过,这几个最先进的 GAN 模型,目前都只有生成器功能,没有编码器功能,也就是说可以源源不断地生成新图片,却不能对已有的图片提取特征。当然,带有编码器的 GAN 也有不少研究,参考BiGAN-QP:简单清晰的编码 & 生成模型。但不管有没有编码能力,大部分 GAN 都有一个特点:训练完成后,判别器都是没有用的。因为理论上越训练,判别器越退化(比如趋于一个常数)。做过 GAN 的都知道,GAN 的判别器和生成器两个网络的复杂度是相当的(如果还有编码器,那么复杂度也跟它们相当),训练完 GAN 后判别器就不要了,那实在是对判别器这个庞大网络的严重浪费!一般来说,判别器的架构跟编码器是很相似的,那么一个很自然的想法是能不能让判别器和编码器共享大部分权重?过去所有的 GAN 相关的模型中,只有 IntroVAE 做到了这一点。但相对而言 IntroVAE 的做法还是比较复杂的,而且目前网上还没有成功复现 IntroVAE 的开源代码。

       而本文的方案则极为简单——通过稍微修改原来的GAN模型,就可以让判别器转变为一个编码器,不管是复杂度还是计算量都几乎没有增加。

模型

一般GAN的写法:

其中x∈Rnx,z∈Rnz, p(x)是真实图片集的“证据分布”,q(z)是噪声的分布(在本文中,它是nz元标准正态分布);而G:Rnz→Rnx和D:Rnx→R自然就是生成器和判别器了,f,g,h则是一些确定的函数,不同的GAN对应着不同的f,h,g。

定义几个向量运算符:

均值、方差、标准化向量

当nz≥3时(真正有价值的GAN都满足这个条件),[avg(z),std(z),N(z)]是函数无关的,也就是说它相当于是原来向量z的一个“正交分解”。

判别器的结构与编码器结构相似:判别器生成一个标量,编码器生成一个向量

把判别器分解:

E是Rnx→Rnz的映射,而T是Rnz→R的映射。E的参数量会远远多于T的参数量,目的是希望E(x)具有编码功能。

解决方法:加入一个相关系数(Person系数)−ρ(z, E(G(z)))(用于D与G之间

如果 λ=0,那么就是普通的 GAN 而已(只不过判别器被分解为两部分 E 和 T 两部分)。加上了这个相关系数,直观上来看,就是希望 z 和 E(G(z)) 越线性相关越好。显然这个相关系数可以嵌入到任意现成的 GAN 中,改动量显然也很小(拆分一下判别器、加一个 loss),在上述公式里,Person系数是用来衡量是否在一条线上即是否线性相关。

这样一来,GAN的判别器D分解为了E和T两部分,E变成了编码器,也就是说,判别器的大部分参数已经被利用上了。但是还剩下T,训练完成后T也是没用的,T可否省去?方法是直接用avg(E(x))做判别器

这样一来整个模型中已经没有 T 了,只有纯粹的生成器 G 和编码器 E,整个模型没有丝毫冗余的地方。

实验

注意,理论上来讲,本文引入的相关系数项并不能提高生成模型的质量,所以实验的目标主要有两个:1)这个额外的 loss 会不会有损原来生成模型的质量;2)这个额外的 loss 是不是真的可以让 E 变成一个有效的编码器?

数据集上,这次的实验做得比较完整,在 CelebA HQ、FFHQ、LSUN-churchoutdoor、LSUN-bedroom 四个数据集上都做了实验,分辨率都是 128 × 128 (其实还做了一点 256 × 256 的实验,结果也不错,但是没放到论文上)。模型架构跟以往一样都是DCGAN,其余细节直接看论文或者代码吧。

1. 随机生成效果还不错,说明新引入的相关系数项没有降低生成质量;

2. 重构效果还不错,说明 E(x) 确实提取到了 x 的主要特征;

3. 线性插值效果还不错,说明 E(x) 确实学习到了接近线性可分的特征。

论据(原理)

        很明显,这个额外的重构项的作用就是让 z 尽可能与 E(G(z)) “相关”,对于它,相信大多数读者的第一想法应该是 mse (均方方差)损失\vert \vert z-E(G(z))\vert \vert ^2 ,而非本文用的 ρ(z,E(G(z)))。但事实上,如果加入\vert \vert z-E(G(z))\vert \vert ^2那么训练基本上都会失败。那为什么 ρ(z,E(G(z))) 又会成功呢?根据前面的定义,E(x) 输出一个 n_{z} 维的向量,但是 T(E(x)) 只输出一个标量,也就是说,E(x) 输出了n_{z} 个自由度,而作为判别器,T(E(x)) 至少要占用一个自由度(当然,理论上它也只需要占用一个自由度)。如果最小化\vert \vert z-E(G(z))\vert \vert ^2,那么训练过程会强迫E(G(z)) 完全等于 z,也就是说n_{z} 个自由度全部被它占用了,没有多余的自由度给判别器来判别真假了,所以加入\vert \vert z-E(G(z))\vert \vert ^2大概率都会失败。但是 ρ(z,E(G(z))) 不一样,ρ(z,E(G(z))) 跟 avg(E(G(z))) 和 std(E(G(z))) 都没关系(只改变向量 E(G(z)) 的 avg 和 std,不会改变 ρ(z,E(G(z))) 的值,因为 ρ 本身就先减均值除标准差了),这意味着就算我们最大化 ρ(z,E(G(z))),我们也留了至少两个自由度给判别器。这也是为什么在上文中我们甚至可以直接用 avg(E(x)) 做判别器,因为它不会被 ρ(z,E(G(z))) 的影响的。

        一个相似的例子是 InfoGAN。InfoGAN 也包含了一个重构输入信息的模块,这个模块也和判别器共享大部分权重(编码器),而因为 InfoGAN 事实上只重构部分输入信息,因此重构项也没占满编码器的所有自由度,所以 InfoGAN 那样做是合理的——只要给判别器留下至少一个自由度。

         另外还有一个事实也能帮助我们理解。因为我们在对抗训练的时候,噪声是z ~ N(0,I_{n_{z} } )的,当生成器训练好之后,那么理论上对所有的 z ~ N(0,I_{n_{z} } ),G(z) 都会是一张逼真的图片,事实上,反过来也是成立的,如果 G(z) 是一张逼真的图片,那么应该有z ~ N(0,I_{n_{z} } )(即位于 N(0,Inz) 的高概率区域)。进一步推论下去,对于z ~ N(0,I_{n_{z} } ),我们有 avg(z)≈0 以及 std(z)≈1。那么,如果 G(z) 是一张逼真的图片,那么必要的条件是 avg(z)≈0 以及 std(z)≈1。应用这个结论,如果我们希望重构效果好,也就是希望 G(E(x)) 是一张逼真的图片,那么必要的条件是 avg(E(x))≈0 以及 std(E(x))≈1。这就说明,对于一个好的 E(x),我们可以认为 avg(E(x)) 和 std(E(x)) 都是已知的(分别等于 0 和 1),既然它们是已知的,我们就没有必要拟合它们,换言之,在重构项中可以把它们排除掉。而事实上:

也就是说在 mse 损失中排除掉 avg(E(x)) 和 std(E(x)) 的话,然后省去常数,它其实就是 −ρ(z,E(G(z))),这再次说明了 ρ(z,E(G(z))) 的合理性。并且由这个推导,重构过程并不是 G(E(x)) 而是:

最后,这个额外的重构项理论上还能防止 mode collapse 的出现。其实很明显,因为重构质量都不错了,生成质量再差也差不到哪里去,自然就不会怎么 mode collapse 了。

非要说数学依据的话,我们可以将 ρ(z, E(G(z))) 理解为 Z 和 G(Z) 的互信息上界,所以最小化 −ρ(z, E(G(z))) 事实上在最大化 Z 与 G(Z) 的互信息,这又等价于最大化 G(Z) 的熵。而 G(Z) 的熵大了,表明它的多样性增加了,也就远离了 mode collapse。类似的推导可以参考能量视角下的GAN模型(二):GAN=“分析”+“采样”

结语

本文介绍了一个方案,只需要对原来的 GAN 进行简单的修改,就可以将原来 GAN 的判别器转化为一个有效的编码器。多个实验表明这样的方案是可行的,而对原理的进一步思考得出,这其实就是对原始判别器(编码器)的一种正交分解,并且对正交分解后的自由度的充分利用,所以模型也被称为“正交 GAN(O-GAN)”。

对了,除了 IntroVAE,对我启发特别大的还有 Deep Infomax 这篇论文,Deep Infomax 最后的附录里边提供了一种新的做 GAN 的思路。

参考文献:https://zhuanlan.zhihu.com/p/58812352

                  https://www.jianshu.com/p/40feb1aa642a

                  https://www.jianshu.com/p/8f03e56e406d

                  https://kexue.fm/archives/6409

                   https://www.cnblogs.com/bonelee/p/9166084.html


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容