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

机器之心报道
编辑:蛋酱
在这篇新论文中 , TOELTLLC联合创始人兼首席AI科学家UmbertoMichelucci对自编码器进行了全面、深入的介绍 。
自编码器26页综述论文:概念、图解和应用
文章图片
论文链接: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 。
为什么要学习重建输入观测值?
如果你很难想象这意味着什么 , 想象一下由图片组成的数据集 。 自编码器是一个让输出图像尽可能类似输入之一的算法 。 也许你会感到困惑 , 似乎没有理由这样做 。 为了更好地理解为什么自编码器是有用的 , 我们需要一个更加翔实(虽然还没有明确)的定义 。
自编码器26页综述论文:概念、图解和应用
文章图片
图1:自动编码器的一般架构 。
为了更好地理解自编码器 , 我们需要了解它的经典架构 。 如下图1所示 。 自编码器的主要组成部分有三个:编码器、潜在特征表示和解码器 。
自编码器26页综述论文:概念、图解和应用
文章图片
图1:自动编码器的一般架构 。
一般来说 , 我们希望自编码器能够很好地重建输入 。 同时 , 它还应该创建一个有用且有意义的潜在表示(图1中编码器部分的输出) 。 例如 , 手写数字上的潜在特征可以是写每个数字所需的行数 , 或者每条线的角度以及它们之间的连接方式 。
学习如何写数字不需要学习输入图像中每个像素的灰度值 。 人们也不会通过用灰色值填充像素来学习写作 。 在学习的过程中 , 我们提取基本的信息 , 这些信息可以帮助我们解决问题(例如写数字) 。 这种潜在表示法(如何写出每个数字)对于各种任务(例如可用于分类或聚类的实例特征提取)仅仅理解数据集的基本特征都非常有用 。
在大多数经典架构中 , 编码器和解码器都是神经网络(这是本文将详细讨论的内容) , 因为它们可以很容易地用现有的软件库(TensorFlow或PyTorch)进行训练 。 一般来说 , 编码器可以写成一个函数g , 这个函数取决于一些参数
其中h_i∈R^q(潜在特征表示)是图1中编码器块在输入x_i上求值时的输出 。 注意g:R^nR^q 。
解码器(以及用表示的网络输出)可以作为潜在特征的第二个通用函数f写入
其中 , 增加一个「瓶颈(bottleneck)」是通过使潜在特征的维度比输入的维度更低(通常要低得多)来实现的 。 这就是本文将详细讨论的情况 。 但在研究这种情况之前 , 需要提到正则化问题 。
直观地说 , 正则化意味着在潜在特征输出中加强稀疏性 。 实现这一点的最简单方法是在损失函数中加入l_1或l_2正则项 。
前馈自编码器
前馈自编码器(Feed-ForwardAutoencoder , FFA)是由具有特定结构的密集层组成的神经网络 , 如下图2所示:
自编码器26页综述论文:概念、图解和应用
文章图片
经典的FFA架构层的数量为奇数(尽管不是强制性要求) , 并且与中间层对称 。 通常 , 第一层有一定数量的神经元n_1=n(输入观察值x_i的大小) 。 向网络中心移动时 , 每一层的神经元数量都会有所下降 。 中间层通常有最少的神经元 。 事实上 , 这一层的神经元数量小于输入的大小 , 这是前面提到的「瓶颈」 。