GAN Review
一、Introduction
Time | Method | Describe |
---|---|---|
\(14年06月\) | \(GANs\) | 生成对抗网络 |
\(14年11月\) | \(CGAN\) | 条件生成对抗网络 |
\(15年06月\) | \(LAPGAN\) | 拉普拉斯金字塔GAN |
\(15年11月\) | \(DCGAN\) | 深度卷积生成对抗网络 |
\(15年12月\) | \(VAEGAN\) | 变分自编码GAN |
\(16年05月\) | \(BiGAN\) | 双向生成生成对抗网络 |
\(16年06月\) | \(CoGAN\) | 耦合生成对抗网络 |
\(16年06月\) | \(fGAN\) | f-散度生成对抗网络 |
\(16年06月\) | \(ImprovedDCGAN\) | 提升DCGAN |
\(16年06月\) | \(InfoGAN\) | 互信息生成对抗网络 |
\(16年09月\) | \(EBGAN\) | 基于能量的生成对抗网络 |
\(16年09月\) | \(SRGAN\) | 超分辨率生成对抗网络 |
\(16年11月\) | \(LSGAN\) | 最小二乘生成对抗网络 |
\(16年12月\) | \(StackGAN\) | 堆栈式生成对抗网络 |
\(17年01月\) | \(WGAN\) | Wasserstein距离GAN |
\(17年03月\) | \(BEGAN\) | 边界均衡生成对抗网络 |
\(17年03月\) | \(CycleGAN\) | 循环生成对抗网络 |
\(17年03月\) | \(TripleGAN\) | 三部分生成对抗网络 |
\(17年04月\) | \(WGAN-GP\) | 加强版WGAN |
\(17年05月\) | \(DRAGAN\) | 深度回归分析GAN |
\(17年05月\) | \(DRAGAN\) | 深度回归分析GAN |
\(17年10月\) | \(PGGAN\) | 渐进生成对抗网络 |
\(17年10月\) | \(StackGAN++\) | 提升的堆栈式GAN |
\(17年11月\) | \(StarGAN\) | 星型结构GAN |
\(17年11月\) | \(XGAN\) | X型结构GAN |
\(17年12月\) | \(ComboGAN\) | 合一式生成对抗网络 |
\(18年02月\) | \(SNGAN\) | 频谱归一化生成对抗网络 |
\(18年05月\) | \(SAGAN\) | 自注意力生成对抗网络 |
\(18年07月\) | \(RGAN\) | 相对生成对抗网络 |
\(18年09月\) | \(BigGAN\) | 大规模的生成对抗网络 |
\(18年12月\) | \(StyleGAN\) | 基于样式的生成对抗网络 |
\(19年03月\) | \(S3GAN\) | 更少标签的生成对抗网络 |
\(19年03月\) | \(GuaGAN\) | |
\(19年05月\) | \(SinGAN\) | 单幅自然图像学习的非条件生成模型 |
\(19年07月\) | \(BigBiGAN\) | 超大规模生成对抗模型 |
\(19年08月\) | \(AutoGAN\) | 自动搜索生成对抗网络的结构 |
\(CVPR2020\) | \(MSG-GAN\) | 用于稳定图像合成的多尺度梯度GAN |
\(2019年11月\) | \(YLG\) | 用于稳定图像合成的多尺度梯度GAN |
二、基于Loss的改进
0. 基础知识
\[KL(p_1||p_2)=E_{X\sim p_1}\log\frac{p_1}{p_2}\\ JS(p_1||p_2)=\frac{1}{2}KL(p_1||\frac{p_1+p_2}{2})+\frac{1}{2}KL(p_2||\frac{p_1+p_2}{2})\]1.最大似然推导出KL散度
从真实分布 \(P_{data}(x)\) 抽样部分数据 \(\{x^1,x^2,...,x^m\}\),最大似然就是找到一组 \(\theta\) 使得抽样的样本概率最大,\(\theta\) 是模拟真实分布的参数。
\[\max_\theta L=\prod_{i=1}^mP_G(x^i,\theta)\]根据取对数推导可以得出最大似然等价于最小化真实分布与生成器分布的\(KL\)距离。
\[\min_{\theta} KL(P_{data}||P_{G})\]\(KL\)散度问题:不是对称的衡量
- 当\(P_g(x)\rightarrow 0\)而\(P_r(x)\rightarrow 1\)时,\(KL(P_g \|\| P_r)\rightarrow 0\)
- 当\(P_g(x)\rightarrow 1\)而\(P_r(x)\rightarrow 0\)时,\(KL(P_g \|\| P_r) \rightarrow +\infty\)
这就好比将 \(A\) 和 \(B\) 互换位置, \(D_{KL}(A,B)\) 和 \(D_{KL}(B,A)\) 距离不相等。而JSDiv能够很好解决这个问题。
2.GAN
\[\min_G \max_D V(G,D) = E_{x\sim P_{data}}[logD(x)] + E_{x\sim P_{G}}[log(1-D(x))]\]判别器 \(D\) 的目标函数可以推导出\(JS Div\)(推导略)
\[\max_D V(G,D) = E_{x\sim P_{data}}[logD(x)] + E_{x\sim P_{G}}[log(1-D(x))] \\ =-2log2 + 2JSD(P_{data}||P_G)\]其中\(D^*(x)=\frac{P_{data}(x)}{P_{data}(x)+P_{G}(x)}\),优化生成器\(G\)则变为最小化真实分布与生成器分布的\(JS\)距离.
在固定判别器为 \(D^*(x)\) 训练 \(G\) 时候,\(JSDiv\)存在两个问题:
①训练前期,真实分布和生成分布 重叠度很低时,JSDiv无法衡量两个分布之间的距离。举个例子:两个不重叠的圆\(A\)和\(B\),无论圆心的距离是无穷远还是\(AB\)刚好相切,\(JS(A,B)\)都不变。如下图当两分布overlap很小Distance很大时,JSDiv很大,梯度更新几乎为0,这导致前期训练很慢效率不高。
② 优化 \(G\) 时不再是 JS Div而主要是Reverse KL Div,导致mode dropping问题,生成的图片缺乏多样性。 训练过程\(G\)过程中,损失函数 \(-E_{x\sim P_{G}}log[D(x)]\),根据推导这一项等价于Reverse KL Div。
\[\begin{align} &-E_{X\sim P_{G}}log[D^*(x)]\\ =& KL(P_G||P_{data})-2JS(P_{data}||P_{G})+2\log2+E_{x\sim P_x}log[D^*(x)] \end{align}\]后两项为常数,只看前两项,由于 \(JS(P_{data} \|\| P_{G})\) 范围为 \([0,\log2]\)对结果几乎无影响,\(KL(P_G \|\| P_{data})\) 占主导,它为逆 \(KL(P_{data} \|\| P_G)\)。
逆\(KL\)会造成模式丢失和模式坍塌问题。真实数据分布一般都存在多种特征模式如肤色、发型、性别等,如上图蓝色线为双模式分布, \(q\) 为生成分布,\(KL\)会让\(q\) 包含两个模式,而reverse KL的\(q\)分布丢失了一部分的mode, 实际生成图片就会缺乏多样性。
3.WGAN
WGAN就很好解决了上述两个问题,它采用Earth Move(EM)距离(也叫Wasserstein距离)作为损失度量:
\[W(P_{data}, P_G)=\inf_{ \gamma\in \prod(P_{data}, P_G)} E_{(x,y)\sim \gamma}||x-y||\]上述式子表示, \(P_{data}\) 为真实分布,穷举生成器所有可能的分布\(P_G , \prod(P_{data}, P_G)\)为所有联合分布集合, 取一组最优的联合分布 \(\gamma\),使真实分布和生成分布产生的 \(x,y\) 平均距离最小。优点:即使两个分布不重叠依然能够反映它们之间的距离,Was距离平滑可导,即使真假分布不重叠更新的梯度也是有意义的。
但是上式求解很麻烦,需要穷举所有的 \(P_G\) 再取最优,作者将其转化为下式:
\[V(G,D)=\max_{D\in 1-Lipschitz} \{E_{x\sim P_{data}}[D(x)]-E_{x\sim P_{G}}[D(x)]\}\qquad (*)\\ ||f(x_1)-f(x_2)||\leq K||x_1-x_2||\]\(D\)网络将从真假分布抽样的\(x\)映射到一个空间中,在这个空间他们的\(L_1\)距离最大。并且\(D\)满足1-Lipschitz连续,即一阶导上界为 \(1\). WGAN相比于GAN做了以下改动:
- 把\(D\)参数的绝对值截断到不超过常数c(满足1-Lipschitz条件)
- 生成器和判别器的loss不取log(Was距离)
- 判别器最后一层去掉sigmoid(\(D\)不再是判别器而是距离的回归网络)
- 不要用基于动量的优化算法包括momentum和Adam,推荐RMSProp/SGD(实验trick)
● 思考
第一点,式 \((*)\)字面上理解是真实分布和生成分布生成图片经过判别器均值的L1距离, \(D(x)\) 可以看作一个映射函数mapping function。先举个例子,看一下马氏距离:
马氏距离解释:将输入映射到另外一个空间,在这个空间中它们的欧式距离最小。
\[\begin{align} &(X-Y)^TM(X-Y)\\ =& (X-Y)^TW^TW(X-Y)\qquad M=W^TW\\ =&(WX-WY)^T(WX-WY) \end{align}\]\(X,Y\) 为 \(d\) 维向量, \(M\) 为对角正定矩阵,表示每一维的权重系数,因为 \(M\) 正定可以开根号分解为矩阵 \(W\) ,再将\(W\)放入阔号里马氏距离又变成特殊的欧式距离,而 W 矩阵可以看作是对 \(X,Y\) 的线性变换,通过一层的FC网络即可实现。将矩阵 \(W\) 扩展为非线性就是多层神经网络, \(W\) 更加general的意义就是一个mapping function \(f(·)\),原始的输入通过 \(f\) 能够更加可分。而判别器 D 实际上也是一个函数映射。
第二点,能否将 D(x) 看作距离的度量函数,也就是将 \(D(x)\) 看作为一种divergence,\(D(x)\)可以为任意的divergence,我们只需定义一个通用的divergence损失就能训练出\(D(x)\)。我们知道Bregman divergence包含了对一切距离的定义,它的几何思想为:两点距离为一阶泰勒展开的差。
\[d_{\varphi}(x,y) = \varphi(x)-(\varphi(y)+\triangledown \varphi(y)(y-x))\]如欧式距离\(\varphi(x)=x^2,d_\varphi(x,y) = x^2-y^2-2y (y-x))=(x-y)^2,\varphi\)选取不同表达式表示不同度量方式。具体如下图。
可以结合Bregman divergence,令 \(D(x)\equiv\varphi(x)\) ,判别器的目标函数为:
\[\max_D E_{(x,y)\sim (P_{data}, P_G)}[D(x)-D(y)-\triangledown D(y)(x-y)]\]这样就能通过 \(d_\varphi(x,y)\)训练出 \(\varphi(x)\) . 上式距离等价于WGAN判别器目标函数额外加上 \(\triangledown D(y)(x-y)\),这也解释了为什么WGAN需要满足Lipchitz连续限制一阶导的大小,我觉得也正是这一点导致了用加速算法(momentum Adam)loss会崩掉。从Bregman的角度就无需再对一阶导进行限制。
相关论文:b-GAN BreGMN
4. WGAN-GP
解决问题: WGAN未能将D真的限制在1-Lipschitz内。
\[\max_D E_{x\sim P_{data}}[D(x)] - E_{x\sim P_{G}}[D(x)] -\lambda\int_{x}max(0,||\triangledown_xD(x)-1||)dx\]核心思想:WGAN-GP为判别器目标函数增加对D约束: \(\max_D E_{x\sim P_{data}}[D(x)] - E_{x\sim P_{G}}[D(x)] -\lambda\int_{x}max(0,||\triangledown_xD(x)-1||)dx\)
这个表达式的问题在于,前两项都是均值期望,添加的第三项是积分,直接导致第三项惩罚过高。于是作者将其改为下式,惩罚项改为在真假分布之间抽样计算梯度是否小于1. (为什么不直接给上式第三项加 \(1/N\) ?)
作者发现 \(\| \| \triangledown_xD(x)\|\|\) 越接近 1 ,训练得越快,效果也越好,于是不表达式直接改成:
\[\max_D E_{x\sim P_{data}}[D(x)] - E_{x\sim P_{G}}[D(x)] -\lambda E_{x\sim P_{penalty}} [(||\triangledown_xD(x)||-1)^2]dx\]WGAN-PG问题:① 没有从根本上解决1-Lipschitz问题。让 \(\|\|\triangledown_x D(x)\|\|\) 尽量接近 1,并没有真的将\(\|\| \triangledown_xD(x)\|\|\)限制在小于等于1内。
②\(P_{penalty}\)可能改变了原始 \(P_G\)向\(P_{data}\)移动的方向。
5. f-GAN
生成器的目标其实是最小化真实分布与生成器分布之间的距离:
\[\min_G Div(P_G, P_{data})\]fGAN提出的问题是:能否用一种通用的框架表示所有可能的距离形式?fGAN提出了f-Divergence用 \(D_f\) 表示
\[D_f (P||Q)=\int_{x}q(x)f(\frac{p(x)}{q(x)})dx\\\]其中函数\(f\)为凸函数且\(f(1)=0\) . \(f\) 选取不同的函数, \(D_f\)表示不同的Divergence
\[\begin{array}[b] {|c|c|} \hline f(x) & D_f (p||q)& Divergence\\ \hline x\log(x) & \int_{x}p(x)log(\frac{p(x)}{q(x)}) & KL \\ \hline -\log(x) & \int_{x}q(x)log(\frac{q(x)}{p(x)}) & 逆KL \\ \hline (x-1)^2 & \int_{x}\frac{(p(x)-q(x))^2}{q(x)} & Chi \:Square \\ \hline \end{array}\]以上是生成器G的目标函数,对于判别器D,再根据Fenchel共轭可以推导出(1)对应的形式:
\[\max_D E_{x\sim P_{data}}[D(x)] - E_{x\sim P_{G}}[f^*(D(x))] \\\]综上,fGAN的目标函数为:
\[\begin{align} &\min_G\max_D E_{x\sim P_{data}}[D(x)] - E_{x\sim P_{G}}[f^*(D(x))] \\ =&\min_G\max_D D_f(P_{data}||P_G) \end{align}\]6. Geometric GAN
核心思想:将SVM的分割超平面思想运用在GAN上。
\[\begin{align} L_D&=E_{x\sim P_r}[1-D(x)]_+ + E_{z\sim P_z}[1+D(G(z))]_+ \\ L_G&= -E_{z\sim P_z}D(G(z)) \end{align}\]7. Sphere GAN
CVPR2019 Oral Sphere Generative Adversarial Network Based on Geometric Moment Matching
\[\min_G \max_D \sum_r E_x[d_s^r(N,D(x))]-\sum_r E_z[d_s^r(N,D(G(z)))]\]WGAN中 \(D(x)\) 将输入映射为一个数值 \(D: x\in \boldsymbol{\chi}\rightarrow \mathbb{R}\) , 判别器求一维的欧式距离。
\[\max_D E_x[D(x)]-E_z[D(G(z))]\]Sphere GAN将 其扩展为求高维的欧式距离, \(D: x\in \boldsymbol{\chi}\rightarrow \mathbb{S}^n\),D将输入映射为一个向量。下面以二维为例:
①将点映射到球面上。
球心为原点,球半径为1,根据相似三角形可得点在球面上的坐标。
\[\prod (p)=(x,y)=(\frac{2p}{||p||^2+1}, \frac{||p||^2-1}{||p||^2+1})\]②计算球面上点的距离。
如图,绿点真分布 \(D(x)\) ,紫点假分布 \(D(G(z))\) , \(N\)为球的北极坐标。 \(d_s\)计算真假分布到 \(N\)的距离 \(d_s^r(N,D(x)) , d_s^r(N,D(G(z)))\) 。
\[d_s(\prod(p),\prod(q))=\arccos(\frac{||p||^2||q||^2-||p||^2-||q||^2+4p·q+1}{(||p||^2+1)(||q||^2+1)})\]8. Realness GAN
ICLR2020 REAL OR NOT REAL, THAT IS THE QUESTION
Original GAN目标表达式
\[\min_G\max_D E_{x\sim P_{data}}[\log (D(x)-0)]+E_{x\sim P_G}[\log(1-D(x))]\]D的目标是让 \(D(x_{real})\) 靠近0,\(D(x_{fake})\)靠近1; G目标是\(D(x_{fake})\)靠近0。这样可以将“0”和“1”看作是真假分布的锚,设真锚为 \(A_1\) , 伪锚为 \(A_0\),RealnessGAN目标函数为:
\[\max_G\min_D E_{x\sim P_{data}}[D_{KL}(A_1||D(x))]+E_{x\sim P_G}[D_{KL}(A_0||D(x))]\]D: 最小化真图片与真锚、伪图片与伪锚的KL-divergence。
G: 最大化伪图片与伪锚的KL-divergence(Original GAN是最小化伪图片和真锚距离)
作者发现单纯最大化伪图片与伪锚KL距离效果并不好,因为它只是让图片看起来不那么假,而不能保证它足够真。因此加了一项小化伪图片和真锚距离,这样生成图片的真实度大大提高。
\[\min_G E_{z\sim P_G}[D_{KL}(A_1||D(G(z)))]-E_{z\sim P_G}[D_{KL}(A_0||D(G(z)))]\]三、基于Architecture的改进
1. Deep Convolutional GAN(DCGAN)
DCGAN和GAN原理一样,只是把G和D换成CNN。DCGAN对卷积神经网络做了一些改变:
· 取消所有pooling层。G网络中用微步幅卷积,D中用步幅卷积 · D和G中均使用batch normalization · 去掉FC层,使网络变成全卷积网络 · G网络中使用 ReLU 作为激活函数,最后一层使用 tanh · D网络中使用 LeakyReLU 作为激活函数
2. Boundary Equllibrlum GAN(BEGAN)
针对问题:
· D网络用Autoencoder不用classification网络。论文证明了在Auto encoder下损失函数和Wasserterin距离是等价的。 · 引入超参数 \(\gamma=\frac{E[L(G(z))]}{E[L(x)]}\) 平衡图像的多样性。
3. Progressive GAN(ProGAN)
针对问题:生成超高分辨率的清晰图像。
核心技术:渐进式增长GAN随着训练的进行,网络层数逐渐增加。一开始学习低分辨率4×4的图片生成,逐渐加深网络,学习更高分辨率的图片,最终不断更新直到学习1024×1024图片生成。速度也比传统GAN提升很多。
4. Self-Attention GAN (SAGAN)
针对问题:卷积网络感受野的限制使其无法获取大范围的结构信息,例如人脸鼻子发生偏移或眼睛不对称。如何在不牺牲计算量的情况下,获取图像的全局信息?
核心思想:引入Attention,通过计算图像中任意两个像素点之间关系,获取图像的全局几何特征。
5. BigGAN
针对问题:生成逼真精细、让人无法分辨真伪的高清图片。
核心技术:①增大Batch Size,增加Channel ②共享嵌入。BigGan将条件标签c和噪声向量z连接一并输入,降低计算量。③正交正则化。截断技巧能够提升图片质量,但是较大模型不适合截断技巧,BigGAN采用正交正则化(Orthogonal Regularization)使模型使用截断。让 W 权重矩阵尽可能是一个正交矩阵,这样权重系数彼此之间的干扰会非常低,截断之后的权重不会对结果产生太大影响。
6. Your Local GAN (YLG)
针对问题: 文章主要解决两个问题,①attention的计算效率问题。②feature map展开之后如何保留点的空间位置信息。
核心技术:对于①由于attention需要进行feature map之间的内积操作,YLG利用稀疏矩阵减少一部分计算。对于②二维的矩阵展开成一维失去了空间结构信息,文章引入了ESA (Enumerate, Shift, Apply),其实就是按照曼哈顿距离展开而不是按行展开。总的来说,感觉创新不是很大。
7.AutoGAN
针对问题:如何为GAN自动设计最优的模型?
核心技术:引入NAS(Neural architecture search),使用RNN控制器从其搜索空间中选择模块来构建 G 网络,并同时堆叠预定义模块来增加 D 的深度。
8.Multi-Scale Gradient GAN (MSG GAN)
针对问题:特定数据集训练的GAN很难适应其它数据集,能否训练一个通用的GAN适用不同数据集?
核心技术:文章认为当真实分布和生成器虚假重叠度不高时,判别器传递给生成器梯度的信息不高。将G网络中间层输出的不同尺度的feature map encode成图片,再结合不同尺度大小的原图共起传递给D,这样使得G和D共享更多的信息。
四、评价指标
- IS (Inception Score): 将GAN生成的样本丢给Inception网络,输出类别概率,对于同一类别的图片,其输出的概率分布应该趋向于一个脉冲分布,可以保证生成样本的准确性。对于所有类别,其输出的概率分布应该趋向于一个均匀分布,这样不会出现mode dropping保证生成样本的多样性。
- FID (Fréchet Inception Distance ):计算真实样本和生成样本在特征空间之间的距离。首先利用Inception网络来提取特征,然后使用高斯模型对特征空间进行建模。根据高斯模型的均值和协方差来进行距离计算。
- Mode Score:Inception Score的改进版本,添加了生成样本和真实样本预测的概率分布相似性度量。
- Kernel MMD(maximum mean discrepancy)
- Wasserstein distance
Enjoy Reading This Article?
Here are some more articles you might like to read next: