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

引言

  • 自动编码器与对抗神经网络(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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值