论文来源:Reducing the Dimensionality of Data with Neural Networks
通过训练一个具有小中心层的多层神经网络重构高维输入向量,可以将高维数据转换为低维码。梯度下降可以用来微调这种“自动编码器”网络的权值,但只有当初始权值接近一个好的解决方案时,这种方法才能很好地工作。我们描述了一种有效的初始化权值的方法,它允许深度自动编码器网络学习低维数据,这比主成分分析降维效果更好。
降维能有效的促进高维数据的分类、可视化、通信和存储。主成分分析(PCA)是一种简单而应用广泛的将高维数据准换为低维码的方法,找出数据集中方差最大的方向,并通过每个方向上的坐标表示每个数据点。我们描述了使用自适应、多层“编码器”网络的PCA的非线性推广将高维数据转换为低维代码,并使用类似的“解码器”网络从代码中恢复数据。从两个网络的随机权值入手,通过最小化原始数据和重构数据之间的差异,可以共同进行训练。利用链式法则,先通过解码器网络,再通过编码器网络反向传播误差导数,很容易得到所需的梯度(1),整个系统被叫做自编码器,如图(1)所示。
当有多层隐藏层时(2-4),使用非线性自编码器初始化权重比较困难。当初始权值较大时,自动编码器通常会找到较差的局部极小值;由于初始权值较小,早期层中的梯度很小,这使得训练具有许多隐含层的自动编码器是不可行的。如果初始权值接近一个好的解决方案,梯度下降可以很好地工作,但是找到这样的初始权值需要一种非常不同的算法,这种算法一次只能学习一层特征。我们介绍了二进制数据的“预训练”过程,并将其推广到实值数据,并证明了它对各种数据集都是有效的。
二值向量(例如图像)的集合可以使用一种叫做“受限玻尔兹曼机”(RBM)的双层网络来建模,在这种网络中,随机的二值像素通过对称加权连接连接到随机的二值特征检测器。像素对应于“RBM的可见单位,因为它们的状态被观察到;特征检测器对应于“隐藏”单元。可见和隐藏单元的联合配置(v, h)具有能量(7)
其中
v
i
v_{i}
vi和
h
i
h_{i}
hi是像素i和特征j的二进制表示、
b
i
b_{i}
bi、
b
j
b_{j}
bj是偏差,
w
i
w_{i}
wi是它们之间的权重。网络通过这个能量函数为每一幅可能的图像分配一个概率。可以通过调整权重和偏差来降低训练图像的概率,以降低该图像的能量并提高该网络希望使用真实数据的类似“受干扰”图像的能量。给定训练图像,每个特征检测器j的二进制状态
h
j
h_{j}
hj用概率公式
σ
(
b
j
+
∑
i
v
i
w
i
j
)
\sigma \left ( b_{j}+\sum _{i}v_{i}w_{ij} \right )
σ(bj+∑iviwij),设置为1.其中
σ
(
x
)
\sigma \left ( x \right )
σ(x)是逻辑函数
1
1
+
e
−
x
\frac{1}{1+e^{-x}}
1+e−x1,
b
j
b_{j}
bj是j的偏置,
v
i
v_{i}
vi是像素i的状态,而
w
i
j
w_{ij}
wij是i和j之间的权重。一旦为隐藏单元选择了二进制状态,就会通过以概率
σ
(
b
i
+
∑
j
h
j
w
i
j
)
\sigma \left ( b_{i} +\sum _{j}h_{j}w_{ij}\right )
σ(bi+∑jhjwij)将每个
v
i
v_{i}
vi设置为1来产生“干扰”,其中
b
i
b_{i}
bi是i的偏差。然后,再次更新隐藏单元的状态,以使其代表协作的功能。权重的变化由下式给出
其中,e为学习率,
⟨
v
i
h
j
⟩
d
a
t
a
\left \langle v_{i}h_{j} \right \rangle_{data}
⟨vihj⟩data为特征检测器在数据驱动下,像素i和特征检测器j在一起的次数所占的比例,
⟨
v
i
h
j
⟩
r
e
c
o
n
\left \langle v_{i}h_{j} \right \rangle_{recon}
⟨vihj⟩recon为虚构对应的比例的简化版本即使不完全遵循训练数据的对数概率的梯度(6),学习效果也很好。
单层二进制特征不是在一组图像中对结构建模的最佳方法。在学习了一层特征检测器之后,我们可以将它们的活动(当它们被数据驱动时)视为用于学习第二层特征的数据。然后,特征检测器的第一层成为用于学习下一个RBM的可见单元。这种逐层学习可以根据需要重复多次。可以证明,只要每层特征检测器的数量不减少并且权重正确初始化,添加额外的层总是可以提高模型分配给训练数据的对数概率的下限(9)。当较高的层具有较少的特征检测器时,此界限不适用,但是逐层学习算法仍然是预训练深度自动编码器权重的一种非常有效的方法。每一层特征都捕获了下面紫菜中各单元活动之间的强高阶相关性。对于各种各样的数据集,这是一种逐步揭示低维非线性结构的有效方法。
在对多层特征检测器进行预处理后,将模型“展开”(图1),生成初始使用相同权值的编码器和解码器网络。全局调优阶段则用确定性、实值概率代替随机活动,并通过整个自动编码器的反向传播对权值进行调优,实现最优重建。
对于连续数据,第一级RBM的隐藏单元仍然是二进制的,但是可见单元被带有高斯噪声的线性单元所取代(10)。如果该噪声具有单位方差,则隐藏单元的随机更新规则保持不变,而可见单元i的更新规则是对具有单位方差和均值
b
i
+
∑
j
h
j
w
i
j
b_{i}+\sum _{j}h_{j}w_{ij}
bi+∑jhjwij的高斯分布进行抽样,在我们所有的实验中,每个RBM的可见单元都具有实值活动,其活动范围为后勤单元[0,1]。在训练高层RBM时,将可见单元设置为之前RBM中隐藏单元的激活概率。除了最上面的隐藏单元外,每个RBM的隐藏单元都有随机的二进制值。顶层RBM的隐藏单元具有随机实值状态,该状态由单位方差高斯分布产生,其均值由该RBM的逻辑可见单元的输入决定。这使得低维码能够很好地利用连续变量,并便于与PCA进行比较。培训前的细节和微调可以在(8)中找到。
为了证明我们的预训练算法使我们能够有效地微调深度网络,我们在包含从两个维度中的三个随机选择点生成的“曲线”图像的合成数据集上训练了非常深的自动编码器(8)。 对于此数据集,三位维数的真值是已知的,并且像素强度与用于生成它们的六个数字之间的关系是高度非线性的。 像素强度在0到1之间,并且非常非高斯,因此我们在自动编码器中使用了逻辑输出单元,并且学习的微调阶段将交叉熵误差降到了最小
其中P是像素i的强度,p是其重建的强度。自动编码器由层大小为(28 x 28)-400-200-100 50-25-6的编码器和对称解码器组成。 代码层中的六个单元是线性的,其他所有单元都是逻辑的。 该网络接受了20.000张图像的培训,并接受了10,000张新图像的测试。 自动编码器发现了如何将每个784像素的图像转换为六个rea数,从而可以实现几乎完美的重构(图2A)。 PCA提供了更差的重构。 在没有预训练的情况下,即使经过长时间的微调,超深自动编码器也始终会重建训练数据的平均值(8)。 较浅的自动编码器在数据和代码之间只有一个隐藏的紫菜可以学习而无需预训练,但是预训练大大减少了它们的总训练时间(8)当参数数量相同时,较深的自动编码器在测试数据上产生的重构误差要比浅层自动编码器低 但是,随着参数数量的增加,这种优势就消失了(8)。
接下来,我们使用784-1000-500-250-30自动编码器来提取MNIST训练集(11)中所有手写数字的代码。我们用于预训练和微调的Matlab代码在(8)中可以找到。同样,除了代码层中的30个线性单元外,所有单元都是逻辑逻辑的。在对所有6万张训练图像进行微调后,自动编码器在1万张新图像上进行了测试,得到了比PCA更好的重构结果(图2B)。与前两个主成分相比,二维自编码器产生了更好的数据可视化效果(图3)。我们还使用带有线性输入单元的625-2000-1000-500-30自动编码器来发现来自Olivetti面部数据集的灰度图像块的30维编码(12)。自动编码器的性能明显优于pca(图2C)。
在对文档进行培训时,自动编码器会生成允许快速检索的代码。 我们将804.414个新闻专线故事(13)中的每一个都表示为2000个最常见词干的特定于文档的概率的向量,并且我们使用了2,000.000-250-125-10个自动编码器,对其中一半的故事进行了训练 多类交叉熵误差函数
[
−
∑
i
p
i
l
o
g
p
j
]
\left [ -\sum _ip_{i}log p_{j} \right ]
[−∑ipilogpj]为微调。 这10个代码单元是线性的,其余隐藏单元是对数的。当使用两个代码之间的角度的余弦来衡量相似性时,自动编码器明显优于潜在的语义分析(LSA)(14),这是一种众所周知的基于文档的检索方法 在PCA上(图4)。 自动编码器(8)的性能也优于局部线性嵌入,这是一种最新的非线性降维算法(15)。
逐层预训练也可以用于分类和回归。 在广泛使用的MNIST手写数字识别任务版本上,报告的最佳错误率是随机初始化的反向传播为1.6%,支持向量机为1.4%。 在784-500-500-2000-10网络中逐层进行紫菜预训练后,使用最陡峭的血统和较小的学习率进行反向传播可达到1.2%(8)。 预训练有助于泛化,因为它可以确保权重中的大多数信息来自对图像进行建模。 标签中的信息非常有限,仅用于略微调整通过预训练发现的重量。
自20世纪80年代以来,很明显,如果计算机足够快,数据集足够大,通过深度自编码的反向传播对于非线性降维是非常有效的。初始的权重足够接近一个好的解。这三个条件现在都满足了。与非参数方法(15,16)不同,自动编码器在数据和代码空间的两个方向上都提供了映射,它们可以应用于非常大的数据集,因为预处理和微调在时间和空间上都随训练用例的数量线性变化。