关注+标星,邂逅每一篇经典!
文章摘要
高维数据可以通过训练一个中间层较小的多层神经网络来转换为低维编码,以重建高维输入向量。梯度下降可以用来微调这类“自动编码器”网络中的权重,但这只有在初始权重接近良好解决方案时才有效。作者描述了一种有效的权重初始化方法,使得深度自动编码器网络能够学习到比主成分分析更好地降低数据维度的低维编码。
学术地址:
https://www.science.org/doi/epdf/10.1126/science.1127647
前世今生
降维有助于对高维数据进行分类、可视化、通信和存储。一个简单且广泛使用的方法就是主成分分析(PCA),它找到数据集中方差最大的方向,并用每个数据点在这些方向上的坐标来表示。作者描述了一种非线性推广的PCA,它使用一个自适应的多层“编码器”网络将高维数据转换为低维编码,并使用类似的“解码器”网络从编码中恢复数据。从两个网络中的随机权重开始,可以通过最小化原始数据和其重建之间的差异来一起训练它们。所需的梯度可以通过使用链式法则首先通过解码器网络,然后通过编码器网络反向传播错误导数来轻松获得。整个系统被称为“自动编码器”,如图1所示。
图1。预训练包括学习一系列受限玻尔兹曼机(RBMs),每个机器只有一层特征检测器。一个RBM学习到的特征激活被用作堆叠中下一个RBM训练的“数据”。预训练完成后,RBMs被“展开”以创建一个深度自动编码器,然后使用误差导数的反向传播进行微调。
优化具有多个隐藏层的非线性自动编码器的权重是困难的。初始权重较大时,自动编码器通常会找到较差的局部最小值;初始权重较小时,早期层的梯度非常小,使得训练具有许多隐藏层的自动编码器变得不可行。如果初始权重接近一个好的解决方案,梯度下降工作得很好,但找到这样的初始权重需要一种非常不同类型的算法,该算法一次学习一层特征。作者为二进制数据引入这种“预训练”程序,将其推广到实值数据,并证明它对各种数据集都有效。
一组二进制向量(例如,图像)可以使用一个两层网络进行建模,称为“受限玻尔兹曼机”(RBM),其中随机的二进制像素连接到随机的二进制特征检测器,使用对称加权连接。像素对应于RBM的“可见”单元,因为观察到了它们的状态;特征检测器对应于“隐藏”单元。网络通过能量函数可以为每个可能的图像分配一个概率。通过调整权重和偏置来降低训练图像的能量,并提高网络更倾向于真实数据的类似“虚构”图像的能量,可以提高训练图像的概率。
单层二进制特征不是模拟一组图像中结构的最佳方式。学习一层特征检测器后,可以将它们的活动——当它们被数据驱动时——作为学习第二层特征的数据。第一层特征检测器然后成为学习下一个RBM的可见单元。这种逐层学习可以重复多次。可以证明,只要每层的特征检测器数量不减少且权重正确初始化,添加一个额外的层总是可以提高模型分配给训练数据的对数概率的下界。当更高层的特征检测器数量较少时,这个界限不适用,但逐层学习算法仍然是预训练深度自动编码器权重的非常有效的方法。每层特征捕捉了下层单元活动之间的强烈、高阶相关性。对于各种数据集,这是逐步揭示低维、非线性结构的有效方式。
预训练多层特征检测器后,模型被“展开”(图1)以产生最初使用相同权重的编码器和解码器网络。然后全局微调阶段用确定性的、实值概率替换随机活动,并使用整个自动编码器的反向传播来微调权重以实现最佳重建。对于连续数据,第一层RBM的隐藏单元保持二进制,但可见单元被具有高斯噪声的线性单元替换。如果这种噪声的方差为单位方差,则隐藏单元的随机更新规则保持不变,可见单元的更新规则是从具有单位方差和均值的高斯分布中进行采样。
在作者所有的实验中,每个RBM的可见单元都有实值活动,这些活动范围在[0, 1]之间,对于逻辑单元。在训练更高级别的RBM时,可见单元被设置为前一个RBM的隐藏单元的激活概率,但除了最顶层之外的每个RBM的隐藏单元都有随机的二进制值。最顶层RBM的隐藏单元具有从均值由该RBM的逻辑可见单元的输入确定的单位方差高斯中抽取的随机实值状态。这允许低维编码充分利用连续变量,并便于与PCA进行比较。
匠心独运与卓越性能
为了证明预训练算法允许有效地微调深度网络,作者在包含由两个维度中的三个随机选择的点生成的“曲线”图像的合成数据集上训练了一个非常深的自动编码器。对于这个数据集,已知真实的内在维度,并且像素强度与用于生成它们的六个数字之间的关系是非线性的。像素强度在0和1之间,并且非常非高斯,因此作者在自动编码器中使用了逻辑输出单元,并且学习微调阶段最小化了交叉熵误差。
图2。(A)从上到下:测试数据集中的随机曲线样本;六维深度自动编码器产生的重建;使用六个成分的“逻辑PCA”(8)进行的重建;使用18个成分的逻辑PCA和标准PCA进行的重建。最后一行的平均每图像平方误差为1.44、7.64、2.45、5.90。(B)从上到下:每个类别的随机测试图像;30维自动编码器的重建;30维逻辑PCA和标准PCA的重建。最后三行的平均平方误差为3.00、8.01和13.87。(C)从上到下:测试数据集中的随机样本;30维自动编码器的重建;30维PCA的重建。平均平方误差为126和135。
自动编码器由编码器组成,层大小为(28×28)-400-200-100-50-25-6,以及一个对称的解码器。编码层中的六个单元是线性的,所有其他单元都是逻辑的。网络在20,000个图像上进行训练,并在10,000个新图像上进行测试。自动编码器发现了如何将每个784像素图像转换为六个实数,允许几乎完美的重建(图2A)。PCA的重建效果差得多。没有预训练,非常深的自动编码器即使在长时间的微调后,总是重建训练数据的平均值。具有单个隐藏层的浅层自动编码器可以在没有预训练的情况下学习,但预训练大大减少了它们的总训练时间。当参数数量相同时,深度自动编码器可以在测试数据上产生比浅层自动编码器更低的重建误差,但随着参数数量的增加,这种优势消失了。
接下来,作者使用一个784-1000-500-250-30自动编码器来提取MNIST训练集中所有手写数字的编码。用于预训练和微调的Matlab代码可以在中找到。同样,除了编码层中的30个线性单元外,所有单元都是逻辑的。在所有60,000个训练图像上进行微调后,自动编码器在10,000个新图像上进行了测试,并比PCA产生了更好的重建(图2B)。二维自动编码器比前两个主成分更好地可视化了数据(图3)。
图3。(A)通过对所有60,000张训练图像取前两个主成分,为每个类别的500个数字生成的二维编码。(B)由784-1000-500-250-2自动编码器找到的二维编码。
作者还使用了一个625-2000-1000-500-30自动编码器,线性输入单元来发现从Olivetti人脸数据集派生的灰度图像块的30维编码。自动编码器明显优于PCA(图2C)。当在文档上训练时,自动编码器产生的编码允许快速检索。作者表示了804,414个新闻报道中的每一个作为文档特定概率的向量,这些概率是2000个最常见的词干,作者使用多类交叉熵误差函数在一半的故事上训练了一个2000-500-250-125-10自动编码器。10个编码单元是线性的,其余的隐藏单元是逻辑的。当使用两个编码之间的角度余弦来测量相似性时,自动编码器明显优于潜在语义分析(LSA),这是一种基于PCA的众所周知的文档检索方法(图4)。自动编码器也优于局部线性嵌入,这是一种最近的非线性降维算法。
图4。(A)当使用测试集中的查询文档来检索其他测试集文档时,检索到的与查询同类别文档的比例,这是对所有402,207种可能的查询的平均值。(B)由二维LSA生成的编码。(C)由2000-500-250-125-2自动编码器生成的编码。
逐层预训练也可用于分类和回归。在广泛使用的MNIST手写数字识别任务的一个版本上,随机初始化的反向传播的最佳报告错误率为1.6%,支持向量机为1.4%。在784-500-500-2000-10网络中进行逐层预训练后,使用最陡下降和较小的学习率的反向传播实现了1.2%。预训练有助于泛化,因为它确保权重中的大部分信息来自对图像的建模。标签中的非常有限的信息仅用于略微调整由预训练找到的权重。
总结展望
从20世纪80年代开始,通过深度自动编码器的反向传播将对非线性降维非常有效,前提是计算机足够快,数据集足够大,并且初始权重足够接近一个好的解决方案。所有三个条件现在都满足了。与非参数方法不同,自动编码器在数据和编码空间之间提供双向映射,并且它们可以应用于非常大的数据集,因为预训练和微调与训练案例的数量在线性和空间上都成线性扩展。
参考:
https://www.science.org/doi/epdf/10.1126/science.1127647