经典论文阅读-6:自动编码器

80 阅读7分钟

使用神经网络减少数据维度

论文地址:[PDF] Reducing the Dimensionality of Data with Neural Networks | Semantic Scholar

摘要

高维数据可被转换为低维编码,通过训练一个带中心层的多层神经网络,重构高维输入向量。梯度下降方法可被用来微调该自动编码网络的参数,但该方法只在初识参数接近局部最优时有效。我们介绍一种高效初识权重的方法,允许深度自动编码网络学到的低维编码比 PCA 等降维工具等效果更好。

正文

降维有利于分类、可视化、通信与高维数据存储。一种简单且广泛使用的方法是 PCA,寻找数据集中最大方差的方向,并通过这些方向表示各个数据点。我们介绍一种 PCA 的非线性泛化版本,使用自适应、多层编码网络来转换高维数据到低维编码。同时有一个相似的解码网络来恢复数据。

从这两个网络的随机权重开始,通过最小化其原始数据和重构数据的差异来同时训练训练它们。这需要链式反向传播,将误差导数验者解码网络传到编码网络,来获取每个参数的梯度。整个系统被称为自动编码器,结构如图所示。

pic1.png

很难优化具有多个隐藏层的非线性自动编码器的权重。使用更大的初始化权重,自动编码器通常找到很差的局部最优。使用更小的初始化权重,前几层的梯度极小,不足以训练具有多个隐藏层的自动编码器。如果初始化权重接近优良解,梯度下降效果很好,但寻找这个初始权重需要非常不同类型的算法来一次学习一层特征,我们介绍一种适应二元数据的预训练过程,并将其泛化到实数数据,在多种数据集上展示其效果。

二元向量整体可被两层网络建模,该网络称为受限玻尔兹曼机 Restricted Boltzmann Machine,RBM。在其中随机、二元像素被连接到随机、二元特征检测器,使用对称带权连接。像素对应 RBM 的可视单元,特征检测器对应 RBM 的隐藏单元。可视层与隐藏层的连接配置 (v, h) 的能量来自以下公式。

E(v,h)=ipixelsbivijfeaturesbjhji,jvihjwijE(v,h)=-\sum_{i\in pixels}b_iv_i-\sum_{j\in features}b_jh_j-\sum_{i,j}v_ih_jw_{ij}

其中 vi,hjv_i,h_j 是像素 i 和特征 j 的二元状态。bi,bjb_i,b_j 是其偏置。wijw_{ij} 是二者连接权重。该网络通过能量公式给每个图片设置一个概率。训练图片的概率可以通过调整权重和偏置来提升,这样会减少图片的能量和提升能量相似性。相比于虚构图片,网络更倾向于真实图片。给定一张训练图片,每个特征检测器 j 的二元状态 hjh_j 设置为 1 的概率为 σ(bj+iviwij)\sigma(b_j+\sum_iv_iw_{ij}) ,其中 σ\sigma 为逻辑函数 1/[1+exp(x)]1/[1+\exp (-x)]bjb_j 为 j 的偏置,viv_i 为像素 i 的状态,wijw_{ij} 为二者的权重。一旦隐藏层二元状态设置完毕,可生成虚构图,通过概率 σ(bi+jhjwij)\sigma(b_i+\sum_jh_jw_{ij}) 设置每个像素 i 的二元状态为 1 。接着根据生成的虚构图片更新隐藏层状态,其权重更新公式为。

Δwij=ε(vihjdatavihjrecon)\Delta w_{ij}=\varepsilon(\lang v_ih_j\rang _{data}-\lang v_ih_j\rang _{recon})

其中 ε\varepsilon 是学习率,vihjdata\lang v_ih_j\rang _{data} 是真实图驱动特征检测器时像素与特征同为 1 的次数得分,vihjrecon\lang v_ih_j\rang _{recon} 是虚构图对应得分。同样学习规则的简化版被用于更新偏置。该学习方法效果良好,即使不严格按照训练数据对数概率的梯度更新。

单层二元特征不是建模图片的最好方法。在学习好一层特征检测器后,将其视为由数据驱动的网络第一层活跃状态,来训练网络第二层。这样第一层特征检测器变成另一个 RBM 的可视单元。这种一层接一层的学习可重复多次。通常提升层数可以降低模型在训练数据的性能下限。但在高层只有少量特征检测器时,该结论不成立。尽管如此,一层接一层的学习算法也是非常高效的深度自动编码器权重的预训练方法。每一层特征都捕获低层活跃单元的强相关性。对一大类数据集来说,这是一种有效的渐进方式来获取其低维非线性结构。

预训练多层特征检测器后,模型展开为编码器、解码器网络,使用同样权重初始化。接着通过全局微调阶段,使用在整个自动编码器上的反向传播,微调权重来最优化重构图效果。

对于连续数据,RBM 第一层隐藏单元仍是二元的,但可视单元被换为带有高斯噪声的线性单元。如果噪声具有单位方差,则隐藏单元的随机更新规则保持不变,可视层单元 i 的更新规则变为通过单位方差和均值为 bi+jhjwijb_i+\sum_jh_jw_{ij} 的高斯采样。

在我们的实验里,所有 RBM 的可视单元都有实数活跃值,取值范围 [0-1] 。在训练高层 RBM 时,该活跃值被视为激活概率。最顶层 RBM 的隐藏单元具有随机实数状态,取值来自单位方差和均值为输入可视单元的均值的高斯采样。这允许低维编码有效利用连续数值,促进与 PCA 的比较。

pic2.png

为了演示我们的预训练算法如何支持高效微调深度网络,我们训练一个非常深的自动编码器,基于人工合成的图片数据集,其中图片生成自三个随机选择的二维空间点。对于该数据集,其真实固有维度已知,且像素值与这随机选择的六个生成数高度非线性相关。像素值取值范围 [0-1] 且分布非高斯。因此我们使用逻辑输出单元作为自动编码器的输出。学习的微调阶段最小化误差的交叉熵 [ipilogp^ii(1pi)log(1p^i)][-\sum_ip_i\log\hat p_i-\sum_i(1-p_i)\log(1-\hat p_i)] ,其中 pip_i 为输入图的像素值,p^i\hat p_i 为重构图的像素值。

自动编码器中,编码器各层大小为 (28x28)-400-200-100-50-25- 6,解码器与其对称。编码层 6 个单元是线性的,其他层单元是逻辑的。使用的训练集 20000 图片,测试集 10000 新图片。自动编码器能够发现如何将 784 像素图转换为 6 个实数值,且保持最优的重构效果。与之相比,PCA 效果更差。没有预训练,模型只会将图片重构为训练数据的均值,即使经过长期微调也一样。只有一个隐藏层的浅层自动编码器能够不经预训练学习,但是预训练会极大减少训练时间。在参数量相同的情况下,深度自动编码器能产生比浅层模型更低的识别误差,但随着参数量再增加,该优点就消失了。

接下来,我们使用 784-1000-500-250-30 自动编码器抽取 MNIST 手写数字的低维编码。与上边的测试配置相似,测试效果优于 PCA。我们也适用 625-2000-1000-500-30 的自动编码器在 Olivetti 面部数据集上测试,结果同样明显优于 PCA。

当训练文档时,模型输出的结果代码可用与快速检索。我们使用包含 804414 个新闻报道的数据集,构造宽度为 2000 的高频单词概率向量,训练 2000-500-250-125-10 的自动编码器,使用两个代码之间的余弦相似度表示文档的相似性,模型性能显著优于 LSA,一种基于 PCA 的文档检索方法。

pic3.png

自 1980s 起,在深度自编码器上反向传播就是非常高效的非线性降维手段。只要计算机够快,数据量够大,初始参数够接近局部最优,降维效果就一定很棒。当这三个条件满足时,不像非参数化方法,自动编码器能得到很好的数据与编码空间的双向映射。同时,该方法也可用于大规模数据集上,因为预训练和微调的时间与空间消耗与数据量线性相关。