论文--阅读翻译笔记-Reducing the Dimensionality of Data with Neural Networks

摘要:
通过训练小中间层(small central layer)的多层神经网络(神经元个数小于维数),可以将高维数据(high-dimensional data)转换为低维编码(low-dimensional codes),以此(通过此网络)来重建(reconstruct )高维输入向量(high-dimensional input vectors)。其中这个神经网络的中间层神经元数是较少的,可把这个神经网络叫做自动编码网络或自编码器(autoencoder)。梯度下降法可用来微调这个自动编码器的权值,但是只有在初始化权值较好时才能得到最优解(在计算速度足够快、数据集足够大,初始权值足够接近最优权值的前提下,BP用于深度自编码将是一个十分有效的非线性降维方法。),不然就容易陷入局部最优解。本文提供了一种有效的初始化权值算法,就是利用深度自动编码网络来学习得到初始权值。这一算法比用主成份分析(PCA)来对数据进行降维更好更有效。

/*主成分分析(Principal Component Analysis,PCA)(是一种降维的统计方法)。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量(尽可能多地反映原来变量的信息)来代替原来的指标,转换后的这组变量叫主成分。
找到数据集中最大方差方向(directions of greatest variance)并通过数据集的坐标和最大偏差方向来表示每个数据点(data point)。
*/

内容:
降维在分类、可视化、通信、高维数据的存储等方面都非常有促进作用。一个简单且广泛应用的方法就是PCA降维,它通过寻找数据中的最大变化方向,然后把每个数据都投影到这些方向构成的坐标系中,并表示出来。本文提出了一种PCA的非线性泛化算法,该算法用一个自适应的多层自动编码网络来把高维数据编码为一个低维数据,同时用一个类似的解码网络来把这个低维数据重构原高维数据。

首先,对这两个网络的权值进行随机初始化,然后通过最小化重构项和原始数据之间的误差对权值进行训练。误差的偏导数通过后向传播得到梯度,也就是把误差偏导数先通过解码网络,再通过编码网络进行传播。整个系统叫做自编码器,具体见图1。

论文--阅读翻译笔记-Reducing the Dimensionality of Data with Neural Networks

图1.预训练,就是训练一系列的RBM,每个RBM只有一层特征检测器。前一个RBM学习的特征作为下一个RBM的输入。预训练完成后把RBM展开得到一个深层自动编码网络,然后把误差的偏导数后向传播,用来对这个网络进行微调。
最优化有多层隐藏层(2-4层)的非线性自编码器的权值比较困难。因为如果权值初始值较大时,自编码器非常容易陷入局部最优解;如果权值初始值较小时,前几层的梯度下降是非常小的,权值更新就非常,这样就必须增加自编码器的隐藏层数,不然就训练不出最优值。如果初始权值比较接近最优解,那么就能能过梯度下降法很快训练得到最优解,但是通过一次学习一层特征的算法来找出这样的初始权值非常困难。“预训练”可以很好地解决这一问题,通过“预训练”可以得到比较接近最优解的初始权值。虽然本文中的“预训练”过程是用的二值数据,但是推广到其他真实的数据也是可以的,并且证明是有效的。

一个二值向量(如:图像)可以通过一个2层网络(即:RBM)来重构,在RBM(文献[5][6])中,通过对称加权连接把随机二值像素点和随机二值特征检测器联系起来。那些像素点相当于RBM的可视化单元,因为它们的状态是可见的;那些特征检测器相当于隐藏单元。可视单元和隐藏单元的联合系统(v,h)之间的能量(文献[7])表示为:

论文--阅读翻译笔记-Reducing the Dimensionality of Data with Neural Networks

网络通过能量函数给每一个可能的图像分配一个概率,正如(8)解释的。可以通过调整权值和偏置的方式来提高训练图片的概率以此来降低图片的能量,并且提升相似”虚构”图片(网络更倾向的实数据/实际数据)的能量。给出一张训练图片,每个特征探测子j的二值状态论文--阅读翻译笔记-Reducing the Dimensionality of Data with Neural Networks论文--阅读翻译笔记-Reducing the Dimensionality of Data with Neural Networks的概率被设为1,其中σ是逻辑函数sigmod=论文--阅读翻译笔记-Reducing the Dimensionality of Data with Neural Networks,bj是j的偏置,vi是像素i的状态,wij是i和j之间的权重。一旦二值状态因隐层结点而被选定,每个vi以论文--阅读翻译笔记-Reducing the Dimensionality of Data with Neural Networks的概率被设为1,产生了一个”重构”, 此时,隐层结点被再次更新,这样,这些隐层结点表示重构的特征。权重的变化由下式给出:

论文--阅读翻译笔记-Reducing the Dimensionality of Data with Neural Networks

,其中ε是学习率。

 单层的二值网络不足以模拟大量的数据集,因此一般采用多层网络,即把第一层网络的输出作为第二层网络的输入。第一层的特征(输出层)此时成为了下一层RBM的输入。这种逐层学习(layer-by-layer learning)可以多次重复(can be repeated as many times as desired)。可以证明,增加额外的层总是可以提高网络模型分配给数据的对数概率的下限,假定每层特征检测子的数目不减少并且他们的初始权值被正确初始化(9)。并且每增加一个网络层,就会提高网络对输入数据重构的log下界概率值,且上层的网络能够提取出其下层网络更高阶的特征。多个隐层预训练之后,模型被展成(”unfolded” to produce)初始权重相同(偏置不同)的编码网络与解码网络(encoder and decoder networks)。随后的全局微调(fine-tuning)阶段,用确定性的概率(实数)以及对整个自编码网络用BP微调权重(上面的式子)来取代随机**值(stochasticactivities),达到优化重建的目的。

 

      当网络的预训练过程完成后,我们需要把解码和编码部分重新拿回来展开构成整个网络,然后用真实的数据作为样本标签来微调网络的参数

      对于连续的数据,第一个RBM的隐藏层仍然是二值的,但是其可视化层单元是带高斯白噪声的线性单元。如果该噪声是单位方差,隐藏单元的更新规则仍然是一样的,第i个可视化层单元的更新规则是从一个高斯噪声中抽样,这个噪声的方差是单位方差,均值是论文--阅读翻译笔记-Reducing the Dimensionality of Data with Neural Networks的平均值。

但此下界不能应用于高层节点减少的情况,尽管如此,逐层学习算法不失为一种对深度自编码网络权值预训练的有效方法。每个隐层获得上层输出更高阶的关联(提取的特征更抽象)。对于更广泛的数据集,这是逐步揭示(progressively reveal)低维,非线性结构的有效方法。

 

在实验中,每个RBM的可视层单元都有真实的[0,1]内**值,对于高层RBM,其可视化层单元就是前一个RBM的隐藏层单元的**概率,但是除了最上面一个RBM之外,其他的RBM的隐藏层单元都是随机的二值。最上面一个RBM的隐藏单元是一个随机实值状态,它是从单位方差噪声中抽样得到的,这个单位方差噪声的均值由RBM的可视单元决定。比起PCA,本算法较好地利用了连续变量。预训练和微调的细节见文献[8]。

 

        交叉熵误差公式如下:

论文--阅读翻译笔记-Reducing the Dimensionality of Data with Neural Networks

其中,pi是输入数据的重构值。

 

  对于连续数据,第一层RBM隐藏元为二进制变量,但可见元使用带高斯噪声的线性单元代替(10)。若噪音具有单位方差(方差为1的高斯分布),隐藏元的随机更新规则保持不变,可见元i的更新服从方差为1均值为bj+∑(hj+Wij)的高斯分布。每个RBM可视层的输出都是归一化到[0,1]上的实数。后面层的RBM的输入层都是上一个RBM网络输出层的概率值。

当训练更高层的RBM,该层的RBM的可视层结点被设为上层RBM的隐层结点的**概率(实数)。除去顶层RBM之外,每个RBM的隐层结点是随机的逻辑值。顶层RBM的隐层结点(随机变量)服从方差为1的高斯分布,其均值由此RBM的逻辑可视结点的输入决定。这就使得低维编码(low-dimensionalcodes)可以更好地利用连续变量并且方便与PCA对比。

实验:

在一个包含曲线图片的合成数据集上训练了一个特定的深度编码器。对于这个数据集,这个真实的固有维度是已知的,像素点的强度与六个参数间的联系是高度非线性的。像素强度位于0和1之间,并且分布是非常非高斯的自编码。

自编码网络由(28×28)−400−200−100−50−25−6(28×28)−400−200−100−50−25−6的编码网络和一个(与编码网络对称的,也就是6−25−50−100−200−400−(28×28)6−25−50−100−200−400−(28×28))解码网络组成。编码层的6个结点都是线性的,其他结点都是逻辑的(二进制的)这个自编码器发现了如何转化784个像素的图像到6个实数,并使得图片几乎完美重建。

若没有预训练过程,这个深度自编码网络也只能恢复出数据的一般水平(效果一般)。只有一层的浅层自编码器可以不经预训练学习,但是经过预训练可以很大地降低训练时间。数据与编码(code)间只有单隐层的浅层自编码网络不用预训练也能学习,但预训练能很大程度上减少自编码网络的训练时间。当参数的数量相同时,深度自编码网络可以比浅层自编码网络相比,深度自编码网络在测试数据上有更低的重建误差,但这种优势随着参数的增长而递减。

当今,这三个条件都满足了。不同于非参数模型(15,16),自编码网络给出了(数据之间的)方向和编码空间两方面的映射。此方法能用到非常大的数据集上,因为随着训练样本的增加,预训练和微调的规模在时间与空间上呈线性增长。

(A Hybrid Malicious Code Detection Methodbased on Deep Learning中对恶意代码检测就用到了该自动编码器和DBN结合的方法——摘要介绍:

在本文中,我们提出了一种混合型恶意代码检测方案AutoEncoder和DBN(深信仰网络)。首先,我们深度使用AutoEncoder学习方法来降低数据的维度。这可能会转换复杂。由此,通过非线性映射将高维数据转换为低维代码,降低数据的维度,提取数据的主要特征;然后使用DBN学习方法来检测恶意代码。DBN由多层限制组成玻尔兹曼机器(RBM,受限玻尔兹曼机器)和一层BP神经网络网络。基于每一层RBM的无监督训练,我们做出输出

然后进行最后一层RBM的向量作为BP神经网络的输入向量对BP神经网络进行有监督的训练,最终实现最优混合模型微调整个网络。将测试样本输入混合模型后,实验结果表明,混合检测得到的检测精度较高本文提出的方法要高于单个DBN方法。建议的方法降低了时间复杂度并且具有更好的检测性能。)

(如“A Hybrid Spectral Clustering and Deep Neural Network EnsembleAlgorithm for Intrusion Detection in Sensor Networks”也用到了自动编码器,该文主要应用谱聚类(SC)和深度神经网络(DNN)的方法对恶意网络流量伪装成网络协议或正常访问进行检测其中也在DNN中用到了该Auto-Encoders:Pre-Training和Fine-Tuning)