Class 1
GAN网络基本思想
由生成模型(generator)和判别模型(discriminator)组成。
generator接收输入向量,输出图片或文字。
discriminator接收输入的图片或文字,输出scalar,scalar越大说明输入越真实。
算法过程
- fix generator ,and update discriminator D:
标记database中的图像为1,generated objects为0来训练D。使得判别模型能够给实际对象较高的分数,而给生成对象较低的分数。 - fix discriminator ,and update generator G:
调整G的参数,使得D输出的分数更高 - 详细过程:
- D:先从database中取出一个batch,再生成对应数量的噪声向量z作为G的输入,再将z输入到G中得到生成的结果x~,而后最大化损失函数,通过梯度下降更新参数。最大化该表达式的含义是:对于第一项,希望D对于database中的对象打分最大化;对于第二项,希望在G固定不动的情况下D对于G生成结果的打分是最小化的,转换后成为最大化第二项。
- G:生成噪声向量z,输入G中,最大化表达式,通过梯度下降更新参数。表达式的含义是希望在固定D的情况下,G生成的对象得分尽可能高。
结构化学习(Structured learning)
- 定义:输出序列、矩阵、图片、树形结构等
(相比而言:回归输出一个scalar;分类输出一个类)
- 结构化学习的难点:
- one-shot/zero-shot learning: 很多需要生成的类可能在训练集中只出现很少的次数或者没有出现。
- 生成的结果并不是孤立的,需要考虑到全局。例如生成一张图像,不能仅仅要考虑某个位置像素点的相似性,还要考虑到整个生成图像中各个像素点之间的联系。
- 实现方法:
- 自下而上(bottom up):Learn to generate the object at the component level 学习去生成component,但是容易失去大局观
- 自上而下(top down):Evaluating the whole object, and find the best one 生成一个大局观的结果,但是生成比较困难
- GAN网络实际上是将两种方法结合,分别用作generator和discriminator
4. 单独的generator和discriminator理论上都可以单独用来生成图片,但是实际上generator单独生成(用auto encoder的方法来做)的问题是生成的结果很难建立起各个像素点之间的联系;而discriminator单独做生成的问题是训练过程十分复杂而且很难生成。
Class 2:Conditional GAN
Text-To-Image
-
传统监督学习实现方法:给定输入文字后去拟合训练集中的图片。
存在的问题:输出图像比较模糊。因为实际上,传统的监督学习方法实现的生成,是对训练集的平均拟合。
-
Conditional GAN:
基本的GAN网络中,G只输入噪声分布z,D只输入x。而Conditional GAN中,G输入c和z,D输入c和x(c表示输入的文本),这样G结合文本和噪声分布z生成对应的图片x,D根据x和文本是否匹配以及x的真实程度来输出scalar。
要注意,D也要输入c,因为如果不输入c,就会导致如果G生成的是一个清晰真实的图片即使与c不匹配也能够得到high scalar。 -
Conditional GAN 的discriminator两种组织形式:
- 绝大多数的论文是用一个网络判断x是否真实,一个网络判断c(??老师这里说了个单词,没听懂到底要输出什么??),然后通过一个网络来判断是否match。
- 小部分论文是用一个网络判断x是否真实,一个网络判断c和x是否match。
Stack Gan
Image-To-Image
-
传统监督学习实现的缺点:生成的图像是多个图像的组合平均,比较模糊。
-
GAN网络实现:G输入z和模版,生成img;而D不仅仅要判断img,还要判断img和模版的匹配程度进而给出scalar。
-
存在的问题:有可能会生成出不符合实际的东西。这时需要增加限制条件。
Patch Gan
使用较小的判别区域
Speech Enhancement
Video Generation
Class 3: Unsupervised Conditional Generation
- Direct Transformation
实现方法:输入一种风格的图片X,由Generator生成另一张图片,通过判断风格Y的Discriminator来给G生成的图片打分。
存在的问题:G产生的图片可能会和输入图片X相差巨大,虽然能骗过D,但并不是输入图片X的风格转换。
解决方法:
- 简化网络结构:使用浅层网络,可以保证G生成的图片和原始图片相差比较小。一般使用深层网络才会产生与输入相差较大的输出。
- 增加预训练模型:增加网络来判断G的输出和输入是否相似。
- cycle GAN
增加一个G2,将G1生成的图像Y转变回X,保证G2生成的图像和X越像越好(cycle consistency循环一致性)。
双向训练:
cycle GAN存在的问题:- a master of steganography(单词的意思是密码学,李老师翻译成隐写术)
从图中可以看到,G1的输入和G2的输出都有黑点,而中间的Y没有黑点。这意味着cycle gan有可能会隐藏信息。网络可以依据隐藏的信息还原出图片,但人无法发现隐藏的信息。这就意味着生成的Y有可能会和输入X差距较大。并且这个问题亟待研究。
(dual gan和disco gan核心想法和cycle gan相同)
- a master of steganography(单词的意思是密码学,李老师翻译成隐写术)
- Star GAN
目标:star gan想要实现的目标是通过一个G在多个不同的domain之间进行转换。
实现方法:G输入一张图片和target,G将输入图片转换为target的domain,再经过另一个G能够将第一个G输出的图片转换为输入图片。要求两个图片越接近越好。(consistency loss)
D来判断G生成的图片是否真实,以及属于哪一个domain。
理解:这样通过不断的训练,最终可以建立起任何一个domain到任何一个domain的map。
2. Projection to Common Space
实现方法:先单独训练针对两个domain的encoder和decoder。encoder将图片变成一组向量,decoder将向量还原回图片。而后将domain1经过encoder1后的向量输入给decoder2就可以得到转换后的图片。
问题及解决方法:因为encoder和decoder是单独训练的, 因此两组之间并没有直接关系。就会导致向量在恢复的过程中不匹配。
解决方法:
- 将两个encoder的后几层网络参数关联起来,两个decoder前几层网络参数关联起来。这样可以解决向量表征的含义不匹配的问题。
- 增加domain discriminator来判断两个encoder输出的latent向量。目的是让D无法分辨向量究竟是来源于哪个encoder的。这样就能够保证来自两个encoder的向量表征的含义趋于一致。
- 通过cycle consistency,X输入encoder1,经过decoder2得到X转换为另一个domain的输出结果Y1,Y1再输入到encoder2,经过decoder1输出图像Y2。要求X与Y2越接近越好。Dy保证中间过程的Y1是接近于domain2的。
(这种网络结构实际上是相当于在最基础的编码解码思想上增加了循环的结构,X到转换为Y1经过D判断是不是符合domain2的训练过程应该不会特别难,但从Y1再到Y2的过程训练是不是很难?因为实际上网络从X到Y1再到Y1至Y2训练过程中的不确定性是越来越大的)
- semantic(语义) consistency 大体过程同上cycle consistency是相同的。不同的地方在于判断相似是判断中间生成的latent向量是否相似。
(这个方法应该相对来说比上一个方法训练难度要低?)
Class 4:general framework of GAN
- KL距离(KL divergence):
问题记录
- 为什么Generator要输入噪声:G是将一系列噪声点尽可能拟合成服从训练集上的分布的产生器,而D是用来评判这一拟合尺度的判别器(答案来源于知乎浓黑却师妹子)