IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 机器学习之十九(读书笔记) -> 正文阅读

[人工智能]机器学习之十九(读书笔记)

  • 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,还有Dual GAN和Disco GAN,这两种和Cycle GAN的方法一样,只是在同样的时间由不同的人提出来:
在这里插入图片描述
??StarGAN:在做Cyle GAN的时候只能把Domain X转成Domain Y,有时候会有需求是你会有多个Domain,你要用多个Domain互转。比如说你有四个Domain,你要在四个Domain间互转,在理论上你就要选择出 C 4 2 C_{4}^{2} C42?个transformation的network,StarGAN做的事情是它只learn了一个generator,但可以在多个Domain间互转。
在这里插入图片描述
??StarGAN的流程:
在这里插入图片描述
??paper中的例子:
在这里插入图片描述
??
4、方法2详细介绍
??(2)Approach 2:Projection to Common Space:现在要把image project到一个latent space,再用decoder把它合回来。假设今天有两个Domain,真人的和动画人物的,想要在两个Domain间做互相转换,需要一个Domain X的encoder,看到真人头像就把它的特征抽出来,一个Domain Y的encoder,看到动画人物头像就把它的特征抽出来,这两个encoder的参数可能是不一样的。接下来把这个抽出来的特征的vector丢到decoder里面,如果丢到Domain X的decoder,那么得到的就是真人头像,反之,得到的是二次元人物的头像。我们希望可以做到以下的事情:
在这里插入图片描述
??但是实际上如果今天有Domain X和Domain Y之间的对应关系,要做到这件事非常容易,这是一个supervised learning的问题,但是现在是一个unsupervised learning的问题,只有Domain X的image和Domain Y的image,它们是分开的,怎么train这些encoder和decoder?
??解决方法:encoder X和decoder X合起来组成一个auto-encoder,input一张Domain X的图,让它可以reconstruct回到原来Domain X的图。同理,这样出来Domain Y的图。然后在train的时候minimize它们的input和output。
在这里插入图片描述
??用这样的方法确实可以得到两个encoder和两个decoder,但是这样会造成两个encoder和两个decoder是没有关联的,所以现在要加discriminator,鉴别是不是某个Domain的图,这样会强迫Domain X的decoder和Domain Y的decoder都比较realistic。
在这里插入图片描述
??因为train这两个auto-encoder separately,具有相同属性的图像可能不会投影到潜在空间中的相同位置。可能得到以下结果:
在这里插入图片描述
??常见的解决方法:让不同Domain的encoder和decoder它们的参数tie在一起,比如两个encoder的最后几层的hidden layer的参数是共用的,两个decoder前面几层hidden layer的参数是共用的,后面几层是不一样的。
在这里插入图片描述??别的解决方法:(1)加一个Domain的discriminator,这个discriminator用来判断给它的latent vector是来自于encoder X还是encoder Y,也就是说通过discriminator强迫这两个Domain的embedding 的latent feature是一样的,它们就会用同样的dimension来表示同样的事情 :
在这里插入图片描述
??(2)Cycle Consistency(循环一致性):把一张image通过encoder X变成code,再通过decoder Y把它解回来,然后把得到的image再丢给encoder Y,再通过decoder X,把它解回来,然后希望input和output越接近越好。
在这里插入图片描述
??(3)Semantic Consistency(语义一致性):把一张图片丢进encoder X,把它变成code,接下来把这个code用encoder Y解回来,得到的结果丢进encoder Y,得到code,希望通过encoder X得到的code和通过encoder Y得到的code越接近越好。
在这里插入图片描述
??
5、应用在语音
??应用在Voice Conversion(语音转换),把A的声音转成B的声音。
在这里插入图片描述
??

三十一、Theory behind GAN

??GAN就是根据很多example去进行生成。
??我们想让机器去找出我们需要的数据的distribution:
在这里插入图片描述
??在有GAN之前怎么做generative这件事?–Maximum Likelihood Estimation(最大似然估计):
??(1)现在有一个data的distribution P d a t a ( x ) P_{data}(x) Pdata?(x),这个distribution实际上长什么样子是不知道的,我们可以从这个distribution里面sample出一些data。
??(2)接下来我们自己去找一个distribution P G ( x ; θ ) P_G(x;\theta ) PG?(x;θ) ,这个distribution是由一组参数 θ \theta θ 所操控的:(假设它是一个Gaussian Mixture Model, θ \theta θ 就是means and variances of the Gaussians)我们需要调整这组参数使得我们得到的 P G ( x ; θ ) P_G(x;\theta ) PG?(x;θ) P d a t a ( x ) P_{data}(x) Pdata?(x)越接近越好。
??具体做法:
在这里插入图片描述
??
??Maximum Likelihood Estimation==Minimize KL Divergence(KL散度)
在这里插入图片描述
??如果是一个很复杂的东西,比如神经网络,就没有办法计算它的likelihood,之后有了新的想法,让machine自动生成新的东西。
在这里插入图片描述
??解释GAN怎么做到minimize divergence这件事情的:
在这里插入图片描述
??做完sample之后,我们怎么知道知道这两个sample的divergence?–通过discriminator。
在这里插入图片描述
??一堆数学式:
在这里插入图片描述
??
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
??现在问题变成:以下例子所示。
在这里插入图片描述
??接下来想办法解这个min-max的problem,在GAN中的解法是:
在这里插入图片描述
??假设你要解这个optimization的problem,你要怎么做:
??首先把这个式子简写:
在这里插入图片描述
??现在的问题就变成,可以使用gradient descent:
在这里插入图片描述
??但是 L ( G ) L(G) L(G)可以微分吗?
??可以。
??假设有一个function,它们的式子和形状如下,怎么对它做微分?这件事等同于现在 x x x可以让哪一个function最大:
在这里插入图片描述
??回到我们的optimization problem:
在这里插入图片描述
??这整个process其实和GAN是一模一样的,但是update过程未必等同于真的在minimize JS divergence,比如:
在这里插入图片描述
??实际上在做GAN的时候你其实是怎么做的?
??实际上只能用Sample来代替下式:
在这里插入图片描述
??
在这里插入图片描述
??最后复习GAN的algorithm:
在这里插入图片描述
??在实际中:
在这里插入图片描述
??
??
??


本文是对blibli上李宏毅机器学习2020的总结,如有侵权会立马删除。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:47:53  更:2021-10-15 11:50:05 
 
开发: 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年11日历 -2024/11/27 10:19:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码