摘要:深度学习(DL)是机器学习研究的一个新领域,它的目的是让我们更接近人工智能的目标。虽然DL对于各种任务都很有用,但是很难训练。在深度学习的发展过程中,一些使深度学习在训练中达到优异性能的算法被提出了,其中包括随机梯度下降法、共轭梯度、 Hessian-free优化法和 Krylov Subspace Descent。在本文中,我们提出了模拟退火(SA)来提高卷积神经网络(CNN)的性能, 作为一种使用现代优化技术优化DL的替代方法,即元启发式算法。 利用MNIST数据集来验证使用了SA的CNN性能,保证了该方法的准确性和效率。此外,我们还将我们提出的方法与原始的CNN进行了比较。虽然增加了计算时间,但是实验结果表明,该方法可以提高原始CNN的性能。
1.引言
深度学习是指一类新的机器学习方法,在这种方法中,来自分层结构中多个层次的信息处理可以用来对特征进行分类和学习。该技术是图形模型、优化、信号处理、模式识别和神经网络等研究领域的交叉。深度学习目前流行的三个主要原因是,它大大提高了芯片处理的能力,显著降低了计算硬件的成本,以及是因为机器学习研究的最新进展。
一般来说,深度学习技术可以分为深度判别模型和生成模型。判别模型的例子有深度神经网络(DNNs)、递归神经网络(RNNs)和卷积神经网络(CNNs)。另一方面,生成模型例子有限制玻尔兹曼机(RBMs),深度信念网络(DBNs)、化自动编码器和深度玻尔兹曼机(DBMs)。
在这些技术中,CNNs是本文研究的重点。CNNs是一种深度监督学习,该模型训练测试效率高,构建灵活,适用于复杂系统的端到端学习。虽然DL在解决各种学习任务方面有很好的声誉,但是训练并不容易。
随机梯度下降法(SGD) 实现简单,而且对于训练样本较多的问题处理速度快。但是,这种方法需要进行大量的手动设计来优化其参数和基本顺序,因此使用计算机集群来设置这些参数或使用gpu来并行化它们是很困难的,使用SGD进行优化的缺点是需要更多的内存。相比之下,共轭梯度(CG) 可以跨机器分配计算,在GPU上并行计算梯度,训练更稳定,更容易检查收敛。另一方面这种方法通常很慢,但它可以被RAMs、多核CPUs、GPU和具有快速网络硬件计算机集群加速。
Hessian-free optimization(HFO) 是由J. Marten提出的,它使用了2阶优化方法的基础,即truncate - newton。HFO已被应用于训练深度自动编码器神经网络,能够克服拟合不足的问题,并且比预训练+微调方法更有效。根据偏微分方程提出的Krylov Subspace Descent(KSD)是另一种二阶优化方法。与HFO相比,使用KSD进行优化具有一些优点。 首先,KSD具有更好的简洁性和鲁棒性,它不需要启发式来初始化和更新平滑值。第二,即使H不是正半定的,KSD也可以应用;第三,KSD在优化速度和分类性能上都优于HFO。
事实上,绝大多数现代优化技术通常是启发式和元启发式。这些优化方法在解决复杂的优化问题时非常有效,几乎在所有的科学和工程领域以及工业应用中都得到了应用。但是,目前很少有元启发式算法对DL进行优化的研究。因此,我们使用元启发式算法作为DL性能优化的替代方法。
元启发式的工作主要有三个目的: 更快地解决问题、解决大型问题和获得更具鲁棒性的算法。 而且,它们灵活、设计简单,而且实现也不困难。元启发式算法通常采用规则与随机性相结合的方法来复制自然现象。这些现象可能包括生物进化过程,如遗传算法(GA)、遗传规划(GP)、进化策略(ES)和差异进化(DE)。还包括动物行为,作为一种动物行为学现象,有蚁群优化(Ant Colony Optimization, ACO)、粒子群优化(Particle Swarm Optimization, PSO)、细菌觅食优化算法(BFOA)和蜂群优化算法(Bee Colony Optimization, BCO)。另外物理现象的例子有模拟退火(SA)、阈值接受法(TA)和微粒子退火(MA)。TA和MA是SA[的变体。另一种形式的元启发式,例如, Harmony Search 方法,是受音乐现象的启发。
元启发式算法也可以分为基于轨迹的(单解)和基于种群的。基于单解的元启发式算法有SA、TA、MA、禁忌搜索(TS)、噪声方法(NM)和引导局部搜索(GLS)。基于种群的元启发式算法可分为进化计算和群体智能。进化计算的一般术语是受达尔文原理的启发而来的,达尔文的原理是自然进化的能力,使生物很好地适应他们的环境。这些算法的例子有GA、ES、GP和DE。此外,群体智能从一组社会性昆虫群体和其他动物群体的集体行为中获得灵感。这些方法包括:蚁群算法(ACO)、粒子群算法(PSO)、粒子群算法(BFOA)和粒子群算法(BCO)。在这些算法中,我们的研究使用了SA算法。
SA是一种紧凑而具有鲁棒性的技术,它为单目标和多目标优化问题提供了优秀的解决方案,大大减少了计算时间。这种方法起源于统计力学中的Metropolis算法。
此外,为了测试基于SA的DL的性能,我们使用了MNIST数据集。该数据集由手写的数字图像组成,被分成60000个训练数据和10000个测试数据。所有的图像数据都已标准化成大小为28 x 28像素的图像。原始数据集上的每个图像都表示为0(黑色)到255(白色)之间的值,在这之间的任何值都是不同灰度级。
本文的组织如下。第一节为绪论。第二节给出了模拟退火算法的描述。第三节解释卷积神经网络。第四节描述了提出的方法。第五节给出了仿真结果。最后,第六节对本文进行了总结。
2. 模拟退火算法
模拟退火(SA)最早由Kirkpatrick等人提出。这种方法是基于退火技术来获得物质的基态,即固态的最小能量。如果从熔体中生长出单晶,低温不是获得物质基态的合适条件。退火技术是一种尝试,通过融化物质到达低温状态,然后缓慢降低温度;这可以在冰点附近的温度下停留很长时间。如果不这样做,物质就会超出平衡极限,得到的晶体就会有很多缺陷。对于玻璃来说,晶体不会形成结晶顺序,因为状态是亚稳态的,其结构是局部最优的。
玻尔兹曼分布是SA方法的一个定量关键。 下面的方程给出了x的任意实际状态的概率(等式1)
其中
f
(
x
)
f(x)
f(x)为能量的构型,
k
k
k为玻尔兹曼常数,
T
T
T为温度。对于优化问题,SA的标准优化步骤如下:
1.生成初始解向量:随机选择一个初始解
x
0
x_{0}
x0进行系统优化,然后计算目标函数
2.初始化温度:温度T的初始值是SA成功实现的重要参数。如果值过高,则需要更多的化简来收敛。如果过小,搜索过程可能不够完美,因此可能会超过可能的全局最优点。
3.在目前的解决方案附近选择一个新的解决方案:一个新的解决方案
x
0
+
Δ
x
x_{0}+\Delta x
x0+Δx是否做为被接受的新解决方案,取决于
T
T
T。
x
0
+
Δ
x
x_{0}+\Delta x
x0+Δx 和
x
0
x_{0}
x0的目标函数分别由
f
(
x
0
+
Δ
x
)
f (x_{0}+\Delta x)
f(x0+Δx)和
f
(
x
)
f (x)
f(x)表示.
4.评估一个新的解决方案:如果
f
(
x
0
+
Δ
x
)
≤
f
(
x
)
f (x_{0}+\Delta x)\leq f (x)
f(x0+Δx)≤f(x),
x
0
+
Δ
x
x_{0}+\Delta x
x0+Δx被接受作为
x
0
x_{0}
x0的替代,更新现有的最优解决方案并转到步骤6。如果
f
(
x
0
+
Δ
x
)
>
f
(
x
)
f (x_{0}+\Delta x)> f (x)
f(x0+Δx)>f(x),
x
0
+
Δ
x
x_{0}+\Delta x
x0+Δx需要根据等式4来计算能否被接受作为新的解决方案。(我在文献中并没有找到等式4,但在图1.SA算法的流程图中可以看出等式4)
5.周期性降低温度:在搜索过程的持续时间内,温度T降低,因此在搜索开始时,接受恶化移动的概率较高,但是随后该概率会逐渐降低。
6.重复2到6的步骤,直到满足停止条件:当满足终止条件时,计算终止。否则,重复第2步直到第6步。SA算法流程如图1所示。
3.卷积神经网络
卷积神经网络(Convolution Neural Network, CNN)是多层感知器(Multi-Layer Perceptron, MLP)的一个变体,它的灵感来自于猫的视觉皮层,尤其是Hubel和Wiesel在1962年提出的模型。该模型的第一次计算是在1980年由 Fukushima’s Neocognitron发现的,1989年晚些时候,LeCun等人在这个思路的基础上,利用误差梯度设计并训练了卷积网络,获得了在多个模式识别任务上最优异的表现。
原始CNN的架构通常分为两种层:卷积层和子采样层(池化层),如图2所示。在这种技术中,模型在多个层次架构上训练,这些多层架构由几个stages组成。每个stage在 feature map的调用中都有输入和输出,以数组形式设置。输出上的每个特征映射表示在输入上的所有位置提取的某个特定的特征。其中每个stage由三层组成:一层过滤层(我理解是卷积层),一层非线性层,和一层特征池层。
从概念上讲,特征图是通过将第
k
k
k个输入图像与线性滤波器进行卷积而得到的。将偏差值相加,应用于非线性函数(激活函数)。如果给定层的第
k
k
k个特征映射为
h
k
h^{k}
hk ,其过滤器由权值
W
k
W^{k}
Wk 和偏差
b
k
b_{k}
bk确定,则特征映射
h
k
h^{k}
hk则可按下方的公式(2)获得:
CNN的另一个重要概念是max-pooling,它是非线性向下采样的一种形式。将输入的图像在max-pooling上设置为不重叠的矩形,每个子区域都进行同样的操作,这样得到的输出值都是最大的。
Max-pooling在视觉上很方便,有两个原因:它减少了上层的计算复杂性,它提供了平移不变性。由于max-pooling为位置提供了额外的鲁棒性,因此它是减少中间维数的一种有效方式。
4.提出方式的设计
所提出方式的设计使用CNN: 6c – 2s – 12c – 2s,该模型的体系结构如图3所示。第1和第2个卷积层的核大小为5x5。另一方面,第1和第2个子采样层的尺寸为2×2。该架构是为MNIST数据集开发的,其中图像大小为28 x 28。
使用SA训练CNN的目的是为了满足一定的精度要求,使逼近误差精度和网络复杂度指标最小化,这可以通过计算训练集的标准误差和向量解的适应度函数来实现。在这项工作中使用的适应度函数如下:等式(3)
其中
o
o
o为期望输出,
y
y
y为实际输出,
R
R
R为训练样本个数。对于终止条件,有两个条件。首先是迭代达到指定的最大迭代,其次是适应度函数小于某个特定的常数。 此时,近似误差精度和最小网络复杂度指标都达到了最优状态。
本质上,在本方法中,CNN算法计算系统的权值和偏差,然后利用最后一层的结果来计算损失函数,作为SA中待优化的最佳解向量
x
0
x_{0}
x0。从最近解的邻域中选择一个新的解向量,随机加入
Δ
x
\Delta x
Δx,它会依赖于目标函数
f
(
x
0
+
Δ
x
)
≤
f
(
x
)
f (x_{0}+\Delta x)\leq f (x)
f(x0+Δx)≤f(x)或者是等式(1)中的玻尔兹曼分散。
当SA算法达到最佳目标函数时,对系统各层的权值和偏差进行更新。本方法的流程图如图4所示。
5.仿真和结果
目标是最小化MNIST数据集分类任务的误差。此数据集用于测试方法的性能。一些MNIST手写的图像数据集如图5所示。
对于MNIST数据集,实现SA-CNN和原始方法CNN有四种策略。第一个是原始的CNN方法(CNN)。第二个是基于邻域大小设置为10 (cnnsa10)的SA-CNN,第三是基于领域规模20 (cnnsa20)的SA-CNN,第四是基于领域规模50 (cnnsa50)的SA-CNN。表1总结了所有的实现结果。
图6展示了在MNIST数据集上实现传统CNN和SA-CNN的性能。总的来说,仿真结果表明,SA-CNN的百分准确率或误差要优于原始CNN。邻域规模为50 (cnnSA50)的CNN比cnnSA10和cnnSA20更好。
所有方法的计算时间如图7所示。从这张图的插图可以看出,原始的CNN (CNN)要比SA的CNN时间少,并且时间会随着SA上邻域的增大而增加。
6.结论
我们提出的方式的目的是使用模拟退火(SA)来优化卷积神经网络(CNN),该目的已经达到。 虽然计算时间增加了,但是对于每个训练轮次该方法的分类误差都比原始的CNN要小。 该方法可以用于其他基准数据集,如ImageNet、INRIA数据集和Hollywood II数据集。该策略也可用于其他深度学习的元启发式算法的测试,如更优的CNN的和声搜索或差分进化、深度信念网络(DBN)或递归神经网络(RNN)。在未来的研究中,我们计划探索更有效的元特征优化在深度学习中的应用。