Reducing the Dimensionality of Data with Neural Networks

翻译 2016年05月31日 12:10:23

上周阅读了Hinton在06发表在Science上的文章Reducing the Dimensionality of Data with Neural Networks,结合了网上找到的一些资料(这个这个还有这个),对文章进行了翻译。实验部分可以参考这里。关于文章里结点的状态服从高斯分布以及能量函数的部分不是很懂,翻译没做好的地方应该就是还没看懂的地方,请批评指正,未完待续。

用神经网络减少数据维数

G. E. Hinton and R. R. Salakhutdinov

  通过训练小中间层(small central layer)的多层神经网络(神经元个数小于维数),可以将高维数据(high-dimensional data)转换为低维编码(low-dimensional codes),以此(通过此网络)来重建(reconstruct )高维输入向量(high-dimensional input vectors)。梯度下降法(gradient descent)可以用来在这个“自编码(autoencode)网络”上微调(fine-tuning)权值,但是这(梯度下降)只在初始权值接近较好方案时有效。本文介绍(describe)了一种有效初始权重方法来作为减少数据维度的工具,这种方法使得深度自编码网络学习低维编码的效果优于主成分分析(PCA,principal components analysis)。


  降维(Dimensionality reduction)有利于高维数据的分类、可视化、传递(通信,communication)以及储存(歧义)。一个简单并被广泛应用的降维方法是主成分分析,他(PCA)找到数据集中最大方差方向(directions of greatest variance)并通过数据集的坐标和最大偏差方向来表示每个数据点(data point)。本文提出(describe)了一个主成分分析的非线性推广(nonlinear generalization of PCA),使用自适应的多层编码网络(an adaptive, multilayer “encoder” network)转化高纬数据到低维数据,并且可以使用一个类似的解码网络( “decoder” network)可以从低维数据恢复出元数据。从随机初始权值的两个网络中(编码网络 Encoder 和 解码网络 Decoder),他们可以被训练在一起,通过最小化原始数据和重建数据之间的差异。梯度的获得,可以利用链式法则(chain rule)来反馈错误,首先通过解码网络(Decoder),然后通过编码网络(Encoder)(1)。整个系统叫做”自编码器”(Autoencoder),如图1所示。
  优化多隐层的非线性自编码器的权重是非常困难(2-4):使用大的初始权重,自编码器往往会陷入较差的局部极小(poor local minima);使用小的初始权重,(由于梯度消失)前几层的梯度非常小,使得训练多隐层的自编码器变得不可行(infeasible)。如果初始权重接近较好的解,梯度下降效果不错,但是要找到这样(较好)的初始权重,需要用到另一个“一次学习一层特征”的算法。为了二进制数据,本文引入“预训练”方法,并将“预训练”推广到实数据上。结果显示,对于不同的数据集,“预训练”效果不错。
  二值向量的集合(比如图片)能用被叫做限制波尔兹曼机(RBM,restricted Boltzmann machine)(5,6)的双层网络来建模。RBM中,随机二值像素(stochastic, binary pixels )与使用对称加权链接( symmetrically weighted connections)的随机二值特征探测子(stochastic, binary feature detectors)相连。这些像素相当于RBM的可见结点( “visible” units),因为它们的状态可被观察;特征探测子相当于隐层结点(”hidden” units)。一个可见层与隐藏层的联合分布(v,h)的能量函数(7)按下式给出:

E(v,h)=ipixelsbivijfeaturesbihii,jvihiwij

其中vihi是像素i和特征j的二值状态,bibj是它们(像素i和特征j)的偏置,wij是像素i和特征j间的权值。网络通过能量函数给每一个可能的图像分配一个概率,正如(8)解释的。可以通过调整权值和偏置的方式来提高训练图片的概率以此来降低图片的能量,并且提升相似”虚构”图片(网络更倾向的实数据/实际数据)的能量( raise the energy of similar, “confabulated” images that the network would prefer to the real data. )。给出一张训练图片,每个特征探测子j的二值状态hjσ(bj+iviwij)的概率被设为1,其中σ是逻辑函数(logistic function )11+exp(x)bjj的偏置,vi是像素i的状态,wijij之间的权重。一旦二值状态因隐层结点而被选定,每个viσ(bi+jhjwij)的概率被设为1,产生了一个”重构”,bii的偏置。此时,隐层结点被再次更新,这样,这些隐层结点表示重构的特征。权重的变化由下式给出:
Δwij=ε(vihjdatavihjrecon)

其中ε是学习率,vihjdatais the fraction of times that the pixel i and feature detector j are on together when the feature detectors are being driven by data, and vihjrecon is the corresponding fraction for confabulations. 同理可得偏置的学习规则(更简单)。此学习过程效果良好,虽然它并非严格沿着训练数据的对数概率梯度(6)( The learning works well even though it is not exactly following the gradient of the log probability of the training data )。
  单层的二值网络不足以模拟一组图片(因此一般采用多层网络)。训练完一层网络之后,我们把这层的激活值(也就是输出)作为学习第二层特征的输入。第一层的特征(输出层)此时成为了下一层RBM的输入。这种逐层学习(layer-by-layer learning)可以多次重复(can be repeated as many times as desired)。可以证明,增加额外的层总是可以提高网络模型分配给数据的对数概率的下限,假定每层特征检测子的数目不减少并且他们的初始权值被正确初始化(9)。但此下界不能应用于高层节点减少的情况,尽管如此,逐层学习算法不失为一种对深度自编码网络权值预训练的有效方法。每个隐层获得上层输出更高阶的关联(提取的特征更抽象)。对于更广泛的数据集,这是逐步揭示(progressively reveal)低维,非线性结构的有效方法。
  多个隐层预训练之后,模型被展成(”unfolded” to produce)初始权重相同(偏置不同)的编码网络与解码网络(encoder and decoder networks)。随后的全局微调( fine-tuning)阶段,用确定性的概率(实数)以及对整个自编码网络用BP微调权重来取代随机激活值(stochastic activities),达到优化重建的目的。
  对于连续数据,第一层RBM隐藏元为二进制变量,但可见元使用带高斯噪声的线性单元代替(10)。若噪音具有单位方差(方差为1的高斯分布),隐藏元的随机更新规则保持不变,可见元i的更新服从方差为1均值为bj+(hj+Wij)的高斯分布。
  文章中的所有实验里,每个RBM可视层的输出都是归一化到[0,1]上的实数。后面层的RBM的输入层都是上一个RBM网络输出层的概率值。当训练更高层的RBM,该层的RBM的可视层结点被设为上层RBM的隐层结点的激活概率(实数)。除去顶层RBM之外,每个RBM的隐层结点是随机的逻辑值。顶层RBM的隐层结点(随机变量)服从方差为1的高斯分布,其均值由此RBM的逻辑可视结点的输入决定。这就使得低维编码(low-dimensional codes)可以更好地利用连续变量并且方便与PCA对比。预训练和微调的细节可以参考(8)。
  为证实文章预训练算法可以有效地微调深度网络,作者在一个包含曲线( that were generated from three randomly chosen points in two dimensions (8))图片的合成数据集上训练了一个特定的深度编码器。对于这个数据集,这个真实的固有维度是已知的,像素点的强度与六个参数间的联系是高度非线性的。像素强度位于0和1之间,并且分布是非常非高斯的(very non-Gaussian),所以本文在自编码网络以及最小化交叉熵损失[ipi log p^ii(1p) log (1p^i)]训练中的微调阶段中使用了逻辑输出单元。其中pi是像素i的灰度,p^i是重建的灰度。
  自编码网络由(28×28)40020010050256的编码网络和一个(与编码网络对称的,也就是62550100200400(28×28))解码网络组成。编码层的6个结点都是线性的,其他结点都是逻辑的(二进制的)。网络用20,000张图片训练,并用10,000张新图片测试。这个自编码器发现了(discovered)如何转化784个像素的图像到6个实数,并使得图片几乎完美重建(图2.A)。比PCA给出的重建效果好得多。若没有预训练过程(即使延长参数微调(8)),这个深度自编码网络也只能恢复出数据的一般水平(效果一般)。只有一层的浅层自编码器可以不经预训练学习,但是经过预训练可以很大地降低训练时间(8)。数据与编码(code)间只有单隐层的浅层自编码网络不用预训练也能学习,但预训练能很大程度上减少自编码网络的训练时间(8)。当参数的数量相同时,深度自编码网络可以比浅层自编码网络相比,深度自编码网络在测试数据上有更低的重建误差,但这种优势随着参数的增长而递减(8)。
  接下来,作者使用一个784100050025030的自编码网络提取所有的MINIST训练集的编码(11)。作者使用的预训练和微调的Matlab代码可以在(8)中获得。同样的,除了编码层的30个线性结点,其余结点都是逻辑节点。在60,000张训练图片上微调后,自编码网络测试了10,000张新图片,重建的效果比PCA好很多(图2B)。一个二维自编码网络对MNIST数据的可视化效果超过PCA两主元分析(图3)。
  作者还使用了一个6252000100050030自编码网络利用线性输入元用30维的编码来重建(源于Olivetti人脸数据集(12)的)灰度图像块。自编码网络的效果明显优于PCA(图2C)。
  随后训练文档,自编码网络产生的代码能够用来快速检索。文章把804,414篇新闻报道(13)中的每一篇表示成一个向量,向量由2000个与文档相关的常见词根的概率组成。训练了一个200050025012510的自动编码网络,将一半的样本用多分类交叉熵误差函数ipi log p^i来微调。编码层的10个结点都是线性的,其他结点都是逻辑的。用两个编码的余弦值来度量相似性,自编码网络性能明显优于潜在语义分析(latent semantic analysis, LSA),一个著名的基于PCA的文献检索方法(图4)。自编码网络(8)依然效果优于局部线性嵌入(local linear embedding, LLE),一个最近发现的非线性降维方法(15)。
  逐层预训练同样也可以用于分类和回归。在广泛使用的MNIST手写数字识别任务上,随机初始化的BP网络最好的错误率为1.6% ,支持向量机最好为1.4%。逐层预训练784500500200010的网络后,通过带小学习率的BP使用最速下降法,作者的错误率减小到了1.2%(8)。预处理有助于泛化,因为预处理确保了权值产生的大多数信息来自于图像本身的建立。标签中有限的信息仅被用于微调预训练后得到的权重。
  自1980年代以来,已经很明确,在计算速度足够快、数据集足够大,初始权值足够接近最优权值的前提下,BP用于深度自编码将是一个十分有效的非线性降维方法。当今,这三个条件都满足了。不同于非参数模型(15,16),自编码网络给出了(数据之间的)方向和编码空间两方面的映射。此方法能用到非常大的数据集上,因为随着训练样本的增加,预训练和微调的规模在时间与空间上呈线性增长。


References and Notes

[1]: D. C. Plaut, G. E. Hinton, Comput. Speech Lang. 2, 35 (1987).

[2]: D. DeMers, G. Cottrell, Advances in Neural Information Processing Systems 5 (Morgan Kaufmann, San Mateo, CA, 1993), pp. 580–587.

[3]: R. Hecht-Nielsen, Science 269, 1860 (1995).

[4]: N. Kambhatla, T. Leen, Neural Comput. 9, 1493 (1997).

[5]: P. Smolensky, Parallel Distributed Processing: Volume 1: Foundations, D. E. Rumelhart, J. L. McClelland, Eds. (MIT Press, Cambridge, 1986), pp. 194–281.

[6]: G. E. Hinton, Neural Comput. 14, 1711 (2002).

[7]: J. J. Hopfield, Proc. Natl. Acad. Sci. U.S.A. 79, 2554 (1982).

[8]: See supporting material on Science Online.

[9]: G. E. Hinton, S. Osindero, Y. W. Teh, Neural Comput. 18, 1527 (2006).

[10]: M. Welling, M. Rosen-Zvi, G. Hinton, Advances in Neural Information Processing Systems 17 (MIT Press, Cambridge, MA, 2005), pp. 1481–1488.

[11]: The MNIST data set is available at http://yann.lecun.com/ exdb/mnist/index.html.

[12]: The Olivetti face data set is available at www. cs.toronto.edu/ roweis/data.html.

[13]: The Reuter Corpus Volume 2 is available at http:// trec.nist.gov/data/reuters/reuters.html.

[14]: S. C. Deerwester, S. T. Dumais, T. K. Landauer, G. W. Furnas, R. A. Harshman, J. Am. Soc. Inf. Sci. 41, 391 (1990).

[15]: S. T. Roweis, L. K. Saul, Science 290, 2323 (2000).

[16]: J. A. Tenenbaum, V. J. de Silva, J. C. Langford, Science 290, 2319 (2000).

[17]: We thank D. Rumelhart, M. Welling, S. Osindero, and S. Roweis for helpful discussions, and the Natural Sciences and Engineering Research Council of Canada for funding. G.E.H. is a fellow of the Canadian Institute for Advanced Research.


相关文章推荐

Reducing the Dimensionality of Data with Neural Networks:神经网络用于降维

High-dimensional data can be converted to low-dimensional codes by training a multilayer neural netw...

Reducing the Dimensionality of Data with Neural Networks

2006年,加拿大多伦多大学教授、机器学习领域的泰斗Geoffrey Hinton发表的这篇文章引起了深度学习的狂潮,使得深度学习死灰复燃。1、在数据降维中,可以利用多层神经网络。梯度下降法是传统的参...

深度学习:Hinton_Science_Reducing the dimensionality of data with neural networks

近日,闲来得空,又不停的听到Deep learning (DL)相关的突破~ 故来研究下Deep learning的相关东西~ 在Deep learning 的学习资源中找到,关于Deep...

Deep Learning读书笔记(一):Reducing the Dimensionality of Data with Neural Networks

这是发表在Science上的一篇文章,是Deep Learning的开山之作,同样也是我读的第一篇文章,我的第一篇读书笔记也从这开始吧。        文章的主要工作是数据的降维,等于说这里使用深度...

浅读——reducing the dimensionality of data with neural networks(一)

最近在看DBN(深度信念网络)的相关知识以及代码,代码是Hition 的文章reducing the dimensionality of data with neural networks的代码部分。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)