Discriminator G ∗ = a r g m i n D i v ( P G , P d a t a ) G^*=arg min Div(P_G,P_{data}) G∗=argminDiv(PG,Pdata)
real data sampleed from
P
d
a
t
a
P_{data}
Pdata,
general data sampled from
P
G
P_G
PG
Objective Function For Discriminator
Loss function
这个函数针对Discrimiator 的分类结果计算,越大说明分类效果越好
V
(
G
,
D
)
=
E
y
∼
P
d
a
t
a
[
l
o
g
D
(
y
)
]
+
E
y
∼
P
G
[
l
o
g
(
1
−
D
(
y
)
)
]
V(G,D) = E_{y_{\thicksim P_{data}}} [logD(y)]+ E_{y_{\thicksim P_{G}}} [log(1-D(y))]
V(G,D)=Ey∼Pdata[logD(y)]+Ey∼PG[log(1−D(y))]
objective Function for D
D ∗ = a r g m a x V ( D , G ) D^*=arg maxV(D,G) D∗=argmaxV(D,G)==Training classifier:minimize cross entropy
JS 的缺点
JS divergence 如果两个分布之间没有重叠,公式结果都是
log
2
\log2
log2
J
S
(
P
G
0
,
P
d
a
t
a
J
S
(
P
G
0
,
P
d
a
t
a
J
S
(
P
G
100
,
P
d
a
t
a
=
log
2
=
log
2
=
log
0
W
(
P
G
1
,
P
d
a
t
a
)
W
(
P
G
1
,
P
d
a
t
a
)
W
(
P
G
1
,
P
d
a
t
a
)
=
d
1
=
d
2
=
0
\begin{aligned} JS(P_{G_0},{P_{data}}\qquad \qquad &JS(P_{G_0},{P_{data}}\qquad \qquad \qquad &JS(P_{G_{100}},{P_{data}}\\ =\log2\qquad\qquad\quad & = \log2 \qquad & =\log0 \\ W(P_{G_1},P_{data})\qquad\qquad&W(P_{G_1},P_{data})&\qquad W(P_{G_1},P_{data})\\ =d1\qquad\qquad\qquad&=d2&=0 \end{aligned}
JS(PG0,Pdata=log2W(PG1,Pdata)=d1JS(PG0,Pdata=log2W(PG1,Pdata)=d2JS(PG100,Pdata=log0W(PG1,Pdata)=0
WGAN
摘自: http://www.twistedwg.com/2018/01/31/WGAN.html
先要知道的是wasserstein-1 距离是人为定义的对于两个分布Pr和Pg间差异的测量。再来看式子,∏(Pr, Pg)代表对于(x,y)的边缘分布为Pr和Pg的联合分布的集合。我们从这个集合里面任选一个联合分布r,对应这个r联合分布,求出(x,y)服从r这个分布时x,y两个点对于||x-y||的期望值。对于联合分布集合里面所有的联合分布,我们都能求出这样一个期望值,其中最小的那个期望值就是我们要求的wasserstein-1 距离了。
来源
作者:兴趣使然
链接:https://www.zhihu.com/question/41752299/answer/353764754
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
GAN的一些技巧
Generator 的一些问题
Mode Collapse
只产生几张特定的高质量图片,来骗过Discrimitor .
目前没有完全解决
Mode Dropping
generator 生成的图片虽然不少,特征却只是真实资料的一部分 。 比如生成的人脸肤色单一等。
也没有获得本质上的解决。
memory too
深度网络完全记住了图片,导致生成的图片和原数据极为接近,或者仅仅只是图片的左右反转。
判断标准
quanlity (质量) :区分器无法区分。
diversity(多样性):能生成各种类型,具备各种不同特征的图片。 而且图片的特征分布比较接近均匀分布。
评估方法
Inception Score(IS):
Good quality ,large diversity -> Large IS
Frechet Inception Distance (FID)
去出深度网络分类前的最后一层隐藏层作为数据的特征矢量。
假设此矢量符合高斯分布。
计算不同对象之间的FID得出结果。