【AI算法学习】基于AutoEncoder的生成对抗网络

news2025/1/8 18:40:24

基于AutoEncoder的生成对抗网络:VAE-GAN

  • AutoEncoder
  • VAE
  • GAN
  • VAE-GAN
  • DCGAN
  • InfoGAN
  • ss-InfoGAN
  • 论文链接

" 生成模型(Generative modeling)"已成为机器学习的一个较为广泛的领域。在图像这种流行数据上,每张图像都有数千数万的维度(像素点), 生成模型的工作就是通过某种方式来捕获像素之间的依赖,而具体捕获哪些依赖关系,就取决于我们想用模型来做些什么

通常来讲,看起来像真实图像的数据点会以更高的概率被采纳,而看起来像随机噪声图像的数据点会以较低的概率被采纳。有时候这样的模型不一定有用,因为知道了一张图像后就不太可能合成不一样的图像。我们实际上更加需要的是和已经存在的图像类似,但又不完全相同的图像,拿来扩充数据,这样的图像原本是不存在的。

GAN和VAE都是效果比较好的生成模型,但是VAE希望通过一种显式的方法找到一个概率密度,并通过最小化对数似函数的下限来得到最优解GAN则是使用对抗的方式来寻找一种平衡,不需要给定显式的概率密度函数

AutoEncoder

VAE(变分自编码器)是基于AE(自编码器)提出的,所以要先了解AE。Encoder将输入X映射到一个隐状态Z,Decoder将Z再映射回X’,AE的训练目标就是使得输入X和输出X’尽可能相似,同时AE是完全确定的,AE的输入直接决定了生成结果。在AE中,因为Encoder将输入X映射为更低维度的表征,这些表征通常被认为是低噪声且富有信息的,所以Z可以被称为特征向量。

VAE

在VAE中,我们为了生成新的样本,需要建模数据的真实分布 p ( x ) p(x) p(x)。VAE避开了直接建模 p ( x ) p(x) p(x)这个难题,它实际构建了一种从一个给定隐变量的先验分布 p ( z ) p(z) p(z)到真实数据的分布 p ( x ) p(x) p(x)的转换。

为此,我们首先可以用Decoder建模 p ( x ∣ z ) p(x|z) p(xz)。那么当模型训练完毕后,通过在 p ( z ) p(z) p(z)上采样再将结果输入Decoder,就能生成新样本了。具体来说,VAE建模的 p ( x ) p(x) p(x)公式如下: p ( x ) = ∫ p ( z ) p ( x ∣ z ) d z p(x)=\int p(z)p(x|z)dz p(x)=p(z)p(xz)dz通过建模对数据的真实分布 p ( x ) p(x) p(x)进行近似。所以VAE最终生成的样本并不会和原始样本一模一样,只会是相似但不相同

在VAE中,Decoder可以看作生成模型,它可以将低维空间的表示恢复为高维空间表示Encoder的作用是抓住一些关键的特征和变量之间的依赖,使得采样的特征向量z有意义

AE更多使用的是它的Encoder,用于做分类任务VAE更多使用的是它的Decoder,用于做生成任务

GAN

生成对抗网络包含两个模型,一个模型G(生成器)用来学习真实样本的数据分布,产生和其类似的样本另一个模型D(判别器)用来判断样本是否为真实样本。交替训练D和G,最终的理想结果是G完全学到了真实样本的分布,D已经无法判断样本是否为真实样本,G产生的样本在D的概率为0.5。整体的优化可以表示为: min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p d a t a ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min_G\max_DV(D,G)=\mathbb{E}_{x\sim p_{data}(x)}[\log D(x)]+\mathbb{E}_{z\sim p_z(z)}[\log (1-D(G(z)))] GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]
训练过程中,对于生成器来说,就是要使得 D ( G ( z ) ) D(G(z)) D(G(z))尽可能大(伪造的样本像真的),即最小化 l o g ( 1 − D ( G ( z ) ) ) log(1-D(G(z))) log(1D(G(z)))。对于判别器,就是对于输入的真实样本,使得判别概率尽可能大,对于假样本,概率尽可能小,即判别能力强。

VAE-GAN

了解了VAE和GAN之后,会很自然想到将它们进行结合,于是VAE-GAN就出现了。把VAE作为GAN的生成器,这样的网络既具有VAE的可控制图片生成的特性,又能够拥有GAN优良生成图片的性能。
VAE-GAN
这个网络前半部分就是一个完整的VAE,后面是一个GAN,其中VAE和GAN共享一个Decoder。

DCGAN

与最原始的GAN相比,DCGAN的改进地方在于将生成器的网络用卷积网络替换掉,这样生成图片的清晰度会提高。在下图中,100维的随机噪声通过4次fractional-strided卷积后生成64×64的图像,即生成器的最终输出。
DCGAN
上图为DCGAN所生成的cifar10的样本。

InfoGAN

原始的GAN和DCGAN都属于无监督方法,该方法不使用任何的标签信息,换种说法就是我们无法人为控制生成图片的种类。因此,无监督方法需要对隐空间进行解耦得到有意义的特征表示。

InfoGAN 对把输入噪声分解为隐变量 z z z和条件变量 c c c(训练时,条件变量 c c c从均匀分布采样而来),二者被一起送入生成器。在训练过程中通过最大化 c c c G ( z , c ) G(z,c) G(z,c)的互信息 I ( c ; G ( z , c ) ) I(c;G(z,c)) I(c;G(z,c))以实现变量解耦( I ( c ; G ( z , c ) ) I(c;G(z,c)) I(c;G(z,c))的互信息表示 c c c里面关于 G ( z , c ) G(z,c) G(z,c)的信息有多少,如果最大化互信息 I ( c ; G ( z , c ) ) I(c;G(z,c)) I(c;G(z,c)),也就是最大化生成结果和条件变量 c c c的关联性)。
InfoGAN
上图中中 G-D 的组合即原始的 GAN,而G-Q的组合可以看做一个“自动编码机”,而 G-Q 不同于“自动编码机”的地方在于,后者的信息流是:复杂-简单-复杂,前者的信息流是:简单(输入的随机数)- 复杂(手写数字图片)-简单(手写数字图片所代表的数字)。

另外,换一个视角,从把GAN 的 D 当做一个复杂的损失函数来看,infoGAN 的 D+Q 则是一个更复杂的损失函数,在分别真假的基础上、增加了识别数据特征的能力。

具体的 Pytorch 实现上,D 和 Q 共享部分参数,D 使用二值交叉熵指导其辨别真假,G 使用softmax 指导其识别图片所代表的数字,使用 log_gaussian 函数指导其辨别连续的特征如笔画粗细和倾斜角度。

ss-InfoGAN

为了解决无法控制c的问题,ss-InfoGAN出现了,该方法采用半监督的学习方法,输入少量带标签的真实样本,让判别器能够学习到真实样本的一些标签信息,使得生成出来的样本也能对应标签

论文摘要:在本文中,我们提出了一个新的半监督GAN体系结构(SS-INFOGAN),用于图像合成,该图像合成,该构成从少数标签中利用信息(少于0.22%,最多的数据集的10%)来学习语义上有意义且可控制的数据表示形式。潜在变量对应于标签类别。与完全无监督的设置相比,该体系结构建立在最大化生成对抗网络(INFOGAN)(INFOGAN)的信息基础上,并显示出可以学习连续和分类代码,并获得了更高的合成样本质量。此外,我们表明使用少量标记的数据加速训练收敛。该体系结构保持了无可用标签的潜在变量的能力。最后,我们贡献了一个信息理论推理,介绍了如何引入半统治会增加合成数据和真实数据之间的共同信息。

论文链接

  1. Autoencoding beyond pixels using a learned similarity metric
  2. Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
  3. InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets
  4. Guiding InfoGAN with Semi-Supervision

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

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

相关文章

服务(第七篇)nginx优化

隐藏版本号: 方法①: 修改配置文件: 检测:版本号没有了 方法②: 首先修改nginx.h文件,修改版本号和服务名: 然后切换到/opt/nginx-1.18.0进行编译安装: 安装后进入nginx.conf进行…

Redis缓存实战(2)

目录 缓存定义 Redis缓存实战 1删除缓存还是更新缓存? 2如何保证缓存与数据库的操作同时成功或者失败? 3先操作数据库还是缓存? 缓存问题 缓存穿透 缓存雪崩 缓存击穿 缓存定义 缓存(Cache)是数据交换的缓冲区&#xff0…

微信小程序自动化测试实战教程,框架源码应有尽有

目录 1. 微信小程序自动化测试介绍 2. 搭建微信小程序自动化测试框架 步骤1:选择测试工具 步骤2:搭建测试环境 步骤3:编写测试脚本 步骤4:执行测试 3. 实现微信小程序自动化测试的关键技术 技术1:微信小程序自动…

Netty:常见的面试题和答案

1. 什么是Netty? 答:Netty是一个高性能的网络编程框架,基于NIO的非阻塞式IO模型,可以帮助开发者快速开发高性能、高可靠性的网络应用程序。 2. Netty的核心组件有哪些? 答:Netty的核心组件包括&#xff…

GPT-3模型简单介绍

目录 一、概要 二、深入扩展 一、概要 与T5模型( Text-to-Text Transfer Transformer,详见文末链接 )相似,OpenAI提出的GPT-3模型(第三代GPT)也是通过将不同形式的自然语言处理任务重定义为文本生成实现模型的通用化。…

【面试】一文读懂Java类加载全过程

文章目录 一、概述1. 类加载器2. 加载阶段3. 验证阶段4. 准备阶段5. 解析阶段6. 初始化阶段类加载过程总结 二、相关问题Q: 什么是类加载?Q: Java中有哪些类加载器?Q: 类加载的过程包括哪些步骤?Q: 类加载器的双亲委派模型是什么?…

告别StringUtil:使用Java的全新String API优化你的代码

前言 Java编程语言每一次主要更新,都引入了许多新功能和改进。 并且在String 类中引入了一些新的方法,能够更好地满足开发的需求,提高编程效率。 repeat(int count):返回一个新的字符串,该字符串是由原字符串重复指定…

Jetson TX1 /TX2 对比介绍

大家好,我是虎哥,经过一段时间的整理,针对TX1/TX2这些看起来已经落伍的产品,如何找到合适的应用场景,我也整体上做了一些了解好调研。现在由于资料很多都比较老了,有些表述也有些前后表述不一,所…

ClickHouse环境搭建

目录 1 ClickHouse 的安装1.1 准备工作1.1.1 确定防火墙处于关闭状态1.1.2 CentOS 取消打开文件数限制1.1.3 安装依赖1.1.4 CentOS 取消 SELINUX 1.2 单机安装1.2.1 在 hadoop102 的/opt/software 下创建 clickhouse 目录1.2.2 将安装文件上传到 hadoop102 的software/clickhou…

Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的伽马变换校正算法增强(C++)

Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的伽马变换校正算法增强(C) Baumer工业相机Baumer工业相机使用图像算法增加图像的技术背景Baumer工业相机通过BGAPI SDK联合OpenCV使用图像增强算法1.引用合适的类文件2.BGAPI SDK在图像回调…

第三章 作业(7BF)【计算机系统结构】

第三章 作业(7BF)【计算机系统结构】 前言推荐第三章 作业(7BF)71115鲲鹏流水线调研华为鲲鹏处理器ARM体系的总体思想ARM的流水线结构 最后 前言 2023-4-10 18:49:41 以下内容源自《【计算机系统结构】》 仅供学习交流使用 推荐…

上一次c语言多文件处理代码的改进和总结

先看看上一次的文件: (3条消息) 认真复习c语言1_穿花云烛展的博客-CSDN博客 对于有重复结构体定义但是并不会报错,只是难以修改而已:为了解决这个一改就要改两次的情况,这里有一个解决方案: 上面的代码是可以运行的&…

常见的Web攻击技术

文章目录 前言HTTP 不具备必要的安全功能在客户端即可篡改请求针对 Web 应用的攻击模式 因输出值转义不完全引发的安全漏洞跨站脚本攻击XSSXSS实例 SQL 注入攻击实例 HTTP 首部注入攻击HTTP 首部注入攻击案例HTTP 响应截断攻击 因会话管理疏忽引发的安全漏洞会话劫持会话固定攻…

Java企业级开发学习笔记(2.2)利用MyBatis实现CRUD操作

该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/ajSEO】 文章目录 一、准备工作二、查询表记录2.1 在映射器配置文件里引入结果映射元素2.2 添加按姓名查询用户记录功能2.2.1 添加按姓名查询的映射语句2.2.2 添加按姓名查询用户记录的测试方法2.…

17、嵌入式Servlet容器

文章目录 1、切换嵌入式Servlet容器2、定制Servlet容器 【尚硅谷】SpringBoot2零基础入门教程-讲师:雷丰阳 笔记 路还在继续,梦还在期许 1、切换嵌入式Servlet容器 ● 默认支持的webServer ○ Tomcat, Jetty, or Undertow ○ ServletWebServerApplicati…

C++linux高并发服务器项目实践 day7

Clinux高并发服务器项目实践 day7 进程间通信匿名管道管道的特点匿名管道的使用创建匿名管道查看管道缓冲大小命令查看管道缓冲大小函数匿名管道通信案例 管道的读写特点 有名管道有名管道的使用写FIFO管道读FIFO管道总结有名管道实现简单版聊天功能 进程间通信 进程是一个独立…

SRv6实践项目(五):ONOS控制平面实现控制

在先前的几个小结中,一共了解了: p4的编译过程p4runtime的实现原理NDP协议的简单工作流程YANG模型的定义以及用处基于YANG的配置和状态的读写 一共实现了: Mininet拓扑创建p4的基本框架编写对数据平面进行订阅以实现状态读取对数据平面进行…

OJ系统刷题 第十一篇(重点题)

13463 - 折点计数(难题!重点题!) 时间限制 : 1 秒 内存限制 : 128 MB 给定 n 个整数表示一个商店连续 n 天的销售量。 如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来…

玩转车载影像传输技术 ,学习Opengl与Surface渲染提升车载影像传输效果

近年来,随着智能化汽车的快速发展,车载倒车影像逐渐成为了汽车安全辅助系统的标配,而高清传输的倒车影像则成为了目前主流的倒车影像传输方式。在这一过程中,Opengl与Surface渲染技术的应用也是不可或缺的一环。 一、高清传输倒车…

E. Archaeology(纯思维)

Problem - E - Codeforces 爱丽丝买了一个刚果总理视频的订阅,正在看一部关于苏格兰卡特林湖的因子岛的考古发现的纪录片。考古学家发现了一本书,其年代和来源都不明。也许爱丽丝可以对它进行一些解释? 这本书包含一串字符 "a"、&…