使用自动编码器和GAN的表征学习和生成学习

  • 引言
  • 有效的数据表征
  • 使用不完整的线性自动编码器执行PCA
  • 堆叠式自动编码器
  • 卷积自动编码器
  • 循环自动编码器
  • 去噪自动编码器
  • 稀疏自动编码器
  • 变分自动编码器
  • 生成对抗网络

引言

  • 自动编码器与对抗神经网络(GAN)的区别
    1 自动编码器是一种人工神经网络,不需要任何监督(无标记数据集)即可学习输入数据的密集表征,称为潜在表征/编码。只需学习将其输入复制到输出。但是我们可以利用各种方式约束网络,比如:可以限制潜在表征的大小;向输入添加噪声并训练网络来恢复原始输入。这些限制使得自动编码器无法将输入简单地直接复制到输出,从而迫使它学习有效的数据表示方法。
    2 GAN由两部分组成:一个试图生成看起来与训练数据相似数据的生成器,以及一个试图从虚假数据中分辨出真实数据的判别器。

有效的数据表征

自动编码器会查看输入,将其转换为有效的潜在表征,输出一些看起来非常接近输入的东西。
自动编码器通常由两部分组成:1.识别网络:将输入转换为潜在表征的编码器(或识别网络),2 解码器:将内部表征转换为输出的解码器(或生成网络)。

自动编码器与多层感知器架构(MLP)相同,但是自动编码器输出层的神经元数量必须等于输入的数量。
输出通常称之为重构,自动编码器会试图重构输入,并且成本函数包含一个重构损失,当重构与输入不同时惩罚该模型。
由于内部表征的维度比输入数据的维度笛,自动编码器被认为是不完整的。不完整的自动编码器无法将输入简单地复制到编码中。因此必须找到一种输出其输入副本的方法,它被迫学习输入数据中最重要的特征,并删除不重要的特征。

使用不完整的线性自动编码器执行PCA

可以将自动编码器视为一种自监督式的学习方法(即使用具有自动生成的标签的有监督学习技术,在这种情况下,该标签等于输入。)

堆叠式自动编码器

定义:具有多个隐藏层的自动编码器。
添加多层有注意自动编码器学习更多更复杂的编码,但是注意不要使得其过于强大——它只是学会了把每个输入映射到单个任意数字(解码器反向映射),这样不会学到任何有用的数据表征(并不太可能很好地泛化到新实例中)
堆叠式自动编码器的架构典型地相对于中间隐藏层(编码层)对称(看起来像三明治)

自动编码器的一大优势是它们可以处理具有许多实例和许多特征的大型数据集。因此一种策略是使用自动编码器将维度降低至合理水平,然后用另一种降维算法进行可视化。

  • 使用堆叠自编码器的无监督预训练
    如果有一个大型数据集,但大多数未被标记,可以先使用所有的数据训练一个堆叠的自动编码器,然后重用较低的数据为实际任务创建神经网络,并使用标记的数据对其进行训练。
  • 绑定权重
    当一个自动编码器整齐对称时,一种常见的技术是将解码器的权重与编码器层的权重绑定起来。这样可以使模型中权重的数量减少一半,从而加快训练速度并降低过拟合的风险。
  • 一次训练一个自动编码器
    与其一次训练整个堆叠的式自动编码器,不如一次训练一个浅层自动编码器,然后将它们全部堆叠成一个堆叠式自动编码器。

卷积自动编码器

如果需要处理图像,卷积神经网络比密集网络更适合处理图像
定义:编码器是由卷积层和池化层组成的常规CNN,通常会减少输入的空间尺寸(即高度和宽度),同时增加深度(即特征图的数量)。解码器必须进行相反的操作,为此可以使用转置卷积层(或者可以将上采样层和卷积层组合到一起)

循环自动编码器

如果需要为序列构建自动编码器,例如时间序列或者文本(例如用于无监督学习或者降维),递归神经网络可能比密集网络更适合。
编码器通常是序列到向量的RNN,将输入序列压缩为单个向量。解码器是向量到序列的RNN。

去噪自动编码器

为了强制自动编码器学习,可以限制编码层的大小,使其成为不完整的自动编码器。但是有其它的约束可以用,包括使得编码层与输入一样大甚至更大。
强制自动编码器学习有用特征的另一种方法就是向其输入中添加噪声,训练它来恢复原始的无噪声输入。例如添加dropout层、GaussianNoise层等。

稀疏自动编码器

另一种约束是稀疏性:通过在成本函数中添加适当的函数项,强迫自动编码器减少编码层中活动神经元的数量。例如:可以强迫其在编码层中平均仅有5%的显著活动神经元。这迫使自动编码器将每个输入表示为少量活动神经元的组合。结果,编码层中的每个神经元最终会代表一个有用的特征。
一种简单的方法是在编码层中使用sigmoid激活函数,使用较大的编码层,并向编码层的激活添加一些正则化。
另一种方法是在每次训练迭代时测量编码层的实际稀疏度,并在测量的稀疏度与目标稀疏度不同时对模型进行惩罚。通过在整个训练批次中计算编码层中每个神经元的平均激活,通过向成本函数添加稀疏损失来惩罚过于活跃或者不够活跃的神经元。惩罚可以使用平方误差,实践中更好的方法是使用Kullback-Leibler(KL)散度。

变分自动编码器

变分自编码器与之前的自动编码器有很大不同:

  • 它们是概率自动编码器,这意味着在训练之后,输出会部分由概率决定(与仅在训练期间使用随机性的去噪自动编码器相反)
  • 它们是生成式自动编码器,这意味它们可以生成看起来像是从训练集中采样的新实例。

    与一般的自动编码器不同在于:不是直接为给定输入生成编码,而是编码器产生平均编码μ\muμ和标准差σ\sigmaσ。然后实际编码是从均值μ\muμ和标准差σ\sigmaσ的高斯分布中随机采样的。然后,解码器正常解码采样得到的编码。
    尽管输入的分布可能很复杂,但是编码会像从简单的高斯分布中采样的编码。在训练过程中,成本函数迫使编码逐渐地在编码空间(潜在空间)中移动,最终看起来像高斯点云。也可以轻松生成新实例:只需从高斯分布中采样一个随机编码,然后对其进行解码。
  • 成本函数:由两部分组成
    1 重构损失:迫使自动编码器重现其输入(可以使用交叉熵)
    2 潜在损失:使得自动编码器的编码看起来像是从简单的高斯分布中采样得到的,是目标分布(高斯分布)与编码实际分布之间的KL散度。

生成对抗网络

GAN由两个神经网络组成:

  • 生成器:将随机分布作为输入(通常是高斯分布),并输入一些数据(通常是图像)。可以将随机输入视为要生成图像的潜在表征(编码)。生成器提供的功能与变分自动编码器中的解码器相同,但是它们的训练方式不同。
  • 判别器:输入从生成器得到的伪图像或从训练集中得到的真实图像,并且必须猜测输入图像是伪图像还是真实图像。

由于GAN由不同目标的两个网络组成,因此无法像常规神经网络一样对其进行训练。每个训练迭代分成两个阶段:

  • 第一阶段,训练判别器。
    从训练集中采样一批真实图像和用生成器生成的相等数量的伪图像组成训练批次。对于伪图像,将标签设为0;对于真实图像,将标签设置为1,并使用二元交叉熵损失在该标签的批次上对判别器进行训练。在这个阶段反向传播只能优化判别器的权重。

  • 第二阶段,训练生成器
    用它生成另一批伪图像,再次使用判别器判断图像是伪图像还是真实图像。希望生成器能生成判别器认为真实的图像。在此步骤中,判别器的权重会被固定,因此反向传播只会影响生成器的权重。

GAN的训练难点:

  • 模式崩溃:生成器的输出逐渐变得不太多样化——新的成本函数、重播体验
  • 由于判别器和发生器不断相互竞争,一次你它们的参数可能最终会震荡并变得不稳定。

GAN的改进:

  • 深度卷积GAN
  • GAN的逐步增长
  • StyleGAN

自动编码器部分笔记——《机器学习实战第二版》相关推荐

  1. dataframe两个表合并_Spark实战第二版(涵盖Spark3.0)第三章 宏伟的角色dataframe

    关注公众号: 登峰大数据 ,阅读Spark实战第二版(完整中文版),系统学习Spark3.0大数据框架! 如果您觉得作者翻译的内容有帮助,请分享给更多人.您的分享,是作者翻译的动力! 本章涵盖了 使用 ...

  2. 如何查看文件是否为csv格式_Spark实战第二版(涵盖Spark3.0)第七章 从文件接入数据...

    关注公众号:登峰大数据,阅读Spark实战第二版(完整中文版),系统学习Spark3.0大数据框架!如果您觉得作者翻译的内容有帮助,请分享给更多人.您的分享,是作者翻译的动力! 本章涵盖了 解析器的常 ...

  3. R语言必看推荐:R语言入门经典版(中文版)+R语言实战第二版(中文完整版)

    R语言入门经典(中文版)R for beginners R语言经典教材 第二版 适合初学者 作者:Emmanuel Paradis R 语言实战第二版(中文完整版) R语言实战(第2版)注重实用性,是 ...

  4. python自动化测试实战pdf无涯_【独家发布】Selenium2 Python自动化测试实战 第二版...

    Selenium2 Python自动化测试实战 第二版 第1 章自动化测试基础............................................................. ...

  5. 机器学习实战第二章——KNN算法(源码解析)

    机器学习实战中的内容讲的都比较清楚,一般都能看懂,这里就不再讲述了,这里主要是对代码进行解析,如果你很熟悉python,这个可以不用看. #coding=utf-8 ''' Created on 20 ...

  6. [书籍精读]《响应式Web设计 HTML5和CSS3实战(第二版)》精读笔记分享

    写在前面 书籍介绍:本书主要讲解了如何运用HTML5和CSS3来进行响应式Web设计,使页面的设计与开发根据用户行为以及设备环境(系统平台.屏幕尺寸.屏幕定向等)来进行相应的响应和调整. 我的简评:响 ...

  7. Docker技术入门与实战 第二版-学习笔记-3-Dockerfile 指令详解

    前面已经讲解了FROM.RUN指令,还提及了COPY.ADD,接下来学习其他的指令 5.Dockerfile 指令详解 1> COPY 复制文件 格式: COPY  <源路径> .. ...

  8. Docker技术入门与实战 第二版-学习笔记-7-数据管理(volume)

    Docker 数据管理 为什么要进行数据管理呢?因为当我们在使用container时,可能会在里面创建一些数据或文件,但是当我们停掉或删除这个容器时,这些数据或文件也会同样被删除,这是我们并不想看见的 ...

  9. Docker技术入门与实战 第二版-学习笔记-9-Docker Compose 项目-2-Compose 命令说明

    Compose 命令说明 1)命令对象与格式 对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中 的服务或者容器.如果没有特别的说明,命令对象将是项目,这意味着项目中所有 ...

最新文章

  1. c语言找最长串指针改错,全国计算机二级C语言上机 (改错题)【DOC精选】.doc
  2. php用rabbit可以干嘛,RabbitMQ能干什么,有什么用,RabbitMQ入门
  3. Java环境配置及第一个HelloWord(Win)
  4. 财付通 android api,财付通API接口文档.doc
  5. jmeter 通过ant集成到jenkins
  6. 50个常用不定积分公式表_50个公式,50个快速解题法
  7. 也来谈一谈js的浅复制和深复制
  8. HDU 1024 (不重叠m段最大和) Max Sum Plus Plus
  9. xp系统蓝屏代码7b_电脑蓝屏的症状和解决办法
  10. 手机三十分钟熄屏如何一直亮_如何让手机屏幕常亮
  11. 安卓h5 微信 字体大小影响h5样式bug
  12. PostMan中文插件支持8.12.2
  13. python 线性相关 与 线性拟合
  14. 《在远方》首播获佳绩 刘烨改行送快递马伊琍长发少女感MAX
  15. 六成应用不需要程序员,一大批程序员会失业?
  16. Microsoft project 2016 使用出现的bug
  17. PDF编辑/PDF浏览/PDF打印:PDFPrinting.NET Crack
  18. 基于codesys开发的多轴运动控制程序框架,将逻辑与运动控制分离,将单轴控制封装成功能块,对该功能块的操作包含了所有的单轴控制
  19. 雄关漫道真如铁 而今迈步从头越
  20. PyTorch:train模式与eval模式的那些坑

热门文章

  1. Linux 下Could not get lock /var/lib/dpkg/lock-frontend问题解决方法
  2. 更相减损术——Java实现
  3. 电路分析 极简复习指导、公式推导、常用结论归纳 第三章 电阻电路的一般分析
  4. 基于华为设备的某大型企业网络规划与实施方案
  5. 动力电池系统介绍(二)——BMS软硬件架构
  6. eclipse 设置字体大小
  7. 大数据学习之双11来了,你的订单可能是机器人在处理
  8. 分享一个民宿管理平台简要开发方案
  9. css实现流星划过的效果
  10. 怎样使用EDIUS里面的抠像功能