GAN入门
-
Basic Idea of GAN
- Generator
- 通过矩阵的形式让Generator产生图片,句子等(也可以认为是矩阵)。
- 通过修改向量的参数来更改图片的不同部分。
- 通过矩阵的形式让Generator产生图片,句子等(也可以认为是矩阵)。
- Discriminator
- 判断给出的图片等与真实的差别,与真实情况越靠近,判别值越接近1,反之越接近0。
- 判断给出的图片等与真实的差别,与真实情况越靠近,判别值越接近1,反之越接近0。
- Adversarial
- 通过Generator不断产生数据,之后喂给Discriminator的,进行参数的优化,其实模拟了两人的博弈。Generator的目的是以假乱真,而Discriminator的目的是不让Generator得逞。最终实现两人的共同进化。
- 通过Generator不断产生数据,之后喂给Discriminator的,进行参数的优化,其实模拟了两人的博弈。Generator的目的是以假乱真,而Discriminator的目的是不让Generator得逞。最终实现两人的共同进化。
- Generator
-
Algorithum
-
学习过程
- Step1:Fix generator G, and update discriminator D。在这个环节,D学着给real更高的分数,给fake更低的分数。
- Step2:Fix discriminator D, and update generator G。在这个环节G试着学习产生一张图片让D给出更高的分数。
- 在Step1与Step2之间更新G与D的值,之后再继续循环。
- Step1:Fix generator G, and update discriminator D。在这个环节,D学着给real更高的分数,给fake更低的分数。
-
具体的学习方式
- Discriminator(参数为)
- 从真实的图片中取样m个喂给D 。
- 从噪声中随机制造m个假数据,。
- 将m个假数据喂给Generator,相应的产生m个数据
,其中 - 更新的值(求的最大值)
-
-
解释:最大,就是一方面保证真实的数据经过D判断后比较大,另一方面保证G生成的数据经过D后比较小。
-
- Generator(参数为)
- 从噪声中随机制造m个假数据, 。
- 更新的值(求的最小值)
-
解释:最小,就是保证G生成的数据经过D后比较小。
-
-
GAN as structured learning
- Generator着眼于局部,而Discriminator着眼于大局。
- Generator着眼于局部,而Discriminator着眼于大局。
-
Can Generator learn by itself?
- Auto-encoder具有类似的功能。
一张图片进入encoder进行编码,之后再从decoder进行解码。而这里的decoder就相当于Generator的作用。 - 存在问题:
- 如果我们想生成如下的图片:
但是生成了:
我们就会发现仅从G的角度来说,1与2和目标的重合度更高,但实际上3,4更符合要求。 - 这是由于G仅能考虑Layer与Layer间的关系而考虑不到Layer内部的关系。
- 如果我们想生成如下的图片:
- Auto-encoder具有类似的功能。
-
Can Discriminator generate?
- Discriminiator可以保证全局更优,但是D在被训练时既需要好的真实的数据,也需要不好的假数据。
然而也会伴随问题:当一个评分比较高的,比如0.9分的图片会被认为成真实的,然而这个0.9分的图片显然不满足要求。 - 因此需要Fake图片随机产生时的配合,Fake产生的一个图片总让D认为评分较低。
- Discriminiator可以保证全局更优,但是D在被训练时既需要好的真实的数据,也需要不好的假数据。
-
Generator + Discriminator
G用来产生较好的Fake数据,D用来分辨Fake数据。