GAN学习总结二-理论推导
本文从理论角度总结一下GAN的理论,主要参考李宏毅老师的GAN课程,可参考GAN完善理论推导与实现;
如下图 Generator是一个network,从Normal的分布中取出数据z送入G中,产生出x,
x
=
G
(
z
)
x=G(z)
x=G(z);当输入很多的数据时,产生出一个分布
P
G
(
x
)
P_G(x)
PG(x) 目的是使得该分布与
P
d
a
t
a
(
x
)
P_{data}(x)
Pdata(x) 的分布越近越好,其中
P
d
a
t
a
(
x
)
P_{data}(x)
Pdata(x) 是给定数据的分布,
x
x
x表示高纬向量,表示图像。可得到图中的
G
∗
=
arg
min
G
Div
(
P
G
,
P
d
a
t
a
)
G ^ { * } = \arg \min \limits_{ G } \operatorname { Div } \left( P _ { G } , P _ { d a t a } \right)
G∗=argGminDiv(PG,Pdata),其中
D
I
V
(
P
G
,
P
d
a
t
a
)
DIV(P_G,P_{data})
DIV(PG,Pdata)表示
P
G
P_G
PG和
P
d
a
t
a
P_{data}
Pdata的散度,现在问题是
P
d
a
t
a
P_{data}
Pdata和
P
G
P_G
PG的数据分布是都不知道的,因此,DIV也是没法计算出来的?
P
G
P_G
PG和
P
d
a
t
a
P_{data}
Pdata的分布我们不知道,但可以从给定的数据集中sample出数据,如下图,从G产生出的图像认为是
P
G
P_G
PG中采样得到的值。
训练一个D,即寻找一个最优化的D,使得 V ( D , G ) V(D,G) V(D,G)达到一个最大值,固定的G时,优化如下公式:
V
(
G
,
D
)
=
E
x
∼
P
d
a
t
a
[
log
D
(
x
)
]
+
E
x
∼
P
c
[
log
(
1
−
D
(
x
)
)
]
V ( G , D ) = E _ { x \sim P _ { d a t a } } [ \log D ( x ) ] + E _ { x \sim P _ { c } } [ \log ( 1 - D ( x ) ) ]
V(G,D)=Ex∼Pdata[logD(x)]+Ex∼Pc[log(1−D(x))] 使该式值最大;
如下图:当给定一个G时,寻找一个
D
∗
D^*
D∗使得
V
(
G
,
D
)
V(G,D)
V(G,D)最大,如下为推导过程,当给定一个x时,需要求一个
D
∗
D^*
D∗使得
P
data
(
x
)
log
D
(
x
)
+
P
G
(
x
)
log
(
1
−
D
(
x
)
)
P _ { \text {data} } ( x ) \log D ( x ) + P _ { G } ( x ) \log ( 1 - D ( x ) )
Pdata(x)logD(x)+PG(x)log(1−D(x))最大:
利用求导求
f
(
D
)
=
alog
(
D
)
+
blog
(
1
−
D
)
\mathrm { f } ( D ) = \operatorname { alog } ( D ) + \operatorname { blog } ( 1 - D )
f(D)=alog(D)+blog(1−D)导数求得使该式子的最大值,最后得到的
D
∗
(
x
)
=
P
d
a
t
a
(
x
)
P
d
a
t
a
(
x
)
+
P
G
(
x
)
D ^ { * } ( x ) = \frac { P _ { d a t a } ( x ) } { P _ { d a t a } ( x ) + P _ { G } ( x ) }
D∗(x)=Pdata(x)+PG(x)Pdata(x)时
f
(
D
)
f(D)
f(D)最大;同时将求得的
D
∗
(
x
)
D^*(x)
D∗(x)代入下式:
V
=
E
x
∼
P
data
[
log
D
(
x
)
]
+
E
x
∼
P
G
[
log
(
1
−
D
(
x
)
)
]
\begin{aligned} V & = E _ { x \sim P _ { \text {data} } } [ \log D ( x ) ] + E _ { x \sim P _ { G } } [ \log ( 1 - D ( x ) ) ] \end{aligned}
V=Ex∼Pdata[logD(x)]+Ex∼PG[log(1−D(x))]
最终得到的
m
a
x
V
(
G
,
D
)
maxV(G,D)
maxV(G,D)符合Jensen–Shannon divergence (JS散度)
结论:根据原始GAN定义的判别器loss,我们可以得到最优判别器的形式;而在最优判别器下,我们可以把原始GAN定义的生成器loss等价变换为最小化真实分布 P d a t a P_{data} Pdata与生成分布 P G P_G PG之间的JS散度,我们越训练判别器,它就越接近最优,最小化生成器的loss也就越近似于最小化 P d a t a P_{data} Pdata和 P G P_G PG之间的JS散度。
参考:
https://zhuanlan.zhihu.com/p/25071913
https://zhuanlan.zhihu.com/p/29837245[GAN完善理论推导与实现]