存根 什么是自动编码器? - 联合人工智能
关注我们.

AI 101

什么是自动编码器?

mm
更新 on

如果您之前读过无监督学习技术,您可能遇到过这个术语“自动编码器”。 自动编码器是开发无监督学习模型的主要方式之一。 然而自动编码器到底是什么?

简而言之,自动编码器的工作原理是接收数据、压缩和编码数据,然后根据编码表示重建数据。 对模型进行训练,直到损失最小化并尽可能地再现数据。 通过这个过程,自动编码器可以学习数据的重要特征。 虽然这是自动编码器的快速定义,但仔细研究自动编码器并更好地了解它们的工作原理将是有益的。 本文将努力揭开自动编码器的神秘面纱,解释自动编码器的架构及其应用。

什么是自动编码器?

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

通过自动编码器移动的数据不仅仅是从输入直接映射到输出,这意味着网络不仅仅复制输入数据。 自动编码器由三个组件组成:压缩数据的编码(输入)部分、处理压缩数据(或瓶颈)的组件以及解码器(输出)部分。 当数据被输入自动编码器时,它会被编码,然后压缩到更小的大小。 然后对网络进行编码/压缩数据的训练,并输出该数据的重新创建。

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

自动编码器架构

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

照片:Michela Massi,来自维基共享资源,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

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

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

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

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

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

自动编码器的属性

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

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

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

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

代码大小决定了有多少节点开始网络的中间部分,节点越少,数据压缩得越多。 在深度自动编码器中,虽然层数可以是工程师认为合适的任何数量,但层中的节点数应该随着编码器的继续而减少。 同时,解码器中的情况正好相反,这意味着随着解码器层接近最后一层,每层的节点数量应该增加。 最后,自动编码器的损失函数通常是二进制交叉熵或均方误差。 二元交叉熵适用于数据输入值在 0 – 1 范围内的情况。

自动编码器类型

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

照片:Michela Massi,来自 Wikimedia Commons,CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

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

收缩性

收缩自动编码器 旨在对数据中的微小变化具有弹性,从而保持数据的一致表示。 这是通过对损失函数应用惩罚来实现的。 该正则化技术基于输入编码器激活的雅可比矩阵的 Frobenius 范数。 这种正则化技术的效果是,模型被迫构建一种编码,其中相似的输入将具有相似的编码。

卷积

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

去噪

照片:MAL 来自 Wikimedia Commons,CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

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

变分

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

 

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

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

自动编码器应用

自动编码器可用于广泛 多种应用,但它们通常用于降维、数据去噪、特征提取、图像生成、序列到序列预测和推荐系统等任务。

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

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

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

博主和程序员,擅长 机器学习 深度学习 主题。 丹尼尔希望帮助其他人利用人工智能的力量造福社会。