一、 AE(AutoEncoder)

参考AutoEncoder

1.1 自编码器简单模型介绍

自编码器可以理解为一个试图去 还原其原始输入的系统。

自动编码模型主要由编码器和解码器组成,其主要目的是将输入x转换成中间变量y,然后再将中间变量y转换成x’,然后对比输入和输出,使得他们两个无限接近。

1.2 神经网络自编码器模型

在深度学习中,自动编码器是一种 无监督 的 神经网络 模型,它可以学习到输入数据的隐含特征,这称为编码(coding),同时用学习到的新特征可以重构出原始输入数据,称之为解码(decoding)。

从直观上来看,自动编码器可以用于 特征降维 ,类似主成分分析 PCA ,但是相比 PCA 其性能更强,这是由于神经网络模型可以提取更有效的新特征。除了进行特征降维,自动编码器学习到的新特征可以送入有监督学习模型中,所以自动编码器可以起到 特征提取器 的作用。举个例子,我有一张清晰图片,首先我通过编码器压缩这张图片的大小(如果展现出来可能比较模糊),然后在需要解码的时候将其还原成清晰的图片。

主要的功能是将输入信息进行特征方面的降维、提取等操作,进而通过计算真实值和预期值之间的差距不断迭代优化自编码器,达到编解码的目的。

那么此时可能会有人问了,好端端的图片为什么要压缩呢?其主要原因是:有时神经网络要接受大量的输入信息,比如输入信息是高清图片时,输入信息量可能达到上千万,让神经网络直接从上千万个信息源中学习是一件很吃力的工作。所以,何不压缩一下,提取出原图片中的最具代表性的信息 ,缩减输入信息量,再把缩减过后的信息放进神经网络学习。这样学习起来就简单轻松了。所以,自编码就能在这时发挥作用。通过将原数据 x 压缩,解压成 x~,然后通过对比 x 和 x~,求出预测误差,进行反向传递,逐步提升自编码的准确性。训练好的自编码中间这一部分就能总结出原数据的精髓。可以看出,从头到尾,我们只用到了输入数据 X,并没有用到 X 对应的数据标签,所以也可以说自编码是一种非监督学习。到了真正使用自编码的时候,通常只会用到自编码器的前半部分——编码器 (Encoder)。

1.3 神经网络自编码器三大特点

  1. 自动编码器是数据相关的(data-specific 或 data-dependent),这意味着自动编码器只能压缩那些与训练数据类似的数据。比如,使用人脸训练出来的自动编码器在压缩别的图片(比如树木)时,性能很差,因为它学习到的特征是与人脸相关的。

  2. 自动编码器是有损的,意思是解压缩的输出与原来的输入相比是退化的,MP3,JPEG等压缩算法也是如此。这与无损压缩算法不同。

  3. 自动编码器是从数据样本中自动学习的,这意味着很容易对指定类的输入训练出一种特定的编码器,而不需要完成任何新工作。

1.4 自编码器搭建

搭建一个自动编码器需要完成下面三样工作:

  1. 搭建编码器;

  2. 搭建解码器;

  3. 设定一个损失函数,用以衡量由于压缩而损失掉的信息。

编码器和解码器一般都是参数化的方程,并关于损失函数可导,典型情况是使用神经网络。编码器和解码器的参数可以通过最小化损失函数而优化,例如SGD。

举个例子:根据上面介绍,自动编码器看作由两个级联网络组成:

  1. 第一个网络是一个编码器,负责接收输入 x,并将输入通过函数 h 变换为信号 y:y = h(x)

  2. 第二个网络将编码的信号 y 作为其输入,通过函数 f 得到重构的信号 r:r = f(y) = f(h(x))

  3. 定义误差 e 为原始输入 x 与重构信号 r 之差,e=x–r,网络训练的目标是减少均方误差(MSE),同 MLP 一样,误差被反向传播回隐藏层。

1.5 几种常见的自编码器

自编码器(autoencoder)是神经网络的一种,经过训练后能尝试将输入复制到输出。自编码器(autoencoder)内部有一个隐藏层 h,可以产生编码(code)表示输入。该网络可以看作由两部分组成:一个由函数 h = f(x) 表示的编码器和一个生成重构的解码器 r = g(h)。如果一个自编码器只是简单地学会将处处设置为 g(f(x)) = x,那么这个自编码器就没什么特别的用处。相反,我们 不应该 将自编码器设计成输入到输出完全相等。这通常需要向自编码器强加一些约束,使它只能 近似地 复制,并只能复制与训练数据相似的输入。这些约束强制模型考虑输入数据的哪些部分需要被优先复制,因此它往往能学习到数据的有用特性。

二、VAE(Variational AutoEncoder)

参考解析VAE

VAE将经过神经网络编码后的隐藏层假设为一个标准的高斯分布,然后再从这个分布中采样一个特征,再用这个特征进行解码,期望得到与原始输入相同的结果,损失和AE几乎一样,只是增加编码推断分布与标准高斯分布的KL散度的正则项,显然增加这个正则项的目的就是防止模型退化成普通的AE,因为网络训练时为了尽量减小重构误差,必然使得方差逐渐被降到0,这样便不再会有随机采样噪声,也就变成了普通的AE。

VAE将经过神经网络编码后的隐藏层假设为一个标准的高斯分布,然后再从这个分布中采样一个特征,再用这个特征进行解码,期望得到与原始输入相同的结果,损失和AE几乎一样,只是增加编码推断分布与标准高斯分布的KL散度的正则项,显然增加这个正则项的目的就是防止模型退化成普通的AE,因为网络训练时为了尽量减小重构误差,必然使得方差逐渐被降到0,这样便不再会有随机采样噪声,也就变成了普通的AE。

没错,我们先抛开变分,它就是这么简单的一个假设… 仔细想一下,就会觉得妙不可言。

它妙就妙在它为每个输入, 生成了一个潜在概率分布 ,然后再从分布中进行随机采样,从而得到了连续完整的潜在空间,解决了AE中无法用于生成的问题。
《论语》有言:“举一隅,不以三隅反,则不复也。” ,给我的启发就是看事物应该不能只看表面,而应该了解其本质规律,从而可以灵活迁移到很多类似场景。聪明人学习当举一反三,那么聪明的神经网络,自然也不能只会怼训练数据。如果我们把原始输入 看作是一个表面特征,而其潜在特征便是表面经过抽象之后的类特征,它将比表面特征更具备区分事物的能力,而VAE直接基于拟合了基于已知的潜在概率分布,可以说是进一步的掌握了事物的本质。
就拿一个人的某个行为来说,我们不能单纯看行为本身,因为这个行为往往代表了他的综合特性,他从出生开始,因为遗传,后天教育和环境,决定了他在面对某种情形的情况下,高概率会产生这个行为,也就是说掌握了概率分布,就掌控了一切。

三、GAN(Generative Adversarial Network)

生成对抗网络(Generative Adversarial Networks)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习。该方法由伊恩·古德费洛等人于2014年提出。生成对抗网络由一个生成网络与一个判别网络组成。生成网络从潜在空间(latent space)中随机取样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别网络的输入则为真实样本或生成网络的输出,其目的是将生成网络的输出从真实样本中尽可能分辨出来。而生成网络则要尽可能地欺骗判别网络。两个网络相互对抗、不断调整参数,最终目的是使判别网络无法判断生成网络的输出结果是否真实。

虽然生成对抗网络原先是为了无监督学习提出的,它也被证明对半监督学习、完全监督学习、强化学习是有用的。”

生成模型是一种自下而上的模型,容易生成更深一层的模型,但是容易忽略掉生成节点之间的关系。

判别模型作为一种自上而下的模型,考虑到了模型总体的情况,即各部分之间的关系,但是生成负样本时并不简单,特别是模型很复杂时,生成的负样本在短时间内并不会改善。

GAN结合了生成模型和判别模型各自的特点,清晰易懂,结构合理,正是这样的特点为14年之后的GAN的广泛应用做了铺垫。

自编码器,变分自编码器和生成对抗网络异同相关推荐

  1. 【2017CS231n】第十三讲:生成模型(PixelRNN/PixelCNN,变分自编码器,生成对抗网络)

    一.有监督学习与无监督学习 有监督学习我们都很熟悉了,我们有数据x和标签y,我们在有监督学习中学习到一个函数可以将数据x映射到标签y,标签可以有很多形式.典型的有监督学习有:分类问题中输入一张图片,输 ...

  2. 生成对抗网络(GAN)的理论与应用完整入门介绍

    本文包含以下内容: 1.为什么生成模型值得研究 2.生成模型的分类 3.GAN相对于其他生成模型相比有什么优势 4.GAN基本模型 5.改进的GANs 6.GAN有哪些应用 7.GAN的前沿研究 一. ...

  3. PcGAN:一种用于一次学习的噪声鲁棒条件生成对抗网络∗

    简 介: 在本文中,我们为智能交通系统提出了一种基于条件生成对抗网络的新型交通标志分类方法.所提出的 PcGAN是一个端到端网络,网络框架包含交替更新模块,即数据重建模块和退化生成模块,以及用于退化消 ...

  4. Generative Adversarial Networks 生成对抗网络的简单理解

    1. 引言 在对抗网络中,生成模型与判别相竞争,判别模型通过学习确定样本是来自生成模型分布还是原始数据分布.生成模型可以被认为是类似于一组伪造者,试图产生假币并在没有检测的情况下使用它,而判别模型类似 ...

  5. 生成对抗网络(GAN)相比传统训练方法有什么优势?(一)

    作者:元峰 链接:https://www.zhihu.com/question/56171002/answer/148593584 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  6. 万字综述之生成对抗网络(GAN)

    作者丨郭晓锋 单位丨爱奇艺 研究方向丨图像生成 前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian Goodfellow 或者自动化所王飞跃老师那篇.可是在深度学习,G ...

  7. 深度学习之生成对抗网络(1)博弈学习实例

    深度学习之生成对抗网络(1)博弈学习实例 博弈学习实例  在 生成对抗网络(Generative Adversarial Network,简称GAN)发明之前,变分自编码器被认为是理论完备,实现简单, ...

  8. 七个不容易被发现的生成对抗网络(GAN)用例

    像许多追随AI发展的人一样,我无法忽略生成建模的最新进展,尤其是图像生成中生成对抗网络(GAN)的巨大成功.看看下面这些样本:它们与真实照片几乎没有区别! 从2014年到2018年,面部生成的进展也非 ...

  9. GAN生成对抗网络综述

    前阵子学习GAN的过程发现现在的GAN综述文章大都是2016年Ian Goodfellow或者自动化所王飞跃老师那篇(最新发现一篇更新paper,也是王飞跃老师的:http://blog.scienc ...

最新文章

  1. Socket编程原理概述
  2. 职场中一路走来却拂不去一丝失落——一个女IT的告白
  3. 欧文分校计算机新sat多少分录取,加州大学欧文分校SAT成绩要求
  4. NeurIPS 2021 | 通过寻找平坦最小值,克服小样本增量学习中的灾难性遗忘
  5. 苹果ios用js的Date()出现NaN问题解决办法
  6. 07-OSPF区域类型--NSSA区域/完全NSSA区域
  7. Matploblib work5
  8. matlab彩色图像变暗
  9. raspberry树莓派安装CUPS实现打印服务器共享HP P1007打印机
  10. IP地址的定义和含义
  11. SQL:postgresql中COALESCE函数
  12. 数据结构练习题——线性表
  13. 【Bioinfo Blog 011】【R Code 008】——功能富集分析
  14. 【渝粤题库】广东开放大学 服务标准化 形成性考核
  15. ​网易游戏实时 HTAP 计费风控平台建设
  16. 桌面搜索项目正式启动
  17. Chapter_one
  18. DCI-P3广色域显示器的支持现状
  19. Java随机生成四位数字(四位整数)Random类
  20. FFmpeg命令(三)、 从视频中提取图片

热门文章

  1. 用C++操作Excel
  2. Qt制作漂亮个性化的界面
  3. CFile用法与实现
  4. 总结清楚浮动的几种方法
  5. Spring+SpringMVC+Hibernate整合(封装CRUD操作)
  6. 数据寻址方式(10种)
  7. 打印机十大共性故障解决方案(转东转西)
  8. [OpenGL] Bloom自发光效果
  9. 第三方App接入微信登录 解读
  10. PhotoSwipe 官方API解读(一)