沈阳网站建设费用劳务派遣技术支持 东莞网站建设

当前位置: 首页 > news >正文

沈阳网站建设费用,劳务派遣技术支持 东莞网站建设,物理机安装虚拟机做网站,红色大气企业网站一、说明 在阅读本文之前#xff0c;强烈建议先阅读预备知识#xff0c;否则缺乏必要的推理基础。本文是相同理论GAN原理的具体化范例#xff0c;阅读后有两个好处#xff1a;1 巩固了已经建立的GAN基本概念 2 对具体应用的过程和套路进行常识学习#xff0c;这种练习题一…一、说明 在阅读本文之前强烈建议先阅读预备知识否则缺乏必要的推理基础。本文是相同理论GAN原理的具体化范例阅读后有两个好处1 巩固了已经建立的GAN基本概念 2 对具体应用的过程和套路进行常识学习这种练习题一般的项目是需要反复几个才能成为行家。好了我们出发吧 预备知识 计算机视觉中的 GAN - 生成学习简介 |人工智能之夏 (theaisummer.com) 【深度学习】生成对抗网络Generative Adversarial Nets_无水先生的博客-CSDN博客 二、GAN概念概述 什么是生成式学习什么是 GAN我们为什么要使用它与自动编码器有什么区别GAN模型的基本训练算法是什么我们如何让它学习有意义的表示它在什么计算机视觉应用中有用如何为她/他的问题设计一个 我们将解决所有这些问题以及很多问题在本评论系列文章中我们将重点介绍用于计算机视觉应用的大量 GAN。具体来说我们将慢慢建立导致生成对抗网络GAN发展的想法和原则。我们将遇到不同的任务例如条件图像生成3D对象生成视频合成。 让我们从回顾第一部分的内容开始 通常数据生成方法存在于从计算机视觉到自然语言处理的各种现代深度学习应用程序中。在这一点上我们能够通过人眼产生几乎无法区分的生成数据。生成学习大致可分为两大类 a变分自动编码器VAEb生成对抗网络GAN。 2.1 为什么不只是自动编码器 很多人仍然想知道为什么研究人员让GANs变得如此困难。为什么不直接使用自动编码器并最小化均方误差使目标图像与预测图像匹配原因是这些模型产生的结果很差对于图像生成。实际上由于平均仅最小化距离会产生模糊的预测。请记住L1 或 L2 损失是标量它是所有像素的平均数量。直观地说这是一个类似于应用平滑过滤器的概念该滤镜根据平均值对像素值求平均值。其次不可能以这种方式产生多样性如变分自动编码器。这就是为什么研究界的注意力采用了GAN模型。请记住这不是比较而是GAN方法的区别。 那么让我们从头开始对抗式学习到底是什么 2.2 什么是对抗式学习 我们已经通过实验验证深度学习模型极易受到攻击这些攻击基于测试时对模型输入的微小修改。假设您有一个经过训练的分类器该分类器可以使用正确的标签正确识别图像中的对象。 可以构建一个对抗性示例这是一个视觉上无法区分的图像。这些对抗图像可以通过噪声扰动来构建。但是图像分类不正确。为了解决这个问题一种常见的方法是将对抗性示例注入训练集对抗性训练。因此可以提高神经网络的鲁棒性。这种类型的示例可以通过添加噪声、应用数据增强技术或沿与梯度相反的方向扰动图像以最大化损失而不是最小化损失来生成。尽管如此这些类型的技术还是有点手工制作的所以总会有不同的扰动可以用来欺骗我们的分类器。现在让我们反过来想 如果我们对拥有一个健壮的分类器不感兴趣而是对替换对抗性示例的手工制作过程感兴趣该怎么办通过这种方式我们可以让网络创建视觉上吸引人的不同示例。所以这正是生成术语发挥作用的地方。我们专注于生成数据集的代表性示例而不是使网络对扰动更健壮让我们使用另一个网络为我们完成这项工作。您如何调用生成类似于训练示例的现实示例的网络当然是发电机 三、香草 GAN生成对抗网络 2014 3.1 生成机 由于生成器只是一个神经网络我们需要为它提供一个输入并决定输出是什么。在最简单的形式中输入是从小范围的实数分布中采样的随机噪声。这就是我们所说的潜在空间或连续空间。但是由于我使用“随机”一词这意味着每次从随机分布中采样时我都会得到不同的向量样本。这就是随机性的意义所在。这样的输入将为我们提供非确定性的输出。因此我们可以生成的样本数量没有限制随机性也是您在与生成对抗学习GAN相关的论文中看到期望值符号的原因。输出将是用于生成图像的生成图像或我们想要生成的内容。主要区别在于现在我们专注于生成特定分布的代表性示例即狗、绘画、街道图片、飞机等。 3.2 鉴别器 鉴别器只不过是分类器。但是我们不是在正确的类中对图像进行分类而是专注于学习类的分布假设生成建筑物图像。因此由于所需类是已知的我们希望分类器量化该类对实际类分布的代表性。这就是为什么鉴别器输出单个概率的原因其中 0 对应于虚假生成的图像1 对应于我们分布中的真实样本。 理想的发生器会产生无法区分的示例这意味着输出为 0.5。在博弈论方面这个对手被称为2人最小最大游戏。在博弈论中最小-最大博弈或纳什均衡是涉及两个玩家的非合作博弈的数学表示其中假设每个玩家都知道另一个玩家的均衡策略并且没有玩家通过改变自己的策略而获得任何好处。 生成器 G 试图生成接近真实分布的假示例以欺骗鉴别器 D而 D 试图确定分布的起源。规则GAN的核心思想是基于通过D的“间接”训练该训练也在动态更新。 3.3 生成对抗训练方案 基于上述原则第一个GAN于2014年推出。了解生成式学习的训练过程很重要。一个关键的见解是间接训练这基本上意味着生成器的训练不是为了最小化到特定图像的距离而只是为了欺骗鉴别器这使模型能够以无监督的方式学习。最后请注意训练生成器时的基本事实在输出中为 1如真实图像即使示例是假的。发生这种情况是因为我们的目标只是愚弄D。下图说明了此过程 生成器训练方案的图解 另一方面判别器使用真实图像和生成的图像来区分它们将真实图像的预测推到1真实将生成图像的预测推到0假。在此阶段请注意生成器未经过训练。 鉴别器训练方案示意图 GAN的作者提出了一种由G和D的4个全连接层组成的架构。当然G 输出图像的一维向量D 输出 10 范围内的标量。 3.4 GAN培训计划在行动 代表性赋予我们控制思想的权力。在看到代码之前了解数学是很好的。因此给定鉴别器 D、生成器 G、vale 函数 V基本的双人最小值游戏可以定义为M 是样本 在实践中回想一下期望值的离散定义它看起来像这样 事实上鉴别器执行梯度上升而生成器执行梯度下降。这可以通过检查上述方程的生成器部分的差异来观察到。请注意D 需要访问真实和虚假数据而 G 无法访问真实图像。让我们看看这个美丽而惊人的想法在真正的python代码中实践 import torchdef ones_target(size):For real data when training D, while for fake data when training GTensor containing ones, with shape sizereturn torch.ones(size, 1)def zeros_target(size):For data when training DTensor containing zeros, with shape sizereturn torch.zeros(size, 1)def train_discriminator(discriminator, optimizer, real_data, fake_data, loss):N real_data.size(0)# Reset gradientsoptimizer.zero_grad()# Train on Real Dataprediction_real discriminator(real_data)# Calculate error and backpropagatetarget_real ones_target(N)error_real loss(prediction_real, target_real)error_real.backward()# Train on Fake Dataprediction_fake discriminator(fake_data)# Calculate error and backpropagatetarget_fake zeros_target(N)error_fake loss(prediction_fake, target_fake)error_fake.backward()# Update weights with gradientsoptimizer.step()return error_real error_fake, prediction_real, prediction_fakedef train_generator(discriminator, optimizer, fake_data, loss):N fake_data.size(0)# Reset the gradientsoptimizer.zero_grad()# Sample noise and generate fake dataprediction discriminator(fake_data)# Calculate error and backpropagatetarget ones_target(N)error loss(prediction, target)error.backward()optimizer.step()return error 在 Mnist 中生成的香草 GAN 图像 3.5 GAN 中的模式折叠 一般来说GAN容易出现所谓的模式崩溃问题。后者通常是指无法充分表示所有可能输出的像素空间的生成器。相反G只选择几个与噪声图像相对应的有限影响模式。通过这种方式D能够区分真假并且G的损失变得非常不稳定由于梯度爆炸。我们将在我们的系列中多次重温模式崩溃因此掌握基本原理至关重要。 基本上G 卡在一个参数设置中它总是发出相同的点。发生崩溃后鉴别器了解到这个单点来自发生器但梯度下降无法分离相同的输出。结果D的梯度将生成器产生的单个点永远推到空间周围。 模式崩溃可能会以相反的方式发生如果在训练鉴别器时卡在局部最小值并且他无法找到最佳策略那么生成器很容易欺骗当前的鉴别器在几次迭代中。 最后我会用简单的术语来解释模式崩溃2 人游戏的状态其中一名玩家获得了几乎不可逆转的优势这使得很难输掉游戏。 四、条件 GAN条件生成对抗网络 2014 条件概率是给定另一个事件发生的概率的度量。在这项工作中介绍了GAN的条件版本。基本上条件信息可以通过简单地输入任何“额外”数据来利用例如图像标签/标签等。通过根据辅助信息调节模型可以指导数据生成过程。 根据生成任务可以通过将信息输入 D 和 G 作为通过级联的额外输入来执行条件反射。在诸如医学图像生成等其他领域中条件可能是人口统计信息即年龄身高或语义分割。 从cGAN论文中获取的GAN调节的视觉表示 五、DCGAN使用深度卷积生成对抗网络的无监督表示学习 2015 DCGAN是第一个卷积GAN。深度卷积生成对抗网络DCGAN是GAN的拓扑约束变体。为了减少每层的参数数量以及使训练更快、更稳定引入了以下原则 将任何池化层替换为 D 中的跨步卷积。这是合理的因为池化是固定操作。相比之下跨步卷积也可以看作是学习池化操作这增加了模型的表现能力。缺点是它还增加了可训练参数的数量。 在 G 中使用转置卷积。由于采样噪声是一维向量因此通常将其投影并重塑为具有大量特征图的小二维网格即1x2。这就是为什么G使用转置卷积来增加空间维度通常将它们加倍并减少特征图的数量。 在 G 和 D 中使用批量归一化。批量归一化可根据层中每个批次的统计数据稳定训练并启用具有更高学习率的训练。 删除完全连接的隐藏层以获得更深的架构以减少训练参数的数量和训练时间。 在 G 中对所有图层使用 ReLU 激活但输出除外输出在图像范围内生成值 [-11] 在所有层的鉴别器中使用 LeakyReLU 激活。这两个激活函数都是非线性的使模型能够学习更复杂的表示。 D 的特征映射比比较方法K 均值少。一般来说对于 G 和 D不清楚哪个模型应该更复杂因为它与任务相关。在这项工作中G 比 D 具有更多的可训练参数。但是这种设计选择背后没有理论依据。 DCGAN的无条件生成器 结果和讨论 让我们观察 MNIST 数据集中 DCGAN 模型的输出给定一个简单的实现 使用 DCGAN 提高图像质量 使用卷积模块输出数字更清晰包含的噪声更少。如果你想在实践中观察模式崩溃你可以尝试在CIFAR-10中训练DCGAN只使用一个类 在CIFAR10中观测DCGAN中的模式崩溃使用一个类 基本上你从噪音开始。然后您有一个公平的表示它开始看起来像所需的图像。然后轰生成器从字面上折叠它是重复的方形图案。发生了什么事模式崩溃. 总而言之DCGAN是大多数下一个架构所基于的标准卷积基线。与标准GAN相比它在视觉质量模糊度较小和训练稳定性方面都显示出很大的改进。然而正如我们将看到的对于像CIFAR-10的无条件图像生成这样的大尺度它有很大的空间来创造伟大的工程魔法。最后让我们看一下在整个 CIFAR-10 数据集中用所有类训练 DCGAN 的结果。 DCGAN在CIFAR10 很公平对吧 六、Info GAN通过信息最大化生成对抗网络进行表征学习2016 我们已经讨论过 cGAN 的条件变量通常是类标签或标签。但是有两个问题没有答案 a与噪声相比有多少信息被传递到生成过程中以及 b位于潜在空间中的完全无监督条件可以帮助我们在发电机空间中“行走”吗 这项工作通过解开的表征和相互信息来解决这些问题。 6.1 解开的表示 解缠表示是一种无监督学习技术它将每个特征分解解缠为狭义定义的变量并将它们编码为单独的维度。如原始Info GAN论文中所述解开表示对于需要了解数据重要属性面部识别对象识别的自然任务很有用。就我个人而言我喜欢将解开表示视为数据较低维度的解码信息。因此有人认为一个好的生成模型会自动学习解开的表示。 动机是合成观察到的数据的能力具有某种形式的理解。基本上我们希望模型能够发现独立和关键的无监督表示。这是通过引入一些独立的连续/分类变量来实现的。问题是是什么让这些条件变量通常称为潜在代码与GAN中的现有输入噪声不同相互信息最大化 6.2 GAN中的互信息 在通用GAN中生成器可以自由忽略额外的潜在条件变量。这可以通过找到满足以下条件的解决方案来实现Px|c Px。为了解决琐碎代码的问题提出了一种信息论正则化。更具体地说潜在代码c和生成器分布Gzc之间应该有高度的互信息。 两个随机变量条件和输出的互信息 MI 是它们之间相互依赖性的定量度量。从字面上看它通过观察生成器的输出来量化获得的有关条件变量的“信息量”。因此如果 I 是给定生成器输出的代码信息量则Ic |Gz c应该很高。MI有一个直观的解释它是在观察条件随机变量时减少生成的输出中的不确定性。 因此我们希望Pc|x要高小熵。这意味着给定观察到的生成的图像x我们很有可能观察到该条件。换句话说潜在变量c中的信息不应该在生成过程中丢失。接下来的问题自己出现了我们如何估计条件分布Pc|x?让我们训练一个神经网络来模拟所需的分布 6.3 实现条件互信息 由于添加另一个网络来模拟此概率会增加复杂性因此作者建议通过添加输出此概率的附加层使用现有的鉴别器对其进行建模。因此D还有另一个需要学习的目标最大化互信息这个额外的目标就是它在标题中被称为互信息正则化类似于权重衰减的原因。 因此给定Q具有D层加上额外分类层的模型可以定义添加到GAN目标中的辅助损失L_IGQ。最后我们对GAN的训练过程没有变化几乎没有额外的开销计算上没有额外的目标。这就是 InfoGan 如此绝妙的想法 6.4 结果 改变连续条件变量说明我们可以使用低维解缠表示在图像的高维空间中导航。实际上观察到表征学习会导致有意义的表征例如旋转和厚度。代码可以在这里找到。 旋转和厚度的无监督建模InfoGAN “值得注意的是在潜在变量中生成器不会简单地拉伸或旋转数字而是调整其他细节如厚度或笔触样式以确保生成的图像看起来很自然。” ~ 信息甘 七、改进的 GAN 训练技术 2016 这是一项伟大的实验工作总结了可用于自身问题的训练技巧以稳定 GAN 中的训练。由于GAN训练包括寻找两个玩家的纳什均衡梯度下降因此对于许多任务游戏可能无法收敛。基本上纳什均衡是一个没有一个球员可以通过改变其权重来提高的点。主要原因是成本函数通常是非凸的参数是连续的。最后参数空间是极高维的。 为了更好地理解这一点请考虑预测分辨率为128x12816384像素的图像的任务就像试图在R16384的复杂世界中寻找路径一样。高维路径称为流形基本上是满足我们目标的生成图像的集合。如果我们的目标是学习人脸那么我们的目标是找到世界上代表人脸的一小部分。在这条路径中移动就是在表示人脸的向量解决方案内移动。我強烈推薦英伟達的這個視頻。这项工作的代码可以在这里找到。现在让我们开始训练魔法吧 7.1 功能匹配 基本上生成器被训练为匹配鉴别器中间层上特征的期望值。新目标要求生成器生成与真实数据的统计信息中间表示匹配的数据。通过以这种方式训练鉴别器我们要求D找到那些对真实数据与当前模型生成的数据最具区别的特征。到目前为止的经验结果表明特征匹配在常规GAN变得不稳定的情况下确实有效。为了测量距离采用了L2范数。 7.2 小批量歧视 理念小批量判别使我们能够非常快速地生成具有视觉吸引力的样品。 动机由于鉴别器独立处理每个示例因此其梯度之间没有协调因此没有机制来告诉生成器的输出彼此更加不同。 小批量区分的工作原理。 解决方案允许鉴别器组合查看多个数据示例并执行我们所说的小批量判别。如上图所示中间特征向量乘以 3D 张量得到由 M1 表示的矩阵序列。基于矩阵最终目标是量化每个数据对的成对相似性的度量。直观地说现在每个样本都会有额外的信息oxi表示与其他数据样本相比的相似性。 事实上它们将小批量层的输出相似度 o(xi) 与其输入的中间特征 f(xi) 连接起来。然后结果被输入到鉴别器的下一层。因此鉴别器的任务仍然有效地将单个示例分类为真实数据或生成数据但它现在能够使用小批量中的其他示例作为辅助信息。然而这种方法的计算复杂度巨大因为它需要所有样本之间的成对相似性。 7.3 历史平均体重 参数的历史平均值可以在线更新因此此学习规则可以很好地扩展到较长的时间序列。它对于梯度下降可能失败的低维问题非常有用。如果你曾经看过动量是如何工作的它的工作原理是相同的只是它只解释了之前的梯度。历史权重平均大致相同但过去有多个时间步长。 7.4 单侧标签平滑和虚拟批次归一化 仅在正标签真实数据样本中将标签平滑化为α而不是 0。这里不多说。与标准批次规范化相反在虚拟批次归一化中每个示例 x 都基于在参考批次示例上收集的统计信息进行规范化。动机是批量规范化导致输入示例 x 的神经网络输出高度依赖于同一小批量的其他输入。为了应对这种情况选择一次参考批次的示例并在训练期间保持固定。但是引用批处理仅使用其自己的统计信息进行规范化因此计算成本很高。 7.5 初始分数评估图像质量 该文没有逐一检查视觉质量而是提出了一种新的定量方法来评估模型。这可以简单地描述为两步方法首先使用预先训练的分类器InceptionNet推断生成图像的标签条件概率。然后测量分类器的KL散度与无条件概率的比较。为此我们不需要志愿者来评估我们的模型我们可以量化模型的分数。 7.6 半监督学习 可以使用任何标准分类器进行半监督学习只需将来自 GAN 生成器 G 的样本添加到我们的数据集中用新的“生成”类标记它们或者没有额外的类因为预训练分类器以低熵高概率即人类 97/100识别标签条件概率。 7.7 结果和讨论 摘自原始出版物 基于所提出的技术GANs首次能够学习可区分的特征。图示的动物特征包括眼睛和鼻子。然而这些特征并没有正确地组合成具有真实解剖结构的动物。尽管如此这是朝着GAN发展迈出的一大步。总而言之这项基础工作的结果是 基于特征匹配的思想可以生成人类认可的全局统计数据。发生这种情况是因为人类视觉系统对图像统计数据有很强的适应性可以帮助推断图像所代表的类别而它可能对对图像解释不太重要的局部统计数据不太敏感。但是我们将在下一篇文章中看到更好的模型尝试使用不同的技术来学习它们。 此外通过让鉴别器D对图像中显示的对象进行分类作者试图偏置D从而开发内部表示。后者强调与人类强调的相同特征。这种效应可以理解为迁移学习的一种方法并且可以更广泛地应用。 八、结论 在本文中我们以生成学习的思想为基础。我们引入了对抗学习和GAN训练方案的概念。然后我们讨论了模态崩溃、条件生成和基于互信息的解缠表示。基于观察到的训练问题我们介绍了训练GAN的基本技巧。最后我们在训练网络和实际观察到的模式崩溃时看到了一些结果。有关最近发布的具有多个 GAN 以进行大量实验的出色存储库请访问此存储库。 如果您想要一门全新的 GAN 课程我们强烈推荐 Coursera 专业化。如果您想建立自动编码器的背景我们还建议以下Udemy课程。 到现在为止您开始意识到我们声称只是第一部分是大多数教程声称的完整GAN指南。但是我谦虚地请您考虑检查该系列的其余部分还有更多有趣的东西。每天一篇 GAN 文章就足够了 在下一篇文章中我们将看到更高级的架构和训练技巧这些技巧导致了更高分辨率的图像和 3D 对象生成。 } 九、引用 Goodfellow I. Pouget-Abadie J. Mirza M. Xu B. Warde-Farley D. Ozair S. …和Bengio Y. 2014.生成对抗网络。神经信息处理系统进展第2672-2680页。Mirza M. Osindero S. 2014.条件生成对抗网络。arXiv预印本arXiv1411.1784。 Radford A. Metz L. Chintala S. 2015.使用深度卷积生成对抗网络的无监督表示学习。arXiv预印本arXiv1511.06434。Chen X. Duan Y. Houthooft R. Schulman J. Sutskever I. Abbeel P. 2016.Infogan通过信息最大化生成对抗网络进行可解释的表示学习。神经信息处理系统进展第2172-2180页。SalimansT.GoodfellowI.ZarembaW.CheungV.RadfordA.和ChenX.2016。改进了训练甘斯的技术。神经信息处理系统进展第2234-2242页。