启发式优化算法综述.docx
- 文档编号:7982393
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:9
- 大小:208.61KB
启发式优化算法综述.docx
《启发式优化算法综述.docx》由会员分享,可在线阅读,更多相关《启发式优化算法综述.docx(9页珍藏版)》请在冰豆网上搜索。
启发式优化算法综述
启发式优化算法综述
一、启发式算法简介
1、定义
由于传统的优化算法如最速下降法,线性规划,动态规划,分支定界法,单纯形法,共轭梯度法,拟牛顿法等在求解复杂的大规模优化问题中无法快速有效地寻找到一个合理可靠的解,使得学者们期望探索一种算法:
它不依赖问题的数学性能,如连续可微,非凸等特性;对初始值要求不严格、不敏感,并能够高效处理髙维数多模态的复杂优化问题,在合理时间内寻找到全局最优值或靠近全局最优的值。
于是基于实际应用的需求,智能优化算法应运而生。
智能优化算法借助自然现象的一些特点,抽象出数学规则来求解优化问题,受大自然的启发,人们从大自然的运行规律中找到了许多解决实际问题的方法。
对于那些受大自然的运行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称之为启发式算法(HeuristicAlgorithm)。
为什么要引出启发式算法,因为NP问题,一般的经典算法是无法求解,或求解时间过长,我们无法接受。
因此,采用一种相对好的求解算法,去尽可能逼近最优解,得到一个相对优解,在很多实际情况中也是可以接受的。
启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况下,无法阐述所得解同最优解的近似程度。
启发式算法是和问题求解及搜索相关的,也就是说,启发式算法是为了提高搜索效率才提出的。
人在解决问题时所采取的一种根据经验规则进行发现的方法。
其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案,以随机或近似随机方法搜索非线性复杂空间中全局最优解的寻取。
启发式解决问题的方法是与算法相对立的。
算法是把各种可能性都一一进行尝试,最终能找到问题的答案,但它是在很大的问题空间内,花费大量的时间和精力才能求得答案。
启发式方法则是在有限的搜索空间内,大大减少尝试的数量,能迅速地达到问题的解决。
2、发展历史
启发式算法的计算量都比较大,所以启发式算法伴随着计算机技术的发展,才能取得了巨大的成就。
纵观启发式算法的历史发展史:
40年代:
由于实际需要,提出了启发式算法(快速有效)。
50年代:
逐步繁荣,其中贪婪算法和局部搜索等到人们的关注。
60年代:
反思,发现以前提出的启发式算法速度很快,但是解得质量不能保证,而且对大规模的问题仍然无能为力(收敛速度慢)。
70年代:
计算复杂性理论的提出,NP问题。
许多实际问题不可能在合理的时间范围内找到全局最优解。
发现贪婪算法和局部搜索算法速度快,但解不好的原因主要是他们只是在局部的区域内找解,等到的解没有全局最优性。
由此必须引入新的搜索机制和策略。
Holland的遗传算法出现了(GeneticAlgorithm)再次引发了人们研究启发式算法的兴趣。
80年代以后:
模拟退火算法(SimulatedAnnealingAlgorithm),人工神经网络(ArtificialNeuralNetwork),禁忌搜索(TabuSearch)相继出现。
最近比较火热的:
演化算法(EvolutionaryAlgorithm),蚁群算法(AntAlgorithms),拟人拟物算法,量子算法等。
二、启发式算法类型
1、类型简介
大部分的算法都是仿生演变而来,如下:
仿动物类的算法:
粒子群优化,蚁群算法,鱼群算法,蜂群算法等;仿植物类的算法:
向光性算法,杂草优化算法等;仿人类的算法有:
遗传基因算法,和声搜索算法,神经网络;以及其他的理论成熟并被广泛使用的算法如:
模拟退火算法、禁忌搜索等等
1、粒子群算法
粒子群优化算法的基本思想是通过群体中个体之间的协作和信息共享来寻找最优解.粒子群算法源于复杂适应系统(ComplexAdaptiveSystem,CAS)。
CAS理论于1994年正式提出,CAS中的成员称为主体。
比如研究鸟群系统,每个鸟在这个系统中就称为主体。
主体有适应性,它能够与环境及其他的主体进行交流,并且根据交流的过程“学习”或“积累经验”改变自身结构与行为。
整个系统的演变或进化包括:
新层次的产生(小鸟的出生);分化和多样性的出现(鸟群中的鸟分成许多小的群);新的主题的出现(鸟寻找食物过程中,不断发现新的食物)。
设想这样一个场景:
一群鸟在随机的搜索食物。
在这个区域里只有一块食物,所有的鸟都不知道食物在那。
但是它们知道自己当前的位置距离食物还有多远。
那么找到食物的最优策略是什么?
最简单有效的就是搜寻目前离食物最近的鸟的周围区域。
2、蚁群算法
蚁群算法(antcolonyoptimization,ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。
它由MarcoDorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。
蚂蚁在运动过程中,会留下一种称为信息素的东西,并且会随着移动的距离,播散的信息素越来越少,所以往往在家或者食物的周围,信息素的浓度是最强的,而蚂蚁自身会根据信息素去选择方向,当然信息素越浓,被选择的概率也就越大,并且信息素本身具有一定的挥发作用。
蚂蚁的运动过程可以简单归纳如下:
1当周围没有信息素指引时,蚂蚁的运动具有一定的惯性,并有一定的概率选择其他方向;
2当周围有信息素的指引时,按照信息素的浓度强度概率性的选择运动方向;
3找食物时,蚂蚁留下家相关的A信息素,找家时,蚂蚁留下食物相关的B信息素,并随着移动距离的增加,洒播的信息素越来越少;
4随着时间推移,信息素会自行挥发;
由上面4点原则构成蚁群算法的核心规则。
3、遗传基因算法
遗传算法(GeneticAlgorithm)又叫基因进化算法,或进化算法。
生物只有经过许多世代的不断进化(evolution,演化),才能更好地完成生存与繁衍的任务。
遗传算法也遵循同样的方式,需要随着时间的推移不断成长、演化,最后才能收敛,得到针对某类特定问题的一个或多个解。
遗传算法是一种基于自然选择和群体遗传机理的捜索算法,它模拟了自然选择和自然遗传过程中的繁殖、杂交和突变现象。
标准的遗传算法包括四个组成部分:
1)编码(产生初始种群)。
在利用遗传算法求解问题时,首先要确定问题的目标函数和解变量,然后对解变量进行编码,遗传算法的所有操作都是基于这种实际变量的编码。
编码是遗传算法的一个重要环节。
它不仅决定了染色体的组织方式,还影响到交叉、变异算子的执行方式。
不同的编码策略对遗传算法的运行效率有较大的影响。
问题的编码一般应满足完备性、健全性和非冗长性H个原则,完备性是指问题空间中的所有点都能成为GA编码空间中点的表现型;健全性是指GA编码空间中染色体必须对应问题空间中的某一潜在解;非冗长性是指染色体和潜在解必须一一对应PS1。
对于一个特定的问题,如何设计出一种高效的编码方式是遗传算法所面临的难题之一,遗憾的是,研究者们至今也没能找到一种通用的编码策略。
目前,工程优化中多采用两种常用的编码方式,即二进制编码Psi和实数编码PD1。
二进制编码的染色体是由一个二值集合{0,1}所组成的二进制符号串。
作为GA算法的标准编码方式,该编码方式尤其适用于能用二值向量描述的优化问题,如化学反应P11、多用途过程规划P3和最优水流参数评估Psi等;实数编码是指个体的每个基因值用某一范围的一个浮点数表示,个体的编码长度等于其决策变量(设计变量)的个数。
这种编码方式适用于精度要求较高的遗传算法中,便于较大空间的遗传搜索:
改善了遗传算法的计算复杂性,提高了运算效率;便于遗传算法和经典优化算法的混合使用:
目前基于实数编码的遗传算法也被广泛用于优化问题中,如多目标优化IW,凸轮轮廓设汁等。
2)选择操作。
选择是指从群体中选择优良的个体并淘汰劣质个体的操作。
它建立在适应度评估的基础上,遼应度楚大的个体,被选择的可能性就越大,它的吁孙"在下一代的个数就越多。
选择出来的个体被放入配对库中。
目前常用的选择方法有轮盘赌方法、最佳个体保留法、期望值法和排序选择法等。
3)交叉操作。
交叉是指两个父代个体的部分结构加W替换重组而生成新个体的操作,目的是为了能够在下一代产生新的个体。
通过交叉操作,遗传算法的搜索能力得W提高。
交叉是遗传算法获取新优良个体最重要的手段,按照一定的交叉概率在配对库中随机地选取两个个体进行交叉,交叉的位置也是随机确定的。
4)变异。
变异就是很小的变异概率随机地改变群体中个体的某些基因的值。
变异操作中位置选取的基本过程如下:
产生一个在0~1之间的随机数,如果小于Pm则进行变异操作。
4、模拟退火
模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。
模拟退火算法新解的产生和接受可分为如下四个步骤:
第一步是由一个产生函数从当前解产生一个位于解空间的新解;为便于后续的计算和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的邻域结构,因而对冷却进度表的选取有一定的影响。
第二步是计算与新解所对应的目标函数差。
因为目标函数差仅由变换部分产生,所以目标函数差的计算最好按增量计算。
事实表明,对大多数应用而言,这是计算目标函数差的最快方法。
第三步是判断新解是否被接受,判断的依据是一个接受准则,最常用的接受准则是Metropolis准则:
若ΔT<0则接受S′作为新的当前解S,否则以概率exp(-ΔT/T)接受S′作为新的当前解S。
第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。
此时,当前解实现了一次迭代。
可在此基础上开始下一轮试验。
而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试验。
模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关;模拟退火算法具有渐近收敛性,已在理论上被证明是一种以概率l收敛于全局最优解的全局优化算法;模拟退火算法具有并行性。
2、设计良好的启发式算法
上述的启发式算法都有一个共同的特点:
从随机的可行初始解出发,才用迭代改进的策略,去逼近问题的最优解。
他们的基本要素:
1)随机初始可行解;
2)给定一个评价函数(常常与目标函数值有关);
3)邻域,产生新的可行解;
4)选择和接受解得准则;
5)终止准则。
但在启发式算法中,局部最优值的陷入是无法避免。
启发式,本质上是一种贪心策略,这也在客观上决定了不符合贪心规则的更好(或者最优)解会错过。
那么如何避免陷入局部最优呢?
随机。
具体实现手段上,可以根据所采用的启发式框架来灵活地加入随机性。
比如遗传里面,可以在交叉变异时,可以在控制人口策略中,也可以在选择父本母本样本时;禁忌里面,可以在禁忌表的长度上体现,也可以在解禁策略中使用,等等。
这些都要结合具体问题特定的算例集,需要反复尝试摸索才行。
参数的敏感性是一个问题,建议不要超过3个参数,参数越不敏感越好。
不同算例集用不同种子运行多次(100次左右才有统计意义),统计平均性能即可。
需注意全局的随机重启通常来说不是一个好办法,因为等于主动放弃之前搜索结果,万不得已不要用,或者就是不用。
三个原则应该把握:
越随机越好;越不随机越好;二者平衡最好。
越随机越好没有随机性,一定会陷入局部最优。
为了获得更大的找到最优解的期望,算法中一定要有足够的随机性。
具体体现为鲁棒性较好,搜索时多样性较好。
算法的每一步选择都可以考虑加入随机性,但要控制好概率。
比如,某个贪心策略下,是以概率1做某一动作,可以考虑将其改为以概率0.999做之前的操作,以剩余概率做其他操作。
具体参数设置需调试。
越不随机越好随机性往往是对问题内在规律的一种妥协。
即没有找到其内在规律,又不知道如何是好,为了获得更好的多样性,逼不得已加入随机。
因此,对给定问题的深入研究才是根本:
分辨出哪些时候,某个动作就是客观上能严格保证最优的——这点至关重要,直接决定了算法性能。
最好的算法一定是和问题结构紧密相连的,范范地套用某个启发式的框架不会有出色的性能。
当然,如果不是追求性能至上,而是考虑到开发效率实现成本这些额外因素,则另当别论。
二者平衡最好通常情况下,做好第一点,可以略微改善算法性能;做好第二点,有希望给算法带来质的提高。
而二者调和后的平衡则会带来质的飞跃。
贪心是“自强不息”的精进,不放过任何改进算法的机会;多样性的随机是“厚德载物”的一分包容,给那些目前看似不那么好的解一些机会。
调和好二者,不偏颇任何一方才能使算法有出色的性能。
要把握这种平衡,非一朝一夕之功,只能在反复试验反思中去细细品味。
三、本领域应用:
基于深度神经网络的自然语言情感分析
1.深度神经网络
神经网络领域最早是由心理学家和神经学家开创的,旨在开发和测试神经的计算机模拟。
粗略地说,神经网络是一组连接的输入/输出单元,其中每个连接都与一个权重相关联。
在学习阶段,通过调整这些权重,能够预测输入元组的正确类标号。
由于单元之间的连接,神经网络学习又称连接者学习(ConnectionistLearning)。
神经网络需要很长的训练时间,对于有足够长训练时间的应用更为合适。
需要大量的参数,通常主要靠经验确定,如网络拓扑结构。
神经网络常常因为可解释性差而受到批评。
例如,人们很难解释网络中学习的权重和“隐含单元”的符号意义。
然而,神经网络的优点包括其对噪声数据的高承受能力,以及对未经训练的数据模式分类能力。
在缺乏属性和类之间的联系的知识时可以使用它们。
不像大部分决策树算法,它们非常适合连续值的输入和输出。
神经网络算法是固有并行的,可以使用并行技术来加快计算过程。
有许多不同类型的神经网络和神经网络算法,最流行的神经网络算法是后向传播,它在20世纪80年代就获得了声望。
图1神经网络结构图
上图描述的是一个目前研究最为成熟Shallow结构的神经网络(只含有单层隐藏层神经元的结构)。
第一层为输入层(inputlayer),第二层称为隐藏层(hiddenlayer),最后一层为输出层(outputlayer)。
神经元之间都是由低层出发,终止于高层神经元的一条有向边进行连接,每条边都有自己的权重。
每个神经元都是一个计算单元,如在Feed-forwardneuralnetwork中,除输入层神经元外,每个神经元为一个计算单元,可以通过一个计算函数f(x)来表示,函数的具体形式可以自己定义,现在用的较多的是感知器计算神经元,如果你对感知器有所了解的话,理解起来会容易很多。
可以计算此时神经元所具有的能量值,当该值超过一定阀值的时候神经元的状态就会发生改变,神经元只有两种状态,激活或未激活。
在实际的人工神经网络中,一般是用一种概率的方式去表示神经元是否处于激活状态,可以用h(f)来表示,f代表神经元的能量值,h(f)代表该能量值使得神经元的状态发生改变的概率有多大,能量值越大,处于激活状态的概率就越高。
到这部分你已经接触到了关于神经网络的几个基本术语,下面用更加规范的符号来表示,神经元的激活值(activations)f(x),表示计算神经元的能量值,神经元的激活状态h(f),h表示激活函数。
激活函数有好几种形式,这里列举两种如下:
深度神经网络有三个主要环节:
第一,用无监督方式训练系统,即用大量未标注样本逐层提炼,无导向自动形成特征。
这一过程类似于人通过眼、耳等感官系统接收图像、声音信息后,自动在脑中形成不同类别信息印象。
第二,调准。
这一过程用一些己标注样本对特征分类,并根据分类结果进一步调整系统参数,优化系统在区分不同类别信息上的性能。
第三,测试,用系统未见识过的样本数据检验系统学习效果,例如样本正确分类率、质量评估与主观评估关联度等。
2.自然语言处理之情感分析
在自然语言处理领域中,其中一个重要的子研究模块为情感分析。
情感分析,也称为观点挖掘,指的是分析说话者在传达信息时所隐含的情况状态、态度、意见进行判断或者评估。
目前,情感分析的主要研究方法还是一些基于机器学习的传统算法,例如,SVM、信息熵、CRF等。
这些方法归纳起来有3类:
有监督学习、无监督学习和半监督学习。
而当前大多数基于有监督学习的研究取得了不错的成绩。
但有监督学习依赖于大量人工标注的数据,而且由于人的主观理解不同,样本标注的标注很难确立,也很难保证标注样本的质量。
相反的,无监督学习不需要人工标注数据训练模型,降低标注的代价。
3.深度神经网络下的微博文本情感分析
微博是手机短信、社交网站、博客等的集成者,它正在从各个方面渗透并影响人们的生活,包括大量的信息传播、飞快的信息发现,以及与世界的连接等。
因而吸引了很多学者对微博的研究。
而分析和监测微博短文本内容中所包含的情感信息,可以了解大众对热点事件的关注程度和情感变化,从而能够辅助评估和掌握热点事件的发展状况.然而,由于微博的短文本上下文信息数据是有限的,因而对于研究其情感具有挑战性。
为了能更有效地解决这一任务,需要更加严谨的方式从微博帖子的短句子消息中抽取出信息。
对于一篇博客,整篇的情感倾向性一般较明确,其中正向情感表示褒义类:
赞扬、喜悦、歌颂等;负向情感表示贬义类:
贬斥、悲哀、嫉妒等。
而篇章的每个句子的情感倾向性可能不同,因此本文提出的研究方案是使用深度学习中的卷积神经网络(ConvolutionalNeuralNetworks,CNN)避免显式特征提取,而隐式地从训练数据中进行学习。
4.CNN模型情感分类过程
现采用卷积神经网络CNN进行情感分析的分类器训练。
卷积神经网络是一个多层的神经网络,每层都是一个变换(映射),常用卷积convention变换和pooling池化变换,每种变换都是对输入数据的一种处理,是输入特征的另一种特征表达;CNN网络结构主要由三部分组成:
输人层、隐层和输出层。
隐层主要分为2类:
(1)卷积层,用于提取特征;
(2)下采样层,用于特征优化选取。
图2所示为卷积神经网络用于对训练样本进行卷积的工作流程。
图2卷积网络工作流程
给定一个微博短文本句子,ChrSeCNN为每个情感标签计算分值τ∈T,为了计算每一个短文本句子的分值,该网络将每个汉字在句子中的序列作为输入,并通过一个序列的层,抽取出特征。
该网络抽取的特征是从汉字级到句子级进行抽取。
文中提出的神经网络主要包含两个卷积层,这使得它能够处理任意长度的汉字和短文本句子。
1、初始表示层
网络的第一层将词组转换成文字实值特征向量,用以捕捉这个词组的形态、句法和语义信息。
使用了一个固定大小的词组Cva,而且认为词组是一个固定大小的汉字构成的词汇Cwd。
给定一个句子由n个汉字v{}1,v2,…,vn组成,每个汉字vn被转换成一个向量un=[]rva;rwva。
它由两个子向量组成,分别是vn的词组级嵌入向量,rva∈Rdva和汉字级级嵌入向量rwva∈Rcl0u。
词组级嵌入向量为了捕捉句法和语义信息,汉字级嵌入向量为了捕捉形态和形状信息。
2、网络训练
网络是通过在训练集合D上最小化否定相似来进行训练的。
给定一个句子y,对于每个情感标签τ∈T,设置网络参数θ,计算出一个分值sθ()yτ。
为了将这些分值转换为给定句子标签的条件概率分布并且设置网络参数θ,应用式(6)对所有标签τ∈T的分值进行计算。
3、实验
实验数据准备采用COAE2013发布的标准数据和COAE2014的标注数据,其中随机选取COAE2014的标注数据中的5000句作为训练数据,其余4000句作为测试数据。
将训练语料,标注出正向情感倾向微博1210句,负向情感倾向微博1320句和中性情感倾向微博2470句。
另外从官方COAE2013标准标注结果中处理得到了带情感倾向的微博语料约1500句,共计训练语料为微博6500句。
文中以平均正确率、平均召回率和宏平均值作为评价指标。
为了验证文中方法的有效性,设计了三组实验,分别与层次结构的多策略方法、词典与机器学习的方法和文中提出的方法对微博短文本进行情感分析并对比。
实验结果标明加入卷积的神经网络结果模型中,情感极性分析判断更加准确,该模型对于微博短文本的情感分析明显有了较大程度的提升。
表1实验结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 启发式 优化 算法 综述