论文--阅读翻译笔记-Reducing the Dimensionality of Data with Neural Networks
首先,对这两个网络的权值进行随机初始化,然后通过最小化重构项和原始数据之间的误差对权值进行训练。误差的偏导数通过后向传播得到梯度,也就是把误差偏导数先通过解码网络,再通过编码网络进行传播。整个系统叫做自编码器,具体见图1。
网络通过能量函数给每一个可能的图像分配一个概率,正如(8)解释的。可以通过调整权值和偏置的方式来提高训练图片的概率以此来降低图片的能量,并且提升相似”虚构”图片(网络更倾向的实数据/实际数据)的能量。给出一张训练图片,每个特征探测子j的二值状态以的概率被设为1,其中σ是逻辑函数sigmod=,bj是j的偏置,vi是像素i的状态,wij是i和j之间的权重。一旦二值状态因隐层结点而被选定,每个vi以的概率被设为1,产生了一个”重构”, 此时,隐层结点被再次更新,这样,这些隐层结点表示重构的特征。权重的变化由下式给出:
,其中ε是学习率。
单层的二值网络不足以模拟大量的数据集,因此一般采用多层网络,即把第一层网络的输出作为第二层网络的输入。第一层的特征(输出层)此时成为了下一层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个可视化层单元的更新规则是从一个高斯噪声中抽样,这个噪声的方差是单位方差,均值是的平均值。
但此下界不能应用于高层节点减少的情况,尽管如此,逐层学习算法不失为一种对深度自编码网络权值预训练的有效方法。每个隐层获得上层输出更高阶的关联(提取的特征更抽象)。对于更广泛的数据集,这是逐步揭示(progressively reveal)低维,非线性结构的有效方法。
在实验中,每个RBM的可视层单元都有真实的[0,1]内**值,对于高层RBM,其可视化层单元就是前一个RBM的隐藏层单元的**概率,但是除了最上面一个RBM之外,其他的RBM的隐藏层单元都是随机的二值。最上面一个RBM的隐藏单元是一个随机实值状态,它是从单位方差噪声中抽样得到的,这个单位方差噪声的均值由RBM的可视单元决定。比起PCA,本算法较好地利用了连续变量。预训练和微调的细节见文献[8]。
其中,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)