深度学习-李宏毅GAN学习之无监督条件生成器

博客围绕无监督条件生成器展开,指出在难以获取匹配数据时需研究无监督学习。介绍了两种做法,Direct Transformation用于风格转换,可能存在问题及相应解决办法;Projection to Common Space是将图片转向量再转换。还提及语音风格转换,总结无监督生成可通过循环约束输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

无监督条件生成器

之前讲的那篇CGAN都是有监督学习,那能不能无监督学习呢?当然可以啦,大多数情况我们很难弄到一个个对应匹配的数据,比如做图片风格转换,你很难弄到同一个图片的不同种风格,里面东西还是一模一样的,再比如,你很难把一个人的声音风格转换到另外一个人声音上,因为可能你说的是中文,另外一个人说英文,找不到一模一样的发音,所以我们需要研究无监督学习,只需要两堆数据,可将某种特征从一堆转到另一堆。
在这里插入图片描述

做法

大致有两个做法,分别对应不同的情况。
情况一:
输入和输出没有太大改变,只是颜色上有些变化,比如风格转换。
在这里插入图片描述
情况二:
输入和输出差别还是挺大的,但之间的特征还是很明确的。
在这里插入图片描述
比如上图的例子:输入一张真实人脸,这个是李宏毅老师的,然后要输出一个动漫脸,希望动漫脸上有老师脸的特征,比如戴眼镜,黑头发等等。

情况一:Direct Transformation

在这里插入图片描述
比如我们需要风格转换,我们有两堆图片,希望一堆能转成另外一堆的风格,我们生成器通过输出一张图片,希望跟输入越接近越好,同时为了保证学到了风格,还要一个判别器,判别器学了很多的另一个领域的图片,知道给定的图片是否属于这个领域,将输入也给判别器,希望判别器的分数越好越好。但是这样可能会有个问题,就是生成器为了骗过判别器直接生成了一张另一个领域的图片,无视输入:
在这里插入图片描述
这个问题怎么解决呢?

第一种是直接无视问题,因为你的生成器生成的图片不会跟原图片差太多,所以不太可能直接变成其他的样子,除非你的生成模型很深,很复杂,一般不会。

第二种解决办法就是将输入和输出的图片编码,比如VGG16模型,提取特征,让特征向量越接近越好,这样输入和输出就不会有太大变化:
在这里插入图片描述
第三种方法就使用CycleGAN:
在这里插入图片描述
其实思想跟第二个是一样的,希望输入和输出的图不要查太多,所以干脆再来个生成器,把输出的图转在生成一一张图,让这张图跟最开始的输入越接近越好,这样就不会出现中间是另外的图了,出现了就转不会原来的输入了。当然这个也可以是双向的,两个领域内的风格可以互转:
在这里插入图片描述

Cycle Consistency的可能的问题

CycleGAN可能出现一些特征隐藏的问题,比如下图,原图中的红色区域是有黑点的,但是转换后的图片居然没黑点,复原后又会出现,可想而知,黑点被他用某种编码信息给藏来了,或许是图片上很小的特征,我们看不到吧。生成器自己学到了某种方法可以避开Cycle Consistency的约束而能保存信息,但是这样可能就失去Cycle Consistency的意义了,某个生成器的输入和输出变得有差距了。这个问题还要等着研究吧。
在这里插入图片描述
和CycleGAN相同的思路的还有其他一些GAN:
在这里插入图片描述

StarGAN

前面所说的例子都是只能一个领域转另一个领域,能不能多个领域互转,比如我想要从黑头发大眼睛转到红头发绿眼睛,可以用StarGAN:
在这里插入图片描述
思路就是,先训练一个判别器,输入图片,输出的是真假和领域的分类,然后训练1个生成器,生成器输入图片和领域,输出图片,再把输出的图片和原来的领域输入同一个生成器,让输出的图片和原来的图片越接近越好,跟CycleGAN一样的思想,然后去欺骗前面的判别去,让他给出真假和领域。

可以看下下面的例子就是在多个领域组合转换,具体就是上面说的思路,就不多讲了,领域是2进制的组合:
在这里插入图片描述
在这里插入图片描述

情况二:Projection to Common Space

这个技术就是把图片转到一个向量,然后再转到另外一个图片,希望特征有所保留。
在这里插入图片描述
首先有两个不同的领域,我们要先得到中间的特征向量,于是训练了2个自编码器,得到了2个领域的向量,甚至还可以加上GAN,变成了VAE-GAN,来强化VAE或者强化GAN,因为两个VAE是独自分开训练的,所以两个向量之间是不一样的:
在这里插入图片描述
如果将一种图输入编码器X,输出Z,将Z输入到编码器Y里,可能生成的是一张不一样的图,没有原图的特征,因为X,Y生成的Z都是不一样的,某个特征所在的维度可能就不一样,那怎么解决这个问题呢?

常见的解法就是让X,Y的编码器后几层参数共享,X,Y的解码器的前几层参数也一样,希望他们生成的Z被限制到了同一个,用同样的维度来表示同样的特征,最极端的就是2个编码器的输出Z除了一个标志位不同,其他特征维度都一样,标志位置是说明了图片是来自哪个领域的:
在这里插入图片描述

第二个方法就是训练一个判别器,来判别Z是属于领域X还是Y的,也就是让X,Y领域的分布尽可能接近,如果图片的大小一样,特征比例也一样,这样使得两个编码出来的特征向量应该是一样的:
在这里插入图片描述

第三种就是用Cycle Consistency,跟CycleGAN的思路一样,循环一遍,把原始图片输入生成器X,输出Zx,把Zx输入到解码器Y,输出图片y,然后把图片y输入到生成器Y,输出Zy,把Zy输入到解码器X,输出图片x,使得图片x和原始图片越接近越好:
在这里插入图片描述

Voice Conversion

过去,我们要做语音合成,需要双方很多的样本,而且需要念一样的句子,这样难度大好多,但是现在我们可以用类似上面的方式转换,不需要相同的内容,可以转换某个人说话的风格和语气:
在这里插入图片描述

总结

总的来说,无监督生成可以在无标签数据的情况下,通过类似循环约束的方式,来约束输出,使得输出是我们想要的。

好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,图片来自李宏毅课件,侵删。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值