如何快速训练多层神经网络(MLP)?

伪逆学习算法教程

多层神经网络, Multi-layer neural network, 是研究的最多,结构又相对比较简单的神经网络。这种网络是属于前馈神经网络,一般由输入层,隐层,输出层组成。隐层的多少决定了该网络叫深度还是“浅度”神经网络。通常将大于3层的称为深度网络了。深度学习,狭义上讲就是对深度网络的训练过程。

隐层少的时候,对神经网络的权重参数学习,采用的是梯度下降学习算法,即著名的BP算法,(Error Back Propagation Algorithm). BP算法中要考虑的超参数有 学习速率,动量项,还有总的学习次数(迭代次数)等。网络结构复杂后,梯度下降学习时还常常会陷入局部极小,导致泛化能力降低。

在网络结构上,输入输出层的神经元个数由给定的问题决定。因此,MLP结构设计上只需要考虑一共有多少隐藏层,每一个隐层有多少个神经元这两个超参数即可。

训练MLP所花费的时间主要在这些超参数的选择上,BP算法的超参数选择问题,常用的方法是多次试错,即通过穷举的方法来搜素选取。另外一种思路是抛弃BP算法,用不需要超参数的非梯度下降学习算法来训练MLP,这正是我们二十多年前开始研究的一个方向。我们发展的方法称为伪逆学习算法(PseudoInverse Learning --PIL)。


而网络结构的超参数选择属于自动化设计的问题,没有理论指导,只有通过经验来选取,是公认的非常具有挑战性的研究方向。

在当时虽然对一些数据实现了“精确学习”,相对BP算法而言还是超快学习,但是对另外一些数据而言,由于数据固有的性质,单隐层的网络的学习的精度还满足不了要求。在2001年,我们发表了新的解决方案,将神经网络从三层扩展到了多层结构, 并针对增加或减少隐层神经元个数时,提出了采用Griville's theorem 结合 Bordering algorithm来快速计算伪逆 阵[2]。这个工作进一步扩展细化后,在2002年初投稿到Neurocomputing(NC), 论文于2003年Online并在2004年第一期正式出版(纸质)[3]。

下面详细介绍在NC上发表的论文的内容:

首先对在该论文中采用的符号说明如下:

伪逆学习算法(PseudoInverse Learning Algorithm -- PIL):

算法的第1,2步可以看作为初始化,第3,4,5步循环迭代提升隐层输出矩阵的秩。

PIL算法具有如下几个特点:

  • PIL算法对应的学习误差是正向传播,并且在传播的过程中确定多层网络的结构(MLP网络的深度依据数据性质动态增加,隐层神经元的个数设为N)。网络前一层学习到的权重参数在随后的学习中不需要改变。
  • 神经网络训练的经典算法为误差反向传播(BP)。BP采用基于梯度下降的方法对目标函数进行迭代优化。与BP算法相比,PIL算法是一个完全自动的算法,没有需要用户手动调节的模型参数,例如BP算法中的学习率或动量常量(momentum
    constant)。在BP算法里这些参数的好坏对神经网络模型的训练时间,泛化能力都有巨大的影响。而这些超参数的选择,没有理论指导,需要丰富的调参经验。
  • BP算法是基于梯度下降的算法,需要计算激活函数的梯度,这要求激活函数可微分。而伪逆学习算法则不要求激活函数可微分,而可采用任意非线性函数,这是假定通过非线性变换可以提升矩阵的秩。伪逆学习算法使用输入矩阵的伪逆阵做为神经网络输入层到下一个隐层的层间权重矩阵,通过不断的加层映射提升隐层输出矩阵的秩,直到其为满秩矩阵。
  • 相比BP算法,伪逆学习算法不需要考虑如何初始化神经网络的权重来避免局部极小值。因为伪逆解为全局最优解。
  • 还有一点是要达到同样的学习精度,PIL算法要比BP 算法快几千倍,所需时间分别是几秒和几个小时的量级。

1.5 对伪逆学习算法的扩展及应用

在论文中说明了添加或删除训练样本等同于添加或删除隐层神经元。当训练样本矩阵发生变化时重新计算整个矩阵的伪逆是非常费时的,而由Griville's theorem以及 Bordering 算法可快速计算权重变化情况。

Y的前k列组成一个子矩阵其伪逆为:

当伪逆算法需要做留一法交叉验证时应用以上求解过程可以提高计算速度,因此该算法特别有效。

1.5.2堆叠泛化 Stacked Generalization--SG

我们知道,训练神经网络最关心的问题是网络的泛化能力,改进网络泛化能力的方法也有很多种,当时的论文讨论了Stacked Generalization 技术应用。

SG具体过程如下:令训练集为D,首先对训练集进行分割。分割方式之一为选择D中一个样本作为验证点,其余样本作为训练集。所有的0级网络都通过由分割得到的数据集来训练。每个网络的性能通过分割时得到的验证点判断。0级网络的输出将被当作训练特征来训练1级网络,这里目标值是相应的来自原始完整数据集的目标值。最后,使用全部数据D重新训练所有的0级网络,并将其输出作为1级网络的输入。1级网络的输出即为最终的预测值。

1.5.3 减小网络复杂度

在论文中还提出了一种减小网络复杂度,即降低网络深度的的方法。

为了简化网络模型结构,可在网络训练的第2步,添加一个与权重矩阵维数相同的高斯噪声矩阵来进行微扰。 因为噪声分布是独立同分步的(i.i.d),所以扰动后的矩阵的逆以概率1存在。 通过该策略,伪逆学习算法最多需要两个隐层即可达到精确学习。 (这是由于噪声是随机值,所形成的矩阵只是以概率1可逆,不一定绝对可逆,但有两个隐层的话,则矩阵不可逆的概率为要比只有一个隐层时小的多得多,也就可以说概率一定为零了)。

现在总结一下伪逆学习算法思想的特点:

(1)训练MLP不需要梯度下降迭代学习。

(2)不需要调节梯度下降算法超参数,最大可能给用户带来方便,该方法的易用性强。

(3)PIL是动态增加网络层数实现完备学习,避免了通常的网络设计难题。

(4)对隐层神经元的个数选择问题,PIL给出了一个选择方法,即从数据集中抽取N个样本构成训练集,隐单元个数设为N。这样避免了让用户选择隐单元个数的难题,也就是说对网络结构设计问题给出了一种方案。

(5)在PIL算法扩展中,采用的正则化技术是早期停止技术,用早期停止技术来解决过拟合问题。

说到数据加噪声的问题,在前人的研究中,已经说明了是一种正则化方法。参考ftp.sas.com/pub/neural/ 以及所列出的参考文献。在NC论文里,说的是给权重矩阵加高斯噪声的问题。实际上,数据加噪声和权重加噪声是等价的。而在1995年的论文中,说明了V矩阵本身可以选择为一个噪声矩阵(随机初始化),这个对输入数据而言是乘性噪声问题,与上面所说的加性噪声并不等价。

SGD, Momentum, AdaGrad, RMSProp, ADAM 等等),目前训练神经网络采用直接用基于梯度下降的优化技术,也可以得到期望的结果。但是有一点可以肯定的是,不要期望对权重矩阵随机初始化后,不通过学习就能使得误差函数极小,网络的泛化能力还强。

3.1 堆叠自编码器

我们知道,RBM, CNN, Autoencoder被称为构建深度网络的基础模块(Building block),就是盖一座高楼用的砖块。在构建深度网络时,采用逐层贪婪训练的策略,逐层训练过的自编码器(去掉解码器)再堆叠为多层深度模型,这称为堆栈自编码器。在堆栈自编码器中,前一层自编码器的输出作为后一层自编码器的输入。网络最后一层的输出可作为原始数据的特征。在特定的学习任务中(例如分类问题),可以再将输出的特征作为分类器的输入,再对分类器以有监督的方式进行训练。

有了这些准则和PIL算法,我们就可以全自动地构造深度MLP了。(参考文献[6], 还有ICONIP2017 的tutorial)。

实验结果表明这种策略是可行的,但也反映出简单堆叠构造深度网络存在一些问题。逐层贪婪学习是一种预训练技术,Bengio教授在早期就指出了“与其他层次的预训练技术相同的缺点是:它是贪婪的,也就是说,它不试图以较低层次的方式来调整下层,从而使更高层的工作更容易。” 而且“无监督的贪婪逐层预训练明显优于单纯的有监督贪婪逐层预训练。一个可能的解释是贪婪的监督过程过于贪婪:在学习隐单元表示时,它可能丢弃一些关于目标的信息,这些信息不容易被一个隐层神经网络捕获,但是可以通过更多的隐藏层来捕获。” 事实上,在NC2004论文里SG实验就说明了有监督贪婪学习可以实现完备学习,但对有噪声的数据会过拟合。采用早停技术可以使学习过程变得不那么过于贪婪,这样再采用SG技术可以使得网络得到较好的泛化能力。

公式(6)就是考虑了每层降维不要过于贪婪而提出来的,但是我们也应该认识到无论是稀疏还是低秩约束,在构造堆叠自编码器网络时,前面的编码器已经学习到稀疏或低秩表示,后面的表征学习就很难再继续学习到稀疏或低秩特征了。用这样的策略很难构造出性能良好的较深的深度神经网络,因此需要考虑另外的构造网络的方式,例如在NC2004论文中所建议的集成网络(Ensemble Nets)。

在smc2017论文中还讨论了权重捆绑(weight tie)问题。对于比较复杂的模型,可以选择利用权重捆绑减少权重参数,降低模型的自由度, 将解码器连接权重矩阵的转置作为编码器的权重矩阵。因此,对自编码器的训练,可以先对编码器权重随机初始化化后前向传播,得到隐层输出矩阵,就可用伪逆学习得到解码器权重矩阵。再采用权重捆绑的思想,令编码器权重等于解码器权重的转置,更新下编码器权重。不难看出,这本质上仍是伪逆学习的思想应用于自编码器训练。需要注意的是这样更新编码器后,隐层输出将发生变化,解码器权重也需要更新才能使得重构误差较小。若采用的是sigmoid 或 Tanh激活函数,反复进行权重捆绑迭代更行权重是不收敛的。对这个问题的解决方案还在研究中,很快会得出结果。另外,在smc2017论文里提出了经验选择隐单元个数,动态增长层数的方法。但是网络结构设计并不是这么简单的事情,仍有很多问题没有解决。

3.2 关于正则化技术

在线性代数里面,研究的最多的是 Ridge Regression(岭回归) 和 LASSO了。 对应到神经网络里面是在平方误差函数上面加一项正则化项,分别对应L2 Norm 和L1 Norm. 神经网络里的权重衰减对应于统计里面的岭回归,而稀疏约束对应于LASSO。选择不同的误差函数形式实际上是改变了优化目标,有很多研究论文是与设计误差函数相关的。

我们来看权重衰减正则化,这时误差函数形式为:

但是采用正则化的目的是将误差函数的极值拉到一个恰当的位置,在这个位置时得到的参数并不是让训练误差最小,而是让测试误差最小。这个位置由λ来控制。如何寻找这个超参数又是一件非常困难的事情。通常采用的是穷举搜索方法或依据经验启发式选择。这种试错选择超参数的方法计算工作量非常大,这是由于给定一个超参数值,训练一个网络,训练好后用测试数据计算下误差。再给定一个超参数值,再训练一个网络,再用测试数据计算误差。如此在多个超参数值中,看看哪个对应的测试误差最小,我们就选定测试误差最小的这个超参数了。为了减少计算工作量,我们在以前的工作中依据KL散度准则,提出了一个选择正则化参数的公式,可以依据这个公式仅利用训练数据来估计正则化参数[4]。(注:所谓的贝叶斯X学习机只是我们这个工作的一个特例。将神经网络的映射函数设计成任何函数,如果设计成深度前馈网络,就可以称为贝叶斯MLP)。

需要注意的是由于网络的泛化能力是依据测试数据衡量的,而网络的参数是依据训练数据学习的。正则化技术是将模型参数约束到可能是表示真实的分布的位置,可以解决一类病态问题。而在机器学习研究领域里有一个最基本的假定就是测试数据和训练数据是同分布的,即假定所用到的数据均是在一个确定的分布下抽样的结果。如果学习用的数据和以后推理的数据不是同分布,则网络的泛化能力不可能强。(目前机器学习中对数据的概率分布解释以及学习与推理,均假定样本是高维空间的一个点,训练样本与测试样本在高维空间如果离得很近,例如内插操作的结果就很好。如果测试样本离训练样本较远,例如做外推时,效果就不会太好)。

另外在编程实现方面,例如采用Thin-SVD等技术, 还可以将训练速度进一步加速。 (这部分参考我的ICONIP2017 Tutorial PPT,在我的主页上有下载http://sss.bnu.edu.cn/ ~pguo)。


四、 伪逆学习算法扩展及应用



(待续.......)







参考文献

[1]. P. Guo, C.L.P. Chen and Y.G. Sun, “An Exact Supervised Learning for a Three-Layer Supervised Neural Network”, Proceedings of the International Conference on neural Information Processing (ICONIP’95), pp.1041--1044, Beijing, 1995.

[2]. P. Guo and M. Lyu, “Pseudoinverse Learning Algorithm for Feedforward Neural Networks”, in Advances in Neural Networks and Applications, in N. E. Mastorakis, Ed., Advances in Neural Networks and Applications, Puerto De La Cruz, Canary Islands, Spain, Feb. , pp. 321--326, 2001.

[3]. P. Guo and M. Lyu, “A pseudoinverse learning algorithm for feedforward neural networks with stacked generalization applications to software reliability growth data”, Neurocomputing, vol. 56, pp. 101--121, 2004, (Online in 2003).

[4]. P. Guo, M.R. Lyu and C.L.P. Chen, "Regularization Parameter Estimation for Feedforward Neural Networks ", IEEE trans System, Man and Cybernetics (B), Vol.33, No.1, pp.35-44, 2003.

[5]. Ke Wang, Ping Guo, Qian Yin, A-Li Luo, Xin Xin; “A pseudoinverse incremental algorithm for fast training deep neural networks with application to spectra pattern recognition”, Proceedings of the 2016 International Joint Conference on Neural Networks, IJCNN 2016, pp.3453-3460, 2016.

[6]. K. Wang, P. Guo, X. Xin, Z.B.Ye, "Autoencoder, Low Rank Approximation and Pseudoinverse Learning Algorithm", IEEE SMC 2017, pp.948--953.

[7]. Ke Wang, Ping Guo, A-Li Luo, Xin Xin, Fuqing Duan, “Deep neural networks with local connectivity and its application to astronomical spectral data”, Proceedings
of 2016 IEEE International Conference on Systems, Man, and Cybernetics
(SMC),
pp.002687 - 002692, 2016.

[8]. P. Guo, "Averaging Ensemble Neural Networks in Parameter Space'', Proceedings of fifth international conference on neural information processing (ICONIP'98), Kitakyushu, pp.486-489, 1998.

编辑于 2018-02-14 20:48