- Unsupervised Conditional Generation
- StarGAN、Cycle GAN
- Maximum Likelihood Estimation(最大似然估计)
三十、Unsupervised Conditional Generation
1、介绍
举例:假设你有一个domain X X X 的image,它们是real photo,还有一个domain Y Y Y 的image,它们是画作,你可以用一个generator来输入real photo,输出画作。你在training的时候你并不需要labelled data,这是风格转化的实现过程,只有两堆data,machine自己学到怎么从其中一堆转到另外一堆。这样的技术不止可以用在影像上,还能应用在语音和文字上:
2、实现方法
Unsupervised Conditional Generation的两种方法:
Approach 1:Direct Transformation:直接learn一个generator,input Domain X的东西,想办法转成 Domain Y,这种方法的input和output没办法差太多,画作风格的转换可能可以实现:
Approach 2:Projection to Common Space:今天的input和output差距很大,比如说要把真人转成动画人物,先learn一个encoder,吃一张人脸的图,然后把人脸的特征抽出来,接下来生一个decoder,这个decoder画出来就是动画人物,根据你input的人脸特征生成一个对应的角色。
3、方法1详细介绍
(1)Approach 1:Direct Transformation的做法:
learn一个generator,这个generator经过Domain X转换成Domain Y,一堆Domain X和Domain Y的资料,没有它们中间的link。这个时候需要Domain Y的discriminator找出Domain X对应哪个Domain Y。这个discriminator看过很多Domain Y的image,所以给它一张image,它能判断是Domain X的image还是Domain Y的image。接下来generator要做的事情就是想办法骗过discriminator。
现在的问题是generator可以产生像画作的东西,但是可以完全产生一个跟input无关的东西,比如:
所以现在我们不仅需要generator能够骗过discriminator,它的output还能和自己的input有一定的关系。有三种解决方法:一是其实直接learn一个generator也是可以work的,因为machine不想把input改太多;二是引进来一个train好的network,接下来把这个generator的input和output丢给这个pre-train的network,接下来你在train的时候,generator一方面想要骗过discriminator,一方面希望pre-train的network的两个output不要差太多。
三是circle GAN,train一个Domain X到Domain Y的generator,载train一个Domain Y到Domain X的generator(目的是为了让input和output越像越好):
这个Cycle GAN也可以做双向的,用另一张图train这个GAN,把Domain Y的图丢进去转成Domain X的图,同时discriminator确保这个generator的output的图像是Domain X的图,接下来把Domain X的图转回Domain Y的图,一样希望input和output越接近越好。然后这个GAN和以上的一起train达到好的效果:
Cycle GAN现在还有一些问题是没有解决的:
会把input的东西藏起来,然后在output的时候再呈现出来,这样会导致中途有些信息被隐藏而无法得到很好的还原:
除了Cycle GAN