联系我们

AI 101

什么是自动编码器?

mm

更新

 on

如果您已阅读有关 无监督学习 技术之前,您可能遇到过“自动编码器”。自动编码器是取消编码器的主要方法之一监督学习 模型已开发。然而,什么是自动编码器呢?

简而言之,自动编码器通过接收数据,对数据进行压缩和编码,然后从编码表示中重建数据来进行操作。对模型进行训练,直到将损失降到最低,并尽可能接近地再现数据。通过此过程,自动编码器可以学习数据的重要特征。尽管这是对自动编码器的快速定义,但仔细研究一下自动编码器并更好地了解它们的功能将是有益的。本文将努力消除自动编码器的神秘性,解释自动编码器的体系结构及其应用。

什么是自动编码器?

自动编码器 是神经网络。神经网络由多层组成,自动编码器的定义方面是输入层包含的信息与输出层一样多。输入层和输出层的单元数完全相同的原因是自动编码器旨在复制输入数据。在分析并以无人监督的方式重建数据之后,它将输出数据的副本。

通过自动编码器传输的数据不只是从输入到输出的直接映射,这意味着网络不只是复制输入数据。自动编码器包含三个组件:压缩数据的编码(输入)部分,处理压缩数据(或瓶颈)的组件以及解码器(输出)部分。数据馈入自动编码器后,将对其进行编码,然后压缩为较小的大小。然后对网络进行编码/压缩数据的训练,并输出该数据的副本。

那么,为什么要训练网络以仅重构提供给它的数据呢?原因是网络学习了输入数据的“本质”或最重要的特征。训练网络后,可以创建一个模型,该模型可以通过添加或减去某些目标特征来合成相似的数据。例如,您可以在颗粒图像上训练自动编码器,然后使用经过训练的模型从图像中去除颗粒/噪声。

自动编码器架构

让我们来看看 自动编码器的架构。 我们将在这里讨论自动编码器的主要架构。我们将在下面的部分中讨论这种通用架构的各种变化。

Photo: Michela Massi via Wikimedia Commons,(//commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

如前所述,自动编码器基本上可以分为三个不同的组件:编码器,瓶颈和解码器。

自动编码器的编码器部分通常是前馈密集连接的网络。编码层的目的是获取输入数据并将其压缩为潜在空间表示,从而生成维度降低的数据的新表示。

代码层或瓶颈处理数据的压缩表示形式。瓶颈代码经过精心设计,可以确定观察到的数据中最相关的部分,或者换句话说,就是对数据重建最重要的数据特征。此处的目标是确定数据的哪些方面需要保留,哪些方面可以丢弃。瓶颈代码需要权衡两个不同的考虑因素:表示大小(表示的紧凑程度)和变量/功能的相关性。瓶颈对网络的权重和偏差执行逐元素激活。瓶颈层有时也称为潜在表示或潜在变量。

解码器层负责获取压缩数据并将其转换回与原始未更改数据具有相同尺寸的表示形式。转换是由编码器创建的潜在空间表示完成的。

自动编码器的最基本架构是前馈架构,其结构非常类似于用于多层感知器中的单层感知器。与常规前馈神经网络非常相似,自动编码器通过反向传播进行训练。

自动编码器的属性

有多种类型的自动编码器,但是它们都具有将它们组合在一起的某些属性。

自动编码器会自动学习。他们不需要标签,如果有足够的数据’很容易使自动编码器在特定类型的输入数据上达到高性能。

自动编码器是特定于数据的。这意味着他们只能压缩与自动编码器已经接受训练的数据高度相似的数据。自动编码器也是有损耗的,这意味着与输入数据相比,模型的输出将下降。

在设计自动编码器时, 机器学习 工程师需要注意四个不同的模型超参数:代码大小,层数,每层节点和损失函数。

代码大小决定了从网络中间部分开始有多少个节点,而更少的节点会更多地压缩数据。在深度自动编码器中,虽然层数可以是工程师认为合适的任何数目,但随着编码器的继续工作,层中的节点数应减少。同时,在解码器中也是如此,这意味着每层的节点数应随着解码器层接近最终层而增加。最后,自动编码器的损耗函数通常是二进制交叉熵或均方误差。二进制交叉熵适用于数据输入值为0的情况– 1 range.

自动编码器类型

如上所述,存在经典自动编码器体系结构的变体。让我们研究一下不同的自动编码器架构。

Photo: Michela Massi via Wikimedia Commons, CC BY SA 4.0 (//commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

尽管自动编码器通常存在瓶颈,可通过减少节点来压缩数据, 稀疏自动编码器s是该典型操作格式的替代方法。在稀疏网络中,隐藏层的大小与编码器和解码器层的大小相同。取而代之的是对给定层中的激活进行惩罚,对其进行设置,以便损失函数更好地捕获输入数据的统计特征。换句话说,尽管稀疏自动编码器的隐藏层比传统自动编码器具有更多的单位,但在任何给定时间它们中只有一定百分比处于活动状态。保留最有影响力的激活函数,而忽略其他激活函数,此约束有助于网络确定输入数据的最显着特征。

收缩的

压缩自动编码器 旨在抵抗数据中的小变化,保持数据的一致表示。这是通过对损失函数施加惩罚来实现的。该正则化技术基于用于输入编码器激活的雅可比矩阵的Frobenius范数。这种正则化技术的作用是迫使模型构造一种编码,其中相似的输入将具有相似的编码。

卷积

卷积自动编码器 通过将输入数据分成多个小节,然后将这些小节转换为简单的信号,对输入数据进行编码,将这些信号相加在一起即可创建新的数据表示形式。与卷积神经网络类似,卷积自动编码器专门研究图像数据,它使用的过滤器会在整个图像中逐段移动。编码层生成的编码可用于重建图像,反射图像或修改图像的几何形状。一旦网络了解了过滤器,就可以将其用于任何足够相似的输入,以提取图像的特征。

去噪

Photo: MAL via Wikimedia Commons, CC BY SA 3.0 (//en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

去噪自动编码器 在编码中引入噪声,导致编码是原始输入数据的损坏版本。数据的此损坏版本用于训练模型,但是损失函数会将输出值与原始输入而不是损坏的输入进行比较。目标是网络将能够复制原始的,未损坏的图像版本。通过将损坏的数据与原始数据进行比较,网络可以了解数据的哪些功能最重要,哪些功能不重要/损坏。换句话说,为了使模型去噪损坏的图像,它必须提取图像数据的重要特征。

变异的

变体自动编码器 通过假设数据的潜在变量如何分布来进行操作。变分自动编码器为训练图像/潜在属性的不同特征生成概率分布。训练时,编码器会为输入图像的不同特征创建潜在分布。

 

由于该模型将特征或图像作为高斯分布而不是离散值来学习,因此它能够用于生成新图像。对高斯分布进行采样以创建一个向量,该向量被馈送到解码网络中,该解码网络根据该样本向量渲染图像。本质上,该模型学习训练图像的共同特征,并为它们分配出现它们的可能性。然后可以使用概率分布对图像进行逆向工程,从而生成类似于原始训练图像的新图像。

训练网络时,对编码数据进行分析,识别模型输出两个向量,绘制出图像的均值和标准差。基于这些值创建分布。这是针对不同的潜在状态完成的。然后,解码器从相应的分布中获取随机样本,并使用它们来重构网络的初始输入。

自动编码器应用

自动编码器可广泛用于 多种应用,但通常用于完成降维,数据降噪,特征提取,图像生成,序列到序列预测以及推荐系统之类的任务。

数据去噪是使用自动编码器从图像中去除颗粒/噪声。同样,自动编码器可用于修复其他类型的图像损坏,例如模糊图像或图像丢失部分。降维可以帮助高容量网络学习图像的有用功能,这意味着自动编码器可以用于增强对其他类型神经网络的训练。使用自动编码器进行特征提取也是如此,因为自动编码器可用于识别其他训练数据集的特征以训练其他模型。

在图像生成方面,自动编码器可用于生成伪造的人类图像或动画角色,在设计人脸识别系统或使动画的某些方面自动化方面具有应用。

序列到序列的预测模型可用于确定数据的时间结构,这意味着自动编码器甚至可用于生成序列中的下一个。因此,可以使用自动编码器来生成视频。最后,深度自动编码器可用于通过拾取与用户兴趣相关的模式来创建推荐系统,其中编码器分析用户参与数据,而解码器创建适合已建立模式的推荐。

专门从事以下工作的Blogger和程序员 机器学习 深度学习 话题。 Daniel希望帮助他人将AI的力量用于社会公益。