什么是自动编码器?
深入了解 IBM® watsonx.ai
机器学习的抽象表示

发布日期:2023 年 11 月 23 日
内容添加者:Dave Bergmann、Cole Stryker

什么是自动编码器?

自编码器是一种神经网络架构,用于有效压缩(编码)输入数据,只保留基本特征,然后从压缩表示重构(解码)原始输入。

通过使用无监督机器学习,训练自编码器发现输入数据的潜在变量:隐藏变量或随机变量,尽管无法直接观察,但从根本上可以告知数据的分布方式。一组给定输入数据的潜在变量统称为潜在空间。在训练期间,自编码器可以了解哪些潜在变量可用于最准确地重建原始数据:因此,这种潜在空间表示仅代表原始输入中包含的最基本信息。

大多数类型的自编码器用于与特征提取相关的 AI 任务,如数据压缩、图像去噪、异常检测和面部识别。变分自编码器 (VAE) 和对抗自编码器 (AAE) 等自编码器将自编码器架构用于生成式任务,如图像生成或时间序列数据生成。

浏览 IBM® watsonx.ai

新一代企业级开发平台,专供 AI 构建器训练、验证、调整和部署 AI 模型。免费试用 IBM watsonx.ai。

相关内容

订阅 IBM 时事通讯

自编码器与编码器-解码器

虽然所有自编码器模型都包括编码器和解码器,但并非所有编码器–解码器模型都是自编码器

编码器-解码器框架中的编码器网络提取输入数据的关键特征,解码器网络将提取的特征数据作为输入,该框架用于各种深度学习模型,例如以下计算机视觉任务中使用的卷积神经网络 (CNN) 架构:图像分割,或序列到序列 (seq2seq) 任务中使用的循环神经网络 (RNN) 架构。

在编码器-解码器模型的大多数应用中,神经网络的输出与输入不同。例如,在 U-Net 等图像分割模型中,编码器网络从输入图像中提取特征数据,以确定不同像素的语义分类;然后,通过使用该特征图和这些像素级分类,解码器网络为图像中的每个对象或区域构建分割掩码。这些编码器-解码器模型的目标是通过语义类准确标记像素:它们通过监督学习进行训练,并且根据人类专家标记的图像的“标准答案”数据集优化模型的预测。

自编码器是指特定部分的编码器-解码器架构,这些架构通过监督学习进行训练,以重建自己的输入数据。

因为自编码器不依赖于已标注的训练数据,所以不被认为是有监督学习。与所有无监督学习一样,自编码器的训练目的是发现未标注数据中的隐藏模式,而不是预测已标注训练数据所展示的已知模式;但就像有监督学习模型一样(这与大多数无监督学习的例子不同),自编码器基于一个事实,即可以根据原始输入本身(或其修改版本)来衡量输出。因此,它们被认为是“自我监督学习”,即自动编码器。

自编码器如何工作?

在输入数据到达解码器之前,自编码器会通过“瓶颈”来发现潜在变量。这迫使编码器学习仅提取和传递最有利于精确重构原始输入的信息。

尽管自编码器的不同变体会改变其人工神经网络的某些元素,以最好地适应特定的目标和数据类型,但所有自编码器都有共同的关键结构元素:

编码器包括将输入数据压缩为低维编码的层。在典型的自编码器中,神经网络的隐藏层所包含的节点数量会逐渐少于输入层节点数量:当数据穿过编码器层时,将自身“挤压”到较低维度,实现压缩目的。

瓶颈(或“代码”)包含输入的最高压缩表示:它既是编码器网络的输出层,也是解码器网络的输入层。自编码器设计和训练的基本目标是发现有效重构输入数据所需的最小数量的重要特征(或维度)。然后,该层出现的潜在空间表示(即代码)将输入解码器。

解码器包含具有逐渐增多节点的隐藏层,这些节点可以解压缩(或解码)数据的编码表示,最终将数据重建为编码前的原始形式。然后将重建的输出与“标准答案”(在大多数情况下只是原始输入)进行比较,衡量自编码器的效率。输出和标准答案之间的差异称为重建误差

在自编码器的某些应用中,解码器可以在训练后丢弃:在这种情况下,解码器的唯一目的是训练编码器(类似于生成式对抗网络 (GAN) 中鉴别器的作用),然后将编码器用作不同神经网络的组件。在许多自编码器中,解码器在训练后继续发挥作用:例如,在 VAE 中,解码器可以输出新的数据样本。

主成分分析 (PCA) 等其他维度技术相比,使用自编码器的主要优势之一是自编码器可以捕捉复杂的非线性相关性。因此,自编码器使用的激活函数通常是非线性函数,如 S 型函数。

不同类型的自编码器对此结构进行调整,以更好地适应不同的任务和数据类型。除了选择合适的神经网络类型(例如,基于 CNN 的架构、长短期记忆等基于 RNN 的架构、转换器架构或简单的普通前馈神经网络)外,自编码器的设计还需要多个超参数:

  • 代码大小:瓶颈的大小决定要压缩的数据量。代码大小也可以用作正则项:调整代码大小是一种应对过拟合欠拟合的方法。
  • 层数:自编码器的深度通过编码器和解码器中的层数进行衡量。深度越深,复杂性越高,而深度越浅,处理速度越快。
  • 每层节点数:一般来说,节点(或“神经元”)的数量随着编码器层的增加而减少,在瓶颈处达到最小值,并随着解码器层的增加而增加,但在某些变体中,如稀疏自编码器,情况并非总是如此。神经元的数量也可能根据输入数据的性质而变化:例如,处理大图像的自编码器比处理小图像的自编码器需要更多的神经元。
  • 损失函数:训练自编码器时,损失函数(测量输出和输入之间的重建损失)用于通过反向传播期间的梯度下降来优化模型权重。损失函数的理想算法取决于使用自编码器的任务。
不完备自编码器

不完备自编码器是一种简单的自编码器结构,主要用于降维。与输入层和输出层相比,它们的隐藏层包含的节点较少,而且瓶颈的容量是固定的。

瓶颈的目标是防止自编码器过拟合训练数据。在没有充分限制瓶颈容量的情况下,神经网络倾向于学习输入和输出之间的恒等函数:换而言之,神经网络可能学习通过直接复制输入,尽量减少重构损失。通过强制大幅压缩数据,神经网络必须学习只保留对重构最重要的特征。

但是,如果编码器和解码器具有足够高的容量(即它们正在处理大型或复杂的数据输入),则自编码器(即使存在瓶颈)仍然可能学习恒等函数,从而使其变得毫无用处。这使得不完备自编码器缺乏灵活性,并限制了容量。

正则化自编码器

正则化自编码器通过引入正则化解决不完备自编码的缺点:“正则化”是指限制或修改模型计算重建误差方式的技术。这些正则化项不仅可以减少过拟合,而且还使自编码器能够学习有用的特征或函数。

稀疏自编码器

稀疏自编码器 (SAE) 实施稀疏约束:稀疏自编码器不是通过减少每个隐藏层中的节点数量来创建信息瓶颈,而是通过减少可以同时激活的节点数量来创建瓶颈。

标准的不完备自编码器将对每个观察使用整个神经网络,而具有稀疏函数的自编码器将对每个被激活超过某个阈值的神经元进行惩罚。这使得编码器和解码器具有更高的容量,而不会相应地产生过拟合训练数据的风险(因为并非所有神经元都会被激活)。稀疏自编码器还允许隐藏层包含专门用于发现特定特征的节点:稀疏函数确保只有在所述特征存在的情况下,激活这些节点才“值得惩罚”。

尽管重构误差的计算和随后通过反向传播对参数权重的优化是分开进行的,但这种优化通过稀疏函数进行正则化。因此,自编码器被迫在给定的稀疏约束内学习最有效的潜在空间表示。

用于实施稀疏约束的函数通常是 L1 正则化或 KL 散度。

KL 散度
Kullback-Leibler (KL) 散度衡量两个概率分布之间的差异。当在 SAE 环境中使用时,每个训练批次后给予网络的惩罚与激活值的目标分布(期望的稀疏性)和激活值的实际分布之间的 KL 散度成正比。正如本文稍后将讨论的那样,KL 散度还用于优化变分自编码器 (VAE) 学习的概率分布的准确性。

收缩自编码器

“收缩自编码器”这一术语由蒙特利尔大学的研究人员于 2011 年首次提出,1收缩自编码器设计为对输入数据中的微小变化(或“噪声”)不敏感,以减少过拟合并且更有效地捕获基本信息。

此类自编码器在训练中添加正则化项,对响应输入变化不够大而改变输出的网络进行惩罚。两个数学概念用于计算惩罚项:

  • 雅可比矩阵包含可用于反向传播的函数的所有一阶导数。它表示网络梯度如何随着输入的变化而变化。
  • 弗罗贝尼乌斯范数的计算方法为“其元素的绝对平方和的平方根”。2它测量矩阵沿空间中每个正交方向的平均增益。3

具体来说,惩罚项是编码器网络中神经元激活的雅可比矩阵相对于输入的 Frobenius 范数。该惩罚项和用于减少重建误差的损失函数算法具有对抗性:重建损失函数倾向于观察输入数据的变化,而惩罚项倾向于忽略这些变化。通过组合这两个项,网络被迫学习仅包含最重要变量的输入的压缩表示。

去噪自编码器

去噪自编码器将部分损坏的数据作为输入,并通过训练,以降维方式去噪,从而恢复原始输入。

与大多数自编码器不同,去噪自编码器没有“标准答案”数据作为输入。取而代之的是,将高斯噪声添加到原始数据中,例如,向图像添加随机静态,然后去噪自编码器 (DAE) 会学习将其滤掉。在模型训练期间,去噪输出的重建误差不是根据损坏的输入数据进行测量,而是根据原始图像进行测量。

除了防止过拟合外,这种训练技术还使得去噪自编码器对于去噪或恢复受损的图像和音频文件非常有用。去噪自编码器也可以作为稳定扩散等最先进图像生成模型的基础训练范例。4

变分自编码器

变分自编码器 (VAE) 是一种生成式模型,它将训练数据作为概率分布来学习压缩表示,通过创建这些压缩表示的变体来生成新的样本数据。

变分自编码器与其他类型的自编码器之间的根本区别在于,大多数自编码器学习离散的潜在空间模型,而变分自编码器学习连续的潜在变量模型。变分自编码器模拟的不是潜在空间的一个编码向量,而是两个不同的向量:均值向量“μ”和标准偏差向量“σ”。因为这些向量以概率分布的形式捕获潜在属性,即这些向量学习随机编码而非确定性编码,所以变分自编码器可以进行插值和随机采样,极大地扩展了功能和用例。这意味着变分自编码器是生成式 AI 模型。

简而言之,变分自编码器学习以灵活、近似的方式对数据输入的重要特征进行编码,从而生成类似于原始训练数据的新样本。将训练数据的概率分布(先验分布)和变分自编码器学习的潜在变量分布(后验分布)之间的 KL 散度正则化,用于最小化重构误差的损失函数。该正则化损失函数使得变分自编码器能够生成与其训练数据相似的新样本,同时避免过拟合,在这种情况下,过拟合意味着生成与原始数据过于相同的新样本。

为了生成新样本,变分自编码器从单位高斯(链接位于 ibm.com 之外)内对随机潜在向量 (ε) 进行采样,换而言之,从正态分布内选择一个随机起点,通过潜在分布的平均值 (μ) 对其进行移位,并通过潜在分布的方差 (σ) 对其进行缩放。该过程称为重新参数化技巧5避免了对变分分布的直接采样:因为该过程是随机的,所以没有导数,无需对采样过程进行反向传播。

当变分自编码器用于生成式任务时,编码器通常可以在训练后丢弃。条件变分自编码器等变分自编码器的高级版本提供条件输入来修改编码器的输出,从而用户能够更好地控制所生成的样本。

自编码器用例

生成式自编码器和确定性自编码器在不同领域和数据类型方面都有各种各样的用例。

  • 数据压缩:自编码器自然地学习输入数据的压缩表示。
  • 降维:自编码器学习的编码可以用作较大型复合神经网络的输入。复杂数据降维可以提取与其他任务相关的特征,并提高计算速度和效率。
  • 异常检测和面部识别:自编码器可检测异常、欺诈或其他缺陷,反之,也可以通过确定检测数据相对于“正常”或“真实”实例的重构损失,确认真正的匹配。
  • 图像去噪和音频去噪:去噪自编码器可以去除与网络学习的潜在空间表示不匹配的外来伪影或损坏。
  • 图像重建:通过采用反向去噪技术,自编码器可以填充图像中缺失的元素。它们同样可以用于为图像着色。
  • 生成式任务:变分自编码器和对抗自编码器已在生成式任务中取得了巨大成功。对抗自编码器学习的概率分布类似于变分自编码器学习的概率分布,但使用对抗性鉴别器网络(类似于生成式对抗性网络)代替 KL 散度。自编码器的突出生成式应用程序包括 OpenAI 的原始 Dall-E 模型6,其可用于图像生成,甚至用于药物分子结构的生成。7
相关解决方案
watsonx.ai

轻松训练、验证、调整和部署生成式 AI、基础模型和机器学习功能,并在短时间内使用少量数据构建 AI 应用程序。

探索 watsonx.ai

自动编码器资源 有监督学习与无监督学习:有何区别?

本文探讨了有监督学习和无监督学习这两种数据科学方法的基础知识。了解哪种方法适用于您当前的情况。

深度学习和强化学习

介绍机器学习方面两个最受欢迎的研究领域。首先,了解神经网络和几种现代深度学习架构背后的理论。在开发几个深度学习模型后,本课程将侧重于强化学习。

IBM 新的地理空间基础模型

watsonx.ai 模型由 IBM 与 NASA 合作构建,旨在将卫星数据转换为高分辨率的洪水、火灾和其他环境变化地图,以揭示我们星球的过去并预示其未来。IBM 基于用于处理视频的掩码自编码器构建了该模型,并将其调整为卫星图像。

采取下一步行动

借助 IBM watsonx.ai(下一代企业级 AI 构建器平台),轻松训练、验证、调整和部署生成式 AI、基础模型和机器学习功能,并在短时间内使用少量数据构建 AI 应用程序。

开始免费试用 预约实时演示
脚注

1 “收缩自编码器:特征提取过程中的显式不变性,”《第 28 届机器学习国际会议论文集》,2011 年 7 月
2 “Frobenius 范数”,Wolfram Mathworld
3 “矩阵范数”,加州大学伯克利分校,2021 年 2 月
4 “利用潜在扩散模型合成高分辨率图像”,《IEEE/CVF 计算机视觉和模式识别 (CVPR) 会议论文集》,2022 年 6 月
5 《自编码变分贝叶斯》,arXiv,2013 年 12 月(最后更新日期:2022 年 12 月 10 日)
6 《DALL-E:从文本创建图像》,OpenAI,2021 年 1 月 5 日
7 “用于分子图生成的连接树变分自编码器”,《第 35 届机器学习国际会议论文集》,2018 年 7 月