GAN网络理论和实验(一)

news2024/11/24 0:40:49

文章目录

一、说明

对发布于2014年的关于GAN的原始描述,我们精读此文,对原始的GAN网络概念进行追溯,对于概念的原始解读,是grasp该模型的最扎实依据。本文力图尊重原著的意图,适当加入读书笔记。在该文的续文中,将介绍实际用处和结果。

二、摘要

我们引入了一种通过对抗过程估计生成模型的新颖框架,其中同时训练两个模型:生成模型 G 捕获数据分布,判别模型 D 评估样本源自训练数据而不是样本的可能性。 G. G 的训练目标是增加 D 出错的概率。该框架相当于两个玩家之间的极小极大游戏。在任意函数 G 和 D 的范围内,存在一个唯一的解决方案,其中 G 复制训练数据分布,并且 D 处处等于 1/2。当 G 和 D 被构造为多层感知器时,整个系统可以使用反向传播进行训练,而无需在训练或样本生成期间使用马尔可夫链或展开的近似推理网络。该框架的有效性通过对生成的样本的定性和定量评估来展示。

三、对架构的介绍

深度学习旨在揭示复杂的分层模型。表示各种数据类型的概率分布的模型在人工智能应用中至关重要,包括自然图像、语音音频波形和自然语言语料库中的符号。深度学习最重要的成就涉及判别模型,该模型通常将高维感官输入映射到类别标签。这些成功取决于使用分段线性单元的反向传播和丢失算法。具有稳定梯度的模型尤其成功。然而,由于近似最大似然估计和相关方法所需的复杂概率计算的困难,以及在生成框架中利用分段线性单元的优势的挑战,深度生成模型的影响较小。为了应对这些挑战,我们提出了一种新的生成模型估计技术。在对抗网络框架中,生成模型与对手竞争:经过训练以确定样本来自模型分布还是实际数据分布的判别模型。生成模型类似于造假者试图生产和传播无法检测的假币,而判别模型则类似于警察,致力于检测假币。这种竞争促使双方改进方法,直到假币与真币无法区分。

该框架可以为各种模型和优化技术生成特定的训练算法。在本文中,我们研究了一种独特的场景,其中生成模型通过多层感知器引导随机噪声来创建样本,而判别模型同样是多层感知器。我们将这种情况称为对抗网络。在这里,我们可以仅使用经过验证的反向传播和 dropout 算法 [17] 来训练这两个模型,并仅通过前向传播从生成模型生成样本。不需要近似推理或马尔可夫链。

四、相关工作

具有潜在变量的有向图模型的替代方案包括具有潜在变量的无向图模型,例如受限玻尔兹曼机(RBM)、深度玻尔兹曼机(DBM)及其各种衍生物。这些模型将相互作用表示为非标准化潜在函数的乘积,这些函数通过随机变量所有状态的全局求和/积分进行标准化。除了最简单的情况外,配分函数及其梯度通常很难处理,但可以使用马尔可夫链蒙特卡罗 (MCMC) 方法进行估计。然而,由于混合问题,依赖 MCMC 的学习算法面临着重大挑战。

深度置信网络 (DBN) 是具有单个无向层和多个有向层的混合模型。尽管 DBN 具有快速近似逐层训练标准,但它们也遇到了无向和有向模型固有的计算挑战。

其他不近似或限制对数似然的建议标准包括分数匹配和噪声对比估计(NCE)。两种方法都需要通过分析指定学习到的概率密度直至归一化常数。在许多具有多层潜在变量的复杂生成模型中,例如 DBN 和 DBM,导出易于处理的非标准化概率密度是不可行的。去噪自动编码器和收缩自动编码器等模型的学习规则与应用于 RBM 的分数匹配非常相似。 NCE 采用判别性训练标准来拟合生成模型,使用生成模型本身来区分生成的数据和来自固定噪声分布的样本。一旦模型学会了基本模式,这种方法就会导致学习速度显着减慢。

当两个模型都是多层感知器时,对抗网络的应用最为有效。为了了解生成器在数据 x 上的分布 pg,我们在输入噪声变量 pz(z) 上建立先验,然后将到数据空间的映射定义为 G(z; θg),其中 G 是由多层感知器表示的可微函数参数为 θg。此外,我们定义了另一个输出单个标量的多层感知器 D(x; θd)。 D(x)表示x源自数据而不是pg的概率。我们训练 D 以最大化正确标记 G 中的训练样例和样本的概率,同时训练 G 以最小化 log(1 − D(G(z)))。
换句话说,D 和 G 玩以下带有价值函数 V (G, D) 的两人极小极大游戏:

在这里插入图片描述

在下一节中,我们对对抗网络进行理论分析,证明只要 G 和 D 具有足够的容量,即在非参数限制下,训练准则就可以恢复数据生成分布。有关此方法的更非正式和指导性的解释,请参阅图 1。实际上,我们应用迭代数值方法来实现此过程。在训练的内循环中完全优化 D 在计算上是不可行的,并且会导致有限数据集的过度拟合。因此,我们选择交替优化 D 的 k 步和优化 G 的一步,确保在 G 逐渐演化的情况下 D 保持接近其最优解。这种方法类似于 SML/PCD 训练如何将马尔可夫链样本从一个学习阶段保留到下一阶段,从而无需在每个学习周期中建立马尔可夫链。算法 1 详细介绍了该方法。
此外,方程 1 可能并不总是为 G 的有效学习提供足够的梯度。在早期阶段,当 G 的性能低于标准时,D 可以轻松地忽略样本,因为它们与训练数据明显不同。在这种情况下,log(1 − D(G(z))) 趋于达到饱和。我们不是指示 G 最小化 log(1 − D(G(z))),而是指示它最大化 log D(G(z))。这个替代目标导致 G 和 D 的动态达到相同的平衡,但在学习过程开始时产生明显更强的梯度。

在这里插入图片描述

图 1:通过更新判别分布(D,由蓝色虚线表示)来训练生成对抗网络,以区分来自数据生成分布(黑色虚线) p x p_x px 的样本和来自生成分布的样本 p g ( G ) p_g(G) pg(G)(显示为绿色实线)。下面的水平线表示均匀采样的域。上面的水平线对应于 ( x ) 的定义域的一部分。向上的箭头说明了映射 x = G ( z ) x = G(z) x=G(z) 如何将非均匀分布 p g p_g pg 应用到变换后的样本,其中 G 在 p g p_g pg 的高密度区域收缩,在低密度区域扩张。 (a) 接近收敛时,考虑一个对抗对: p g p_g pg 类似于 p d a t a p_{data} pdata 并且 D 是一个稍微准确的分类器。 (b) 在算法的内循环中,D 被训练来区分样本和数据,收敛为 D ∗ ( x ) = p d a t a ( x ) p d a t a ( x ) + p g ( x ) D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g( x)} D(x)=pdata(x)+pg(x)pdata(x)。 © 更新 G 后,D 的梯度将 G(z) 引向更有可能被分类为数据的区域。 (d) 经过多个训练步骤后,如果 G 和 D 拥有足够的容量,它们将达到一个两者都无法提高的点,因为 p g = p d a t a p_g = p_{data} pg=pdata。此时,判别器无法区分两个分布,即 D ( x ) = 1 2 D(x) = \frac{1}{2} D(x)=21

五、理论推演

生成器 G 隐式定义概率分布 p g p_g pg 作为 z ∼ p z z \sim p_z zpz 时获得的样本 G(z) 的分布。因此,我们的目标是在提供足够的容量和训练时间的情况下,算法 1 收敛到 p d a t a p_{data} pdata 的准确估计器。本节中的分析是在非参数背景下进行的,这意味着我们通过检查概率密度函数空间内的收敛性来考虑具有无限容量的模型。
在 4.1 节中,我们将证明当 p g = p d a t a p_g = p_{data} pg=pdata 时,极小极大游戏达到全局最优。随后,在4.2节中,我们将确定算法1有效地优化了方程1,从而达到了预期的结果。

算法 1:生成对抗网络的小批量随机梯度下降训练。应用于鉴别器的步骤数 k 是一个超参数。我们在实验中使用了 k = 1,这是最便宜的选择。
在这里插入图片描述

5.1 p g = p d a t a p_g = p_{data} pg=pdata的全局最优性

我们首先检查固定生成器 G 的最佳判别器 D。
命题1.当G固定时,最优判别器D为
D G ∗ ( x ) = p d a t a ( x ) p d a t a ( x ) + p g ( x )      ( 2 ) D^∗_G(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g(x)} \;\;(2) DG(x)=pdata(x)+pg(x)pdata(x)(2)

证明。给定任何生成器 G,判别器 D 的训练标准是最大化
数量 V (G, D)
在这里插入图片描述

对于任何 ( a , b ) ∈ R 2 ∖ { ( 0 , 0 ) } (a, b) \in \mathbb{R}^2 \setminus \{(0, 0)\} (a,b)R2{(0,0)},函数 y  映射到 a log ⁡ ( y ) + b log ⁡ ( 1 − y ) y \ 映射到 a \log(y) + b \log(1 - y ) y 映射到alog(y)+blog(1y) a a + b \frac{a}{a+b} a+ba 处达到 [0, 1] 的最大值。判别器不需要在 Supp ( p d a t a ) ∪ Supp ( p g ) \text{Supp}(p_{data}) \cup \text{Supp}(p_g) Supp(pdata)Supp(pg) 之外定义,这将得出证明。请注意,D 的训练目标可以解释为最大化估计条件概率 P ( Y = y ∣ x ) P(Y = y|x) P(Y=yx) 的对数似然,其中 Y 表示 x 是否来自 p d a t a p_{data} pdata(其中 y = 1 )或来自 p g p_g pg (y = 0)。方程中的极小极大游戏。 1 现在可以重新表述为:
在这里插入图片描述
定理 1. 虚拟训练标准 C(G) 的全局最小值达到当且仅当
p g = p d a t a p_g = p_{data} pg=pdata。此时,C(G) 的值达到 − l o g 4 − log 4 log4

证明。对于 p g = p d a t a p_g = p_{data} pg=pdata D G ∗ ( x ) = 1 / 2 D^*_G(x) = 1/2 DG(x)=1/2,(考虑方程 2)。因此,通过检查等式 4,当在 D G ∗ ( x ) = 1 / 2 D^*_G(x) = 1/2 DG(x)=1/2的时候
,我们发现 C ( G ) = l o g 1 / 2 + l o g 1 / 2 = − l o g 4 C(G) = log 1/2 + log 1/2 = − log 4 C(G)=log1/2+log1/2=log4。要看出这是 C(G) 的最佳可能值(仅在 p g = p d a t a p_g = p_{data} pg=pdata 时达到),请观察
在这里插入图片描述
并从 C ( G ) = V ( D G ∗ , G ) C(G) = V (D^*_G, G) C(G)=V(DG,G),我们得到:
在这里插入图片描述

其中 KL 是 Kullback-Leibler 散度。我们在前面的表达中认识到詹森——模型分布与数据生成过程之间的香农散度:

在这里插入图片描述
由于两个分布之间的 Jensen-Shannon 散度始终为非负,并且仅当分布相同时才为零,因此已证明 C ∗ = − log ⁡ ( 4 ) C^* = -\log(4) C=log(4) C ( G ) C(G ) C(G),唯一的解决方案是 p g = p d a t a p_g = p_{data} pg=pdata,这意味着生成模型完美地复制了数据生成过程。

5.2 算法1的收敛性

命题2.如果G和D有足够的容量,并且在算法1的每一步,判别器
允许达到给定 G 的最优值,并且更新 p g p_g pg 以改进标准
在这里插入图片描述
这样, p g p_g pg收敛于 p d a t a p_{data} pdata
证明。将 V ( G , D ) = U ( p g , D ) V(G, D) = U(p_g, D) V(G,D)=U(pg,D) 视为 p g p_g pg 的函数,如上述标准中所建立的。观察 U ( p g , D ) U(p_g, D) U(pg,D) p g p_g pg 中是凸的。凸函数上界的导数包括达到最大值时的导数。换句话说,如果 f ( x ) = sup ⁡ α ∈ A f α ( x ) f(x) = \sup_{\alpha \in A} f_\alpha(x) f(x)=supαAfα(x) 并且每个 f α ( x ) f_\alpha(x) fα(x) 在 x 上都是凸的,那么 ∂ f β ( x ) ∈ ∂ f \partial f_\beta( x) \in \partial f fβ(x)f 如果 β = arg ⁡ sup ⁡ α ∈ A f α ( x ) \beta = \arg\sup_{\alpha \in A} f_\alpha(x) β=argsupαAfα(x)。这相当于在给定相应的 G G G 的情况下,在最优 D D D 处对 p g p_g pg 执行梯度下降更新。 sup ⁡ D U ( p g , D ) \sup_D U(p_g, D) supDU(pg,D) p g p_g pg 中是凸的,具有唯一的全局最优值,如定理 1 所示。因此,通过 p g p_g pg 的足够小的更新,它会收敛到 p x p_x px,从而完成证明。

在实际应用中,对抗网络通过函数 G ( z ; θ g ) G(z;\theta_g) G(z;θg)表示一组受约束的 p g p_g pg分布,并且优化的是 θ g \theta_g θg而不是 p g p_g pg本身。使用多层感知器定义 G G G 在参数空间中引入了许多临界点。尽管如此,多层感知器在现实场景中令人印象深刻的性能表明,尽管缺乏理论保证,它们仍然是一个可行的模型。

六、实验

我们使用一系列数据集训练对抗网络,包括 MNIST[23]、多伦多人脸数据库(TFD) [28] 和 CIFAR-10 [21]。发电机网络使用整流器线性激活的混合[19,9] 和 sigmoid 激活,而判别器网络使用 maxout [10] 激活。dropoff [17]应用于训练鉴别器网络。虽然我们的理论框架允许使用生成器中间层的丢失和其他噪声,我们仅使用噪声作为输入生成器网络的最底层。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1797883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保姆级教程:以SAR图像目标检测为例

一、项目出发点 AI Studio为我们提供了免费的GPU资源,当我们在NoteBook环境中把代码调试成功后,通常一个训练任务耗时较长,而Notebook离线运行有时长限制,一不小心就容易被kill掉。 如何解决这一问题? 后台任务帮到…

1782java英语陪学记词系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java英语陪学记词系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助采用了java设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…

鸿蒙嵌入式设备开发之hello world

1. 环境搭建 目前鸿蒙设备的开发环境,可以分为2个部分:Windows调试环境,和Linux编译环境。 其中, Linux环境负责编译代码,并生成鸿蒙的包。Windows环境负责连接设备,进行烧录和调试。 特别注意&#xf…

draw.io 如何设置图形圆角?

draw.io 如何设置图形圆角呢? draw.io 是一款强大的,免费的开源工具,我经常用它来画流程图,但是我发现 draw.io 对于图形圆角的设置,只提供了一个设置选项,如下图: 当你选中某个图形&#xff0…

JustAuth Illegal state xx问题

排查 起因 服务上线生产环境后使用飞书登录有些时候会登录失败,查看日志出现以上错误Illegal state [FEISHU],但是测试环境没有出现这个情况 排查 经过排查发现是JustAuth 报的错 分析出现原因 在JustAuth找到出现原因和解决方案 原文地址:异常相关问题 | JustAuth 异常…

用大模型实现PPT可视化几种思路

https://zhuanlan.zhihu.com/p/700685802 背景 前面一篇文章已经介绍了如何根据用户输入,用大模型实现内容检索、分析、脑图可视化的链路。然而往往投研团队需要针对重要新闻做组内分析解读,需要用ppt的方式来展现;那么优美可能让大模型直…

【全开源】Java同城服务同城信息同城任务发布平台小程序APP公众号源码

📢 连接你我,让任务触手可及 🌟 引言 在快节奏的现代生活中,我们时常需要寻找一些便捷的方式来处理生活中的琐事。同城任务发布平台系统应运而生,它为我们提供了一个高效、便捷的平台,让我们能够轻松发布…

【最新鸿蒙应用开发】——沙箱机制是什么?作用?场景?

沙箱机制 1. 什么是沙箱机制? 1.1. 概念 在操作系统当中,沙箱机制(Sandboxing)是一种安全机制,用于限制程序代码的访问权限,防止恶意软件对系统造成破坏。在沙箱环境中,程序只能访问特定的资…

Docker 学习总结(83)—— 配置文件daemon.json介绍及优化建议

一、daemon.json 文件概述 daemon.json是Docker守护进程的配置文件,它允许系统管理员自定义Docker守护程序的行为。此文件通常位于/etc/docker/目录下。通过修改daemon.json,可以调整Docker守护进程的多种设置,包括网络配置、日志记录、存储驱动等。 二、daemon.json 文件结…

YoloV8改进策略:Block篇|MobileNetV4——移动生态系统的通用模型

文章目录 摘要1、引言2、相关工作3、硬件无关的帕累托效率4、通用反向瓶颈5、Mobile MQA6、MNv4模型设计6.1、精炼NAS以增强架构6.2、MNv4模型的优化 7、结果7.1、ImageNet分类 8、增强蒸馏方案9、结论10、致谢A、搜索空间细节B、基准测试方法论C、ImageNet-1k分类任务的训练设…

Linux之线程及线程安全详解

前言:在操作系统中,进程是资源分配的基本单位,那么线程是什么呢?线程是调度的基本单位,我们该怎么理解呢? 目录 一,线程概念理解 二,Linux里面的线程原理 三,为什么要…

哈夫曼树的构造,哈夫曼树的存在意义--求哈夫曼编码

一:哈夫曼树的构造 ①权值,带权路径长度。 ②一组确定权值的叶子节点可以构造多个不同的二叉树,但是带权路径长度min的是哈夫曼树 ③算法基本思想及其实操图片演示 注:存储结构和伪代码 1 初始化: 构造2n-1棵只有一个根节点的二叉树,parent=rchild=lchild=-1; 其中…

忆恒创源国产系列新品 —— PBlaze7 7A40 取得 PCI-SIG 兼容性认证

在此前报道中,我们曾预告了忆恒创源国产系列 PCIe 5.0 SSD 新品 —— PBlaze7 7A40,今天,这款 SSD 已经顺利通过 PCI-SIG 的严格测试并出现在 Integrators List 集成商列表当中,标志着距离 PBlaze7 7A40 的正式发布又近了一步。 正…

Spring Boot框架基础

文章目录 1 Spring Boot概述2 Spring Boot入门2.1 项目搭建2.2 入门程序 3 数据请求与响应3.1 数据请求3.2 数据响应 4 分层解耦4.1 三层架构4.2 控制反转4.3 依赖注入 5 参考资料 1 Spring Boot概述 Spring是Java EE编程领域的一个轻量级开源框架,是为了解决企业级…

乐高小人分类项目

数据来源 LEGO Minifigures | Kaggle 建立文件目录 BASE_DIR lego/star-wars-images/ names [YODA, LUKE SKYWALKER, R2-D2, MACE WINDU, GENERAL GRIEVOUS ] tf.random.set_seed(1)# Read information about dataset if not os.path.isdir(BASE_DIR train/):for name in …

Edge 工作区是什么?它都有哪些作用?

什么是工作区 Edge 工作区是什么?它是微软 Edge 浏览器中的一个功能,在帮助用户更好地组织和管理他们的浏览会话。通过工作区,用户可以创建多个独立的浏览环境,每个工作区内包含一组相关的标签页和浏览器设置。这使得用户能够根据…

asp.net core使用httpclient

主要讲解常见的get请求和post请求 GET var client new HttpClient(); //3秒钟不响应就超时 client.TimeoutTimeSpan.FromSeconds(3); using HttpResponseMessage response await client.GetAsync("todos/3"); var jsonResponse await response.Content.ReadAsSt…

变压器绕线完成之后要做的事

1 调整感量:测主绕组电感量,通过磨气隙或垫气隙,测得感量没错以后,用胶带封装磁芯 2 测验同名端是否正确:两绕组首尾相连,测试连接后的总感量,是否比感量大的那个绕组还大。如果是,…

Allegro热风焊盘制作教程

阿里狗热风焊盘制作教程 打开PCB Editor,新建Flash symbol,最好保存在与Pad文件同一个路径 点击Setup–>Design Parameter Editor,设置mm单位,在设置画布,把原点提上去,点击Apply和OK 把视野调整到原点 点击Setup–…

vue面试题2-根据以下问题回答

以下是针对提供的关于Vue的问题的回答: Vue的基本原理: Vue.js是一个流行的JavaScript框架,用于构建用户界面和单页面应用。其基本原理包括响应式数据、模板、组件系统、指令、生命周期钩子和虚拟DOM。 双向数据绑定的原理: Vue通…