Generation and GAN
参考
什么是Generation?
什么是GAN?
GAN 的理论支撑?
-
上面说到,我们用Generator生成对象,用Discriminator来检测对象的逼真程度 -
也就是下图中所示(
P
G
=
生
成
分
布
P
d
a
t
a
=
真
实
分
布
P_G=生成分布 \qquad P_{data} = 真实分布
PG?=生成分布Pdata?=真实分布),我们用Discriminator来检测对象的逼真程度,也就是:$P_G $计算
P
d
a
t
a
P_{data}
Pdata?之间的距离,最终目的是让Generator生成的$P_G $ 和真实的
P
d
a
t
a
P_{data}
Pdata??之间的距离越短越好,也就是:
G
?
=
arg
?
min
?
D
i
v
(
P
G
,
P
d
a
t
a
)
G^* = \arg \min Div(P_G,P_{data})
G?=argminDiv(PG?,Pdata?)
-
那么如何算这个DIV(Divergence)?GAN 告诉我们就是,你不需要知道 PG 跟 Pdata它们实际上的 Formulation 长什麼样子,只要能从
P
G
P_G
PG? 和
P
d
a
t
a
P_{data}
Pdata?这两个 Distributions Sample 东西出来,就有办法算 Divergence,这个就是要靠 Discriminator 的力量
Discriminator
-
Discriminator在我们根本不知道 PG 跟 Pdata,实际上完整的 Formulation 长什麼样子,就能估测出 Divergence -
Discriminator是如何训练出的?
-
我们有一大堆的 Real Data,这个 Real Data 就是从
P
d
a
t
a
P_{data}
Pdata?? Sample 出来的结果 -
我们有一大堆 Generative 的 Data,Generative 的 Data,就可以看作是从
P
G
P_G
PG? Sample 出来的结果 -
-
根据 Real 的 Data 跟 Generative 的 Data,我会去训练一个 Discriminator,它的训练的目标是
- 看到 Real Data,就给它比较高的分数
- 看到这个 Generative 的 Data,就给它比较低的分数
-
其实就是要分辨好的图跟不好的图,分辨真的图跟生成的图,所以看到真的图给它高分,看到生成的图给它低分 -
实际以上的过程,可以把它写成式子,把它当做是一个 Optimization 的问题(最优化问题),这个 Optimization 的问题是这样子的(我们要 Maximize 的东西,我们会叫 Objective Function,如果 Minimize 我们就叫它 Loss Function):
-
我们希望这个 Objective Function V越大越好
-
-
意味著我们希望这边的 D (Y) 越大越好,我们希望 Y 如果是从
P
d
a
t
a
P_{data}
Pdata? Sample 出来的,它就要越大越好 -
我们希望说如果 Y 是从,这个
P
G
P_{G}
PG?? Sample 出来的,它就要越小越好 -
事实上这个 Objective Function,它就是 Cross Entropy 乘一个负号,我们在寻找Maximize的时候,也等同雨寻找Corss Entropy的Minimize,也就是说这等同於是在训练一个 Classifier(其实Discriminator确实可以当做是一个 Classifier来train) Generator的Divergence -
有了Discriminator,我们对Generator的Divergence就有了下面的思路:
- 我们现在知道,我们只要训练一个 Discriminator,训练完以后,这个 Objective Function 的最大值,就是这个 Divergence,就跟这个 Divergence 有关
JS divergence is not suitable
-
JS Divergence 有个特性,是两个没有重叠的分布,JS Divergence 算出来,就永远都是 Log2,不管这两个分布长什麼样,所以两个分布只要没有重叠,算出来就一定是 log2
Wasserstein Distance
-
-
Wasserstein Distance你在开一台推土机,那你把 P 想成是一堆土,把 Q 想成是你要把土堆放的目的地,那这个推土机把 P 这边的土,挪到 Q 所移动的平均距离,就是 Wasserstein Distance -
但是对于复杂的分布来说,这种方法可能就有不同值: -
-
于是为了让 Wasserstein Distance 只有一个值,所以这边 Wasserstein Distance 的定义是,穷举所有的 Moving Plans,然后看哪一个推土的方法,哪一个 Moving 的计划,可以让平均的距离最小,那个最小的值,才是 Wasserstein Distance
GAN的瓶颈
Diversity - Mode Collapse
Diversity - Mode Dropping
Conditional Generation
-
相比于此前只输入分布z的Generation来说,Conditional Generation还要输入条件:x,因此画出来的时候会与输入条件相关,至于下图中的red eyes怎么输入的,这里用RNN或者Transformer 的 Encoder即可 -
-
相应的,在训练Discriminator的时候也要加入条件,这样Discriminator才能将对应的条件和图片对应起来,然后Generation才能train出一个比较好的结果
Cycle GAN
|