当前位置:首页 » 手机软件 » Gan网络参数共享
扩展阅读
如何用wifi网络看电视 2025-01-22 19:53:49

Gan网络参数共享

发布时间: 2023-01-26 09:20:51

‘壹’ 生成式对抗网络GAN(一)

上面这张图很好的很好的阐述了生成式对抗网络的结构~~ 博弈论

此图给出了生成性对抗网络的概述。目前最重要的是要理解GAN是使两个网络协同工作的一种方式 - 而Generator和Discriminator都有自己的架构。为了更好地理解这个想法的来源,我们需要回忆一些基本的代数并问自己 - 我们怎么能欺骗一个比大多数人更好地分类图像的神经网络?

在我们详细描述GAN之前,让我们看一下类似的主题。给定一个训练有素的分类器,我们可以生成一个欺骗网络的样本吗?如果我们这样做,它会是什么样子?

事实证明,我们可以。

甚至更多 - 对于几乎任何给定的图像分类器,可以将图像变换为另一个图像,这将被高度置信地错误分类,同时在视觉上与原始图像无法区分!这种过程称为对抗性攻击,生成方法的简单性解释了很多关于GAN的内容。
精心计算的示例中的对抗性示例,其目的是错误分类。以下是此过程的说明。左边的熊猫与右边的熊猫无法区分 - 但它被归类为长臂猿。

图像分类器本质上是高维空间中的复杂决策边界。当然,在对图像进行分类时,我们无法绘制这个边界。但我们可以安全地假设,当训练结束时,网络并不是针对所有图像进行推广的 - 仅针对我们在训练集中的那些图像。这种概括可能不是现实生活的良好近似。换句话说,它适用于我们的数据 - 我们将利用它。

让我们开始为图像添加随机噪声并使其非常接近零。我们可以通过控制噪声的L2范数来实现这一点。数学符号不应该让您担心 - 出于所有实际目的,您可以将L2范数视为向量的长度。这里的诀窍是你在图像中拥有的像素越多 - 它的平均L2范数就越大。因此,如果噪声的范数足够低,您可以预期它在视觉上难以察觉,而损坏的图像将远离矢量空间中的原始图像。

为什么?

好吧,如果HxW图像是矢量,那么我们添加到它的HxW噪声也是矢量。原始图像具有相当密集的各种颜色 - 这增加了L2规范。另一方面,噪声是一组视觉上混乱的相当苍白的像素 - 一个小范数的矢量。最后,我们将它们添加到一起,为损坏的图像获取新的矢量,这与原始图像相对接近 - 但却错误分类!

现在,如果原始类 Dog 的决策边界不是那么远(就L2范数而言),这种加性噪声将新图像置于决策边界之外。

您不需要成为世界级拓扑学家来理解某些类别的流形或决策边界。由于每个图像只是高维空间中的矢量,因此在其上训练的分类器将“所有猴子”定义为“由隐藏参数描述的该高维斑点中的所有图像矢量”。我们将该blob称为该类的决策边界。

好的,所以,你说我们可以通过添加随机噪声轻松欺骗网络。它与生成新图像有什么关系?

现在我们假设有两个结构模型,相当于两个神经网络:

这是关于判别网络D和生成网络G的价值函数(Value Function),训练网络D使得最大概率地分对训练样本的标签(最大化log D(x)),训练网络G最小化log(1 – D(G(z))),即最大化D的损失。训练过程中固定一方,更新另一个网络的参数,交替迭代,使得对方的错误最大化,最终,G 能估测出样本数据的分布。生成模型G隐式地定义了一个概率分布Pg,我们希望Pg 收敛到数据真实分布Pdata。论文证明了这个极小化极大博弈当且仅当Pg = Pdata时存在最优解,即达到纳什均衡,此时生成模型G恢复了训练数据的分布,判别模型D的准确率等于50%。

接着上面最后一个问题:怎么才能生成我指定的图像呢?

指定标签去训练

顾名思义就是把标签也带进公式,得到有条件的公式:

具体怎么让CGAN更好的优化,这里不解释,就是平常的优化网络了。

参考文章:

本文大部分翻译此外文

通俗易懂

小博客的总结

唐宇迪大神

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

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) 李宏毅

‘叁’ GAN网络什么意思

品牌型号:华为MateBook D15
系统:Windows 11

GAN网络是一种机器学习方法,是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。

原始 GAN 理论中,并不要求 G 和 D 都是神经网络,只需要是能拟合相应生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D 。一个优秀的GAN应用需要有良好的训练方法,否则可能由于神经网络模型的自由性而导致输出不理想。

机器学习的模型可大体分为两类,生成模型(Generative Model)和判别模型(Discriminative Model)。判别模型需要输入变量 ,通过某种模型来预测 。生成模型是给定某种隐含信息,来随机产生观测数据。举个简单的例子:判别模型,给定一张图,判断这张图里的动物是猫还是狗。生成模型,给一系列猫的图片,生成一张新的猫咪(不在数据集里)

对于判别模型,损失函数是容易定义的,因为输出的目标相对简单。但对于生成模型,损失函数的定义就不是那么容易。我们对于生成结果的期望,往往是一个暧昧不清,难以数学公理化定义的范式。所以不妨把生成模型的回馈部分,交给判别模型处理。这就是Goodfellow他将机器学习中的两大类模型,Generative和Discrimitive给紧密地联合在了一起。

‘肆’ 【模型解读】历数GAN的5大基本结构

首发于微信公众号《有三AI》

【模型解读】历数GAN的5大基本结构

生成对抗网络是近几年来无监督学习领域里最大的进展,被誉为下一代深度学习,不管是研究热度还是论文数量,已经逼近甚至超越传统判别式的CNN架构。

这一次我们简单介绍一下生成对抗网络的主流模型结构,从一个生成器一个判别器到多个生成器多个判别器。

作者 | 言有三

编辑 | 言有三

我们这一期文章不打算从头开始讲述GAN,所以如果大家没有相关基础的,就先看一下我们上一期GAN的介绍。

【技术综述】有三说GANs(上)​

一个基本的用于生成图像的GAN的结构就是这样的。

Generator就是生成器,它输入噪声,输出产生的图像。通常噪声就是一个一维的向量,经过reshape为二维图像,然后利用若干个反卷积层来学习上采样。

如全卷积的DCGAN模型[1],输入就是1*100的向量,然后经过一个全连接层学习,reshape到4*4*1024的张量,再经过4个上采样的反卷积网络,生成64*64的图。

Discrimator就是普通的CNN分类器,输入真实样本或者生成的假样本进行分类,在DCGAN中也是4个卷积层。

采用多个判别器[2]的好处带来了类似于boosting的优势,训练一个过于好的判别器,会损坏生成器的性能,这是GAN面临的一个大难题。如果能够训练多个没有那么强的判别器,然后进行boosting,可以取得不错的效果,甚至连dropout技术都可以应用进来。

多个判别器还可以相互进行分工,比如在图像分类中,一个进行粗粒度的分类,一个进行细粒度的分类。在语音任务中,各自用于不同声道的处理。

一般来说,生成器相比判别器要完成的任务更难,因为它要完成数据概率密度的拟合,而判别器只需要进行判别,导致影响GAN性能的一个问题就是模式坍塌,即生成高度相似的样本。

采用多个生成器单个判别器的方法,可以有效地缓解这个问题。

从上图结构可以看出,多个生成器采用同样的结构,在网络的浅层还共享权重。

在利用GAN进行半监督的图像分类任务时,判别器需要同时担任两个角色,即判别生成的假样本,以及预测类别,这对判别器提出了较高的要求。通过增加一个分类器可以分担判别器的工作量,即将捕捉样本和标签的条件分布这一任务交给生成器和分类器,而判别器只专注于区分真实样本和生成的样本。

这一类结构以Triple Generative Adversarial Nets为代表,下图是它的网络结构。

多个生成器和多个判别器就又有几种。

5.1 级联结构[5]

早期以DCGAN为代表的网络生成的图片分辨率太低,质量不够好,都不超过100×100,在32×32或者64×64左右。这是因为难以一次性学习到生成高分辨率的样本,收敛过程容易不稳定。

类似的问题在图像分割,目标检测中都存在。在目标检测中,级联网络被广泛使用,即采用从粗到精的方法依次改进检测器的性能。在图像分割中进行上采样时也采用学习小倍率的放大而不是大倍率的方法,如利用两个2倍上采样替换一个4倍的上采样,不仅可以增强网络的表达能力,还降低了学习难度。

基于此,金字塔GAN结构被提出并广泛使用,它参考图像领域里面的金字塔结构由粗到精一步一步生成图像,并添加残差进行学习。

上图就是它的结构,从低分辨率z3开始,逐级提升,最终生成I0,这是一个金字塔形状的结构,以下符号较多用图片代替。

5.2 并行与循环结构[6]

GAN有一大应用就是风格化,实现两个域之间的风格互换,以CycleGAN[6]为典型代表。它包含了多个生成器和多个判别器。Cycle的典型结构如下:

X和Y分别表示两个域的图像,可知这里存在两个生成器G和F,分别用于从X到Y的生成和Y到X到生成,包含两个判别器,分别是Dx和Dy。而损失本身也增加了一个循环损失,感兴趣读者可以去细读文章。

另外在cross domain学习中也常用到多判别器多生成器多结构,分别学习不同的域。而且各个域的判别器和生成器通常会共享一些权重,如下图是CoGAN[7]的网络结构。

另外还有一些零零散散的结构,比如3D GAN,RNN GAN,由于都是上面这几类的变种,不再统一介绍。

[1] Radford A, Metz L, Chintala S, et al. Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks[J]. international conference on learning representations, 2016.

[2] Durugkar I P, Gemp I, Mahadevan S, et al. Generative Multi-Adversarial Networks[J]. international conference on learning representations, 2017.

[3] Ghosh A, Kulharia V, Namboodiri V P, et al. Multi-Agent Diverse Generative Adversarial Networks[J]. computer vision and pattern recognition, 2018: 8513-8521.

[4] Chongxuan L I, Xu T, Zhu J, et al. Triple Generative Adversarial Nets[J]. neural information processing systems, 2017: 4088-4098.

[5] Denton E L, Chintala S, Szlam A, et al. Deep generative image models using a Laplacian pyramid of adversarial networks[J]. neural information processing systems, 2015: 1486-1494.

[6] Zhu J, Park T, Isola P, et al. Unpaired Image-to-Image Translation Using Cycle-Consistent Adversarial Networks[J]. international conference on computer vision, 2017: 2242-2251.

[7] Liu M, Tuzel O. Coupled Generative Adversarial Networks[J]. neural information processing systems, 2016: 469-477.

本系列的完整目录:

【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构

【模型解读】network in network中的1*1卷积,你懂了吗

【模型解读】GoogLeNet中的inception结构,你看懂了吗

【模型解读】说说移动端基准模型MobileNets

【模型解读】pooling去哪儿了?

【模型解读】resnet中的残差连接,你确定真的看懂了?

【模型解读】“不正经”的卷积神经网络

【模型解读】“全连接”的卷积网络,有什么好?

【模型解读】从“局部连接”回到“全连接”的神经网络

【模型解读】深度学习网络只能有一个输入吗

【模型解读】从2D卷积到3D卷积,都有什么不一样

【模型解读】浅析RNN到LSTM

‘伍’ gan算法不包括以下哪个模型

不管何种模型,其损失函数(Loss Function)选择,将影响到训练结果质量,是机器学习模型设计的重要部分。对于判别模型,损失函数是容易定义的,因为输出的目标相对简单。但对于生成模型,损失函数却是不容易定义的。
2014年GoodFellow等人发表了一篇论文“Goodfellow, Ian, et al. Generative adversarial nets." Advances inNeural Information Processing Systems. 2014”,引发了GAN生成式对抗网络的研究,值得学习和探讨。今天就跟大家探讨一下GAN算法。

GAN算法概念:

对于生成结果的期望,往往是一个难以数学公理化定义的范式。所以不妨把生成模型的回馈部分,交给判别模型处理。于是Goodfellow等人将机器学习中的两类模型(G、D模型)紧密地联合在了一起(该算法最巧妙的地方!)。

一个优秀的GAN模型应用需要有良好的训练方法,否则可能由于神经网络模型的自由性而导致输出结果不理想。

GAN算法原理:

1.先以生成图片为例进行说明:

1)G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。

3)在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。

4)这样目的就达成了:得到了一个生成式的模型G,它可以用来生成图片。

在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而判别网络D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。

2.再以理论抽象进行说明:

GAN是一种通过对抗过程估计生成模型的新框架。框架中同时训练两个模型:捕获数据分布的生成模型G,和估计样本来自训练数据的概率的判别模型D。G的训练程序是将D错误的概率最大化。可以证明在任意函数G和D的空间中,存在唯一的解决方案,使得G重现训练数据分布,而D=0.5(D判断不出真假,50%概率,跟抛硬币决定一样)。在G和D由多层感知器定义的情况下,整个系统可以用反向传播进行训练。在训练或生成样本期间,不需要任何马尔科夫链或展开的近似推理网络。实验通过对生成的样品的定性和定量评估,证明了GAN框架的潜在优势。

Goodfellow从理论上证明了该算法的收敛性。在模型收敛时,生成数据和真实数据具有相同分布,从而保证了模型效果。

GAN公式形式如下:

GAN公式说明如下:

1)公式中x表示真实图片,z表示输入G网络的噪声,G(z)表示G网络生成的图片;

2)D(x)表示D网络判断图片是否真实的概率,因为x就是真实的,所以对于D来说,这个值越接近1越好。

3)G的目的:D(G(z))是D网络判断G生成的图片的是否真实的概率。G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此公式的最前面记号是min_G。

4)D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大max_D。

GAN训练过程:

GAN通过随机梯度下降法来训练D和G。

1)首先训练D,D希望V(G, D)越大越好,所以是加上梯度(ascending)

2)然后训练G时,G希望V(G, D)越小越好,所以是减去梯度(descending);

3) 整个训练过程交替进行。

GAN训练具体过程如下:

GAN算法优点:

1)使用了latent code,用以表达latent dimension、控制数据隐含关系等;

2)数据会逐渐统一;

3)不需要马尔可夫链;

4)被认为可以生成最好的样本(不过没法鉴定“好”与“不好”);

5)只有反向传播被用来获得梯度,学习期间不需要推理;

6)各种各样的功能可以被纳入到模型中;

7)可以表示非常尖锐,甚至退化的分布。

GAN算法缺点:

1)Pg(x)没有显式表示;

2)D在训练过程中必须与G同步良好;

3)G不能被训练太多;

4)波兹曼机必须在学习步骤之间保持最新。

GAN算法扩展:

GAN框架允许有许多扩展:

1)通过将C作为输入,输入G和D,可以得到条件生成模型P(x|c);

2)学习近似推理,可以通过训练辅助网络来预测Z。

3)通过训练一组共享参数的条件模型,可以近似地模拟所有条件。本质上,可以使用对抗性网络实现确定性MP-DBM的随机扩展。

4)半监督学习:当仅有有限标记数据时,来自判别器或推理网络的特征可以提高分类器的性能。

5)效率改进:通过划分更好的方法可以大大加快训练,更好的方法包括:a)协调G和D; b) 在训练期间,确定训练样本Z的更好分布。

GAN算法应用:

GAN的应用范围较广,扩展性也强,可应用于图像生成、数据增强和图像处理等领域。

1)图像生成:

目前GAN最常使用的地方就是图像生成,如超分辨率任务,语义分割等。

2)数据增强:

用GAN生成的图像来做数据增强。主要解决的问题是a)对于小数据集,数据量不足,可以生成一些数据;b)用原始数据训练一个GAN,GAN生成的数据label不同类别。

结语:

GAN生成式对抗网络是一种深度学习模型,是近年来复杂分布上无监督学习最具有前景的方法之一,值得深入研究。GAN生成式对抗网络的模型至少包括两个模块:G模型-生成模型和D模型-判别模型。两者互相博弈学习产生相当好的输出结果。GAN算法应用范围较广,扩展性也强,可应用于图像生成、数据增强和图像处理等领域

‘陆’ gan13调试到几档

大家分享一下自己gan13的调试参数吧【魔方吧】 - 网络贴吧
9月17日大家分享一下自己gan13的调试参数吧 只看楼主收藏回复 促成超好吃 仍看置顶 4 送TA礼物 来自iPhone客户端1楼2022-09-17 00:01回复 ...
贴吧

gan13档位怎么调 - D时代
10月30日gan13好,它的性能方面得到了很大提升。使用的是全新一代的处理器,在传感气方面也有升级,所以信号接受能力方面提升比较巨大,不会出现日常使用网络...
www.dtime.com

gan13调试到几档 - 家电工程师答疑 - 问一问
5分钟内回复 多年专业经验
gan13调试到几档
马上提问

gain调多少合适
120

‘柒’ GAN生成对抗网络(一)

GAN(Generative Adversarial Networks)是两个网络的的组合, 一个网络生成模拟数据, 另一个网络判断生成的数据是真实的还是模拟的。生成模拟数据的网络要不断优化自己让判别的网络判断不出来, 判别的网络也要优化自己让自己判断得更准确。 二者关系形成对抗博弈,因此叫 对抗神经网络 (生成对抗网络)。实验证明, 利用这种网络间的对抗关系所形成的网络, 在无监督及半监督领域取得了很好的效果, 可以算是用网络来监督网络的一个自学习过程。在GAN发明之前,变分自编码器被认为是理论完美、实现简单,使用神经网络训练起来很稳定, 生成的图片逼近度也较高, 但是人类还是可以很轻易地分辨出真实图片与机器生成的图片。

生成对抗网络包含了 2 个子网络: 生成网络(Generator, G)和判别网络(Discriminator,D), 其中生成网络负责学习样本的真实分布,判别网络负责将生成网络采样的样本与真实样本区分开来。

生成网络 G(𝐳) 生成网络 G 和自编码器的 Decoder 功能类似, 从先验分布 中采样隐藏变量 ,通过生成网络 G 参数化的 分布, 获得生成样本 ,如下图所示。 其中隐藏变量𝒛的先验分布 可以假设属于某中已知的分布,比如多元均匀分布 。

可以用深度神经网络来参数化, 如下图所示, 从均匀分布 中采样出隐藏变量𝒛, 经过多层转置卷积层网络参数化的 分布中采样出样本 。

判别网络 D(𝒙) 判别网络和普通的二分类网络功能类似,它接受输入样本𝒙,包含了采样自真实数据分布 的样本 ,也包含了采样自生成网络的假样本 , 和 共同组成了判别网络的训练数据集。判别网络输出为𝒙属于真实样本的概率 ,我们把所有真实样本 的标签标注为1,所有生成网络产生的样本 标注为0, 通过最小化判别网络预测值与标签之间的误差来优化判别网络参数。

我们的目标很明确, 既要不断提升判断器辨别真假图像样本的能力, 又要不断提升生成器生成更加逼真的图像,使判别器越来越难判别。
对于判别网络 D ,它的目标是能够很好地分辨出真样本 与假样本 。即最小化图片的预测值和真实值之间的交叉熵损失函数:

其中 代表真实样本 在判别网络 的输出, 为判别网络的参数集, 为生成样本 在判别网络的输出, 为 的标签,由于真实样本标注为真,故 , 为生成样本的 的标签,由于生成样本标注为假,故 。 根据二分类问题的交叉熵损失函数定义:

因此判别网络的优化目标是:

去掉 中的负号,把 问题转换为 问题,并写为期望形式:

对于生成网络G(𝒛) ,我们希望 能够很好地骗过判别网络 , 假样本 在判别网络的输出越接近真实的标签越好。也就是说,在训练生成网络时, 希望判别网络的输出 越逼近 1 越好,此时的交叉熵损失函数:

把 问题转换为 问题,并写为期望形式:

再等价转化为:

GAN的优化过程不像通常的求损失函数的最小值, 而是保持生成与判别两股力量的动态平衡。 因此, 其训练过程要比一般神经网络难很多。

把判别网络的目标和生成网络的目标合并,写成min-max形式:

原GAN论文中:

这里为了好理解,把各个符号梳理的更清晰了,注意符号和网络参数的对应。
理想情况下 , 会有更精确的鉴别真伪数据的能力,经过大量次数的迭代训练会使 尽可能模拟出以假乱真的样本, 最终整个GAN会达到所谓的纳什均衡, 即 对于生成样本和真实样本鉴别结果为正确率和错误率各占50%。下面具体从理论层面来推导。

现在从理论层面进行分析, 通过博弈学习的训练方式,生成器 G 和判别器 D 分别会达到什么状态。 具体地,来看以下 2 个问题:

首先我们通过 一维正态分布的例子给出一个直观的解释,如下图所示,黑色虚线曲线代表了真实数据的分布 , 为某正态分布 , 绿色实线代表了生成网络学习到的分布 , 蓝色虚线代表了判别器的决策边界曲线, 图中(a)(b)(c)(d)分别代表了生成网络的学习轨迹。在初始状态,如图 (a)所示, 分布与 差异较大,判别器可以很轻松地学习到决策边界,即图(a)中的蓝色虚线,将来自 的采样点判定为 0, 中的采样点判定为 1。 随着生成网络的分布 越来越逼近真实分布 ,判别器越来越困难将真假样本区分开,如图 (b)(c)所示。 最后,生成网络性能达到最佳,学习到的分布 ,此时从生成网络中采样的样本非常逼真, 判别器无法区分,即判定为真假样本的概率均等,如图(d)所示。

固定生成器G的参数 ,判别器D最佳能达到的状态:

证明: 对于给定的生成器G,要让判别器D达到最优,我们的目标是最大化损失函数,其积分形式为:

对于给定的 ,真实分布始终是固定的,所以 和 都是定值,于是对于判别器D,要找出

的最大值,其中 是判别器网络参数,对于函数 ,不难得到 在 处取得极大值且是最大值。因此可得 的极值点也为

故判别器 能达到的最佳状态为定理中给出的式子。

现在考虑第二个问题。
JS 散度(Jensen–Shannon divergence)

对于KL散度, ,是不对称的。但JS散度是对称的。

当 达到 时,考虑此时 和 的 散度:

考虑到判别网络到达 时,此时的损失函数为:

于是我们可以得到:

对于生成网络 而言,目标是最小化损失函数,由于 ,因此 取得最小值仅在 时(此时 ), 取得最小值:

此时生成网络达到 状态是:

即 的学到的分布 与真实分布 一致,网络达到纳什均衡点,此时:

即对于生成器生成的图像有0.5的概率被判定为真,也有0.5的概率被判定为假。