李宏毅老师-生成式对抗网络(GAN)Part1

慢慢来,会更好!
大家好,我是一个想研究又不会研究的研究生
陪伴大家一起学习成长!

我们以前学习到的network可以输出一个数值、类别等

接下来,我们要接触一些新的主题
**network as Generator**
以前是input只有x,现在我们加入进来一个z,这个z是从某一个distribution simple出来的
我们要input x与z 才能输出y,那network怎么同时接受x与z呢 
有很多方法,比如x与z都是向量可以接起来或者维度相同的话相加当做input

z特别的地方是不固定的,每次simple出来都不一样,distribution有一个限制(够简单,能够simple)
所以,每次有一个x进来,就会simple出来一个z,y的输出自然而然也就不一样了

李宏毅老师-生成式对抗网络(GAN)Part1_第1张图片

那怎么训练出Generator?
在训练Generator之前,我们需要回答为什么要训练Generator
输入x 输出固定的y不好吗  为什么要输出一个分布式呢?
看下面例子
给机器一段影片,预测接下来会发生什么事情

让我们来看看会发生什么问题?
小精灵走的走的居然分裂成2只了 
因为今天对于network而言,有时候同样的输入、同样的转角。
小精灵有时候会向左,有时候会向右转的
所以network做的事情,就是当一个大舔狗,两边讨好,同时向左也向右转
 
那么该怎么解决呢
我们可以让机器的输出是有几率的,不是单一的输出,输出是有分布的
假如z只有0和1 ,simple到1的时候向左,0的时候向右

李宏毅老师-生成式对抗网络(GAN)Part1_第2张图片

什么时候我们会特别需要处理这种问题呢?
同样的输入,有多种不同可能的输出-创造性

李宏毅老师-生成式对抗网络(GAN)Part1_第3张图片

Generative model其中非常知名的一个就是GAN
我们主要来学习GAN

李宏毅老师-生成式对抗网络(GAN)Part1_第4张图片
李宏毅老师-生成式对抗网络(GAN)Part1_第5张图片

接下来我们要举的例子,就是让机器生成二次元人物的脸 Unconditional generation(先把x拿掉)
输入z(Normal Distribution simple出来的 维度自定),输出y
把z丢到Generator里面,产生一个对应的输出就是一个二次元人物的人脸

那Generator到底是怎么样的输出才能对应人脸呢
其实一张图片就是一个高维的向量,Generator就是输出一个高维度的向量
不同的z,输出不同的y
其中Normal Distribution并不是固定的,我们也可以选择其他一些分布

李宏毅老师-生成式对抗网络(GAN)Part1_第6张图片

还有一个特别的地方,除了Generator之外,我们要多训练一个东西  叫做Discriminator
拿一张图片作为输入,输出是一个数值 数值越大越像是真实的二次元人物的形象

李宏毅老师-生成式对抗网络(GAN)Part1_第7张图片

GAN的基本概念是什么呢?为什么多要加入Discriminator呢?
在这里有一个有趣的故事
A吃B,B为了不让A吃,B就一直在进化,而A为了吃B也一直在进化
正所谓道高一尺魔高一丈 hhh
重点来了,B就是所谓的Generator,而A就是Discriminator

李宏毅老师-生成式对抗网络(GAN)Part1_第8张图片

Generator要做的事情就是画出二次元任务,Generator怎么学习画出二次元人物呢?
慢慢调整参数,齐头并进
Generator每次更新想骗过Discriminator,但是Discriminator也不傻,它也更新

李宏毅老师-生成式对抗网络(GAN)Part1_第9张图片

所以,这两者可以说是竞争与合作的关系

李宏毅老师-生成式对抗网络(GAN)Part1_第10张图片

接下来就正式来学习一下这两个是怎么运作的呢?
1.首先固定Generator,一开始图片会和正常的二次元人物特别的不像
先从Database simple出来一些人物与generated出来的结果去训练Discriminator
Discriminator:分辨真实和产生出来的二次元任务的差异

李宏毅老师-生成式对抗网络(GAN)Part1_第11张图片

2.固定Discriminator,更新generator
让generator学会骗过Discriminator,Discriminator学会分辨真图和生成图的差异
generator如果可以骗过Discriminator 可以产生一些让Discriminator觉得是真图,就可以以假乱真

李宏毅老师-生成式对抗网络(GAN)Part1_第12张图片

接下来,就是循环往复

李宏毅老师-生成式对抗网络(GAN)Part1_第13张图片

以下就是Anime Face Generation的结果

李宏毅老师-生成式对抗网络(GAN)Part1_第14张图片
李宏毅老师-生成式对抗网络(GAN)Part1_第15张图片
李宏毅老师-生成式对抗网络(GAN)Part1_第16张图片
李宏毅老师-生成式对抗网络(GAN)Part1_第17张图片
李宏毅老师-生成式对抗网络(GAN)Part1_第18张图片
李宏毅老师-生成式对抗网络(GAN)Part1_第19张图片

当然,除了产生动画人物之外,还可以产生真实的人脸
有一个技术叫做Progressive GAN

李宏毅老师-生成式对抗网络(GAN)Part1_第20张图片
李宏毅老师-生成式对抗网络(GAN)Part1_第21张图片
李宏毅老师-生成式对抗网络(GAN)Part1_第22张图片

你可能感兴趣的:(人工智能,计算机视觉,算法)