问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

GAN(1) GAN介绍: 基本概念及逻辑

发布网友 发布时间:2022-09-28 20:50

我来回答

1个回答

热心网友 时间:2024-11-28 16:31

GAN由Ian Goodfellow于2014年提出,并迅速成为了非常火热的研究话题,GAN的变种更是有上千种,深度学习先驱之一的Yann LeCun就曾说, "GAN及其变种是数十年来机器学习领域最有趣的 idea" 。

听起来很厉害的样子,那么什么是GAN呢?

生成式对抗网络(GAN, Generative Adversarial Networks )是一种 深度学习 模型,是近年来复杂分布上 无监督学习 最具前景的方法之一。模型通过(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的零和博弈进行学习,即通过两个网络的互相对抗来达到最好的生成效果。

这一段看完了,所以,什么是GAN?看懂了吗?感觉充满了问号。。。接下来跟着李宏毅老师的节奏好好梳理一下。

概念里说,模型通过框架中(至少)两个模块:生成模型G(Generative Model)和判别模型D(Discriminative Model),那么什么是生成模型?什么是判别模型?

生成模型G是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。在GAN中,可以理解为输入一个vector,生成一个图片、语音、文本等有结构的输出。

判别模型D是一种对未知数据与已知数据之间关系进行建模的方法,在GAN中,可以理解为判别器建立了训练数据与生成器输出的数据的关系,按训练数据的标准为生成的数据打分。

以图像的生成为例:

知道了生成器和判别器是什么,那么他们是怎么配合工作来推动GAN的学习的呢?

以学习画二次元人物头像为例:

就这样一步一步,老师觉得我们画的头像和真正的二次元美图一样美的时候,就不再抽我们大嘴巴子,我们终于出师了,是一个合格的生成器了!(这里的老师就是判别器,判别器也是需要学习的,虽然老师水平高,但他不学习也不一定知道什么是美丽的二次元头像)

生成器和判别器通过零和博弈来学习,什么是零和博弈呢?

零和博弈(zero-sum game),又称零和游戏,是博弈论的一个概念,属非合作博弈。

它是指参与博弈的各方,在严格竞争下,一方的收益必然意味着另一方的损失,博弈各方的收益和损失相加总和永远为“零”,可以说自己的幸福是建立在他人的痛苦之上的,二者的大小完全相等,因而双方都想尽一切办法以实现“损人利己”。

在上面的例子中,老师(判别器)抽我们(生成器)大嘴巴子,抽的越多他的快乐越多,我们的快乐越少,我们通过和老师博弈改变双方的快乐,但快乐数值的总和一直都是零,这就是判别器和生成器的零和博弈,这种博弈的关系也是GAN中“Adversarial”的由来。

了解了GAN中的几个关键词的含义后,我们来看看GAN是怎样运行的:

过程听起来不是很复杂,不过问题是生成器和判别器两个NN网络是用什么结构组合在一起的呢?

其实,generator和discriminator是同一个大的网络,像上图,整个大的网络的前半部分是generator,后半部分是discriminator,所以其输入是vector,输出就是得分,而图片就在中间hidden层,即两个网络的衔接处。所谓的生成是指:网络中间的一层hidden-layer的输出是一个图片,判别是指:对这个生成的图片,网络的后半部分会训练出一个得分(或者说概率)。

用稍微数学化一些的语言来表示上述过程:

什么是结构化学习?

在机器学习过程中,对数据的拟合其实就是在找一个拟合函数:

对于回归问题(Regression)来说,这个函数输出一个标量(scalar)

对于分类问题(Classification)来说,这个函数输出一个类别(one-hot 向量)

如果输出的是一个序列,一个矩阵,一个图,一颗树...

其输出由具有依赖关系的组件组成的,这就叫做结构化学习。

首先,对于一般的分类问题,每个类别会对应多个样本,而结构化学习如果把每一个output当做一个类别来看的话,输出空间就非常大,因为其输出是多种多样的,很可能是One-shot learning甚至Zero-shot learning。

One-shot learning:对某一/某些类别只提供一个或者少量的训练样本;
Zero-shot learning:对某一/某些类别完全不提供训练样本。

以文本为例,输入“吃了吗?”,输出“吃过了”、“吃了”、“吃啦”等等都可以看做不同的类,所以用普通的分类是难以解决的。

再者,结构化学习的输出是由具有依赖关系的组件组成的,需要考虑整体。

GAN的生成器可以生成各种输出,判别器可以判断输出的好坏,似乎这两个模块都有很强的学习能力,那么他们能独立工作吗?为什么一定要进行博弈呢?

首先来看看生成器能不能自己学习。

生成器当然可以自己学习,在GAN之前就有自编码器AE、变分自编码器VAE。

自编码器是一个如下图所示结构的神经网络,其输入和输出的维度相同,中间的隐含层维度最小,作为编码的结果,其前半部分encoder会尽可能的保留原始输入的信息,以便在后半部分decoder还原输入。

其实自编码器AE得到的decoder就是一个生成器,不过AE的缺点是无法处理没有训练过的数据,当给code加上噪声后,就不知道会输出什么了,可能是一个完全的乱码或者是噪声,我们希望的是“生成模型”能够对任意的输入编码产生有相关意义的数据,这就是我们后面的“变分自编码器VAE”所要做的事情。

变分自编码器直接编码成高斯分布,可以对各种随机输入产生有意义的输出。

编码器的目标是让输出与输入尽可能的相似,怎么评价相似呢?实际上是计算输入向量与输出向量的距离,拿图片来说,向量距离表示两个图片有多少像素不同,但没法表达更多的东西,比如位置等。

如下图所示,编码器会认为上面只差1个像素的图更好,但实际上上面两个在奇怪的地方多/少一个像素点,更容易看出不是人的手写数字,而下面两个虽然像素差的多,但其实只是笔画长一点而已,更像是手写的数字。

组间之间的关系非常重要,在编码器中,尽管两个组间高度相关,但却无法相互影响,我们需要structure 来约束这个事情。就是在后面在加几个隐藏层,就可以调整第L层的神经元输出。也就是说理论上,VAE要想获得GAN的效果,它的网络要比GAN要深才行。

而且由于VAE算法采用的分布采样,因此做一些离得比较散的目标效果不好:

下图中绿色是目标,蓝色是VAE学习的结果

总结一下,不依靠判别器,生成器独立去学习是可以的,不过生成器是一个一个component来生成,每个component之间的关系不好控制,存在一定的缺点,不能从全局把握结果的好坏。

那么,判别器能不能独立学习来生成好的结果呢?

判别器也是可以独立学习的。

判别器也就是Evaluation function, Potential Function, Energy Function …其特点是top-down evaluation,所以很容易控制component之间的关系,能更好的判断一个结果的好坏,以手写数字为例,判别器能轻松的捕捉到元素之间的相关性,这可是生成器很难解决的问题啊。

例如上面提到的问题,图中所示的CNN Filter就可以轻松识别是不是有孤立的的像素点。

那么应该怎么做才能让判别器得到好的输出呢?

只需要穷举所有可能的x,再挑一个使得判别器得分最好的那个即可:

判别器训练的一个难点是缺失负向样本,比如我们想要生成手写字体或者二次元头像,那么我们的训练数据其实只有正向样本,或许我们可以通过给正向样本增加噪声来得到负向样本,但我们制作的负向样本的质量及分布是很难把握的,怎么解决这个问题呢?

可以采用让判别器自己来生成负向样本的方法,算法流程如下:

看起来似乎和GAN训练差不多,但其实还存在着问题。如下图可以帮助我们理解判别器训练的过程,可以理解为判别器在为真实样本打高分,同时压制其他样本的得分,并在每次迭代中修复自己的漏洞,最终希望训练到除了真实样本其他全是低分:

其缺点是什么呢?

在高维空间中,负样本采样过程其实是很难进行的,再者判别器生成样本的过程,即argmax过程,要枚举大量样本,效率很低。

判别器的生成既然这么麻烦的话,真的有用判别器来做生成任务的吗?实际上,概率图模型就是一类典型的判别器做生成的例子。

思考一下,概率图模型我们会有一个图,根据图还会有一个Potential Function(势函数,详细马尔科夫随机场、CRF),这不就形成了一个可以打分的判别器吗!计算出来的概率不就是打的分吗?想一下CRF的训练,就是通过给正向样本和负样本打分,不过迭代过程是不是有我不确定,HMM应该就没有吧?总之这个角度的思路是非常棒的!

总结一下,判别器和生成器的区别:生成器 VS 判别器

综合以上所述的生成器和判别器的优缺点,我们发现两者是互补的,因此将其组合起来使用,充分利用两者的优势:

Benefit of GAN
(1) From Discriminator’s point of view
• Using generator to generate negative samples

(2)From Generator’s point of view
• Still generate the object component-bycomponent
• But it is learned from the discriminator with global view. (跟discriminator 学习大局观)

GAN 的数学理论及推导在下一篇详述,李宏毅老师在第一节介绍课程中也没有讲这部分。



主要参考
对抗生成网络(GAN)教程(2018) 李宏毅

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么描写小猫呢? 什么梦预示正缘要出现 壳外电场分布为什么与壳内电荷的位置无关啊 为什么带电球壳的内部场强处处为零? 电荷内或外感应球壳,球壳内部场强是否处处为零 win11回收站图标隐藏方法-win11回收站怎么隐藏 Windows 11回收站不见了怎么办_如何在Windows 11中恢复回收站图标 Win11回收站图标显示方法 win11显示回收站的方法_win11怎么显示回收站 华为荣耀5X评价,缺点,参数 放在银行里面是安全的吗? 一个手机号不小心注册了另一个,怎么找回旧的微信? 北方能养龙虾吗 一个手机号怎么申请第二个? 同一个手机号能不能再建另一个? NX93200是UG哪个版本 在同一部手机上怎么注册另一个? 怎么把一个微信的手机号转到另一个上? 微信朋友圈相机打开了但是忘记点拍摄了,之前那个画面还能找回来吗? 老房子装修原预制板顶棚用什么材料找平不会掉更安全? 大连市的局级和副局是啥职位? 手机开启照相功能未关闭,未按下拍照键,那这个过程是否会被记录在手机... 大连市公安局热线电话 大连市民政局严正声明:目前官方尚未公布高龄津贴扩面发放的具体事宜_百 ... 一个手机号怎么申请第二个? 大连正局级单位有哪些 石膏板吊顶要求?石膏板吊顶有几种 吊棚保温苯板怎么固定 新盖的砖瓦房,室内吊棚用什么材料好? c# graphic画的图在谷歌浏览器显示乱码 GAN的基本介绍和变种 如何不用尺规作图三等分角? 三等分仪怎么用 尺规作图三等分角作图方法到现在为止没有一个人说是错的! 山西太原小店去哪有苹果授权店想买个ipad 太原鑫阳数码是正品吗 山西太原市里苹果授权店有哪些? 名字如何改 烤麻雀怎么烤才好吃 烤麻雀如何烤才好吃 新发现的铁板烤麻雀的家常做法大全怎么做好吃视频 烧烤的小麻雀怎么烧 麻雀要怎么烤才好吃? 小麻雀怎么烧烤? 给宝宝吃的含铁的米粉哪个牌子的最好 一句话心灵鸡汤爱情语录 “四九入国军”是什么意思??? 一九二七年到一九四九年是什么政府? 清末,到49年,我国有几个政府出现过,国民政府,伪政府是什么意思呀?_百 ... 爱情感悟的心灵鸡汤语录经典 vivo手机怎样解除绑定?