摘要:深度学习(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)为能量的构型,kkk为玻尔兹曼常数,TTT为温度。对于优化问题,SA的标准优化步骤如下:
1.生成初始解向量:随机选择一个初始解x0x_{0}x0​进行系统优化,然后计算目标函数
2.初始化温度:温度T的初始值是SA成功实现的重要参数。如果值过高,则需要更多的化简来收敛。如果过小,搜索过程可能不够完美,因此可能会超过可能的全局最优点。
3.在目前的解决方案附近选择一个新的解决方案:一个新的解决方案x0+Δxx_{0}+\Delta xx0​+Δx是否做为被接受的新解决方案,取决于TTT。x0+Δxx_{0}+\Delta xx0​+Δx 和x0x_{0}x0​的目标函数分别由f(x0+Δx)f (x_{0}+\Delta x)f(x0​+Δx)和f(x)f (x)f(x)表示.
4.评估一个新的解决方案:如果f(x0+Δx)≤f(x)f (x_{0}+\Delta x)\leq f (x)f(x0​+Δx)≤f(x),x0+Δxx_{0}+\Delta xx0​+Δx被接受作为x0x_{0}x0​的替代,更新现有的最优解决方案并转到步骤6。如果f(x0+Δx)>f(x)f (x_{0}+\Delta x)> f (x)f(x0​+Δx)>f(x),x0+Δxx_{0}+\Delta xx0​+Δ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由三层组成:一层过滤层(我理解是卷积层),一层非线性层,和一层特征池层。
从概念上讲,特征图是通过将第kkk个输入图像与线性滤波器进行卷积而得到的。将偏差值相加,应用于非线性函数(激活函数)。如果给定层的第kkk个特征映射为hkh^{k}hk ,其过滤器由权值WkW^{k}Wk 和偏差bkb_{k}bk​确定,则特征映射hkh^{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)

其中ooo为期望输出,yyy为实际输出,RRR为训练样本个数。对于终止条件,有两个条件。首先是迭代达到指定的最大迭代,其次是适应度函数小于某个特定的常数。 此时,近似误差精度和最小网络复杂度指标都达到了最优状态。

本质上,在本方法中,CNN算法计算系统的权值和偏差,然后利用最后一层的结果来计算损失函数,作为SA中待优化的最佳解向量x0x_{0}x0​。从最近解的邻域中选择一个新的解向量,随机加入Δx\Delta xΔx,它会依赖于目标函数f(x0+Δ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)。在未来的研究中,我们计划探索更有效的元特征优化在深度学习中的应用。

关于模拟退火函数算法(Simulated Annealing Algorithm)的理解(文献阅读笔记)相关推荐

  1. 退火模拟算法c语言程序,C语言模拟退火算法(C language simulated annealing algorithm).doc...

    C语言模拟退火算法(C language simulated annealing algorithm) C语言模拟退火算法(C language simulated annealing algorit ...

  2. 数学建模——模拟退火算法(Simulated Annealing,SA)

    模拟退火算法 一.模拟退火算法概述 二.算法步骤 三.算法特点 四.模拟退火算法理解(图解) 五.Metropolis准则 六.模拟退火算法的应用 七.模拟退火算法Matlab代码 工具箱求解非线性函 ...

  3. 一文搞懂什么是模拟退火算法SImulated Annealing【附应用举例】

    本文参考了很多张军老师<计算智能>的第十章知识. 本文来源:https://blog.csdn.net/qq_44186838/article/details/109181453 模拟退火 ...

  4. 【opencv450-samples】旅行商问题(模拟退火算法Simulated Annealing,SA)

    运行结果 视频演示 源码: #include <opencv2/core.hpp> #include <opencv2/imgproc.hpp> #include <op ...

  5. 【计算机视觉】运动目标检测算法文献阅读笔记

    先前在博客中对常见的运动目标检测算法有写过一篇总结,详情请参考:http://blog.csdn.NET/kezunhai/article/details/8830787.本文是在校期间写的部分阅读笔 ...

  6. 模拟退火算法(Simulated Annealing)

    模拟退火算法 说说什么是算法?有人理解是输入数据经过一些步骤的处理,最后输出.在我理解来看就是一种优化问题或者说是数值分析,无论机器学习中的算法还是深度学习的算法,寻找最优模型都是解最小损失的函数.最 ...

  7. PSO算法文献阅读笔记

    粒子群算法读书笔记精读 2020<电子信息学报>基于非线性降维的自然计算方法 孙小晴(2020-04-28) 1针对问题 高维大规模优化问题,陷入局部最优与收敛速度和时间复杂度的矛盾. 2 ...

  8. 文献阅读笔记:基于深度学习的桥梁裂缝检测算法研究

    论文 | 基于深度学习的桥梁裂缝检测算法研究 作者 | 李良福.马卫飞.李 丽.陆 铖 期刊 | 自动化学报 时间 | 2019年9月 论文目的: 传统的图像处理算法不能很好地对桥梁裂缝进行检测 , ...

  9. 文献阅读笔记【5】:基于图像处理的膨胀圆裂缝检测算法

    论文 | 基于图像处理的膨胀圆裂缝检测算法 作者 | 吴玉龙,岳大森,丁 勇,卢康昕,赵广辉 期刊 | 材料与测试-无损检测-实验研究 时间 | 2020 该文章提出了一种计算裂缝宽度的算法,其过程使 ...

最新文章

  1. 盖茨在毕业礼上给毕业生的11个人生建议
  2. stm32入门c语言下载,STM32入门C语言详解.docx
  3. Quick BI 功能“炸弹”:即席分析、模板市场、企业微信免密登录等强势功能
  4. 面向.NET开发人员的Dapr——服务调用
  5. java基础代码下载_Java基础(一)(示例代码)
  6. 信息摘要算法之三:SHA256算法分析与实现
  7. windows中运行qt5构建的程序提示 无法启动此程序,因为计算机中丢失qt5Cored.dll 解决方法
  8. Python基础十四——内置函数和匿名函数
  9. 简单介绍信用卡分销系统
  10. 机器学习模型可解释性进行到底——特征重要性(四)
  11. 拓端tecdat:已迁离北京外来人口的数据画像
  12. dynamic programming动态规划初步理解【-1】
  13. Atitit 编程语言知识点tech tree v2 attilax大总结
  14. P2P下载器-P2P种子搜索器
  15. 《C语言入门经典》读后感(一)
  16. IOS Core ML如何把输入从MLMultiArray转换为image
  17. 软件工程 | 第七章 系统维护
  18. java web中request.getParameterValues()和request.getParameter()异同
  19. 华硕服务器 bios 内存 1333 显示 800,华硕服务器bios设置
  20. P3755 [CQOI2017]老C的任务

热门文章

  1. ARIMA预测未来的人口数量变化
  2. FFmpeg进阶: 采用音频滤镜对音频进行转码
  3. 警觉室内点缀污染闻气味判别陷误区
  4. Android安装Xposd框架(从刷机开始)
  5. 湖北专升本-湖师计科
  6. 乱斗二次元服务器维护,乱斗二次元独家礼包
  7. 两种模式的数据服务解决方案
  8. Netty版本升级血泪史之线程篇
  9. 贝索斯登顶世界首富告诉我们什么?
  10. SuperVideo - H5视频播放插件