概述
GAN损失函数的理解:
因为根据对GAN的理解来看,GAN的生成器希望输出的数据分布能够更加的接近真实数据的分布,同时GAN的判别器需要从真实数据和生成器输出的数据之间做出判断,找到真实数据和fake数据。根据GAN的损失函数:
min
G
max
D
L
(
D
,
G
)
=
E
x
r
∼
P
r
(
.
)
l
o
g
D
(
x
)
+
E
z
∼
P
g
(
.
)
l
o
g
[
1
−
D
(
G
(
z
)
)
]
min_G max_D L(D,G) = E_{x_rsim P_r(.)}logD(x)+E_{zsim P_g(.)}log[1-D(G(z))]
GminDmaxL(D,G)=Exr∼Pr(.)logD(x)+Ez∼Pg(.)log[1−D(G(z))]
其中 ,
E
x
r
∼
P
r
(
.
)
E_{x_rsim P_r(.)}
Exr∼Pr(.)和
E
z
∼
P
g
(
.
)
E_{zsim P_g(.)}
Ez∼Pg(.) 表示真实数据和生成数据概率。
所以,从损失函数中可以看到损失函数的计算都是在D(判别器)中产生,因为D的输出一般是TRUE/Fake的判断,所以整体上采用的是二进制交叉熵函数。
左边包含了两个部分: min G min G minG 和 max D max D maxD ,所以可以分成两步进行:
首先是对于判别器部分:
max
D
L
(
D
,
G
)
=
E
x
r
∼
P
r
(
.
)
l
o
g
D
(
x
)
+
E
z
∼
P
g
(
.
)
l
o
g
[
1
−
D
(
G
(
z
)
)
]
max_D L(D,G) = E_{x_rsim P_r(.)}logD(x)+E_{zsim P_g(.)}log[1-D(G(z))]
DmaxL(D,G)=Exr∼Pr(.)logD(x)+Ez∼Pg(.)log[1−D(G(z))]
所以,对于
1
−
D
(
G
(
z
)
)
1-D(G(z))
1−D(G(z)) 希望可以尽可能的逼近于1,即使得判别器可以准确的辨别生成图片。对于判别器的训练要保证G(生成器)不变,右式第一项中
E
x
r
∼
P
r
(
.
)
l
o
g
D
(
x
)
E_{x_rsim P_r(.)}logD(x)
Exr∼Pr(.)logD(x) 的输入采样自真实数据,所以期望
D
(
x
)
D(x)
D(x) 趋近于1.
然后是生成器部分:
min
G
L
(
D
,
G
)
=
E
x
r
∼
P
r
(
.
)
l
o
g
D
(
x
)
+
E
z
∼
P
g
(
.
)
l
o
g
[
1
−
D
(
G
(
z
)
)
]
min_G L(D,G) = E_{x_rsim P_r(.)}logD(x)+E_{zsim P_g(.)}log[1-D(G(z))]
GminL(D,G)=Exr∼Pr(.)logD(x)+Ez∼Pg(.)log[1−D(G(z))]
同理,对于生成器的训练要保证判别器部分保持不变,此时主要看第二项。因为想要使得生成的数据可以通过判别器的判别,所以就需要使得
D
(
G
(
z
)
)
D(G(z))
D(G(z)) 接近于1,即生成的数据通过判别器,所以对于
E
z
∼
P
g
(
.
)
l
o
g
[
1
−
D
(
G
(
z
)
)
]
E_{zsim P_g(.)}log[1-D(G(z))]
Ez∼Pg(.)log[1−D(G(z))] 就要尽可能的小,所以要
min
G
min G
minG 。此时就体现了博弈学习的思想,也就是说,如果判别器判别出来就要对生成器做出一个更新,使得生成器变得更好,如果判别器没有准确判断,那么就要对判别器进行训练。
最后
以上就是独特冰棍为你收集整理的GAN损失函数的理解:的全部内容,希望文章能够帮你解决GAN损失函数的理解:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复