左上:朱俊彦(Zhu, J. Y.)、朴泰升(Park, T.)、菲利普·伊索拉(Isola, P.)和亚历山大·A·埃弗罗斯(Efros, A. A.)(2017年)。《使用循环一致对抗网络进行无配对图像到图像的转换》,发表于IEEE计算机视觉与模式识别会议(CVPR),论文页码为2223 - 2232。
左下:菲利普·伊索拉(Isola, P.)、朱俊彦(Zhu, J. Y.)、周婷慧(Zhou, T.)和亚历山大·A·埃弗罗斯(Efros, A. A.)(2017年)。《使用条件对抗网络进行图像到图像的转换》,发表于IEEE计算机视觉与模式识别会议(CVPR),论文页码为1125 - 1134。
生成器(Generator, G):左侧的黄色模块,输入是噪声(Noise, z ),其中
θ
G
\boldsymbol{\theta}_G
θG是生成器的参数。生成器根据输入噪声生成假数据
x
~
=
G
(
z
;
θ
G
)
\widetilde{x}=G(z;\boldsymbol{\theta}_G)
x
=G(z;θG), 例如一组随机数据。生成器基于这些噪声生成假数据(Generated Data,
x
~
\widetilde{x}
x
),图中展示了生成的类似花朵的模糊图像示例。
判别器数据输入:数据集
D
\mathcal{D}
D由输入数据(真实数据
x
j
x_j
xj和假数据
x
j
~
\widetilde{x_j}
xj
)以及相应的类别标签(真实数据标签
y
j
=
1
y_j = 1
yj=1,假数据标签
y
j
=
0
y_j = 0
yj=0)组成。
判别器(Discriminator, D):右侧的蓝色模块,作为二元分类器,
θ
D
\boldsymbol{\theta}_D
θD是其参数。判别器接收两部分输入,分别是真实数据
x
x
x和生成器生成的假数据
x
~
\widetilde{x}
x
。判别器通过公式
y
^
=
P
(
Y
=
1
∣
x
;
θ
D
)
=
D
(
x
;
θ
D
)
\widehat{y} = P(Y = 1|x;\boldsymbol{\theta}_D)=D(x;\boldsymbol{\theta}_D)
y
=P(Y=1∣x;θD)=D(x;θD)进行预测,输出
y
^
\widehat{y}
y
表示输入数据为真实数据的概率,以此判断数据是真实的还是生成的
损失(Cost):图中灰色模块“Cost,
J
D
J_D
JD and
J
G
J_G
JG”代表判别器和生成器的损失函数。在训练过程中,判别器希望最大化区分真实数据和假数据的能力,即最小化判别器损失
J
D
J_D
JD ;生成器则希望生成的数据能骗过判别器,即最小化生成器损失
J
G
J_G
JG 。两者相互对抗、不断优化,使生成器生成的数据越来越逼真 。
GAN的训练通常被表述为一个极小极大问题或博弈
对于生成器
G
G
G而言,目标是最小化一个值函数
V
(
D
,
G
)
V(D, G)
V(D,G),目的是骗过判别器。
对于判别器
D
D
D而言,目标是最大化这个值函数,旨在正确检测出真实样本和虚假样本。用数学形式表示为
min
G
max
D
V
(
D
,
G
)
\underset{G}{\min}\underset{D}{\max}V(D, G)
GminDmaxV(D,G),即生成器要最小化,而判别器要在生成器的基础上最大化这个值函数。
二元损失函数 二元损失函数的表达式
V
(
D
,
G
)
=
E
[
log
D
(
x
;
θ
D
)
]
+
E
[
log
(
1
−
D
(
G
(
z
;
θ
G
)
)
)
]
V(D,G)=E[\log D(x;\boldsymbol{\theta}_D)] + E\left[\log\left(1 - D(G(z;\boldsymbol{\theta}_G))\right)\right]
V(D,G)=E[logD(x;θD)]+E[log(1−D(G(z;θG)))] 其中,
E
E
E表示期望,
D
(
x
;
θ
D
)
D(x;\boldsymbol{\theta}_D)
D(x;θD)是判别器对真实数据
x
x
x(参数为
θ
D
\boldsymbol{\theta}_D
θD)的判断结果,
D
(
G
(
z
;
θ
G
)
)
D(G(z;\boldsymbol{\theta}_G))
D(G(z;θG))是判别器对生成器
G
G
G基于噪声
z
z
z(参数为
θ
G
\boldsymbol{\theta}_G
θG)生成的数据的判断结果。
回顾GAN的基本结构,我们已经有了二元损失函数,那么我们的下一个问题是如何从值函数
V
(
D
,
G
)
V(D, G)
V(D,G)中得出
J
D
J_D
JD和
J
G
J_G
JG这两个损失函数。
生成对抗网络(GAN)中判别器和生成器的损失函数
GAN的判别器和生成器各自都有一个与二元分类损失函数相关联的损失函数。
判别器的损失函数:
J
D
(
θ
D
)
=
1
N
R
∑
i
=
1
N
R
log
D
(
x
i
;
θ
D
)
+
1
N
G
∑
i
=
1
N
G
log
(
1
−
D
(
G
(
z
i
;
θ
G
)
)
)
J_D(\boldsymbol{\theta}_D)=\frac{1}{N_R}\sum_{i = 1}^{N_R}\log D(x_i;\boldsymbol{\theta}_D)+\frac{1}{N_G}\sum_{i = 1}^{N_G}\log(1 - D(G(\boldsymbol{z}_i;\boldsymbol{\theta}_G)))
JD(θD)=NR1i=1∑NRlogD(xi;θD)+NG1i=1∑NGlog(1−D(G(zi;θG))) 其中
N
R
N_R
NR是真实数据样本数量,
N
G
N_G
NG是生成数据样本数量。 判别器的目标是最大化这个关于参数
θ
D
\boldsymbol{\theta}_D
θD的损失函数,也就是尽可能准确地区分真实数据
x
i
x_i
xi和生成数据
G
(
z
i
;
θ
G
)
G(\boldsymbol{z}_i;\boldsymbol{\theta}_G)
G(zi;θG)。
生成器的极小极大(二元)损失函数:
J
G
(
θ
G
)
=
1
N
G
∑
i
=
1
N
G
log
(
1
−
D
(
G
(
z
i
;
θ
G
)
)
)
J_G(\boldsymbol{\theta}_G)=\frac{1}{N_G}\sum_{i = 1}^{N_G}\log(1 - D(G(\boldsymbol{z}_i;\boldsymbol{\theta}_G)))
JG(θG)=NG1i=1∑NGlog(1−D(G(zi;θG))) 生成器的目标是最小化这个关于参数
θ
G
\boldsymbol{\theta}_G
θG的函数,即让判别器误判生成的数据为真实数据。 但存在一个问题,当
D
(
G
(
z
i
;
θ
G
)
)
≈
0
D(G(\boldsymbol{z}_i;\boldsymbol{\theta}_G)) \approx 0
D(G(zi;θG))≈0 时,这个极小极大损失
J
G
(
θ
G
)
J_G(\boldsymbol{\theta}_G)
JG(θG)的梯度接近零,不利于模型训练。
生成器的启发式损失函数:为解决上述梯度问题,提出了生成器的“启发式”损失函数
J
G
(
θ
G
)
=
−
1
N
G
∑
i
=
1
N
G
log
(
D
(
G
(
z
i
;
θ
G
)
)
)
J_G(\boldsymbol{\theta}_G)=-\frac{1}{N_G}\sum_{i = 1}^{N_G}\log(D(G(\boldsymbol{z}_i;\boldsymbol{\theta}_G)))
JG(θG)=−NG1i=1∑NGlog(D(G(zi;θG))) 生成器通过最小化该函数,来最大化判别器误判的对数概率(等同于最小化负对数概率),从而改善训练过程中梯度接近零的问题。
上图展示了启发式损失(Heuristic Cost)和极小极大损失(Minimax Cost)与
D
(
G
(
z
)
)
D(G(\boldsymbol{z}))
D(G(z))(判别器对生成数据的判断概率)之间的关系。
当判别器判断正确时,对应
D
(
G
(
z
)
)
D(G(\boldsymbol{z}))
D(G(z))接近0;
当判别器判断错误时,对应
D
(
G
(
z
)
)
D(G(\boldsymbol{z}))
D(G(z))接近1。
同时需要强调一些极小极大损失函数存在的问题——梯度接近零(Problem: gradient near zero)的情况(在
D
(
G
(
z
)
)
D(G(\boldsymbol{z}))
D(G(z))靠近0的部分)。
生成对抗网络(GAN)的训练算法
GAN的训练包括按顺序更新判别器和生成器。
初始化:初始化判别器
D
D
D和生成器
G
G
G。
循环训练:
采样
m
m
m个噪声样本
{
z
1
,
.
.
.
,
z
m
}
\{\boldsymbol{z}_1, ..., \boldsymbol{z}_m\}
{z1,...,zm}。
采样
m
m
m个真实数据样本
{
x
1
,
.
.
.
,
x
m
}
\{\boldsymbol{x}_1, ..., \boldsymbol{x}_m\}
{x1,...,xm}。
通过计算判别器损失函数
J
D
J_D
JD的随机梯度
∇
θ
D
J
D
\nabla_{\boldsymbol{\theta}_D}J_D
∇θDJD,并沿梯度上升方向更新判别器参数,以提升其判别能力。
通过计算生成器损失函数
J
G
J_G
JG的随机梯度
∇
θ
G
J
G
\nabla_{\boldsymbol{\theta}_G}J_G
∇θGJG,并沿梯度下降方向更新生成器参数,使生成的数据更逼真。
% note that sigmoid output layer is in loss function
复制代码
深度卷积生成对抗网络(DCGANs)的训练过程
深度卷积生成对抗网络(DCGANs)的训练涉及两个网络,即生成器和判别器,二者都需要进行监测 。
收敛监测 在训练过程中监测分数(scores)非常重要,这里的分数分为生成器分数和判别器分数:
生成器分数(Generator score):
G
s
c
o
r
e
=
1
N
G
∑
i
D
(
G
(
z
i
;
θ
G
)
)
G_{score} = \frac{1}{N_G}\sum_{i} D(G(\boldsymbol{z}_i;\boldsymbol{\theta}_G))
Gscore=NG1i∑D(G(zi;θG)) 如果判别器被欺骗,将生成样本误判为真实样本,该分数接近1;如果判别器未被欺骗,该分数接近0。
判别器分数(Discriminator score):
D
s
c
o
r
e
=
0.5
(
1
N
R
∑
i
D
(
x
i
;
θ
D
)
)
+
0.5
(
1
−
1
N
G
∑
i
D
(
G
(
z
i
;
θ
G
)
)
)
D_{score} = 0.5(\frac{1}{N_R}\sum_{i} D(\boldsymbol{x}_i;\boldsymbol{\theta}_D)) + 0.5(1 - \frac{1}{N_G}\sum_{i} D(G(\boldsymbol{z}_i;\boldsymbol{\theta}_G)))
Dscore=0.5(NR1i∑D(xi;θD))+0.5(1−NG1i∑D(G(zi;θG))) 其中
N
R
N_R
NR是真实样本数量,
N
G
N_G
NG是生成样本数量。
其损失函数与标准生成对抗网络相似,但判别器和生成器都额外接收了上下文输入
c
\boldsymbol{c}
c 。
V
D
,
G
=
E
[
log
D
(
x
,
c
;
θ
D
)
]
+
E
[
log
(
1
−
D
(
G
(
z
,
c
;
θ
G
)
,
c
)
)
]
V_{D,G} = E[\log D(\boldsymbol{x},\boldsymbol{c};\theta_D)] + E[\log(1 - D(G(\boldsymbol{z},\boldsymbol{c};\theta_G),\boldsymbol{c}))]
VD,G=E[logD(x,c;θD)]+E[log(1−D(G(z,c;θG),c))]
姿态网络(pose network)从图像
x
t
x_t
xt中生成姿态骨架
c
t
c_t
ct。
生成器
G
G
G学习从姿态骨架
c
t
c_t
ct生成人物图像。
运行阶段(Runtime):
利用专业舞者的图像生成姿态骨架
c
t
c_t
ct。
生成器将姿态骨架
c
t
c_t
ct映射到目标人物,实现风格迁移。
训练阶段图示:图像
x
t
x_t
xt、
x
t
+
1
x_{t+1}
xt+1经过姿态网络
P
P
P生成姿态骨架
c
t
c_t
ct、
c
t
+
1
c_{t+1}
ct+1,生成器
G
G
G根据姿态骨架生成图像
G
t
G_t
Gt、
G
t
+
1
G_{t+1}
Gt+1,然后判别器
D
D
D分别对生成的假图像(Fake)和真实图像(Real)进行判别。
运行阶段图示:输入图像
x
1
′
,
⋯
,
x
t
′
x_1',\cdots,x_t'
x1′,⋯,xt′ 经过姿态网络
P
P
P得到姿态骨架
c
1
′
,
⋯
,
c
t
′
c_1',\cdots,c_t'
c1′,⋯,ct′ ,经过归一化(Norm)处理后,生成器
G
G
G依据姿态骨架生成图像,展示了风格迁移的过程。
总结
生成对抗网络使用判别器和生成器进行竞争性学习:
判别器是一个二分类器,试图区分假输入和真输入。
生成器学习在应用领域中生成逼真的假输出。
网络设计采用了一些特殊结构,比如在生成器中使用转置卷积层进行上采样。
训练过程可能会出现模式崩溃问题。
近期使用生成对抗网络的方法利用了条件输入,即条件生成对抗网络(cGANs ) 。
引用
(用于生成逼真人脸的生成对抗网络的发展历程 )Brundage, M., Avin, S., Clark, J., Toner, H., Eckersley, P., Garfinkel, B., … & Amodei, D. (2018). The malicious use of artificial intelligence: Forecasting, prevention, and mitigation. arXiv preprint arXiv:1802.07228.
(生成对抗网络(GANs)的众多应用1)Isola, P., Zhu, J. Y., Zhou, T., & Efros, A. A. (2017). Imageto-image translation with conditional adversarial networks. IEEE CVPR (1125-1134)
(生成对抗网络(GANs)的众多应用2)Zhu, J. Y., Park, T., Isola, P., & Efros, A. A. (2017). Unpaired image-to-image translation using cycle-consistent adversarial networks. IEEE CVPR (2223-2232)
(生成对抗网络(GANs)的众多应用3)Wu, H., Zheng, S., Zhang, J., & Huang, K. (2019, October). Gpgan: Towards realistic highresolution image blending. In Proceedings of the 27th ACM international conference on multimedia (pp. 2487-2495)
(深度卷积生成对抗网络 )Radford, A., Metz, L., & Chintala, S. (2015). Unsupervised representation learning with deep convolutional generative adversarial networks. arXiv preprint arXiv:1511.06434.
(条件生成对抗网络)Mirza, M., & Osindero, S. (2014). Conditional generative adversarial nets.arXiv preprint arXiv:1411.1784.
(条件生成对抗网络在风格迁移中的应用演示)Chan, C., Ginosar, S., Zhou, T., & Efros, A. A. (2019). Everybody dance now. In Proceedings of the IEEE/CVF International Conference on Computer Vision (pp. 5933-5942).