| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 2020李宏毅机器学习笔记-Generative Adversarial Network - Unsupervised Conditional Generation -> 正文阅读 |
|
[人工智能]2020李宏毅机器学习笔记-Generative Adversarial Network - Unsupervised Conditional Generation |
目录 ?2.?Unsupervised Conditional Generation 2.2?Projection to Common Space ?2.2.3?Combo GAN(Cycle Consistency) 摘要对于cGan中的无监督学习部分,可以理解为一种“风格迁移”的技术。但是我们收集不到不同风格间有 link 的数据。对于 Unsupervised Conditional Generation ,将其分为两类:Direct Transformation 与 Projection to Common Space。 首先来讨论第一个类别 Direct Transformation(直接转),直接学习一个生成器,可以将domainX转换为domainY的东西?。接下来讨论了第二个类别 Projection to Common Space(投影到公共空间),先学习一个domain X的encoder,将特征抽出来;之后输入domain Y的decoder,将特征转换为想要的东西。而无监督的cGan主要用于做图片的风格迁移和语音转换等应用上。 1.?Unsupervised Condition GAN上节课讲的是CGAN都是有监督学习,那能不能无监督学习呢?当然可以啦,大多数情况我们很难弄到一个个对应匹配的数据,比如做图片风格转换,你很难弄到同一个图片的不同种风格,里面东西还是一模一样的,再比如,你很难把一个人的声音风格转换到另外一个人声音上,因为可能你说的是中文,另外一个人说英文,找不到一模一样的发音,所以我们需要研究无监督学习,只需要两堆数据,可将某种特征从一堆转到另一堆。 ?2.?Unsupervised Conditional Generation有两大类的做法:
2.1?Direct Transformation我们要learn一个生成器,他可以将X domain的东西转换为 Y domain的东西;现在我们X domain的东西有一堆,Y domain的东西有一堆,但是合起来的pair没有。那生成器怎么知道给定X domain的东西输出Y domain的东西呢?
?2.1.1?利用判别网络这种方法利用一个判别器,判断生成器输出的图片属于 x domain 或者 y domain,从而训练 生成器使得其输出的图片尽可能贴近于 y domain。但这样的问题是生成器可能输出和输入不相关的图像。 有很多种方法可以解决这个问题,最简单粗暴的方法就是直接无视,因为直接转换下,生成器的深度不足以产生和输入图像相差过大的输出结果。也就是说如果你的生成器网络很浅,输入和输出会特别像,这时候就不需要额外的处理;如果你的生成器网络很深,输入和输出会真的很不一样,这时候就需要额外的处理; ?2.1.2?利用预训练网络用一个已训练好的网络,如VGG;把生成器的输入和输出image,统统丢给这个pre-train好的网络,就会输出两个embedding vector;接下来在训练的时候,一方面生成器要骗过判别器,同时希望两个embedding的vector不要差太多。 ?2.1.3?Cycle GAN
2.2?Projection to Common Space?我们想要做到: 真人图片丢到ENx,可以抽出真人的特征到latent vector(橙色),然后经过二次元的DEx,得到对应的二次元图片;二次元图片丢到ENy,可以抽出二次元的特征到latent vector(橙色),然后经过真人的DEy得到对应的真人图片。 一般的结构为,分别训练两个编码器以编码实际图片和风格图片,再训练两个解码器以解码实际图片和风格图片,最终即可得到一条路径,可以将实际图片转换为风格图片。 由于两个auto-encoder是分开train的,所以两者之间是没有关联的;例如当你丢个X domain的人脸进去,变成一个vector,当输入Y domain的encoder中时,可能出现一个截然不同的卡通人物。因为是分开训练的,所以在latent space中每个维度的表示属性是不一样的,如上面的auto-encoder用第一维代表性别,而下面一组则用其他代表性别; ?2.2.1?共享参数让不同domain的decoder的最后几个hidden layer和encoder的最前面几个hidden layer的参数是共用的;通过共享参数,可能会是不同domain的image压缩到同一个latent space(潜在的空间),即同样的dimension 表示同样的属性。这样的技术被用在couple GAN 和UNIT里面。 ?2.2.2 增加判别网络原来X domain和Y domain都是自己搞自己的东西,现在,用一个domain 判别器来判断这个vector是来自于X domain的image还是来自于Y domain的image。两个encoder的作用是骗过这个domain 判别器。当无法判断的时候,就是说明两者被encode到同一个空间。 ?2.2.3?Combo GAN(Cycle Consistency)将一张image经过X encoder变成code;再经过Y docoder把它解回来;然后再丢给Y domain的encoder,再透过X domain的decoder把它解回来;然后希望input和output越接近越好。 ? 3. Voice Conversion过去,用的监督学习的方法,要有一堆对应的声音:然后训练一个seq2seq的模型就可以了,但是这个模型是有缺陷的,例如我想要变声为张学友,那很难请到张学友跟我一起念同样的句子,然后来训练,很麻烦。那如果我想要变声为尼古拉斯凯奇,那就很难搞了,因为他不会中文,就算请到他也讲不来相同的句子。 如今,我们只要收集两组声音,不用讲一样的内容就可以进行训练。 ?结论与展望研究无监督CGAN很有意义,因为大多数情况我们很难弄到一个个对应匹配的数据,比如做图片风格转换,你很难弄到同一个图片的不同种风格,里面东西还是一模一样的,所以我们需要研究无监督学习,只需要两堆数据,可将某种特征从一堆转到另一堆。 对于方法一,Direct Transformation(直接转),具体步骤:
对于方法二,Projection to Common Space(投影到公共空间),具体步骤:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 10:51:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |