Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

自编码器26页综述论文:概念、图解和应用

在这篇新论文中,TOELT LLC 联合创始人兼首席 AI 科学家 Umberto Michelucci 对自编码器进行了全面、深入的介绍。

图片

论文链接:https://arxiv.org/pdf/2201.03898.pdf

神经网络通常用于监督环境。这意味着对于每个训练观测值 x_i,都将有一个标签或期望值 y_i。在训练过程中,神经网络模型将学习输入数据和期望标签之间的关系。

现在,假设只有未标记的观测数据,这意味着只有由 i = 1,... ,M 的 M 观测数据组成的训练数据集 S_T。

图片

在这一数据集中,x_i ∈ R^n,n ∈ N。

1986 年,Rumelhart、Hinton 和 Williams 首次提出了自编码器(Autoencoder),旨在学习以尽可能低的误差重建输入观测值 x_i。

为什么要学习重建输入观测值?

如果你很难想象这意味着什么,想象一下由图片组成的数据集。自编码器是一个让输出图像尽可能类似输入之一的算法。也许你会感到困惑,似乎没有理由这样做。为了更好地理解为什么自编码器是有用的,我们需要一个更加翔实(虽然还没有明确)的定义。

图片

图 1:自动编码器的一般架构。

为了更好地理解自编码器,我们需要了解它的经典架构。如下图 1 所示。自编码器的主要组成部分有三个:编码器、潜在特征表示和解码器。

图片

图 1:自动编码器的一般架构。


一般来说,我们希望自编码器能够很好地重建输入。同时,它还应该创建一个有用且有意义的潜在表示 (图 1 中编码器部分的输出)。例如,手写数字上的潜在特征可以是写每个数字所需的行数,或者每条线的角度以及它们之间的连接方式。

学习如何写数字不需要学习输入图像中每个像素的灰度值。人们也不会通过用灰色值填充像素来学习写作。在学习的过程中,我们提取基本的信息,这些信息可以帮助我们解决问题(例如写数字)。这种潜在表示法(如何写出每个数字)对于各种任务(例如可用于分类或聚类的实例特征提取)仅仅理解数据集的基本特征都非常有用。

在大多数经典架构中,编码器和解码器都是神经网络(这是本文将详细讨论的内容) ,因为它们可以很容易地用现有的软件库(TensorFlow 或 PyTorch)进行训练。一般来说,编码器可以写成一个函数 g,这个函数取决于一些参数

图片

其中 h_i ∈ R^q (潜在特征表示)是图 1 中编码器块在输入 x_i 上求值时的输出。注意 g: R^n → R^q。

解码器(以及用图片表示的网络输出)可以作为潜在特征的第二个通用函数 f 写入

图片

其中,图片增加一个「瓶颈(bottleneck)」是通过使潜在特征的维度比输入的维度更低(通常要低得多)来实现的。这就是本文将详细讨论的情况。但在研究这种情况之前,需要提到正则化问题。

直观地说,正则化意味着在潜在特征输出中加强稀疏性。实现这一点的最简单方法是在损失函数中加入 l_1 或 l_2 正则项。

前馈自编码器

前馈自编码器(Feed-Forward Autoencoder,FFA)是由具有特定结构的密集层组成的神经网络,如下图 2 所示:

图片

经典的 FFA 架构层的数量为奇数(尽管不是强制性要求),并且与中间层对称。通常,第一层有一定数量的神经元 n_1 = n(输入观察值 x_i 的大小)。向网络中心移动时,每一层的神经元数量都会有所下降。中间层通常有最少的神经元。事实上,这一层的神经元数量小于输入的大小,这是前面提到的「瓶颈」。

在几乎所有的实际应用中,中间层之后的图层是中间层之前图层的镜像版本。包括中间层在内及之前的所有层构成了所谓的编码器。如果 FFA 训练是成功的,结果将是输入的一个近似值,换句话说是图片。需要注意的是,解码器只需要使用比最初的输入观测值 (n) 少得多的特征数 (q) 就可以重构输入。中间层的输出也称为输入观测值 x_i 的学习表示。

输出层的激活函数

在基于神经网络的自编码器中,输出层的激活函数起着特别重要的作用。最常用的函数是 ReLU 和 Sigmoid。

ReLU 激活函数可以假设范围 [0,∞] 内的所有值。作为余数,它的公式是 ReLU (x) = max (0,x)。当输入的观测值 x_i 假设范围很广的正值时,ReLU 是个很好的选择。如果输入 x_i 可以假设负值,那么 ReLU 当然是一个糟糕的选择,而且恒等函数是一个更好的选择。

Sigmoid 函数 σ 可以假定所有值的范围在] 0, 1 [ 。作为余数,它的公式是

图片

只有当输入的观测值 x_i 都在] 0,1 [范围内,或者将它们归一化到这个范围内,才能使用这个激活函数。在这种情况下,对于输出层的激活函数来说,Sigmoid 函数是一个不错的选择。

损失函数

与任何神经网络模型一样,这里需要一个损失函数来最小化。这个损失函数应该测量输入 x_i 和输出 x˜i 之间的差异有多大:

图片

其中,FFA、 g 和 f 是由全连接层获得的函数。自编码器广泛使用两种损失函数:均方差和二进制交叉熵。它们只有在满足特定需求时才能使用。

由于自编码器试图解决回归问题,最常用的损失函数是均方差(MSE):

图片

如果 FFA 输出层的激活函数是一个 sigmoid 函数,即将神经元输出限制在 0 到 1 之间,并且输入特征被标准化为 0 到 1 之间,我们以使用 LCE 表示的二元交叉熵作为损失函数

图片

重构误差

重构误差 (RE) 是一个度量,它指示了自编码器能够重建输入观测值 x_i 的好坏。最典型的 RE 应用是 MSE

图片

这很容易计算出来。在使用自编码器进行异常检测时,常常用到 RE。对于重建误差有一个简单的直观解释。当 RE 值较大时,自编码器不能很好地重构输入信号,当 RE 值较小时,重构是成功的。下图 3 展示了一个自编码器试图重建图像时出现的大大小小的重建错误的示例。

图片


在最后一部分,作者还介绍了自编码器的几种应用,如降维、分类、去噪和异常检测,以及应用过程涉及的其他理论方法。更多细节详见原论文。


理论自编码器
5
相关数据
自动编码器技术

自动编码器是用于无监督学习高效编码的人工神经网络。 自动编码器的目的是学习一组数据的表示(编码),通常用于降维。 最近,自动编码器已经越来越广泛地用于生成模型的训练。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

异常检测技术

在数据挖掘中,异常检测(英语:anomaly detection)对不符合预期模式或数据集中其他项目的项目、事件或观测值的识别。 通常异常项目会转变成银行欺诈、结构缺陷、医疗问题、文本错误等类型的问题。 异常也被称为离群值、新奇、噪声、偏差和例外。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

降维技术

降维算法是将 p+1 个系数的问题简化为 M+1 个系数的问题,其中 M<p。算法执行包括计算变量的 M 个不同线性组合或投射(projection)。然后这 M 个投射作为预测器通过最小二乘法拟合一个线性回归模型。两个主要的方法是主成分回归(principal component regression)和偏最小二乘法(partial least squares)。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

聚类技术

将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。

推荐文章
暂无评论
暂无评论~