机器学习(六)

一、基本概念介绍

在GAN之前我们学到的架构都是我们会给他一个x然后他经过神经网络之后输出一个y
在这里插入图片描述
现在我们要把Network当作Generator来用,让网络自己产生一些东西,这样网络的输入不再是单单的x,还要加上一个Simple Distribution,然后输出是一个复杂的概率分布,我们就把这样的网络叫做Generator在这里插入图片描述

Generator

例子:让机器生成动漫人物脸,这里做的是Unconditional generation,就是在网络的输入当中将x去掉只剩下Z做输入,Z一般来说是一个低维的向量,丢到generator中输出
在这里插入图片描述
图片本身就是十分长的向量,所以generator的输出就是一排向量。

Discriminator

Discriminator本身也是一个network、函数,接受图片的输入,输出是一个scalar,这个值越大,说明Generator生成的图片的真实度越大。Discriminator的架构是我们自行决定的,如果想处理图像问题,那架构可能更多地使用CNN来组成
在这里插入图片描述
为什么要有Discriminator,其实这可以用进化理论来解释,也就是物竞天择,因为对GAN来说,我是要生成一些东西,这部分由Generator来完成。Generator开始时地参数是随机的,所以生成的东西是很随意的,比如上面的例子来说,Generator生成的二次元人物可能是没有眼睛的,这样的话当图片输入到Discriminator时,Discriminator给的分数很低,不让你通过,那Generator就会根据这一点来更新自己的参数,以生成更像二次元人物的图片,调整的方向就是要骗过discriminator
在这里插入图片描述
但是,Discriminator也是会进化的,第一次的时候可能检查的是眼睛,现在可能检查嘴巴等其他特征来判断Generator生成的图片是不是二次元人物
在这里插入图片描述
由此看出,Discriminator和Generator是存在对抗关系的。

Algorithm

首先,初始化G(Generator)和D(Discriminator)的参数。再者,训练G,在网络爬到真正的二次元人物,然后比较G产生的图片与真正的类别,不断更新参数在这里插入图片描述
最后因为G产生的图片是要骗过D的,所以D就会增加判断G生成的图片的特征来给图片打分,根据分数是使G的参数更新在这里插入图片描述当D打的分数比较高时,G就可能骗过D,输出图片。我们可以把G和D看成一个整体的网络,但是参数更新时我们不会更新D部分的参数在这里插入图片描述
两个步骤合起来之后就是下面这样,两个网络是轮流进行训练的在这里插入图片描述

二、理论介绍

我们在训练的时候是要定义Loss函数,然后不断去使他最小化,而在GAN中同样的,我们期待我们G生成的东西与真实的东西Pdata越接近越好
在这里插入图片描述
式子可以写成这样:
在这里插入图片描述
Divergence表示G生成的与真实的东西的距离,所以我们要找到一组参数使得Divergence越来越小,但是不知道怎么算这个距离。以此GAN是用小数量的样本进行计算,分别从真实图库和G产生的图片Sample一部分出来后就可以计算在这里插入图片描述
根据这些数据可以做训练,将PG丢给D判断,给出分数高低,同时也可以把这个过程当成optimization。找到使D最大的参数,式子由下面所示,对于最下面的式子,我们希望如果Y是从Pdata出来的,则越大越好,如果是从PG中Sample出来的,则希望他越小越好
在这里插入图片描述
因为我们是将两种数据混合在一起的,所以对D而言就是在做一个二元分类问题,当Pdata和PG之间的距离很小时,他们混合的程度越大,对于D来说越不容易做分类,就会给出很高的分数,相反则会给很低的分数
在这里插入图片描述
所以我们从最开始计算divergence的最小值转化成了计算D*的最大值,且二者是相关的,则可以这样代替
在这里插入图片描述

三、生成器效能评估与条件生成

GAN是十分难train的,Generator和Discriminator是相互抵抗、共同成长的,只要其中一者停止训练,那另一者也会跟着停止
在这里插入图片描述
对GAN来说生成一段文字是最难的,对于GAN做Sequence-to-Sequence而言,Generator就是Decoder,然后丢给Discriminator,然后D打分是不是真正的句子,那G就是根据分数进行参数调整,以骗过D。
在这里插入图片描述
但事实是,当你在做微分的时候,Decoder会有微小的变化,取max之后,无法改变Decoder的输出,也无法提高D打的分数。这里就可以使用reinforcement Learning进行训练,但十分困难。

Possible Solution

可以尝试supervised的方法进行训练,就是拿真正的图片当作标签给G当参考,一直训练下去在这里插入图片描述

Quality of Image

当G产生的图片时,可以把图片丢到影像分类系统中进行判断,最终输出一个概率分图,当分布十分集中时,那G产生的图片可能就是真正的图片
在这里插入图片描述
但这种方法会被Mode Collagse问题骗过,这种情况下,G产生的图片只有那几张图片,这样D就一直认为是真的图片。因此我们要判断图片的多样性够不够,有下面方法,就是判断图片种类加权平均之后概率分布是否平均
在这里插入图片描述
但是在评估G的时候,还需要判断其产生的东西是否是我们想要的。因此需要更多的评估方法。

Conditional Generator

我们之前的G的产生都是随机的,如果我们想要控制G的输出,就给G多一些限制性的输入在这里插入图片描述
比如说G输入的限制是红眼睛,那其输出的图片中均是红眼睛
在这里插入图片描述
接下来就要做Condition GAN,之前的GAN模型如下
在这里插入图片描述
但是这样的训练的话,D并没有考虑到输入限制问题,这样的话G只要产生清晰的图片就可以骗过D,根本无关是否是红眼睛,所以D还要根据限制条件来给分此过程中还需给一些错误的训练数据
在这里插入图片描述
Conditional GAN除了输入语音产生图片之外,还可以输入图像产生图像
在这里插入图片描述

四、Cycle GAN

GAN话可以用在Unsupervised Leaning上。在supervised Learning上,当我们训练一个网络的时候输入一个x,输出一个y,训练资料一般成对的,未成对的资料叫做unpaired资料在这里插入图片描述
而对影像风格转化的训练中是完全没有成对资料的,对于G而言,我们要训练一个输入为X-domain的图片,输出Y-domain的图片在这里插入图片描述
按照之前的方法,我们可以直接在X-domain图片中sample一部分出来,丢到G然后输出就可以了,但是的话这样是不够的,因为这样的话没有任何的限制,这样的话G的输出可以跟输入图片没有任何关系,这一点跟Conditional GAN很像在这里插入图片描述
所以就用了Cycle GAN,里面用了两个G,第一个G输入X-domain的图片,输出一张Y-domain图片,第二个G是将第一个G产生的图片还原回最开始输入的X-domain图片,在这里插入图片描述
D就会根据两张X-domain图片的相似程度进行打分,越像则分数越高。话第一个G的输出可能产生跟输入完全不同的图,这样的话第二个G就不会产生跟最开始输入的图片相关的图,在这里插入图片描述
所以为第二个G的输出能够还原图片,所以就会强制第一个G的输出跟输入的X-domain图片是相关联的。相互的Cycle GAN也可以是相向的的,也可以用Y-domain图片来做
在这里插入图片描述
二者合起来就是Cycle GAN。

五、结语

此次读书笔记是本人学习机器学习的第六篇,如有不足之处还请指出。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八岁爱玩耍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值