注明:本人英语水平有限,翻译不当之处,请以英文原版为准,不喜勿喷,另,本文翻译只限于学术交流,不涉及任何版权问题,若有不当侵权或其他任何除学术交流之外的问题,请留言本人,本人立刻删除,谢谢!!
本文原作者:G.E.Hinton* and R.S.Salakhutdionv
原文地址:http://www.cs.toronto.edu/~hinton/science.pdf
为了重构高维的输入向量,可以通过训练一个具有小的中间层的多层的神经网络,从而把高位数据转换成低维的代码。梯度下降法能够用于这种自动编码网络中的权值调整,但是这只有在初始权值接近于好的方法(?)时才会起到很好的作用,本文描述了一种初始权值的有效方法,该方法允许深度自动编码网络学习低维的代码(原文“code”,暂时未想好更好的表述),该方法与主成分分析方法相比在数据降维方面能有更好的效果。
数据降维有助于高维数据的分类,可视化,通信以及存储。现广泛应用的降维方法是主成分分析方法(PCA),该方法寻找数据集中方差的最大值方向,并且按照这个最大值方向坐标呈现数据(?,可查看关于PCA的解释,此处是老外的理解表述,可能不符合我们的思维方式),我们描述了一个非线性的主成分分析方法,该方法使用一个自适应的多层的编码网络,将高维的数据转化成低维的代码
,同时利用一个类似的“decode”网络将这些代码还原成原始数据。在这个“ecode”和“decode”(此处为表述清楚使用原文这两个单词)网络中开始权值都是随机产生的,他们同时训练以便将原始数据和重构数据之间的差距降到最小,其中的梯度是通过将“decode”(重构网络)和“encode”(编码网络)之间的误差反向传播的链式法则获得的(?),这整个系统叫做“autoencode”(自动编码机),如图1所示。
如果一个非线性的自动编码机具有多个隐含层(2-4层),那么优化它的权值是非常困难的,
初始权值数量过大,会使“autocode”陷入局部最小值,初始权值数量过小,开始几层的梯度变化就会很小,训练多隐含层的“autocode”就会很难实现,如果初始权值接近一个好的状况(原文“good solution”,不知是不是这个意思。。)梯度下降就会表现很好,但是找到这样一个初始权值需要一个与众不同的算法,这种算法需要一次只能学习一层的特征。(搞不懂,,难道是每层需要不同的算法??+_+)我们介绍了一个二进制的“pretraining”程序,并把它推广到了实质数据集,结果表明它适用于不同的数据集。
二进制向量整体(例如图像)可以使用一个两层的受限玻尔兹曼机来建模,该模型利用对称的权值将随机的二进像素值连接到随机的二进制特征提取器。因为RBM可见层单元的状态是可见的,所以可见层单元的像素值就相当于RBM的可见层;特征提取层就相当于隐含层,可见层和隐含层之间的联合配置(v,h)具有一个能量(?此处能量的概念来自原文“energy”,但是不知合适否),该能量是通过以下函数(1)得到的
其中vi和hi分别是第i个像素和第j个特征的二进制状态,bi和bj是它们的偏置值,wij是它们之间的权值,这个网络通过这个能量函数给每一个可能的图像分配了一个概率值,就像(8)那样。
通过调整权值和偏置来降低或者提高图像的能量,从而提高训练图像的概率值,虚构出真实的图像,对于一副给定的图像,每个特征提取器j的二进制状态hj根据σ(bj+∑iviwij)得出的概率值,被设置成1,其中σ(x)是一个逻辑函数1/[1+exp(-x)],bj是第j个偏置,vi是第i个像素的状态,wij是i和j之间的权值。一旦隐含层单元之间的二进制状态确定后,这个虚构的(层,暂且叫做层,)就根据σ(bj+∑iviwij)得到的概率值设定可见层的状态为1,其中bi是第一个偏置值。
隐含层单元的状态每更新一次,就产生虚构层(对应前面的“层”)的特征。权值的改变是通过
实现的,其中ε是学习率,<vi hj>是。。。。(没理解)。在偏置方面使用了一个简单的学习规则,这个学习规则即使在它(指的应该是?wij)不是非常遵循训练数据的梯度时也能起到很好的作用。
利用单层的二进制特征模拟图像数据集并不能起到很好的作用。在学习了一层特征提取器之后,我们可以把其中 的激活单元-也就是被被数据驱动的状态-作为第二层特征提取的输入数据。第一层的特征提取器就变成了下一层RBM的可见层单元,这样一层接着一层的学习能够在每一代中重复许多次,这表明增加一个额外层能够提高模型分配给训练数据一个更低的概率值下界,并且能够提供每一层不用减少的特征提取器的数量和正确的初始化权值。这个界(bound,不知如何翻译)不适合有少量的特征提取器的高层,但是这种一层接一层的学习算法无疑是深度自动编码机预训练权值的一个非常有效方法。每一层特征提取器都会获取本层和下一层之间强劲的,高度规则话的相关性特征,对于各种各样的数据集,这种方法是一种渐进的揭示其中低维的非线性结构的有效方法。
在预训练特征提取器的许多层以后,这个模型就被展开成一个编码器和解码器,编码器和解码器的初始化就使用相同的权值。全部的微调状态就会通过实际的确定概率来来代替原来随机的激活状态,并且为了优化重构,这个微调会在整个自动编码机中使用反向传播来微调权值。
对于连续数据,RBM第一层的隐含层单元仍然是二进制的,但是其中的可见层是通过带有高斯噪声的线性单元产生的, 如果高斯噪声具有单位方差,那么隐含层单元的随机更新规则仍然是相同的,并且可见层单元i的更新来自于带有单位方差和bi+∑jhjwij均值的高斯样本(??)。
在本文的所有实验中,每一个RBM的可见层单元都是真实值逻辑单元,(?)值的大小在区间[0,1]之间。但是训练高层次的RBM时,可见层单元的状态是根据上一层的RBM隐含层单元的激活概率来设置激活状态的,与之相反的是,每一个RBM的隐含层单元除了顶层的那一个之外,都有随机的二进制值。顶层的RBM单元是随机的真实值,这些数值来自于一个单位方差高斯变量(?),这些变量的均值由RBM的逻辑可见层单元输入决定。这允许低维的代码好好利用连续变量并且能够和PCA进行对比。关于预训练和微调的细节可以在(8)中找到。
为了展示本文的预训练算法和微调网络,本文训练了一个非常深的自动编码机,该编码机运行在一个合成的数据集上,这个数据集包含的是由三个随机点产生的二维曲线(不知对否)。这个数据集的维数是知道的,并且每一个像素的强度和六个数字(?)之间是非线性的关系。像素强度限制在[0,1]之间,并且是非高斯分布的,