机器学习课程学习周报十二

本文介绍了GAN的基本概念,包括工作原理、结构(Generator和Discriminator)以及它们的训练过程。详细讨论了训练目标、分布定义、JSdivergence和Wassersteindistance等关键细节,并探讨了GAN性能评估的方面,如多样性和类别识别。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


摘要

在本次的机器学习课程中学习的内容主要是学习GAN神经网络架构的相关知识,了解了GAN的工作原理,以及其结构。其中结构主要分为两部分Generator和Discriminator,了解了它们的关系,GAN的训练需要其两者互相配合。GAN的训练有着许多需要注意的问题,要了解其训练目标以及相关的细节处理。最后学习了如何对GAN结构的输出进行评判。

Abstract

The main content learned in this machine learning course is to learn the relevant knowledge of GAN neural network architecture, understand the working principle of GAN, and its structure. The structure is mainly divided into two parts: Generator and Discriminator. Understanding their relationship, the training of GAN requires their mutual coordination. The training of GAN has many issues to pay attention to, and it is necessary to understand its training objectives and related details. Finally, I learned how to evaluate the output of GAN structure.


一、GAN基础

1、什么是GAN

在以往学习过的模型当中,通常都是以一种映射关系来对应输入以及输出的,就像输入的值为x,经过神经网络处理后便能得到一个对应的y。在GAN模型中,输入的内容中除了正常的x,还会包含一个随机值z,该随机值的生成形式必须是一个足够简单的值,然后神经网络会将x和z同时进行考虑,最后输出相应的y值,随着z的不同,y也会有不一样的结果。其实就是由简单的分布z,对应到复杂的分布y。

2、GAN的输入输出

假如需要训练这样的一个特殊的模型,就是类似贪吃蛇的游戏画面,如果使用先前的一一对应的模型,就只能碰到某个路口的时候走固定的方向,这样的一些输入,最后得到某个方向的输出。这个时候就需要就需要一种多样性可能的输出,利用分布就能实现这样的效果,简单的分布z对应集中不同复杂的分布y,便能实现其他方向的输出。总的来说就是需要输出一种带有“创造力”的结果,这样的结果就是在复杂的输出分布中。

二、GAN的训练

1、Generator

Generator,顾名思义就是用于生成出结果的单元。只需要输入符合输入格式的数据,Generator就会输出所需要的结果,输入的数据不仅仅可以是Normal Distribution也可以是其他的Distribution,当然只需要简单的值,Generator就会想办法输出对应的Distribution。

2、Discriminator

Discriminator,顾名思义就是用于辨别结果好坏的的辨别单元,其会对Generator生成的结果进行评判,来评价结果的好坏。当然Discriminator的架构可以自行设计,可以是CNN,也可以是Transformer,只需要得到最终所需要的结果便可。

3、两者的关系

Generator(简称G)与Discriminator(简称D)的关系是类似于“对抗”的关系,就好比一个生物进化的例子,D是G的天敌,因为G要摆脱D,不断地进化来逃避D,但是D也不断地进化,来追捕G,这样彼此就是互相“对抗”与成长。

4、两者的训练配合

两者之间的训练步骤大概是这样的,第一步,Generator(简称G)去根据要求生成所需要的内容,然后通过给Discriminator(简称D)提供一些真实样本来对生成的内容进行评估,来分辨真实样本与生成内容之间的差异,这个分辨的过程可以当作是一个分类的问题或者是regression的问题。第二步,优化D,通过调整参数来提高其分辨标准,以此来不断更新D的输出内容,使这些生成的内容能达到更高的标准。接着就是不断重复这两步的内容便能训练出最终的结果,当然这个训练的过程类似于先前学习的降低代价函数的过程,只是这里需要是让评分结果更高。

三、GAN训练细节

1、训练目标

在每个神经网络模型当中,都需要对输出进行判优,而在以往的模型当中,对输出判断优化的方式是减少代价函数的值,那在GAN模型中应该如何进行判断优化?是对什么进行进行减少或者增加呢?回顾下训练的过程,输入的是一个简单的分布,输出的是一个复杂的分布,现实中是有另外的一个复杂的分布,样本的复杂分布,其实就是让输出的复杂分布与现实中样本的复杂分布进行一个比对,让两者越接近则本次训练就越完美。

2、如何定义分布相近

利用Divergence(Div)来表示量分布的相近程度,式子G*=arg min Div(PG , Pdata)便能很好地表示其两个分布的相近程度,但是在这个式子里面Div(PG , Pdata)是比较难计算的,因为无法知道实际上两者的分布到底是什么。解决的方法就是取样本来实现,通过对两个分布取样本来计算两者样本之间的差距。训练的时候,总体思想是是通过Discriminator来实现一个类似分类的情况,训练的时候能将两个分布样本彼此分开的值达到最大的时候便能达到最好的效果,因为两者分布的样本彼此分开的越大,就越能让Discriminator分辨出来进行判优,在经过这样的处理后,便能慢慢缩小两分布的差距。

3、JS divergence的问题

在很多情况中,PG和Pdata是不会重叠的。在二维平面上解释就是把两个分布比作成两条线,要是它们不完全重合,就只有些许点能相交;在样本之间上解释,两个分布或许有很大的一部分相交了,但是分布里面的样本也是分散不相交的。在这样的情况下JS divergence的判断方法会有这样的问题,当两者之间的存在差距时,不管差距的大小为多少,JS Div的值都会是相等的,这样就无法知道优化过程是否进行当中,无法定义优化过程的好坏。

4、Wasserstein distance

为了解决JS divergence的问题所出现的问题,使用Wasserstein distance来破局,其大体的思想方法是推土机推土,把一个地方的土全部移动到另外一个地方所需要的平均距离,以这样的平均距离就能得出训练程度的好坏了。当然这样的方法也有问题,就是搬运的方式有很多种,所以就是使用穷举的所有方法,取最小值来作为最终的标准。

四、GAN性能评估

1、配合

由之前的学习可以知道,GAN架构中最重要的两个部分就是Generator和Discriminator,而对GAN架构的训练,就是不断对两者进行更新,这两者的关系也是彼此促进的,假如其中一方不再更新,另外一方面也无法继续向前发展,从而无法获得一个更好的GAN神经网络模型。因此要训练出一个良好的GAN模型就需要不断对两者进行调整,让彼此能适应对方的节奏。

2、产出类别

假如将GAN模型生成的图片输入到一个影像分类系统中,让分类系统对图片进行识别,输出几率分布。假如几率主要集中在某个类别就能说明GAN模型性能是比较好的。因为可以理解为“术业有专攻”,因为在分类系统中识别出几率集中的类别,表示系统对该类别的肯定,因为连机器都能够正确识别相应的类别,也侧面说明生成图片的质量达到一个不错的水平。
需要注意的是,如果只根据类别来判断的性能的话,会产生这样的情况,Mode Collapse,就是生成的数据是靠近某一个真实的数据,到最后整个训练出来的数据都越来越相似。最终趋于一个数据而无法产出,其他数据。

3、多样性

假如模型对每一个输入都有不一样的输出,但是对某一个输入它的输出几率都是集中化的,而且每一个输入对应的输出集中类别都不一致,差异比较大的,但是最后平均下来所有的类别几率都是差不多的,这样就能够保证输出的多样性是足够的。
需要注意的是,如果只根据多样性来判断的性能的话,会产生这样的情况,Mode Dropping,就是生成的数据是比较分散的,但是却还有些数据无法被输出,到最后整个训练出来的数据虽然分散,但其实还是相同数据的变化而已。

4、Inception Distance

将最终输出的图片放入到图片识别器中。得到最终进入到softmax层前的向量,将这些向量全部集中到一起进行观察,与真实数据的向量越接近,则表示模型生成的数据越接近真实数据。


总结

本周学习了GAN神经网络架构的相关知识,与以往学习的架构不同,它能够自己生成所需要的结果,这和Stable Diffusion有点类似,能学习到相关的知识真的十分开心,希望未来能利用这些知识来创造出自己理想的作品。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值