【GAN】若干常见GAN中的Loss及部分知识

本文主要是列举几种GAN中的loss函数形式以及部分相关知识。

1. GAN的多种形式

1.1 GAN 14.01

原始GAN论文[1]中指出,生成器 G G G和判别器 D D D在进行零和博弈,最终达到纳什均衡。可以用下面的值函数(value function)表示:
min ⁡ G max ⁡ D V ( G , D ) = min ⁡ G max ⁡ D E x ∼ p d a t a [ log ⁡ D ( x ) ] + E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min_{G} \max_{D} V(G, D) = \min_{G} \max_{D} \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_{z}}[\log (1-D(G(z)))] GminDmaxV(G,D)=GminDmaxExpdata[logD(x)]+Ezpz[log(1D(G(z)))]
其中 p d a t a p_{data} pdata表示真实数据分布, x x x表示该分布中的样本, p z p_{z} pz表示噪声变量 z z z的先验分布。
在求解时分别对生成器和判别器计算loss,vanilla GAN中由于生成器loss不同而有两种形式:

1) Minimax GAN

判别器loss和生成器loss分别为:
max ⁡ D L ( D ) = E x ∼ p d a t a [ log ⁡ D ( x ) ] + E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] min ⁡ G L ( G ) = E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \begin{aligned} &\max_{D} L(D) = \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_{z}}[\log (1-D(G(z)))] \\ &\min_{G} L(G) = \mathbb{E}_{z \sim p_{z}}[\log (1-D(G(z)))] \end{aligned} DmaxL(D)=Expdata[logD(x)]+Ezpz[log(1D(G(z)))]GminL(G)=Ezpz[log(1D(G(z)))]
上式的判别器loss就是负的二分类交叉熵损失。

2) Non-saturating GAN

仅是更改了生成器loss形式,在[2]中3.2一节有更详细的解释,1)中初期判别器能很好地区分真假样本的时候,生成器会面临梯度消失的问题。更改后的生成器loss在训练初期会有较大的梯度,使得生成器能较快开始更新。
max ⁡ D L ( D ) = E x ∼ p d a t a [ log ⁡ D ( x ) ] + E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] min ⁡ G L ( G ) = − E z ∼ p z [ log ⁡ D ( G ( z ) ) ] \begin{aligned} &\max_{D} L(D) = \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_{z}}[\log (1-D(G(z)))] \\ &\min_{G} L(G) = -\mathbb{E}_{z \sim p_{z}}[\log D(G(z))] \end{aligned} DmaxL(D)=Expdata[logD(x)]+Ezpz[log(1D(G(z)))]GminL(G)=Ezpz[logD(G(z))]
两种不同生成器loss的示意图[2]:
在这里插入图片描述

但是上述两种形式的GAN还是存在若干问题,详见1.4节。

1.2 BiGAN 16.05

BiGAN[12]全称 Bidirectional Generative Adversarial Networks,意为双向GAN。文中作者结合编解码器和判别器的结构,设计出了双向GAN,这里的双向指的是一个方向从编码器到解码器,另一个方向是从解码器到编码器。具体组织形式如下图:
在这里插入图片描述
说明:

  • G G G:生成器,可视为解码器; D D D:判别器; E E E:编码器
  • x \textbf{x} x:真实样本; z \textbf{z} z:潜在表征(latent representation)
  • E ( x ) E(\textbf{x}) E(x) x \textbf{x} x编码到潜在空间的表征
  • G ( z ) G(\textbf{z}) G(z):由 z \textbf{z} z生成出的数据
  • y y y:表示分类结果。若来自真实样本, y = 1 y=1 y=1;若是生成样本, y = 0 y=0 y=0

上图描述的过程是:

  1. 输入真实图像 x \textbf{x} x,经过 E E E编码后得到 E ( x ) E(\textbf{x}) E(x)
  2. 从某个分布中采样随机噪声 z \textbf{z} z,经过 G G G解码得到 G ( z ) G(\textbf{z}) G(z)
  3. 经过上述2步后,得到两个样本对 ( x , E ( x ) ) (\textbf{x},E(\textbf{x})) (x,E(x)) ( G ( z ) , z ) (G(\textbf{z}),\textbf{z}) (G(z),z),将这两个样本对输入到判别器 D D D,让 D D D判断是由编码器 E E E还是生成器 G G G产生的。

最终目的就是让判别器 D D D区分不出是从编码器 E E E(Real)还是从生成器 G G G(Fake)产生的。

优化过程如[13]中图示:
在这里插入图片描述
注:上图中的 D e De De就是前文图示中的 G G G

BiGAN的目标函数如下所示:
在这里插入图片描述
该目标函数的含义就跟vanilla GAN中一样,要是来自真实数据,判别器 D D D输出就越大;若是来自生成数据, D D D的输出就越小。

最优的编码器 E E E和生成器 G G G是想要达到:
x = G ( E ( x ) ) z = E ( G ( z ) ) \begin{aligned} &\textbf{x} = G(E(\textbf{x})) \\ &\textbf{z}= E(G(\textbf{z})) \end{aligned} x=G(E(x))z=E(G(z))
E E E D D D就成了一对互逆的网络。

BiGAN让GAN有了表征学习能力,因为BiGAN里有从数据空间向潜在空间的映射,这使得可以学习到一些有意义的特征,捕捉到高层语义。

与BiGAN几乎相同的工作,ALI(Adversarially Learned Inference)[14]于16.06挂在了arxiv上,在博客[15]中有讲到这篇文章。

1.3 LSGAN 16.11

判别器loss和生成器loss为:
min ⁡ D L ( D ) = 1 2 E x ∼ p d a t a [ ( D ( x ) − 1 ) 2 ] + 1 2 E z ∼ p z [ ( D ( G ( z ) ) ) 2 ] min ⁡ G L ( G ) = 1 2 E z ∼ p z [ ( D ( G ( z ) ) − 1 ) 2 ] \begin{aligned} &\min_{D} L(D) = \frac{1}{2}\mathbb{E}_{x \sim p_{data}}[(D(x)-1)^2] + \frac{1}{2}\mathbb{E}_{z \sim p_{z}}[(D(G(z)))^2] \\ &\min_{G} L(G) = \frac{1}{2}\mathbb{E}_{z \sim p_{z}}[(D(G(z))-1)^2] \end{aligned} DminL(D)=21Expdata[(D(x)1)2]+21Ezpz[(D(G(z)))2]GminL(G)=21Ezpz[(D(G(z))1)2]

1.4 WGAN 17.01

WGAN[4, 5]是利用了Wasserstein distance(也叫Earth Mover’s Distance)来度量真实分布和生成分布间的距离,目的就是解决vanilla GAN存在的问题[6]

在原始GAN的(近似)最优判别器下,第一种生成器loss面临梯度消失问题,第二种生成器loss面临优化目标荒谬、梯度不稳定、对多样性与准确性惩罚不平衡导致mode collapse这几个问题。

这里的“第一种生成器loss”指Minimax GAN中的。在最优判别器下,生成器loss即由两个分布间的JS散度表示。当真实分布和生成分布不相交的时候,两个分布间的JS散度是个固定值 l o g 2 log2 log2,也就是说生成器loss是个常数,当前也就不能提供梯度以用于参数的更新。
“第二种生成器loss”值Non-saturating GAN中的。

WGAN的值函数为:
min ⁡ G max ⁡ D ∈ 1 − L i p s c h t i z E x ∼ p d a t a [ D ( x ) ] − E z ∼ p z [ D ( G ( z ) ) ] \min_{G} \max_{D \in 1-Lipschtiz}\mathbb{E}_{x \sim p_{data}}[D(x)] - \mathbb{E}_{z \sim p_{z}}[D(G(z))] GminD1LipschtizmaxExpdata[D(x)]Ezpz[D(G(z))]
判别器loss和生成器loss为:
min ⁡ D L ( D ) = E z ∼ p z [ D ( G ( z ) ) ] − E x ∼ p d a t a [ D ( x ) ] min ⁡ G L ( G ) = − E z ∼ p z [ D ( G ( z ) ) ] \begin{aligned} &\min_{D} L(D) = \mathbb{E}_{z \sim p_{z}}[D(G(z))] - \mathbb{E}_{x \sim p_{data}}[D(x)] \\ &\min_{G} L(G) = -\mathbb{E}_{z \sim p_{z}}[D(G(z))] \end{aligned} DminL(D)=Ezpz[D(G(z))]Expdata[D(x)]GminL(G)=Ezpz[D(G(z))]

WGAN为了让 D D D满足 1 − L i p s c h t i z 1-Lipschtiz 1Lipschtiz 连续,引入weight clipping,把神经网络的参数限制在某个范围 [ − c , c ] [-c, c] [c,c]内,
w : = c l i p _ b y _ v a l u e ( w , − 0.01 , 0.01 ) w :=clip\_by\_value(w, -0.01, 0.01) w:=clip_by_value(w,0.01,0.01)

1.5 WGAN-GP 17.04

WGAN-GP[7]改进了让 D D D满足 1 − L i p s c h t i z 1-Lipschtiz 1Lipschtiz 连续的条件,将weight clipping换成了Gradient Penalty
有下面等价形式[8]:
D ∈ 1 − L i p s c h t i z ⇔ ∥ ∇ x D ( x ) ∥ 2 ≤ 1 f o r   a l l   x D \in 1-Lipschtiz \Leftrightarrow \Vert \nabla_xD(x) \Vert_{2} \leq 1\quad for\ all\ x D1LipschtizxD(x)21for all x
上式意思是: D ( x ) D(x) D(x)对所有 x x x求梯度,所有梯度的2-范数都小于等于1即说明 D D D 1 − L i p s c h t i z 1-Lipschtiz 1Lipschtiz 连续。
但是对所有 x x x进行计算时不现实的, x x x的数据空间很大,不可能遍历到所有 x x x,为此WGAN-GP中选择了 x ∼ p p e n a l t y x\sim p_{penalty} xppenalty来计算。这个 p p e n a l t y p_{penalty} ppenalty是指真实分布和生成分布间的区域,也就是说选择一个真实样本 x r x_r xr和一个生成样本 x g x_g xg,两个样本间的连线上选择一个样本 x p x_p xp,即 x p = α x r + ( 1 − α ) x g ,   0 ≤ α ≤ 1 x_p=\alpha x_r + (1-\alpha)x_g,\ 0 \leq \alpha \leq 1 xp=αxr+(1α)xg, 0α1。这些样本构成了 p p e n a l t y p_{penalty} ppenalty。如下图所示:
在这里插入图片描述

WGAN-GP的目标函数:
min ⁡ G max ⁡ D V ( G , D ) = E x ∼ p d a t a [ D ( x ) ] − E z ∼ p z [ D ( G ( z ) ) ] − λ E x ^ ∼ p p e n a l t y [ ( ∥ ∇ x ^ D ( x ^ ) ∥ 2 − 1 ) 2 ] \min_{G} \max_{D}V(G, D)=\mathbb{E}_{x \sim p_{data}}[D(x)] - \mathbb{E}_{z \sim p_{z}}[D(G(z))] - \lambda \mathbb{E}_{\hat x \sim p_{penalty}}[(\Vert \nabla_{\hat x}D(\hat x) \Vert_{2}-1)^2] GminDmaxV(G,D)=Expdata[D(x)]Ezpz[D(G(z))]λEx^ppenalty[(x^D(x^)21)2]
判别器loss和生成器loss为:
min ⁡ D L ( D ) = E z ∼ p z [ D ( G ( z ) ) ] − E x ∼ p d a t a [ D ( x ) ] + λ E x ^ ∼ p p e n a l t y [ ( ∥ ∇ x ^ D ( x ^ ) ∥ 2 − 1 ) 2 ] min ⁡ G L ( G ) = − E z ∼ p z [ D ( G ( z ) ) ] \begin{aligned} &\min_{D} L(D) = \mathbb{E}_{z \sim p_{z}}[D(G(z))] - \mathbb{E}_{x \sim p_{data}}[D(x)] + \lambda \mathbb{E}_{\hat x \sim p_{penalty}}[(\Vert \nabla_{\hat x}D(\hat x) \Vert_{2}-1)^2] \\ &\min_{G} L(G) = -\mathbb{E}_{z \sim p_{z}}[D(G(z))] \end{aligned} DminL(D)=Ezpz[D(G(z))]Expdata[D(x)]+λEx^ppenalty[(x^D(x^)21)2]GminL(G)=Ezpz[D(G(z))]

1.6 Geometric GAN 17.05

Geometric GAN[9]利用了SVM中hinge loss思想,对生成器loss和判别器loss做出了相应改变。
判别器loss和生成器loss为:
min ⁡ D L ( D ) = E x ∼ p d a t a [ m a x ( 0 , 1 − D ( x ) ) ] + E z ∼ p z [ m a x ( 0 , 1 + D ( G ( z ) ) ) ] min ⁡ G L ( G ) = − E z ∼ p z [ D ( G ( z ) ) ] \begin{aligned} &\min_{D} L(D) = \mathbb{E}_{x \sim p_{data}}[max (0, 1- D(x))] + \mathbb{E}_{z \sim p_z}[max(0, 1+D(G(z)))] \\ &\min_{G} L(G) = -\mathbb{E}_{z \sim p_z}[D(G(z))] \end{aligned} DminL(D)=Expdata[max(0,1D(x))]+Ezpz[max(0,1+D(G(z)))]GminL(G)=Ezpz[D(G(z))]


2. 相关知识

2.1 Gradient Penalty

在1.5节中有说到在判别器loss上施加gradient penalty,起到正则化的作用,也使GAN能具有某些性质。
[10]中提出了两种 gradient penalty方法:
在这里插入图片描述
说明:上图中 p D ( x ) p_{D}(x) pD(x)表示真实样本分布, p θ ( x ) p_{\theta}(x) pθ(x)表示生成样本分布。

在[11]中将上图中 R 1 R_1 R1正则化项称为0-GP-sample,WGAN-GP中的正则化项称为1-GP,同时提出了0-GP方法。引用[11]中的图表:
在这里插入图片描述
说明:上图中的 x \textbf{\textit{x}} x指的是真实样本, y \textbf{\textit{y}} y指的是生成样本。

参考文献

[1] Generative Adversarial Nets
[2] NIPS 2016 tutorial: Generative adversarial networks
[3] Least Squares Generative Adversarial Networks
[4] Towards principled methods for training generative adversarial networks
[5] Wasserstein Generative Adversarial Networks
[6] 令人拍案叫绝的Wasserstein GAN(推荐阅读一下)
[7] Improved Training of Wasserstein GANs
[8] 李宏毅WGAN讲义
[9] Geometric GAN
[10] Which Training Methods for GANs do actually Converge?
[11] Improving Generalization and Stability of Generative Adversarial Networks
[12] Adversarial Feature Learning
[13] 李宏毅InfoGAN, VAE-GAN, BiGAN讲义
[14] Adversarially Learned Inference
[15] 关于GAN你想知道的全部

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值