GAN (一)
介绍
在最原始的generative adversary network(Gan)中,采用用的是一个‘老师’(Discriminator)和一个‘学生’(Generator)的模式。‘学生’被赋予了一个创新的角色,‘老师’被赋予了纠正学生创新是否合理的工作。
在这么一种模式中我们可以让Generator去产生一张图片,让Discrimator去鉴别这种图片是否是真实可靠的图片,当Discriminator无法做出正确判断的时候说明Generator能创造出与现实存在相似的东西。
这里会产生一个疑问🤔️,既然‘老师’(Discriminator)知道产生的东西应该是什么样,为什么不直接让‘老师’生成,还要费劲教会一个‘学生’。这也就是Vae网络
但其存在缺点也很明显,产生的图片会相对来说会比较模糊。在NVAE: A Deep Hierarchical Variational Autoencoder中得到一定的改善。
损失函数
在构建损失函数前,我们考虑一下数据是以什么样的形式存在❓
我们会认为数据是以分布的形式存在,但是我们提前是不知道真实数据的存在形式,那我们将会构建一个分布然后使两个分布不断靠近使其不断靠近的学习过程。
描述两个分布的相似程度可以有
f
−
d
i
v
e
r
s
i
o
n
,
K
L
−
d
i
v
e
r
s
i
o
n
f-diversion,KL-diversion
f−diversion,KL−diversion
我们构造的损失函数会更加与
K
l
−
d
i
v
e
s
e
r
i
o
n
Kl-diveserion
Kl−diveserion相似。不是本次讨论的重点。
我们会更加希望Discrimator的准确性更好,同时Generator生成的图片质量更好。
V
=
E
x
∼
P
d
a
t
a
[
l
o
g
D
(
x
)
]
+
E
x
∼
P
G
[
l
o
g
(
1
−
D
(
x
)
)
]
V = E_{x∼P_{data}}[logD(x)]+E_{x∼P_{G}}[log(1-D(x))]
V=Ex∼Pdata[logD(x)]+Ex∼PG[log(1−D(x))]
其中
P
d
a
t
a
,
P
G
P_{data},P_{G}
Pdata,PG分别表示真实数据的分布,生成数据的分布。
第一项的对真实数据的判别的时候我们会希望给分越高越好,第二项的时候对于生成的图像给的分数越低越好。
G
∗
=
a
r
g
m
i
n
G
m
a
x
D
V
(
G
,
D
)
G^* = arg\mathop{min}\limits_{G}\mathop{max}\limits_{D}V(G,D)
G∗=argGminDmaxV(G,D)
在实际进行运算的时候我们往往不会同时对两部分网络同时进行运算,往往是多训练几轮Discriminator 然后再训练 Generator。
存在的问题
训练迭代的次数过多的时候会出现
- model collapse(出现大量相同的图片)
- model Dropping(图片上出现斑点)
- text2image 的时候 会更多的考虑文本与图片的关系,图片本身的关系
模型
original Gan
假设我们更多的去考虑模型的框架内容,这也是这些年发展最多的。
在最开始的时候是通过随机的噪声和条件向量进行结合作为输入。在这里我们忽略模型内部采用的结构(attention,cnn均可)。
原始的gan中存在的问题有如 图像不清晰,通过文本作为条件时 语义有时表达不明确。
Stack Gan
在stack gan 的网络框架中可以看出来,他是为了增加图片的清晰度和大小,从64x64 到256x256。对原来的网络进行了一个叠加,这是具有里程碑的意义。
Cycle Gan
Cycle Gan 最早是运用到画风迁移的领域。
这里的Cycle 体现在Genrator产生的结果又会通过另一个Generator形成一个回环,判断转换的结果是通过一个Discriminator来进行打分。后续也产生了很多的衍生网络架构如Star Gan。
Cycle 会出现一个很神奇的问题(a Master of Steganography )数据信息隐藏。
DM Gan
在DM Gan中会采用类似于stack gan 中的形式进行迭代从而生成相对高清的大图,在处理文本信息与图片之间的关系会采用类似于attention(key 和 value 机制)。
Perceptual Pyramid Adversarial Networks Gan
在PPGan 中有提到一个多损失的机制,类似于我们在上学的时候有多个老师进行多次指导的一次。
每个老师有相同或不同的指责,对于L1职责前三个老师都需要关注图像和文本之间的关系,L2职责是局部的数据信息,L3图片类别的信息,L4则是图像语意的信息。多角度观察进行生成图片。
评判标准
在评判图像生成的效果的时候主要有Inception score,FID,KID
其中Inception 主要是进行衡量生成数据分布与真实数据分布之间的距离,其得分越高越好。
I
S
(
G
)
=
e
x
p
(
E
x
~
p
g
D
K
L
(
y
∣
x
)
∣
∣
p
(
y
)
)
IS(G) = exp(E_{x~p_g}D_{KL}(y|x)||p(y)) \\
IS(G)=exp(Ex~pgDKL(y∣x)∣∣p(y))
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ ln(IS(G)) &= e…
1.最大化H(y);也就是对于输入的样本,通过inception_v3模型后的类别要均衡,衡量模式坍塌。
2.最小化H(y|x);说明对于输入的样本,通过inception_v3模型后预测某类别的置信度要高,衡量图片生成的质量。
Gan 应用
Gan 在做生成时候是从一个domain 到另一个 domain,如文本摘要生成,图像生成,视频生成等。