盛 蕾,陈希亮,康 凯
陆军工程大学 指挥控制工程学院,南京 210007
神经网络通常是指一种含有输入层、隐藏层、输出层且每一层都含有许多神经元的多层复杂网络结构。它通过模仿生物的大脑神经元结构和功能,从而使计算机对数据信息能够进行智能处理。目前,神经网络已在模式识别[1]、自动控制[2]、生物信息学[3]等很多领域得到广泛的应用。因此,神经网络的优化就成为了亟待解决的问题。
训练神经网络本质是一个确定隐藏层的结构和连接权值的过程。为了提高训练速度和获取能较好地解决特定问题的网络模型,大量训练样本以及算法被用来训练神经网络。目前,训练一个神经网络方式多种多样,比如:选择适合的参数初始化方法、对数据进行预处理、选择合适的激活函数、优化各种超参数等。本文仅涉及训练神经网络的部分非梯度学习算法。
1986 年,Rumelhart 等[4]提出用反向传播算法解决多层前馈神经网络的非线性连续函数权值的问题,但反向传播容易陷入局部极值点、容易受学习率和激活函数的影响,另外,其计算复杂度会随着隐藏层的数目和每层神经元数目的增加容易超出预期。在反向传播的基础上出现了梯度下降法(gradient descent,GD),之后多种一阶、二阶的训练神经网络的算法得到发展[5-6],Shammah 等[7]提出了基于纯梯度的训练算法的一些不足,近些年非梯度优化算法得到了国内外学者的广泛研究[8-10],并且已被应用在实际生活中。基于纯梯度的训练算法存在收敛速度慢、梯度消失、梯度爆炸和局部优化等问题。因此,当基于纯梯度的神经网络的训练算法缺乏效果时,基于非梯度的算法来训练神经网络具有重要意义。
现有的研究更侧重于在神经网络中比较和选择合适的算法,这完全是基于专业知识和现在可以应用到的数据。所以本文只针对训练神经网络算法的特定类型的非梯度算法的背景意义、基本理论、训练步骤、实际应用和未来研究方向进行综述。
神经网络的信息处理能力主要由网络结构和训练方法两个方面决定。神经网络的结构设计在神经网络中尤为重要,它可以左右网络的训练算法。至今已出现了多种神经网络结构,常用的神经网络结构大体上可分为前馈神经网络(feedforward neural network,FNN)、反馈神经网络和图神经网络三类。
FNN 中每一层神经元接受前一层的神经元的输出并输出到下一层神经元,其信息是单向传播的。反馈神经网络中的神经元不但可以接收其他神经元的信息,也可以接收自己的历史信息,其信息可以单向或双向传播。图神经网络中每个节点由一个或一组神经元构成,每个节点都可以收到来自相邻节点或自身的信息。这三种网络结构示例见图1。
图1 三种网络结构示例Fig.1 Examples of three network structures
以一个简化的FNN为例,神经元由连接权重、求和器和激活函数三个重要元素组成见图2。神经元的关系见公式(1),非线性的激活函数f(·) 的引入可以合理地组合多个层,所以神经网络解决了线性模型不能解决的问题。
图2 简化的FNN神经元Fig.2 Simplified FNN neuron
从狭义上讲,神经网络的训练一般是通过最小化权重和偏置的代价函数来实现的,即找到一系列能让代价函数尽可能小的权重和偏置。但这又与纯优化有所不同。首先,纯优化是最小化目标函数本身,而训练神经网络是降低代价函数来提高人们关注的某些性能度量,一般是通过最小化来自数据生成分布的期望值和最小化经验风险的方式来实现。然而,最小化经验风险时容易出现过拟合现象并且有部分没有有效导数,所以训练神经网络时会使用一些与解决纯优化问题不同的方法:(1)神经网络训练中可能使用代理损失函数;(2)神经网络的训练算法通常会在满足某一收敛条件时提前终止函数,而纯优化终止时的函数值通常是最小或无限接近最小。比如在FNN中以均方误差作为损失函数为例见公式(2),当迭代次数t达到设定的最大迭代次数Tmax,或者当L小于设定的阈值θ就会提前终止该函数,或者为了避免过拟合,公式(2)再加入正则化项。
训练神经网络可以基于梯度的算法,也可以基于非梯度的算法。训练一个比较好的神经网络不仅和这两类算法有关,而且和很多因素都有关,如神经元的结构[11]、超参数的调优的方法[12]、初始化方案[13]和损失函数的设定[14]等。超参数包括学习率、正则化参数、隐藏层的数量和激活函数等。损失函数的设置有最小二乘法和交叉熵函数等。隐藏层越多,神经网络对训练数据越有针对性,但隐藏层过多也容易过拟合。因此,如何训练一个具有良好泛化能力和快速的学习能力的神经网络是目前的研究热点。
1.2.1 神经网络的纯梯度训练算法
神经网络纯梯度训练算法利用偏导数形成的代价函数的梯度向量场更新参数。以FNN 代价函数公式(2),激活函数ReLU 为例。当L >θ或者t <Tmax时,权重矩阵W通过取L关于每个权重w的导数,并且使用链式法则实现反向传播。在链式法则中第二部分偏导数就是1,最后一部分的偏导数是XT,即:
可知z <0 的元素并没有被更新,这就是使用基于梯度的训练算法中常见的梯度消失问题。本质上,梯度爆炸跟梯度消失的原理是一样的,在深层网络中初始的权值太大,通过链式法则后,如果各层网络之间的梯度值大于1 那么层数增多后梯度可能会指数级增长。一次前向传播和后向传播的迭代就是基于梯度的神经网络训练的过程。目前,利用反向传播的纯梯度算法在神经网络的训练过程中应用广泛。两类主要的神经网络的梯度训练算法,一类是基于一阶的,另一类是基于二阶的。
最流行的一阶梯度训练算法是GD,其权重的更新方式见公式(4),偏置的更新方式同理。
在每一次迭代中所有训练数据通过架构,所以GD在大型的数据集上训练速度和收敛都缓慢。所以每次迭代中随机计算一个训练数据的梯度的随机梯度下降算法(stochastic gradient descent,SGD)被提出。在凸的损失函数上,与GD 相比,SGD 更快地收敛到全局最小值,但它的收敛并不平滑,并且在某些迭代的训练过程中容易出现超调现象,更新权重的频率更高,所以容易受到数据集中的异常值的影响,训练有噪声的数据集会变得更困难。为了解决SGD 精确度低的问题,对其中一个点随机采样,并在梯度项中更新其梯度的随机平均梯度(stochastic average gradient,SAG)被提出。SAG与GD有相同的速度,但它通常需要更多次迭代才能收敛而且需要许多参数微调才能完美执行。
为克服GD和SGD的缺点,采用大小相等的批量训练数据的小批量梯度下降算法提出,该算法稳定且收敛速度更好[15]。从公式中可以看出以上基于梯度的训练算法比较依赖学习率,为了改善该问题,三种最著名的调整学习率的方法(AdaGrad、RMSProp、Adam)被提出。但是基于一阶的梯度算法训练FNN 时,每次迭代过程中,会在输出层计算误差对权重的一阶导数,这增加了学习时间和陷入局部极小值的可能性。
为了解决一阶梯度训练算法的收敛性问题,应用二阶Hessian 逆矩阵的牛顿法(Newton method,NM)被提出。它最大限度地减小损失函数,但只适用于正定的Hessian 矩阵,并且计算成本高,不适用大型的神经网络。为了解决NM需要计算二阶导数的缺点,通过从一阶导数近似Hessian 逆矩阵的拟牛顿法被提出,它的计算成本更低,但依旧不适用于训练百万级参数的神经网络[16]。
Wilamowski 等[17]指出一阶的梯度算法可能需要很多的隐藏单元和迭代次数才能收敛,这会降低FNN 的泛化性能,二阶的梯度算法在学习方面很强大,但复杂度会随着网络规模的增加而增加,存储Hessian 矩阵及其逆矩阵需要大量的计算内存,这不利于训练大型的数据集。总之,基于纯梯度的神经网络优化算法主要存在以下问题:(1)生活中总会有非凸问题,但在基于纯梯度算法训练神经网络的过程中,目标函数和约束会被设计为一个凸问题;(2)即使设计了一个比较符合非凸问题的凸函数,基于纯梯度的训练算法也遇到问题,如Hessian矩阵可能会卡在某些即使用很小的步长也会增加代价函数的病态情况;(3)由于神经网络的不可辨认性,即使去掉隐藏单元,构建出的小规模神经网络在低维问题中也会出现有很大代价的局部极小值[18-19];(4)不具有非线性的浅层自编码器在高维问题中只有局部极小值和鞍点[20],但神经网络中有很多高代价鞍点的损失函数[21],所以牛顿法这类基于纯梯度的训练算法解决鞍点是困难的;(5)难以处理梯度为零的点,梯度消失和梯度爆炸的情况;(6)有噪声的采样数据是有偏估计,基于纯梯度的神经网络难以有效地处理这类数据;(7)基于纯梯度的神经网络训练算法对初始设定的参数值的依赖程度很大。
1.2.2 神经网络的非梯度训练算法
随着神经网络层数的深入和数据集的不断扩大,神经网络的训练速度也变得越来越慢。神经网络的训练速度也已成为阻碍其发展的重要问题。分布式训练[22]和批处理归一化[23]等加速训练的方法被提出。然而,这些架构和方法使用了反向传播训练方法,即使用了基于梯度的训练方法。这需要大量的试错方法才能获得最佳参数,并且会遇到以上列举的问题。相较于神经网络的纯梯度训练算法,非梯度算法在训练神经网络时,具有不需要进行复杂的参数调整、不需要多次计算损失函数对每个权值的导数、不需要可微的激活函数等优势。
现今优化神经网络的方式多种多样,但主要是从模型的选择和参数的学习等方面展开的。本文总结了部分非梯度算法在参数学习中的应用。本章介绍了其中的两类算法:非梯度算法中训练FNN 的特殊算法和非梯度训练算法中的基于搜索的算法。
目前,大多数FNN 的权值都是基于梯度算法训练得到的。但存在部分FNN 结构上有其特点,因此权值的学习过程也比较特殊,比如一般概率神经网络、贝叶斯神经网络、极限学习机的权值大多是通过非梯度算法训练得到的。
2.1.1 一般概率神经网络训练算法
一般概率神经网络(probabilistic neural network,PNN)是一种基于贝叶斯决策论确定测试样本类别的网络。其基本结构见图3,输入层:计算每个数据与其对应的权值的乘积,节点数等于样本特征空间的维数d;模式层:又称隐藏层,计算测试样本和训练样本中每个样本的高斯函数值,节点数等于训练样本总数N;求和层:计算同一类测试样本对应的模式层节点的输出的加权平均,节点数等于类别数k;输出层:根据贝叶斯决策论确定其类别。
图3 PNN的基本结构Fig.3 Basic structure of PNN
PNN 的训练过程是构造每个类别的判决函数的过程。其权重由每个样本归一化后直接赋值,见公式(5),其中xnj为第n个样本的第j个分量。学习规则简单,不需要迭代调优,学习速度极快,很好地解决了纯梯度优化算法速度慢的问题[24],并且泛化分类能力大致相同[25]。添加和删除训练样本只需要在模式层中添加或删除“神经元”,并且同一个类的模式单元独立于模式层中另一个类的模式单元,具有并行分布式处理的特点。因此在在线学习方面上很有意义。
PNN的输出用来描述特定的概率分布的似然,并且随着训练样本数量的增加,可以收敛到贝叶斯最优解,决策曲面保证接近贝叶斯最优决策边界,所以可以应用于寻找模式间的决策边界。Fang 等[26]通过主动学习概率神经网络对火箭间段的设计方案进行可行性状态分析,实验表明,相较于四种最先进的算法,该算法分类结果准确率更高,而且该方法构建的分类器可以快速分析具有计算代价约束问题的设计方案的可行性。Karami等[27]用蒙特卡罗作为概率神经网络的一部分后估算了量化风电功率的不确定性。
PNN 结构简单并且其线性学习算法能够很好地实现非线性学习算法的结果,同时保持了非线性算法的高精度。PNN不是黑盒优化,其每个模式神经元对网络结果的贡献是明确定义的并且有精确的解释。所以PNN在各种应用中表现出优异的分类性能。Wu等[28]用PNN实现了卫星通信辐射源的识别。Syahputra等[29]使用PNN对CXR图像进行实验,识别肺癌的准确率高达93.33%。Liu 等[30]用贝叶斯优化了概率神经网络,该算法对MITBIH 心律失常数据的分类正确率高达99.67%。Gong等[31]利用局部模拟退火优化并行概率神经网络和PNN,通过实验对比发现优化后的并行概率神经网络的分类精度比之前的结果高得多,可达到83.3%,其平均运行时间明显缩短,更适合大规模数据处理。尤其在诊断故障的分类领域中,它能将故障样本空间映射到故障模式空间,形成具有较强容错能力和自适应结构能力的诊断系统,具有很强的应用前景[32-34]。
众所周知,更大的数据集可以提高数据概率密度函数估计的准确性。所以相较于大多数的纯梯度算法训练的神经网络,PNN 需要的训练集要更大。但是在PNN 模式层中有一个用来度量输入向量与其分配的数据模式之间的相似性的独立单元,所以它需要更多的内存空间。随着数据的增大,模式层可能会变得非常大。因此PNN 解决大数据问题时,一般需要与特征约简如主成分分析和k-means 聚类算法等方法一起使用[35-36],这样才可以减少问题的规模但不过多减少PNN 性能损失。
PNN的权值被直接指定,那么其训练过程的难点是确定平滑参数σ值。σ是高斯分布的标准偏差,决定了训练集高斯分布概率密度函数的高斯窗口接受宽度的大小。σ在分类问题中起着至关重要的作用。通过选择适当的σ值,可以使决策曲面的形状变得尽可能复杂,或者尽可能简单,这对PNN 的性能有很大的影响。所以大量的计算σ值的方法被提出,见表1。一类是基于数据知识进行有根据的猜测:Specht等[37]分别对每个维度设置σ值。Ramakrishnan 等[38]提出了在模式层和求和层之间引入权重因子的加权概率神经网络。它们都以增加训练时间为代价来提供更高的分类精度。另一类是近年使用较多的启发式算法估计:Yi等[39]提出训练过程中不需要调整参数的自适应PNN。与PNN和基于反向传播的神经网络等进行比较,自适应PNN 在解决变压器故障诊断问题时具有更准确的预测和更好的泛化性能。李君科等[32]用遗传算法、孔慧芳等[33]用基于改进粒子群算法、Zhou 等[34]用灰狼算法优化了PNN 的σ。实验表明这些优化算法都提高了PNN 在某个应用上的分类精度。
表1 优化PNN的σ 值的方法Table 1 Method of optimizing σ value of PNN
2.1.2 贝叶斯神经网络训练算法
贝叶斯神经网络(Bayesian neural network,BNN)将概率建模和神经网络相结合,是一种不需要知道任何数学或物理模型就可以学习复杂行为,并给出预测结果置信度的神经网络。相较于一般FNN,BNN 的每个权重都有均值和方差的概率分布。训练BNN本质是计算这些权重的后验分布。
假设BNN的权重或偏差符合某个先验分布p(ω),那么贝叶斯推理可以获得权重ω的后验分布p(ω|D),见公式(6),其中训练数据集D={(X,Y)}。然后得到可以量化模型在预测中的不确定性的边际似然,见公式(7)。
贝叶斯推理使用贝叶斯规则和概率推理量化了不确定性,而且可以区分认知不确定性p(ω|D)和任意不确定性p(y|x,ω) 。但似然函数通常是非高斯而且难以处理的,并且它依赖于先验知识。所以各种近似后验分布的方法如变分推理[40]、蒙特卡罗dropout[41]和卡尔曼滤波(Kalman filtering,KF)变体等被提出。但是变分推理无法保证近似分布足够接近预期目标,蒙特卡罗dropout 比变分推理的训练速度更快,但可能无法完全捕捉到与模型预测相关的不确定性[42]。
因此,既可以实时训练缺乏梯度信息的神经网络还可以扩展到贝叶斯模型比较和使用信息论方法的主动学习[43]的贝叶斯形式主义被广泛使用。其中KF可以解决难以获取贝叶斯推理的解析解的问题。KF分为预测方程和更新方程,预测方程负责及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计;更新方程负责反馈,它将先验估计和新的测量变量结合用来构造改进的后验估计。KF可以高效地估计过程的状态,并且使估计的均方误差最小。在测量方差已知的情况下,KF 能够在有测量噪声的数据中估计动态系统的状态,并且能够对现场采集的数据进行实时的更新和处理,此外容易在计算机上编程实现。因此,KF可以作为一种非梯度算法来优化神经网络,尤其是BNN等具有高斯分布的神经网络。
但是KF 只适用状态函数和测量函数均为线性,且噪声项均为零均值高斯变量的问题,其他非高斯和非线性的问题需要使用寻求近似解的KF 改进算法,比如用无迹变换选择采样点拟合状态的后验概率的无迹卡尔曼滤波(unscented Kalman filter,UKF)、用非线性函数的泰勒展开的一阶项的扩展卡尔曼滤波(extended Kalman filter,EKF)和对状态分布进行采样以获得下一时间的近似预测分布的集成卡尔曼滤波(ensemble Kalman filter,EnKF)等。
Watanabe 等[44]假定BNN 的权值为高斯分布,采用EKF 更新个体权值的均值和方差。EKF 结构更加简单但需要局部线性化来更新隐藏的神经元,所以系统非线性很强时,估计值可能会有较大的误差。Puskorius等[45]在上面的基础上允许贝叶斯网络分层相关甚至其神经元全相关。Huber[46]又提出贝叶斯感知器,该方法虽然局限于单个神经元,但表明封闭式贝叶斯推断可以计算权后验分布的均值和协方差参数,并且可以避免线性化。Wagner 等[47]进一步提出了一种基于封闭贝叶斯推理的方法,其核心思想是通过连续贝叶斯滤波训练BNN。其后向传递过程利用了马尔可夫链的特性,可以顺序处理数据,依次更新权值矩阵。用该算法对月球数据集进行分类,发现高斯假设似乎不会影响该网络在分类任务中的性能,它总是能够有效地适应新的数据分布,在某些数据集上实现了与其他方法相近的性能,同时训练时间也显著减少。
与UKF 和EKF 等其他KF 变体相比,EnKF 在大型非线性系统的参数估计中具有更好的性能[48]。它能有效地解决具有大量参数的深度神经网络,并且它不需要梯度信息就可以捕获到非线性引起的权重的后验分布的非高斯行为[49]。Chen 等[50]提出了EnKF 推断BNN 的权值的同时,可以处理非线性测量模型并自动调整测量噪声。Haber 等[51]借鉴方差缩减方法的思想,提出了一种以次线性速率收敛于强凸函数的全局极小值的EnKF变体。该算法可以并行化训练神经网络,只需几次前向传播即可获得更低的损耗值。在此基础上,Kovachki等[52]用集合卡尔曼反演算法训练四个神经网络,与SGD相比,在参数数量相对较少的网络上正确率相当,但是对于大量参数的神经网络,集合卡尔曼反演算法速度更快,表现得更好。之后Guth等[53]提出用一次性的方式训练神经网络时,集合卡尔曼反演是一种考虑到了未知参数的估计质量的很有前途的算法,其能与贝叶斯方法建立连接并且收敛,而拟牛顿法不会收敛到可行估计。
传统FNN一般通过最小化网络输出和目标变量之间的平方误差之和的方法来估计网络权重和偏差,并且基于只要输入参数就可以生成预测的非线性映射函数,这会受到数据集中异常值的高度影响[54]。但BNN在网络的权重中加入先验值,即加入了不确定性,并用概率量化了不确定性,输出一个表示预测的可能性的概率分布,所以BNN对噪声的鲁棒性更强,解决了点估计未考虑数据和不确定性的问题,比传统FNN 有更好的校准能力[55-57]。因此,BNN 在有噪声,需要高精度和高安全性的场景中应用广泛[41,54]。BNN本质是正则化的,可以解决一般神经网络在小数据集上过度拟合的问题[58]。BNN可以把具有高度认知不确定性的训练数据点标记为更高优先级,这在主动学习中很有用[59-60]。BNN可以把可用的新数据之前的后验值作为先验值回收,避免在线学习中常见的灾难性遗忘问题[61]。BNN 已被证明在中等规模的数据集上是有能力的,但尚未充分利用巨大的数据集。深度BNN 的结构较冗余,所以解释大量连续层的不确定性的成本很高。贝叶斯推理和大部分近似后验分布的方法训练BNN 的成本比较高,两者的对比见表2。BNN 在对网络输出进行最合理的推理时并不一定是最有用的,所以其他统计工具如基于模拟的推理训练BNN可能会更高效[62]。
表2 训练BNN权重的方法Table 2 Methods for training BNN weights
2.1.3 极限学习机及其各种改进算法
针对基于纯梯度的训练算法会迭代调整网络中所有的参数这个问题,Huang 等[63]提出一种以可调参数为代价的用于训练单隐层FNN的快速算法——极限学习机(extreme learning machine,ELM)。该算法随机选择单隐藏层FNN 的输入权值,并解析地确定单隐层FNN的输出权值,即ELM 仅学习使得代价函数最小的输出层的权重,见公式(8),其中T为训练目标,H为隐藏层的输出矩阵。
Huang等[64]在计算输出权重时增加正则化系数提高了泛化能力,使预测结果更加稳定。随机隐藏节点使ELM 能够更快地收敛,但也可能导致分类性能的波动。增量ELM、双向ELM和自适应ELM在训练过程中不断改变隐藏层节点的数目。Xu等[65]提出了逐个添加隐藏节点的增量ELM 的改进版本,其输出权重可以高效地递归更新。增加隐藏节点的数目平衡了经验风险和结构风险,有效地避免了ELM 在大数据上过拟合的发生。但它们随机初始化映射函数,所以在求解输出权重的过程中会出现无法求逆矩阵的现象,理论上设定较大的正则化参数可以保证矩阵是正定矩阵,但正则化系数过大会降低其泛化能力。所以一些群体智能如鲸鱼优化[66]、海豚群优化[67]、灰狼优化[68]等被用来优化ELM的随机初始参数。
Liang等[69]提出了仍是随机生成的但在训练过程中数量固定并且永不更新隐藏单元的参数的在线顺序ELM(online sequential ELM,OS-ELM),它不依赖过去的数据,使用实时数据学习固定数据的块数据,接收新的数据块就重新运行一次ELM,得到新的输出权重,组合新旧输出权重后更新FNN。该算法在学习速度非常快的情况下具有更好的泛化性能。Zhang等[70]将遗忘机制引入OS-ELM,提出了一种选择遗忘ELM算法,并将其应用于混沌时间序列预测。该算法能够对旧的训练样本进行迭代加权,削弱了旧训练样本的影响。在在线训练过程中,递归地确定其输出权重,在计算量和预测精度方面比OS-ELM有更好的性能。
Zong等[71]提出对内核参数不进行任何调整,正则化参数与输入数据大小相同的矩阵的加权极限学习机(weighted extreme learning machine,WELM),用基于相似性的激活函数代替了传统的激活函数,见公式(9),其权值是从数据集中随意选取,s(· )代表相似的激活函数,在相似任务上和不平衡数据的分类问题中表现很好,并且有良好的泛化能力。Horata等[72]在此基础上提出了重加权极限学习机,这在一定程度上缓解了模型的性能容易受到异常的训练数据的影响。Kudisthalert等[73]在WELM 基础上提出了一个依赖性别和种族的三重态特征的暹罗极限学习机,通过三重态的距离度量方式,发现相较于其他三种神经网络,该算法对特定人口群体分类的正确率更高。
Zhu等[74]建立了结合误差修正的ELM,精准动态地预测出燃煤机组NOx 的排放量。Qing等[75]用基于时间预处理的ELM的网络,降低了系统的非线性失真,改善了短信号,同时提高了网络的鲁棒性和泛化性能。总之,以上ELM训练速度极快,并且在现有的分类和回归任务上具有很强的竞争力。但这些ELM没有设计让两个输入数据流并行的结构,让多个数据流以串联方式输入,非常消耗计算资源。为了进一步提高ELM 的鲁棒性,离群鲁棒极限ELM被提出,Zhang等[76]用其解决了回归问题。Legora 等[77]在离群鲁棒ELM 和广义正则化ELM 基础上结合矩阵范数与交替方向乘子法,提出适用于多目标回归问题的广义离群值鲁棒ELM。
相较于基于纯梯度的FNN,ELM 学习算法可训练具有不可微的激活函数的单隐藏层FNN;可以达到最小的加权范数;其一次简单的正向学习,速度极快,并且解决了局部极小值和过拟合的问题。ELM理论得到了严格的证明并且具有良好的泛化能力和鲁棒性。ELM可以用足够多的隐藏节点逼近任意复杂的分类边界。在处理小样本、非线性自适应信息性能问题时,ELM独特的非线性自适应信息处理能力克服了传统人工智能方法对模式识别、语音识别等非结构化信息处理的直观性不足。但是ELM算法的隐藏层神经元数量众多,需要消耗更多的内存空间。虽然ELM在理论上具有明显的优势,但其本身的浅层结构,在解决任何回归和多重分类问题上仍存在很多问题。ELM虽可以实现与训练参数相同的分类性能,但如何将深度学习和ELM 结合起来,使其以较少的训练时间在大型数据集中可以产生与深度学习相同的结果还有待研究。
Li等[78]和Du等[79]指出神经网络高度参数化,所以随机滤波器的初始值非常接近最终解,基于梯度的优化算法只需轻推参数即可获得最终解。Frankle 等[80]只训练大于800 层的残差网络中与BatchNorm 相关的仿射参数,并在初始化时冻结其他参数,在ImageNet数据集上达到令人惊讶的高精度。Ramanujan等[81]证明随机加权神经网络包含无需训练权值就能获得良好性能的子网络,一个权重固定的随机加权神经网络越宽或越深,那么“未经训练的子网络”在精确度上接近权重已被训练过的网络。在此基础上,Tripathi等[82]提出当训练参数的数量大幅度减少时,基于纯梯度的深度网络训练算法可能是不必要的,基于搜索的算法也可能是一个可行的选择。因此,本节从Tripathi提出的随机搜索优化开始,介绍了一系列基于搜索的神经网络的训练算法,如粒子群算法、蚁群算法和遗传算法及其变体。
2.2.1 随机搜索优化
Tripathi等[82]提出了训练多于10层的深度神经网络的随机搜索优化方法(random search optimization,RSO)。RSO 是一种基于无梯度马尔可夫链和蒙特卡罗搜索的深度神经网络训练方法。该算法在一个高斯分布中会改变采样权值,初始的权值服从高斯分布输入值进行归一化,并使用有界步长N(0,σd)来探索初始点周围的区域,首先更新最接近标签的层的权重,然后依次向输入层移动从而最小化目标函数。权值更新的规则见公式(10),Δωi为权重变化,ωid为第d层的第i个权值,σd为第d层的所有权重的标准差。
相较于SGD 反向传播,RSO 更新权值的数量要少一个数量级。但RSO 更新权重时需要计算损失函数,所以训练时间与网络中的参数数量成线性关系。RSO训练深度卷积神经网络后在MNIST上精确率达99.1%,CIFAR-10分类精确度达81.8%,其获得了具有竞争力的准确率。这表明通过有效的先验值分配权重可以减少计算成本,如果能构建需要较少的学习参数的神经网络,比如由一组固定的基函数组成的北极星神经网络,那么即使没有显式的梯度计算,随机初始化的网络周围的区域被探索到就足够了。
2.2.2 粒子群算法及其各种变体
Eberhart 等[83]首次提出粒子群算法(particle swarm optimization,PSO)。在一个D维空间内,由初始速度和初始位置的M个粒子构成了一个种群,它们根据自身惯性,自身最优位置以及群最优位置来更新飞行轨迹。假设第i个粒子当前位置向量xid,速度向量vid,其不断迭代搜索个体极值pbestid和全局最优极值Gbest,从而更新自身的速度见公式(11)和位置见公式(12)。迭代搜索过程中会记录下自身和群体经历的最佳位置以及对应的适应度函数值,从而得到最优解,其过程见算法1。
其中,t为当前迭代次数,学习因子c1和c2,r1、r2为[0,1]的随机数,vid为[vmin,vmax] 之间的数,搜索空间内限制的最小速度和最大速度分别为vmin、vmax,当vid >vmax时取vid=vmax;当vid <vmin时取vid=vmin。
算法1粒子群算法
输入:学习因子c1、c2,最大迭代次数Tmax,速度范围[vmin,vmax] ,位置范围[xmin,xmax] ,粒子群维度D,粒子数M。
输出:最佳位置信息Gbest作为权值。
步骤1初始化:设置第i粒子速度vid和位置xid,i=1,2,…,M;
步骤2计算每个粒子的适应度:根据适应度函数计算第i个粒子当前位置适应度f(xid),i=1,2,…,M;
步骤3更新每个粒子最优适应度:比较第i个粒子当前位置的适应度f(xid)与自身所经历的最好位置的适应度f(pbestid),若更优则把当前位置定为pbestid,否则不变,i=1,2,…,M;
步骤4更新全局最优位置:第i个粒子当前位置的适应度值f(pbestid)与全局最优位置的适应度值f(Gbest)进行比较,若更优则把当前位置定为全局最优位置Gbest,否则不变,i=1,2,…,M;
步骤5更新速度和位置向量:根据公式(11)、(12)更新两个向量,并检查是否越界,若越界需进行处理;
步骤6若t <Tmax设置t=t+1,回到步骤2,否则结束循环并输出最佳位置信息Gbest作为神经网络的权值。
基本PSO中c1和r1,c2和r2一起制约着粒子群受自身因素影响的程度,所以在全局和局部搜索能力方面有很大限制。后来Shi等[84]提出把惯性权重ω引入速度项的标准PSO,提高了寻找最优的速度和精度。但在后期全局最优解的附近容易出现振荡现象,搜索能力反而减弱,又出现了一系列常见的权重递减方法。为进一步平衡PSO 的全局与局部搜索能力,使ω能随着粒子的目标函数值自动调节。所以出现了非线性的动态惯性权重系数。为了使粒子向自身和种群中其他粒子经历的最优位置更接近,Clerc等[85]提出了一个在理论上可以保证算法收敛的收缩因子χ,它的本质是惯性权值法中的ω取得合适值。
神经网络训练过程中的参数可以被建模为一个粒子的位置,其所有可能的权值的组合可以被定义为解空间。神经网络的损失函数可以与PSO 的适应度函数对应,神经网络的损失越小,适应度越低,粒子越接近全局最优,即训练神经网络的目标与PSO 优化目标是一致的。PSO 中的粒子群在每次迭代中更新其局部和全局位置,直到找到用于神经网络训练的最佳权重。PSO在状态空间中搜索能力强,早期收敛速度快,能够提供全局最优解[86],因此,PSO 中粒子群的迭代可以替代SGD中的反向传播,已被用于训练神经网络的权重和偏差值[87],从而避免了大量的梯度运算,提高了算法执行效率,缩短了神经网络。Nadai 等[88]提供了一个基于PSO优化的神经网络,实验表明该网络有高水平的适应性、稳定性和泛化性。
Yang 等[89]提出用标准PSO 优化具有简单结构的径向基神经网络,在双向八车道道路上进行了实验,结果表明该方法能有效提高机动车电子注册识别速度检测的准确性。针对标准PSO 只能在连续空间中使用的问题,Tian等[90]把粒子速度转化成Sigmoid函数,粒子的位置设为0 或1 并且由该粒子速度的状态转移概率决定。用此离散的PSO 优化用离散化方法改进的神经网络的参数,实验结果表明,相较于利用反向传播算法的神经网络,该算法优化过的神经网络在预测体育教学上精度高,拟合残差小。针对以上PSO中的粒子进行搜索时只依赖自身历史最优位置和种群的全局位置在高度多峰值问题中出现过早收敛的问题。Roy等[91]提出用只能在粒子自身邻域内学习的邻域自适应PSO 训练由一个隐藏层、单神经元构成的输入层和单神经元构成的输出层的FNN,对三种类型故障的软件的可靠性进行评估。相较于PSO 训练FNN,该算法的拟合和预测性能更好。Roy等[92]继续提出可以提高搜索精度和效率的具有模糊性质的邻域模糊PSO 训练以上FNN。实验结果表明PSO 优化的神经网络比其他模型具有更大的拟合和预测能力,邻域的模糊PSO 比PSO 的拟合和预测误差都要低得多,该框架对于软件可靠性预测具有重要的应用前景。Sehrish 等[93]提出了根据簇间距离生成团簇的PSO 即基于再生的PSO 和根据速度提升阈值更新位置的PSO 即基于速度提升的PSO。在预测居民用电量的实验中表明,PSO优化的神经网络比传统的反向传播神经网络有更高的准确率和更少的迭代次数;这两种PSO变体优化的神经网络进一步提高了标准PSO 优化的神经网络的预测精度,其中基于速度提升的PSO优化的神经网络在准确性方面表现出最高的性能。他们指出将继续使用PSO 变体训练神经网络为智能建筑建立预测模型。Nandi等[94]实证分析了三个时间序列,在MAE和MSE 方面,三种PSO 变体训练的神经网络比反向传播算法的预测精度更高。Ye 等[95]将分布式神经网络的训练参数编码到PSO 每个粒子中,用改进的PSO 计算DNN分布式训练过程中的参数。结果表明该PSO算法在小尺度的DNN 上收敛速度比同步随机梯度下降法快,并且它能很好地处理不同尺度的神经网络,但其加速效应不稳定。
Zhang 等[96]用进化附加节点策略和部分训练算法来维持PSO 中粒子的行为联系。该算法较好地解决了噪声适应度评估可能误导进化的问题,还可以避免同时演化结构和权重导致的移动目标问题。在此基础上,Carvalho等[97]在内部PSO中使用权重衰减启发式,结果表明采用权重衰减启发式的PSO-PSO实现具有更好的平均泛化性能,在其他工作中也表现出了良好的泛化性能[98]。而且提出未来可以尝试在PSO-PSO 算法中增加连通模式优化过程。
PSO训练神经网络时,既可以优化神经网络权值和阈值,又可以优化隐藏层的传递函数和目标函数[96]。它克服了反向传播算法收敛速度慢,容易陷入局部极小值等缺点。PSO中没有选择算子,所以原始种群中的每个个体在新种群中都有一个对应的伙伴,从种群多样性的角度来看,该性质优于遗传算法。PSO中记忆和个体之间的建设性合作,可以更快地发现合理质量的解,因此在一定程度上避免了遗传算法的早熟收敛和停滞现象[99]。与基于纯梯度的优化算法比较,PSO算法训练同等小型规模的神经网络的预测精度更高[89-94],但PSO 一般需要更大的计算资源,速度较慢。总体来说,粒子群算法不仅调整参数较少,而且操作简单,容易实现[100-101]。PSO从多个点开始,可能能够在一次运行中识别多目标优化中各种解决方案[102],是一种很有前途的训练人工神经网络的算法。可以进一步探索PSO 与重组、精英粒子、变异等结合后有可能提高PSO的效率和可靠性的方法,探索可能产生更稳健的结果并且快速有效地训练浅层网络的可以根据问题自动调整PSO参数的方法[103]。
2.2.3 蚁群算法及其各种变体
Dorigo 等[104]首次用具有随机搜索性质的蚁群算法(ant colony algorithm,ACO)解决一些组合优化问题。在ACO 中,每次迭代时,蚂蚁k在当前节点i根据一定概率访问从未访问的某一节点j从而建立路径。然后关联全局即根据所有蚂蚁搜索到的路径进行信息素的更新。
ACO 在问题状态空间中具有有效的搜索能力,Joseph等[105]用ACO优化的神经网络选择文本分类的特征。相较于基于纯梯度的神经网络,ACO 优化的神经网络精度更高,能有效地找到Reuter的数据集中最小的特征子集。Zhang 等[106]用ACO 优化具有一个隐藏层的神经网络和最多有六个隐藏层的深度神经网络的权重和偏差。这比反向传播训练的同结构的神经网络预测露天采矿项目的成本的精度更高,即ACO 在提高预测模型的准确性方面发挥了至关重要的作用。通过实验发现蚂蚁的迭代次数与神经网络的隐藏层数呈高度负相关,即蚂蚁的全局搜索是随机的,它们必须进行更多的迭代才能找到具有较少隐藏层的神经网络的最佳参数。
ACO 已成功地应用于求解离散问题,但它的离散性质限制了应用于连续领域。所以Ping等[107]提出了两种求解连续域的ACO变体。Socha等[108]把ACO中的离散概率分布转变为连续概率分布即高斯概率分布,从而提出了一种可以扩展到实数变量优化的蚁群算法ACOR,其训练过程见算法2,并将其应用在固定拓扑结构的具有六个隐藏层的FNN的训练上[109]。
算法2改进的蚁群算法
输入:蚁群规模N,信息因子α,最大迭代次数Tmax,启发函数因子β,信息素表Table。
输出:最优路径向量作为权值。
步骤1随机初始化所有蚂蚁的位置;
步骤2第i个蚂蚁根据信息素表Table依概率选择下一个节点直到访问完所有节点;
步骤3把第i个蚂蚁的路径添加到信息素表Table;
步骤4当i≤N时设置i=i+1 回到步骤2;
步骤5排序信息素表Table后,丢弃后N,取前R即更新Table;
步骤6当j≤N+R时,设置j=j+1 回到步骤5;
步骤7若t <Tmax或者大于设定的精确度θ时,设置t=t+1,回到步骤2,否则结束循环并输出路径最优解。
ACO由一个信息素矩阵和一个启发式权重矩阵组成的概率模型,这两个矩阵基本上衡量了将决策变量设置为特定值的“回报”。其目标是进化信息素矩阵,以便通过抽样中的概率模型生成最优(或接近最优)解。ACOR与ACO 类似,每一次迭代被分两个阶段:构建解和更新信息素。但ACO中的蚂蚁更新信息素后会丢弃之前迭代寻找到的解,更利于寻找到最优解,但遇到信息表中解的数量巨大时,ACOR需要对解进行比较和排序,耗时就比较长。
针对ACOR中T只有信息素信息,没有启发式信息的问题,Zhao等[110]在ACOR的基础上提出带有启发式信息的h-ACOR。结果显示,相较于ACOR优化的FNN,h-ACOR可以有效地减少训练次数,提高训练精度,但也需要更大的存储空间。Wan 等[111]提出一种加入了扰动策略的基于蚁群优化的人工神经网络方法。将ACO变体的正反馈与该神经网络的记忆和联想能力结合起来,克服了ACO 初期缺乏信息素和易局部优化的缺点,实例表明,该混合算法在解决水库径流预测问题时具有合理性、可靠性和较高的精度。
ACO 及其变体的基本机制是建立参数化概率模型,有坚实的数学基础,逐步构造可行解。该概率模型的参数是根据算法每次迭代中生成的样本解,随时间而变化的。这样做可以加强更好的解,最终得到一个最优,即ACO及变体通过蚂蚁的正向反馈和并行式协作,实现了全局最优。它们可以同时优化网络的权值和阈值。相较于遗传算法,ACO 及其变体在较大的搜索空间中搜索速度更快,极大地提高了计算效率,而且受参数影响较小,还能充分利用每个蚂蚁积累的经验来逼近最优解。虽然ACO及其变体中启发式性质无法提供任何最优保证,但它通常能够在有限的计算预算内找到给定问题的高质量解决方案[112],所以ACO 与其他启发式或数学规划相结合具有一定前景。目前,在依靠专家经验设定的蚂蚁的初始数量、ACO及变体在高维多目标优化问题上[113]、平衡已搜索到的和未访问到的方法等方面还值得被开发。
2.2.4 遗传算法及其各种变体
Holland 受生物进化论启发提出了一种由选择,交叉和变异三个过程搜索最优解的遗传算法(genetic algorithm,GA)。选择算法是选择较优个体遗传到下一代,虽有很多,如依概率的轮盘赌选择、排序选择、最优个体选择和随机联赛选择等,但这都与适应度有关。Shen 等[114]发现GA 选择策略影响种群的初始多样性,认为适当控制优势的基因有利于GA 的稳定性。交叉法是相互配对的染色体交换部分基因,是区别其他进化算法最重要特征,是产生新个体的关键,有单点交叉、两点交叉、均匀交叉和算术交叉等。变异法是用小概率随机改变某等位基因值,所以可以探索到搜索空间中的新区域,确保了遗传多样性[115],有基本位变异、均匀变异和边界变异等。交叉和变异策略的选择对GA 的搜索能力、收敛效率和精度起着至关重要的作用。
由于GA 不能直接处理问题空间的参数,所以用GA 解决问题时必须进行编码。Togelius等[116]指出不恰当的编码会导致找不到解决方案。所以GA 训练神经网络最主要的问题是:如何使用有效的遗传表示对网络进行编码。直接编码方案在基因组中指定了表型中出现的每个连接和节点,即网络的参数值(如权重和神经元)与其遗传表示进行一对一映射,因此大量的突触连接可以被相应基因型中少量的参数编码。间接编码通常只指定构建表型的规则,特定的基因或生长规则由细胞分裂确定,即计算它与种群中其他每个生物的距离,进而调整适合度。所以间接编码比直接编码具有更紧凑的表示形式。编码方式一般有实值编码和二进制编码。在使用算法3解决问题时,目标函数与适应度函数可能需要进行转变。
算法3遗传算法
输入:种群规模N,迭代次数Tmax,交叉概率pc,变异概率pm,个体长度Len,个体范围bound。
输出:适应度值最优的个体i。
步骤1初始化:对每个个体进行编码,计算各自的适应度值fitness;
步骤2选择:对每个个体基于适应度的过程进行选择;
步骤3交叉与变异:每个个体以交叉概率交叉,以变异概率变异;
步骤4评估:重新计算每个个体的适应度值,并找到适应度值最优的个体;
步骤5若t≤Tmax或者大于设定的精确度时,设置t=t+1,回到步骤2,否则结束循环并输出适应度值最优的个体。
为了训练神经网络且提高算法的性能,出现了许多GA的变体。Deb等[117]改进交叉方式后对大规模现实问题进行实验,解决了GA 在此大数据上较费时的问题。Mouret等[118]在GA基础上,提出了一个可以提供一种全面视角的多维档案算法。Pugh等[119]在质量多样性算法和GA的基础上,提出了一种可以同时混合多个行为表征的新算法,它成功地克服了寻找量子点相关的一些挑战。以上两个实验解决了遗传算法局部搜索能力较差,网络的训练精度可能不那么令人满意的问题。Stanley[120]在没有局部相互作用的情况下映射到表型,Gauci[121]同样采用间接编码方式,将超立方体中产生的空间模式解释为低维空间中的连接模式,这都提高了遗传算法的性能。Miller[122]首次尝试用GA设计和进化神经网络的结构。然后Jaddi 等[123]发现GA 可以同时优化神经网络结构和权重。Esfahanian等[124]提出一种半折叠染色体结构编码方式,在此基础上用稳态、世代和精英三种单独的GA 训练神经网络,发现该编码方式不仅可以减小染色体大小,而且能随着网络的发展而扩展,所以可以更好地处理大型网络。Sun 等[125]提出了一种可变长度基因编码策略和一种新的适应度评估方法,发现可以把GA扩展到训练深层卷积神经网络上。此改进算法不仅加快了搜索速度,而且在图像分类错误率和参数数量(权重)方面具有显著优势。Fang等[126]在Sun使用的二元锦标赛选择算子中加入精英机制,选择有前途的个体。这不仅保证了种群的多样性和收敛性,而且可以在进化过程中有效地找到最优的DNN结构。Ghorbanzadeh等[127]将顺序搜索方法与深度遗传适应度形成的GA相结合,实验发现,该方法不仅加快了GA 的收敛速度,而且促进了基于深度学习的分类器的训练。Yang等[128]通过在亲本染色体长度范围内逐个交叉基因,并在一个小的突变率内,选择性地突变进入染色体的每个基因来改进算法,这减少了迭代次数,加快适应度的收敛速度,还提高神经网络模型的鲁棒性和安全性。
GA 受启发于进化论缺乏了数学理论,可能存在所有个体都陷于同一个极值,不合理的选择和交叉算子会有早熟收敛的风险。GA 的参数的选择也缺乏指导信息。但是一个简单的遗传算法就能够训练深度神经网络,让它们像DQN一样玩很多的雅达利游戏[129]。GA具有并行性,能同时优化结构和连接权系数,所以收敛速度很快,并且有效地提高了神经网络的泛化性能。该算法仅利用适应度值作为度量,所以把握搜索过程总体能力较强,可以找出空间所有解。它的增强式学习能力优化神经网络的权值和阈值的过程可以保证神经网络结构固定不变。
Mcculloch 等[130]建立的第一个MP 模型标志着神经网络时代的到来。近年来,神经网络的热度只增不减,当人们面对一个新问题时需要清楚训练数据、网络架构和训练方法是什么样的。目前还没有一个明确的答案。但错误的选择往往会让人们付出高昂的代价。所以一个重要的问题就是,如何训练一个能够解决问题并且性能较好的神经网络,采取什么办法提高神经网络泛化能力和学习时间这两个关键性能指标?已出现大量方法,如对数据进行预处理、各种网络初始化的技巧、训练网络方法、激活函数的选择、不同正则化方法和集成多个神经网络等。神经网络的性能高度依赖于训练过程,因此这是最近许多研究工作的重点[131-132]。但目前对于选择什么算法没有达成共识,好像是取决于使用者对算法的熟悉程度[133]。
从Rumelhart等[4]提出用反向传播算法开始,出现了一系列基于此的训练算法,有随机梯度算法和小批量随机梯度算法等一阶的各种梯度下降算法、有拟牛顿和共轭梯度法等二阶近似法、有Adam和RMSProp等自适应学习率算法。面对复杂的网络和高维空间,基于纯梯度的训练算法暴露出了一系列弊端,尤其对初始设定值的过度依赖和在激活的平整度上等。由于采样数据往往存在噪声,所以代价函数并不准确,此时基于纯梯度的算法不能过滤噪声,优化不准确的代价函数是不可取的。因此,本文总结出一些常见的训练神经网络权重的非梯度算法。
训练神经网络是在考虑了精确度和损失率的基础上,去找目标函数的最优值。基于非梯度的训练算法与基于纯梯度的训练算法相比,不需要调整复杂的超参数,不需要反向传播误差,可以直接使用可微和不可微的激活函数。无梯度算法的优点在于显著减少了训练时间。但它的缺点是增加了网络的复杂性,当隐藏单元的生成数量增加许多倍,可能会导致过拟合。
此文先介绍相关的神经网络的结构,让读者首先对神经网络及其结构有一定了解;然后介绍涉及到训练良好性能的神经网络的方方面面;再对部分较流行的非梯度训练神经网络权重的算法展开介绍,介绍这些算法如何训练神经网络的权重以及各自的优缺点和各种变体。在当今这个发展的社会,这些神经网络非梯度训练算法已慢慢被重视,而且已在多个领域得到应用。
非梯度神经网络算法理论分析与对比如表3。
表3 非梯度神经网络算法理论分析Table 3 Oretical analysis of non-gradient neural network algorithms
没有免费的午餐定理明确说出没有最优的学习算法。一个神经网络优化算法并不能解决现实中所有问题,只可以很好地解决相应的问题,即没有万能的神经网络优化算法,只有比较适合某一个特定的问题的训练算法。而且Blum等[134]和Judd[135]在理论上证明神经网络的优化算法都有性能限制。
目前单纯的基于无梯度的训练算法并不是基于纯梯度的训练算法的竞争对手,但是当梯度算法不能使用时,它是一个很好的选择[136]。
近年涌现出组合多个算法的思想去训练神经网络,如基于纯梯度的算法和非梯度算法一起训练神经网络[137-140],基于某种非梯度思想的非梯度算法训练神经网络[141-145]等。这种混合优化器显示出极高的潜力,在某些问题上这些经过组合的非梯度算法比其中的单个算法更有效。这种思想可以把算法的某种优点组合在一起,这可能会成为一个研究方向[146]。本文列举的这些算法有一定缺点,这些算法可以继续被改进。训练一个性能良好的神经网络本来就与许多方面相关,使用非梯度训练算法的同时考虑到神经网络的结构、数据的处理、目标函数的选择和防止过拟合的正则化等因素。这些相关因素全被考虑到,可以使神经网络在解决问题时做出更好的决定。