精华内容
下载资源
问答
  • 精品文档 LMS 算法 function [yn,W,en]=LMS(xn,dn,M,mu,itr) % LMS(Least Mean Squre) 算法 % 输入参数 : % xn 输入的信号序列 (列向量 ) % dn 所期望的响应序列 (列向量 ) % M 滤波器的阶数 (标量 ) % mu 收敛因子 ...
  • 利用非凸变分不等式和不动点问题的等价关系, 给出了一个新的求解非凸变分不等式的四步投影算法. 该算法在现有的三步迭代算法基础上, ... 最后在适当条件下证明了该算法收敛性, 所得结论推广了该领域内的一些最新结果.
  • LMS算法最新完整代码

    2019-01-14 21:57:42
    最小均方算法(Least Mean Square, LMS)是一种简单、应用为广泛的自适应滤波...这种算法也被称为 Widrow-Hoff LMS 算法,在自适应滤波器中得到广泛应用, 其具有原理简单、参数少、收敛速度较快而且易于实现等优点。
  • 以下内容摘自正在全面热销的最新网络设备图书“豪华四件套”之一《Cisco路由器配置与管理完全手册》(第二版)(其余三本分别是:《Cisco交换机配置与管理完全手册》(第二版)、《H3C交换机配置与管理完全手册》...

    以下内容摘自正在全面热销的最新网络设备图书“豪华四件套”之一《Cisco路由器配置与管理完全手册》(第二版(其余三本分别是:《Cisco交换机配置与管理完全手册》(第二版《H3C交换机配置与管理完全手册》(第二版《H3C路由器配置与管理完全手册》(第二版)。目前在京东网、当当网、卓越网、互动出版网等书店全面热销中,购买该套装将直减30元http://book.dangdang.com/20130730_aifehttp://item.jd.com/11299332.html

    EIGRP是一个平衡混合型路由协议,既有像RIP那样的距离矢量路由协议的特点:有路由跳数的限制,路由信息依靠邻居路由器通告,遵守路由水平分割和反向毒化水平分割规则,路由自动汇总;又有像OSPF那样的链路状态路由协议的特点:当路由信息发生变化时,采用增量更新的方式,保留对网络拓扑信息、同时采用距离矢量和链路状态两种算法来计算路由开销。同时,该协议又具有自己独特的特点:支持非对等开销路由上的负载均衡,采用DUAL算法在确保无路由环路的前提下,收敛迅速。因而适用于中大型网络。但前面提到的IGRP是是距离矢量路由协议。

    EIGRP采用的是DUAL(Diffusing Update Algorithm,扩散更新算法)。这个算法可以确保在极短时间内无环路计算出路由结果,并且允许所有与拓扑改变相关的设备在同一时间进行同步更新。不受拓扑结构改变的路由器不会进行重新计算。这种收敛效率要远比其他已存的路由协议要高。


    11.1.6 DUAL算法网络收敛原理解析示例二

    本节再以一个稍微复杂的EIGRP网络收敛为例介绍UDAL的工作原理。本示例拓扑结构如图11-8的左图所示,其中Router C、Router D和Router E是当前处于收敛状态时的拓扑表。


    图11-8 DUAL网络收敛原理解析示例二拓扑结构及拓扑表

    从图中的拓扑表中可以看出,Router C、Router D和Router E这三台路由器至少有一个通告度量(AD)小于它们自己的有限距离(FD)的有效路由到达Router A所连接的网络(a)。其中标注为“Successor”的为当前Successor,标注为“fs”为可行后续。从中可以看出,这三台路由器中仅Router C有一个备份用的FS,即Router D,其它两个路由器均只有一个正在使用的Successor,如图11-9所示。


    图11-9 收敛状态时的三台路由器上到达目的网络的Successor和FS

    此时,Router C标识通过Router B的路由作为当前使用的路由,因为这条路由的AD=1,小于Router C上到达网络(a)的FD值3。Router C同时也标识通过Router D的路由作为备份使用的FS路由,因为这条路由的AD=2,小于Router C上到达网络(a)的FD值3。但是通过Router E的路由不能作为FS路由,因为这条路由的AD=3,与Router C上到达网络(a)的FD值3相等,不符合成为FS的条件。

    Router D标识通过Router B的路由作为当前使用的路由,因为这条路由的AD=1,小于Router D上到达网络(a)的FD值2。但在Router D中,通过Router C的路由也不能作为FS路由,因为这条路由的AD=3,大于Router D上到达网络(a)的FD值2,不符合成为FS的条件。

    Router E标识通过Router D的路由作为当前使用的路由,因为这条路由的AD=2,小于Router E上到达网络(a)的FD值3。但在Router E中,通过Router C的路由也不能作为FS路由,因为这条路由的AD=3,等于Router E上到达网络(a)的FD值3,不符合成为FS的条件。

    现假设Router D与Router B之间的链路断了。从前面的Router D拓扑表可以知道,它原来只有Router B这一个Successor,没有其它FS,所以Router D需要使用DUAL计算新的路由到达网络(a)。同时从拓扑表中删除通过Router B到达网络(a)的拓扑表项,如图11-10所示。


    图11-10 断开Router D与Router B之间的链后,Router D删除通过Router B的拓扑表项

    此时Router D因为没有可到达网络(a)的可行路径了,所以成为活跃状态(Active),开始向它的其它两个邻居路由器Router C和Router E发送查询包,声明自己没有到达网络(a)的FS了,问它们是否有可替代的路径。当Router E收到这个来自同时为自己的Successor的Router D的查询包后,从自己的拓扑表中删除通过Router D到达网络(a)所对应的拓扑表项。如图11-11所示。

    图11-11 Router D成为活跃状态,Router E删除通过Router D的拓扑表项

    因为此时Router E已再也没有其它路径到达网络(a)了,所以Router E也转换为活跃状态。而当Router C收来这个来自为自己FS的Router D的查询包后,从自己的拓扑表中删除通过Router D到达网络(a)所对应的拓扑表项。但是它不会转换为活跃状态,因为它此时仍有SuccessorRouter B可以到达网络(a)。然后,Router C对Router D的查询进行响应,告诉Router D它还有一条有效的路径到达网络(a)。但此时Router E也为活跃状态了,所以它在收到来自Router D的查询包后仅转发到Router C,询问是否有替代路径到达网络(a)。如图11-12所示。

    图11-12 Router E成为活跃状态,Router C删除通过Router D的拓扑表项

    Router D在收到Router C发来的应答包后,在自己的拓扑表中添加Router C的拓扑表项,同时标识Router C为Successor。与此同时,Router C会对Router E发来的查询包进行响应,同样告诉它有一条路径可以达到网络(a)。这样Router E也会把Router C作为Successor,并向Router D应答,此时的从原来的3改变成了4。如图11-13所示。

    图11-13 Router D添加通过Router C和Router E的拓扑表项,Router E添加通过Router C的拓扑表项

    当Router D收到Router E发来的应答后(一直要等到收到所有邻居路由器发来的应答),更新拓扑表。此时它有两条可行的路径到达网络(a),一条是以Router C为当前Successor的路径,另一条是以Router E为FS的备用路径。此时的从原来的2改变成了5。如图11-14所示。

    图11-14 网络重新收敛后的拓扑结构和拓扑表

    展开全文
  • 期望最大化 (EM) 算法;期望最大化 (EM) 算法;期望最大化 (EM) 算法;期望最大化 (EM) 算法;i;i;期望最大化 (EM) 算法;期望最大化 (EM) 算法;...EM 算法收敛性; H ;EM 算法收敛性;K;F(P) = EP [logP(Z
  • 2017年深度学习优化算法最新进展:如何改进SGD和Adam方法 转载的文章,把个人觉得比较好的摘录了一下 AMSGrad 这个前期比sgd快,不能收敛到最优。 sgdr 余弦退火的方案比较好 最近的一些研究(Dozat and Manning...

    2017年深度学习优化算法最新进展:如何改进SGD和Adam方法

    转载的文章,把个人觉得比较好的摘录了一下

    AMSGrad 这个前期比sgd快,不能收敛到最优。

    sgdr 余弦退火的方案比较好

    最近的一些研究(Dozat and Manning, 2017[13]、Laine and Aila, 2017[16])通过实验发现,调低β2值,影响了Adam方法中过去平方梯度的指数移动平均值的贡献度。一般来说,β2的默认值为0.999,设置为0.99或0.9后,在不同任务中表现更好,这表明可能存在指数移动平均值的问题。

    关于这个,在yolov3的环境里,我试了一下,没有发现更好

    Zhang在2017年的一个研究表明[2],在调整学习率退火方案和动量参数后,该SGD方法的性能与Adam有得一拼,而且收敛速度更快。另一方面,我们可能认为Adam方法中学习率的自适应性可能模仿了学习速率退火,但是一个明确的退火方案仍然是有帮助的。因为,如果我们把SGD方法中的学习率退火添加到Adam中,它能在机器翻译任务中表现得比SGD方法更好,且更快地收敛[4]。

    事实上,学习率退火方案似乎是一种新的特征工程,因为我们发现,改进的学习率退火方案能改善模型的最终收敛性能。Vaswani等人在2017年给出了一个有趣的例子[14]。在模型调参时,通常需要进行大规模的超参数优化,这个文章的创新点在于也把学习率退火方案当作是要优化的具体焦点。作者使用了Adam方法,其中β1= 0.9,和非默认参数β2= 0.98、ε=10-9,这可以说对学习率η来说是最精细的退火方案之一:

     

    深度学习的基本目标,就是寻找一个泛化能力强的最小值,模型的快速性和可靠性也是一个加分点。

    随机梯度下降(SGD)方法是1951年由Robbins和Monro提出的[1],至今已有60年历史。在当前的深度学习研究中,这种方法至关重要,一般被用在反向传播过程中。

    近年来,研究人员提出一些新的优化算法,使用了不同方程来更新模型参数。2015年Kingma和Ba提出的Adam方法[18],可看作是目前最常用的优化算法之一。这表明,从机器学习工作者的角度来说,深度学习优化中的最佳方法在很大程度上是保持不变的。

    然而,今年还有很多新的方法提出,这可能会影响接下来在模型优化中所使用的方法。在这篇文章中,Ruder从他的角度,介绍了深度学习优化方法中一些振奋人心的工作和可能的发展方向。阅读这篇文章时,要熟悉SGD方法和自适应学习率方法,如Adam方法。

    改进Adam方法

    尽管,像Adam这样的自适应学习率方法使用十分广泛,但是,在物体识别[17]和机器翻译 [3]等研究任务中,很多前沿的研究成果仍然在使用传统的带动量SGD方法。

    Wilson等人在最新研究中[15]给出一些理由来说明,与带动量SGD方法相比,自适应学习率方法会收敛于不同的极小值,且结果通常不大理想。从经验上得出,在物体识别、字符级语言建模和句法分析等任务中,自适应学习率方法得到的极小值通常比带动量SGD方法得到的极小值要差。这似乎与直觉相反,因为Adam方法有很好的收敛机制,且其自适应学习率会比传统的SGD方法表现得更好。但是,Adam和其他自适应学习率方法也有一些局限性。

    解耦权值衰减

    在一些数据集上,Adam方法的泛化能力比带动量SGD方法要差的一个可能原因是权值衰减(weight decay)。权值衰减常被用于图像分类问题中,即在每次参数更新后,把衰减率Wt与权重θt相乘,其中衰减率Wt略小于1:

    这能防止权重变得过大。因此,权值衰减也可以理解为一种L2正则化项,这取决于施加在Loss上的权值衰减率Wt:

    权值衰减方法一般可作为上述的正则化项,或是直接修改梯度,通常在很多神经网络库中有调用函数。在动量和Adam算法的更新方程中,通过与其他衰减项相乘来修改梯度值时,所以权值衰减与L2正则化不一样。因此,Loshchilov和Hutter在2017年提出“解耦权值衰减”[19],与原始定义相同,在每次参数更新后通过这种方法来更新梯度。

    带动量和权值衰减的SGD方法(SGDW)按照以下方式更新梯度:

    其中,η为学习率,第二个方程的第三项为解耦权值衰减。同样地,我们得到带权值衰减的Adam方法(AdamW):

    其中,mt和m̂t是第一时刻的偏差和偏差校正估计值,vt和v̂t是第二时刻的偏差和偏差校正估计值,β1和β2是相应的衰减率,且加入相同的权值衰减项。作者表示,这种方法大幅提高了Adam方法的泛化能力,且在图像分类数据集上与带动量SGD方法效果相当。

    另外,它将学习率的选择过程与权值衰减的选择过程分离开,这能更好地实现超参数优化,因为超参数间不再互相依赖。它还把优化器的实现与权值衰减的实现过程分开,这有助于构建更简洁和可重用的代码,参考fast.ai AdamW/SGDW implementation(https://github.com/fastai/fastai/pull/46/files)。

    固定指数移动平均值

    最近的一些研究(Dozat and Manning, 2017[13]、Laine and Aila, 2017[16])通过实验发现,调低β2值,影响了Adam方法中过去平方梯度的指数移动平均值的贡献度。一般来说,β2的默认值为0.999,设置为0.99或0.9后,在不同任务中表现更好,这表明可能存在指数移动平均值的问题。

    ICLR 2018正在审核的一篇文章On the Convergence of Adam and Beyond(https://openreview.net/forum?id=ryQu7f-RZ)研究了这个问题,指出过去平方梯度的指数移动平均值是自适应学习率方法泛化能力不佳的另一个原因。自适应学习速率方法的核心,是通过过去平方梯度的指数移动平均值来更新参数,例如Adadelta,RMSprop和Adam。研究指数平均的贡献度,这个思路的动机性很好,能防止学习率随着训练而变得极小,这也是Adagrad方法的关键缺陷。但是,梯度的短期记忆性在其他情况下变成了阻碍。

    在Adam方法收敛到一个次优解时,我们观察到一些小批次样本贡献了大幅且有效的信息梯度,但是这种情况很少发生,指数平均后减小了它们的影响,导致模型收敛性差。作者给出了一个简单的凸优化问题,可以看到Adam方法中也存在这种现象。

    作者提出了一种新算法AMSGrad来解决这个问题,它使用过去平方梯度的最大值来更新参数,而不是先前的指数平均。AMSGrad方法的更新过程如下,这里不带有偏差校正估计:

    实验表明,在小数据集和CIFAR-10数据集上,这种方法的性能比Adam方法更好。

    调整学习率

    在许多情况下,我们不需要改进和调整模型结构,而是该调整超参数。在语言建模中的一些最新研究表明,与更复杂的模型相比,调整LSTM参数[20]和正则化参数[21]就可以得到最先进的性能。

    在深度学习优化中,一个重要的超参数就是学习率η。实际上,在SGD方法中,需要构建一个合适的学习率退火方案,来得到一个良好的收敛最小值。人们会认为,像Adam这样的自适应学习率方法,对不同的学习率更具有鲁棒性,因为这些方法能自我更新学习率。但是,即使对于这些方法,好的学习率和最佳的学习率也可能有很大的差别(Andrej Karpathy‏Verified account说最佳学习率是3e-4 https://twitter.com/karpathy/status/801621764144971776)。

    Zhang在2017年的一个研究表明[2],在调整学习率退火方案和动量参数后,该SGD方法的性能与Adam有得一拼,而且收敛速度更快。另一方面,我们可能认为Adam方法中学习率的自适应性可能模仿了学习速率退火,但是一个明确的退火方案仍然是有帮助的。因为,如果我们把SGD方法中的学习率退火添加到Adam中,它能在机器翻译任务中表现得比SGD方法更好,且更快地收敛[4]。

    事实上,学习率退火方案似乎是一种新的特征工程,因为我们发现,改进的学习率退火方案能改善模型的最终收敛性能。Vaswani等人在2017年给出了一个有趣的例子[14]。在模型调参时,通常需要进行大规模的超参数优化,这个文章的创新点在于也把学习率退火方案当作是要优化的具体焦点。作者使用了Adam方法,其中β1= 0.9,和非默认参数β2= 0.98、ε=10-9,这可以说对学习率η来说是最精细的退火方案之一:

    其中dmodel是模型参数的数目,且warmup_steps为4000。

    Smith等人在2017年的另一篇论文[5]揭示了学习率和批次大小间的一个有趣关联。这两个超参数通常被认为是相互独立的,但是他们发现,减小学习率相当于增加批次大小,而后者能提高并行训练速度。反过来想,我们可以减少模型更新次数,并通过提高学习率和缩放批次大小来提高训练速度。这个发现影响到大规模深度学习的训练过程,可在不需要超参数调整的前提下,重新调整现有的训练计划。

    热重启(warm restarts) 带重启的SGD方法

    另一个最近提出的有效方法是SGDR[6],Loshchilov和Hutter用热重启方式来替代学习率退火制度,来改进SGD方法。在每次重启时,学习率初始化为某个值,然后逐渐减少。重要的是,这种重启可随时进行,因为优化不是从头开始,而是从模型在上一个步骤收敛的参数开始的。关键在于,通过一个积极的余弦退火方案来调整学习率,这会很快地降低学习率,如下所示:

    其中ηimin和ηimax是第i次训练时学习率的变化区间,Tcur表示从上次重启后已完成的迭代次数,且Ti规定了下一次重启的迭代次数。与常规的学习率退火方案相比,热重启方法(Ti=50,Ti=100和Ti=200)的性能如图1所示。

    图1:加入热重启的学习率方法性能变化

    重启后,用一个高的初始学习率能从根本上把参数从先前收敛的最小值弹射到损失函数曲面的不同区域。这种积极的退火机制使模型能快速收敛到一个新且更好的解决方案。作者通过观察还发现,使用热重启的随机梯度下降方法的所需时间比学习率退火机制少了2〜4倍,并能达到相当或更好的性能。

    使用热重启的学习率退火也叫做循环变化学习率,最初由Smith[22]提出。fast.ai学生给出了另外两篇文章,讨论了热重启和循环变化学习率,地址如下:

    https://medium.com/@bushaev/improving-the-way-we-work-with-learning-rate-5e99554f163b

    http://teleported.in/posts/cyclic-learning-rate/

    快照集成(Snapshot ensembles)

    快照集成是一种最近由Huang提出的巧妙方法[7],即在训练单个模型时使用热重启来组装一个集合,且基本上无额外的代价。这种方法可以训练一个单模型,按照之前看到的余弦退火制度收敛,然后保存模型参数,并进行热重启,重复这些步骤M次。最后,所有保存的模型快照形成一个集合。在图2中可以看到,常用的SGD优化在误差曲面上的性能与快照集成过程的性能差异。

    图2:SGD与快照集成

    一般来说,集成是否成功取决于组合中每个模型的多样性。因此,快照集成依赖于余弦退火方案的能力,使得模型在每次重启后能够收敛到不同的局部最优值。作者证明,这在实践中是成立的,在CIFAR-10、CIFAR-100和SVHN上取得了很好的效果。

    带重启的Adam方法

    热重启最初在Adam方法中并不适用,因为它的权值衰减不正常。在固定权值衰减后,Loshchilov和Hutter在2017年同样地把热重启扩展到Adam中。其中,ηimin= 0,ηimax= 1,得到:

    建议开始时选取较小的Ti(迭代次数在1-10之间),并在每次重启时将其乘以一个系数Tmult,如2。

    学习优化

    去年最有趣的论文之一是Andrychowicz等人撰写的Learning to learn by gradient descent by gradient descent,也是reddit网友选出的“2016年最佳论文”[23]。他们训练了LSTM优化器,用于在训练主要模型时更新参数。不幸的是,学习单独的LSTM优化器,或是使用预先训练好的LSTM优化器进行优化,都会大大增加模型训练的复杂度。

    今年还有一篇很有影响力的“learning to learn”论文,使用LSTM来生成特定领域语言的模型结构[24]。虽然搜索过程需要大量的资源,但是所发现的结构可以用来取代已有的结构。这个搜索过程已经被证明是有效的,并且在语言建模方面取得最先进的效果,并且在CIFAR-10上取得了很有竞争力的结果。

    同样的搜索策略也可以应用于任何已经被手工定义其关键过程的其他领域,其中一个领域就是深度学习的优化算法。正如以前所看到的,优化算法十分符合这个规则:它们都使用了过去梯度的指数移动平均值(如动量)和过去平方梯度的指数移动平均值(如Adadelta,RMSprop,Adam)的组合[25]。

    Bello等人[8]定义了一个特定领域的语言,由对优化有用的基元组成,如这些指数移动平均值。然后,他们从所有可能的更新规则空间中采样更新规则,使用此更新规则来训练模型,并基于测试集上训练模型的性能来更新RNN控制器。完整流程如图3所示。

    图3:神经优化搜索

    特别是,他们还定义了两个更新方程,即PowerSign和AddSign。PowerSign的更新公式如下:

    其中,α是一个超参数,通常设为e或者2;f(t)设为1,或是衰减函数(随着时间步t重新执行线性、循环或衰减),其中mt是过去梯度的移动平均值。通常,设置α= e,且无衰减。注意到,更新通过αf(t)或1 /αf(t)来缩放梯度,取决于梯度方向和移动平均值是否一致。这表明,这种类似动量的过去梯度和当前梯度之间的相似性是优化深度学习模型的关键信息。

    AddSign定义如下:

    其中,α通常设置为1或2,与上面类似,这次的尺度更新为α+f(t)或α−f(t),取决于梯度方向的一致性。作者指出,PowerSign和AddSign在CIFAR-10上的表现优于Adam、RMSprop和带动量SGD方法,并能很好地转换到其他任务中,如ImageNet分类和机器翻译。

    理解泛化

    优化问题与泛化能力是密切相关的,因为模型收敛的最小值决定了模型的泛化能力。因此,优化问题的进展与理解这种极小值泛化能力的理论进展是密切相关的,且能更深入地理解深度学习中的泛化能力。

    但是,我们对深度神经网络泛化能力的理解仍然很浅显。最近的研究表明,可能是局部极小值的数量随参数数量呈指数型增长[9]。考虑到目前深度学习结构中参数数量巨大,这样的模型能收敛且泛化能力较好,特别是考虑到它们可以完全记住随机输入[10],这似乎看起来很神奇[10]。

    Keskar等人[11]认为最小值的锐度是泛化能力不佳的原因,他们还特别指出,批次梯度下降所找到的尖锐极小值具有较高的泛化误差。这是直观的,因为我们通常会希望这个函数是平滑的,出现尖锐极小值表明相应误差曲面的高度不规则性。然而,近期研究表明,锐度可能不是一个好的指标,因为它表明局部最小值能够很好地泛化[12],而且Eric Jang的Quora答案中也讨论了这些内容,链接如下:

    https://www.quora.com/Why-is-the-paper-%E2%80%9CUnderstanding-Deep-Learning-Requires-Rethinking-Generalization%E2%80%9D-important/answer/Eric-Jang?srid=dWc3

    有一篇ICLR 2018投稿论文(https://openreview.net/forum?id=r1iuQjxCZ),通过一系列消融分析,表明一个模型在激活空间中对单个方向有依赖性,即单个单元或特征图谱的激活是其泛化能力的良好预测。他们证明,这种模式适用于不同数据集上的训练模型,以及不同程度的标签损坏。他们还发现,加入Dropout并没有助于解决这个问题,而批次归一化阻碍了单方面的依赖性。

    虽然以上这些研究表明仍然有很多我们不知道的深度学习优化知识,但要记住,收敛性保证和在凸优化中的很多现有工作和思路,在一定程度上也可应用于非凸优化问题中。NIPS 2016上大量的优化教程对该领域很多理论工作进行了很好的综述。

    结论

    我希望上面内容能很好地总结过去一年在深度优化问题中一些令人信服的发展。如果还有其他漏掉的方面,或是文章中有错误,请联系我。

    文中提到的25篇文献,可以去原文文末自取:http://ruder.io/deep-learning-optimization-2017/

    展开全文
  • 智能单粒子算法

    2015-06-02 13:55:31
    结合智能最新算法,与粒子群算法有所不同,但收敛速度快
  • 智能优化算法:萤火虫算法-附代码

    千次阅读 2020-09-09 16:34:10
    摘要:萤火虫算法(Fire-fly algorithm,FA)由剑桥大学 Yang 于 2009 年提出 , 作为最新的群智能优化算法之一 , 该算法具有更好的收敛速度和收敛精度 , 且易于工程实现等优点。 1.算法原理 在FA 中 , 萤火虫发出...

    智能优化算法:萤火虫算法-附代码


    摘要:萤火虫算法(Fire-fly algorithm,FA)由剑桥大学 Yang 于 2009 年提出 , 作为最新的群智能优化算法之一 , 该算法具有更好的收敛速度和收敛精度 , 且易于工程实现等优点。

    1.算法原理

    在FA 中 , 萤火虫发出光亮的主要目的是作为一个信号系统 , 以吸引其他的萤火虫个体 , 其假设为 : 1) 萤火虫不分性别 , 它将会被吸引到所有其他比它更亮的萤火虫那去 ; 2) 萤火虫的吸引力和亮度成正比 , 对
    于任何两只萤火虫 , 其中一只会向着比它更亮的另一只移动 , 然而 , 亮度是随着距离的增加而减少的 ;3) 如果没有找到一个比给定的萤火虫更亮 , 它会随机移动 。

    如上所述 , 萤火虫算法包含两个要素 , 即亮度和吸引度 . 亮度体现了萤火虫所处位置的优劣并决定其移动方向 , 吸引度决定了萤火虫移动的距离 , 通过亮度和吸引度的不断更新 , 从而实现目标优化 . 从数学角度对萤火虫算法的主要参数进行如下描述 :

    1. 萤火虫的相对荧光亮度为:
      I=I0eγri,j(1) I = I_0*e^{-\gamma r_{i,j}}\tag{1}
      其中 ,I0I_0为萤火虫的最大萤光亮度 , 与目标函数值相关 , 目标函数值越优自身亮度越高 ; γ\gamma为光强吸收系数 , 荧光会随着距离的增加和传播媒介的吸收逐渐减弱 ; ri,jr_{i,j}为萤火虫iijj 之间的空间距离 。

    2. 萤火虫的吸引度为
      β=β0eγri,j2(2) \beta = \beta_0*e^{-\gamma r_{i,j}^2} \tag{2}
      其中 , β0\beta_0 为最大吸引度 ; γ\gamma为光强吸收系数 ; ri,jr_{i,j}为萤火虫iijj 之间的空间距离。

    3. 萤火虫 i 被吸引向萤火虫 j 移动的位置更新公式如式 (3) 所示 :
      xi=xi+β(xjxi)+α(rand1/2)(3) x_i = x_i +\beta*(x_j-x_i)+\alpha*(rand - 1/2) \tag{3}
      其中 , xi,xjx_i,x_j 为萤火虫 iijj 所处的空间位置 ; α[0,1]α ∈[0,1] 为步长因子 ; randrand 为 [0,1] 上服从均匀分布的随机数 。

    算法步骤如下:

    (1) 初始化萤火虫算法参数.

    (2) 计算各萤火虫的亮度并排序得到亮度最大的萤火虫位置.

    (3)判断迭代是否结束:判断是否达到最大迭代次数 T ,达到则转(4),否则转(5).

    (4) 输出亮度最大的萤火虫位置及其亮度.

    (5) 更新萤火虫位置:根据式(3)更新萤火虫的位置,对处在最佳位置的萤火虫进行随机扰动,搜索次数增加1 ,转(2),进行下一次搜索.

    2.算法结果

    在这里插入图片描述

    3.参考文献

    [1] Yang X S, Deb S. Eagle strategy using l´ evy walk and firefly algorithms for stochastic optimization. Nature Inspired Cooperative Strategies for Optimization (NICSO 2010), Berlin Heidelberg: Springer, 2010. 101−111

    [2] 田梦楚, 薄煜明, 陈志敏, et al. 萤火虫算法智能优化粒子滤波[J]. 自动化学报, 2016, 42(001):89-97.

    4.Matlab代码

    https://mianbaoduo.com/o/bread/aJiVl5o=

    展开全文
  • 使用 AOA 获得的解决方案优于众所周知的最新技术和最近引入的元启发式算法,例如遗传算法 (GA)、粒子群优化 (PSO)、差分进化变体 L-SHADE 和 LSHADE-EpSin、鲸鱼优化算法(WOA)、正余弦算法 (SCA)、Harris 鹰优化 ...
  • Sebastian Ruder 的这篇博客总结了 2017 年深度学习优化算法最新进展,他主要从Adam算法的局限性与提升方法、学习率衰减方案、超参数搜索、怎样学习优化和理解泛化性能等角度向我们展示近来研究者对最优化方法的...
    Sebastian Ruder 的这篇博客总结了 2017 年深度学习优化算法的最新进展,他主要从Adam算法的局限性与提升方法、学习率衰减方案、超参数搜索、怎样学习优化和理解泛化性能等角度向我们展示近来研究者对最优化方法的思考与探索。


    深度学习终究是寻找一个使泛化性能足够好的(损失函数)极小值过程,它并不一定要求能搜索到非凸函数的最小值点,而需要模型的损失能得到显著性地降低,以收敛到一个可接受的极小值点。随机梯度下降(SGD)已经有 60 多年的历史(Robbins and Monro, 1951)[1],通过应用于反向传播过程,它是当前深度学习算法最基本的组成部分。


    近年来人们提出了多种优化算法,使用不同的方程更新模型的参数。Adam(Kingma and Ba, 2015)[18] 在 2015 年被提出,可以认为其在今天仍然是最常用的算法。因此从机器学习从业者的角度看来,深度学习最好的优化算法开发近年来基本没有太大的突破。


    然而,今年我们开发了好几种新的方法被,它们有望优于当前最佳的方法,并用于未来复杂模型的优化中。在这篇博客中,我将介绍深度学习优化算法中几个最有意义的进展以及最有潜力的方向。这篇博客假定读者熟悉 SGD 和适应性学习率方法,如 Adam。如果想快速入门,可以查看 Ruder 以前的博客以概览当前已有的梯度下降优化算法:深度解读最流行的优化算法:梯度下降,或参见更加基础与入门的文章:目标函数的经典优化算法介绍


    提升 Adam 方法


    尽管如 Adam 那样的适应性学习率方法仍然是实际应用中绝对的主流,但如目标识别(Huang et al., 2017)[17] 或机器翻译(Wu et al., 2016)[3] 等计算机视觉和自然语言处理任务的最优结果仍然是由带动量的 SGD 算法实现。最近的理论(Wilson et al., 2017)[15] 为此提供了一些理由,他们的研究表明适应性学习率方法相对于带动量的 SGD 会收敛到不同或次优的极小值。从经验上来说,适应性学习率方法一般在目标识别、字符级语言建模和句法分析任务中要比带动量的 SGD 方法所搜索到的极小值差。这似乎是反直觉的,因为 Adam 一般保证了优良的收敛性,它的适应性学习率也比标准 SGD 的固定或指数衰减学习率更有优势。然而,Adam 和其它适应性学习率方法并不是没有缺陷的。


    去耦合指数衰减


    权重衰减因素可以部分解释 Adam 方法在一些数据集上比带动量的 SGD 方法泛化性能更差的原因。权重衰减广泛应用于图像分类问题中,它一般在参数更新后乘以一个稍微小于 1 的数值 w_t 而令权重 θ_t 得到衰减:

    06878640.png

    这样的过程可以避免权重的值增长过快,因此,它也可以理解为依赖于权重衰减率 w_t 的 L2 正则项:

    30111640-2.png

    权重衰减在许多神经网络库中都有实现,一般它们都是作为上述的正则化项或直接应用于修正梯度。由于梯度在动量法和 Adam 更新方程(通过将衰减项与梯度相乘)中都有修改,因此权重衰减不再等同于 L2 正则项。Loshchilov 和 Hutter(2017)[19] 因此提出解耦合权重衰减方法,该方法通过将梯度更新添加到参数更新步骤之后而实现原定义中的权重衰减。带有动量和权重衰减的随机梯度下降(SGDW)的更新规则如下所示: 

    48363640-3.png

    其中 η 为学习率,第二个方程式的第三项为解耦合权重衰减。同样,带权重衰减的 Adam 方法(AdamW)可以表示为:

    67558640-4.png

    其中 m_t 和 m_t hat 、v_t 和 v_t hat 分别为一阶矩与二阶矩的有偏和偏差修正后的估计,β_1 和 β_2 分别为它们的衰减率,相同的权重衰减项也会添加到其中。作者还表示,这大大加强了 Adam 算法的泛化性能,且允许它在图像分类任务中获得像带动量的 SGD 方法那样的性能。


    另外,Adam 方法可以解耦合学习率与权重衰减,即超参数之间不再相互依赖,这使得超参数优化更加优秀。它还将优化器的实现和权重衰减的实现分离开,因此能实现更简明与可复用的代码。


    修正指数滑动平均


    近来一些论文 (Dozat and Manning, 2017; Laine and Aila, 2017) [13,16] 经验性地发现较低的β_2 值 0.90 在各自的应用中要比默认值 0.999 更有效,β_2 即控制 Adam 算法中梯度平方的指数滑动平均值,这也就表明指数滑动平均模型可能会存在一些问题。


    在 ICLR 2018 中,一份提交论文形式化地提出了这个问题,他们表示 Adam、RMSprop 和 Adadelta 等方法都是基于使用前面迭代所产生梯度平方的指数滑动平均值,在对该滑动平均值取平方根后用于缩放当前梯度以更新权重。指数均值的贡献是积极的:这种方法应该防止学习率在学习过程中变得逼近无穷小,这也是 Adagrad 算法关键的缺点。然而,这种梯度的短期记忆能力也成为了其它情况的障碍。


    在 Adam 算法收敛到次优解的过程中,它已经观察到一些小批量数据提供了大量且具有信息的梯度,但是由于这些小批量数据发生地非常少,指数平均将降低它们的影响,这也就造成了 Adam 只能收敛到次优的极小值点。作者提供了一个简单的凸优化案例,其中 ADAM 方法并不能收敛到非常好的最优解。


    为了解决这个问题,作者提出了一个新算法 AMSGrad,该算法使用过去梯度平方的最大值以替代指数平均值来更新参数。不带偏差修正估计的 AMSGrad 更新规则可以表示为:

    26590640-5.png

    作者观察到该算法在 CIFAR-10 小数据集上的性能优于 Adam 方法。


    调整学习率


    在很多案例中,需要提高和调整的通常不是模型,而是超参数。最新的语言建模案例表明调整 LSTM 的参数(Melis 等,2017)[20] 和正则化参数(Merity 等,2017)[21] 可以获得与复杂模型相当的当前最佳结果。


    优化深度学习的一个重要参数是学习率 η。实际上,SGD 已被证明需要结合学习率退火方案以收敛到极小值。人们通常认为适应性学习率方法例如 Adam 对不同的学习率有更好的鲁棒性。然而即使对这些方法,一个好的学习率和最优的学习率也有很大的不同。


    Zhang 等人(2017)[2] 证明了 SGD 结合学习率退火方案和动量参数不仅可以取得和 Adam 算法相当的结果,其收敛速度还更快。另一方面,我们可能认为 Adam 学习率的适应性和学习率退火类似,但一个显式的退火方案仍然是有利的:如果添加 SGD 形式的学习率退火到 Adam 上,它能收敛得更快,并超越 SGD 在机器翻译上的性能(Denkowski 和 Neubig, 2017)[4]。


    实际上,学习率退火方案工程可以当成一种新的特征工程,因为我们通常都能找到高度调优的(能提升模型最终收敛性能的)学习率退火方案。一个有趣的案例是 Vaswani 等(2017)[14]。虽然通常模型的超参数受大规模的超参数优化支配,实际上这些学习率退火方案对细节的相同关注也是很有趣的:作者使用的 Adam 超参数为 β_1=0.9,(非默认)β_2=0.98,ϵ=10^-9,以及可认为是最复杂的学习率退火方案的学习率设置:

    65148640-6.png

    其中 d_model 是模型的参数数量,warmup_steps=4000。


    另外一篇最新的由 Smith 等(2017)[5] 写的论文证明了学习率和批量大小之间的有趣关系,过去通常认为这两个参数是互相独立的。他们证明了衰减学习率等价于增加批量大小,而后者可以增加训练的并行度。相反地,我们可以通过增大学习率和减小批量大小,从而减少模型的更新频率以加快训练过程。这对大规模的深度学习有显著的效果,从而可以使我们重复利用已有的训练方案而不需要调整超参数。


    热启动


    SGD 结合热启动


    另外一个有效的最新进展是 SGDR(Loshchilov and Hutter, 2017)[6],这是一种使用热启动取代学习率衰减的 SGD 变体。每一次重启后,学习率被初始化为某些值,并按计划衰减。重要的是,这个重启属于热启动,因为优化过程不会再次从零开始,而是从模型在最后一步收敛的参数开始。其中的关键是学习率使用一种「激进的」余弦衰减方案,它会快速地降低学习率,如下所示:

    18243640-7.png

    其中 η^i_min 和η^i_max 是在第 i 次迭代中学习率的取值范围,T_cur 表示自最后一次重启后的 epoch 数,T_i 表示下一次重启时的 epoch 数。热启动方案 T_i=50、T_i=100、T_i=200 和常规的学习率衰减的对比如图 1 所示。


    42041640.jpeg

    图 1:结合热启动的学习率衰减方案(Loshchilov and Hutter, 2017)


    经过重启后的初始学习率基本作用是将参数从上次收敛到的极小值中重新「发散」出去,并到达损失曲面的另一个区域。激进的衰减方案允许模型快速收敛到一个新的更优解。作者通过经验发现 SGD 结合热启动需要的 epoch 数比学习率衰减少 2 到 4 倍,并能获得相当的结果。


    学习率衰减结合热启动也被称为周期性学习率,由 Smith(2017)[22] 首次提出。


    Snapshot 集成


    Snapshot 集成(Snapshot ensembles,Huang 等,2017)[7] 是一种最新的巧妙技术,其使用热启动以在训练单个模型的时候不需要额外的代价就能集合多组参数。该方法训练单个模型直到使用余弦退火方案达到收敛(如上所述),然后保存模型参数,进行一次热启动,再重复这些过程 M 次。最后,所有保存的模型副本被集成起来。图 2 展示了常用的 SGD 优化和Snapshot 集成在误差曲面上的行为的对比。


    88861640-2.jpeg

    图 2:SGD vs. snapshot 集成(Huang et al., 2017)


    集成的成功通常依赖于集成中单个模型的多样性。因此,snapshot 集成依赖于余弦退火程序的能力,使该模型在每次重启后收敛至不同的局部最优。论文作者展示了这在实践中证明是合理的,在 CIFAR-10、CIFAR-100 和 SVHN 数据集上实现了顶尖结果。


    具备热启动的 Adam


    热启动最初不能与 Adam 共同使用的,因其不正常的权重衰减。在权重衰减修复之后,Loshchilov 和 Hutter(2017)扩展 Adam,使其可以与热启动共同使用。他们的设置为45976640-8.png ,且这些变量都服从:

    66902640-9.png

    他们推荐开始时使用较小的 T_i 值(epoch 总数在 11 和 1010 之间),然后每次重启时使 T_i 乘 T_mult 的值(如 T_mult=2)。


    学习如何优化


    去年最有趣的论文之一(同时也是「Best paper name of 2016」的获奖者)是由 Andrychowicz 等人写的「Learning to learn by gradient descent by gradient descent」[23],他们训练了一个 LSTM 优化器以在训练过程中更新主要的模型。不幸的是,学习一个分离的 LSTM 优化器或甚至使用一个预训练的 LSTM 优化器用于优化会大大增加模型模型训练过程的复杂度。


    另外一个今年来很有影响力的学会学习的论文使用一个 LSTM 生成一个特定领域语言的模型架构(Zoph 和 Quoc, 2017)[24]。尽管搜索过程需要消耗大量的资源,其所发现的架构能达到替换已有架构的性能。该搜索过程被证明具备有效性,并且能找到达到当前最佳结果的语言建模架构,以及能找到和在 CIFAR-10 上获得的当前最佳结果相当的架构。


    同样的搜索理论可以应用于任何其它关键过程已被人工预定义的领域,其中一个是深度学习中的优化算法。正如我们之前所看到的,优化算法之间其实很相似:所有的算法都结合了过去梯度的指数加权平均(如动量算法),以及过去梯度平方的指数加权平均(如 Adadelta、RMSprop 和 Adam)(Ruder,2016)[25]。Bello 等人(2017)[8] 定义了一种特定领域的语言,其由用于优化算法的(例如以上介绍的各种指数加权平均法)原词组成。然后,他们从可能更新规则的空间中采样一个更新规则,使用这个更新规则去训练一个模型,并基于已训练模型在测试集上的性能更新 RNN 控制器。完整的过程如图 3 所示。

    09684640-3.jpeg

    图 3:神经优化器搜索(Bello 等,2017)


    特别地,他们发现了两个更新等式,PowerSign 和 AddSign。PowerSign 的更新等式如下所示:

    36377640-10.png

    其中 α 是一个超参数,通常设为 e 或 2。f(t) 等于 1 或者表示线性、周期性的衰减函数,或者基于时间步的衰减和重启。m_t 是过去梯度的移动平均数。通常情况下设定 α=e 和无衰减。通过该等式我们可以观察到梯度通过 α^f(t) 或 1/α^f(t) 被缩放,增大还是减小取决于使用 sign 函数判断梯度和移动平均数的正负。这表明这种类动量算法关于当前梯度和过去梯度的关系是优化深度学习模型的关键部分。


    而 AddSign 的更新等式如下所示:

    59308640-11.png

    其中 α 通常设为 1 或 2。和 PowerSign 类似,梯度的缩放同样取决于梯度的方向。作者证明了 PowerSign 和 AddSign 超过了 Adam、RMSprop 和动量法在 CIFAR-10 的优化性能,并能很好地迁移到其它任务比如 ImageNet 分类和机器翻译等。


    理解泛化


    优化与泛化密切相关,因为模型可收敛至的极小值决定了该模型的泛化性能。因此,优化方面的进步与更深入地理解深度学习中的泛化密切相关。


    但是,我们对深度神经网络中的泛化的理解仍然比较粗浅。近期的研究表明局部极小值数量随参数数量呈指数级增长(Kawaguchi, 2016)。即使当前深度学习架构具备大量参数,那它收敛至泛化效果好的解决方案仍然很难,尤其是此类模型可以完全存储随机输入(Zhang et al., 2017)。


    Keskar et al.(2017)认为极小值的尖锐程度或陡峭程度是泛化性能不好的原因:尤其是,他们认为批量梯度下降导致的尖锐性极小值(近似尖点)存在很高的泛化误差。这给人的直观感觉是:正如我们通常希望函数比较平滑,尖锐性极小值代表对应误差曲面的高度不规则性。但是,更多近期研究发现泛化性能较好的局部极小值的尖锐程度可以是随机的,因此尖锐程度可能并非合适的指标(Dinh et al., 2017)。


    正在接受 ICLR 2018 盲审的论文《On the importance of single directions for generalization》通过一系列对照分析证明模型的可靠性在于激活空间中的单个维度,即单个单元或特征图的激活是评估泛化性能的合适指标。此外,他们还发现 dropout 对此没有帮助,而批归一化降低了单向可靠性。


    尽管这些发现表明我们对深度学习中的泛化仍然存在很多未知,但现在很多研究者在进行收敛保证和大量针对凸优化的研究,且现有的很多想法和见解都可以一定程度地用于非凸优化。35322icon.png


    参考文献详见原文,原文地址:http://ruder.io/deep-learning-optimization-2017/


    展开全文
  • 结果表明,适应度和收敛速度优于传统的PSO,DGLCPSO和以前的基于PSO的LA算法。 参考 [1] Mohammad Hasanzadeh,Mohammad Reza Meybodi和Saeed Shiry Ghidary,“,”在2011 IEEE第12届国际计算智能和信息学研讨会
  • matlab代码粒子群算法遗传算法 特征选择的遗传算法 自述文件-有关如何运行代码的说明。 运行MATLAB代码的步骤1:运行GA.m文件 您可以将交叉,变异,分类...摘要:杜鹃搜索是一种最新的自然启发式元启发式算法,其灵感来
  • 本文回顾了BSO算法的历史发展和最新技术。 此外,还从数据分析的角度讨论了BSO算法中的收敛运算和发散运算。 BSO算法中的每个人不仅是要优化的问题的解决方案,而且还是揭示问题概况的数据点。 群体智能和数据挖掘...
  • 利用精英个体的混沌搜索策略增强算法的开发能力,并将基于该策略的正余弦算法与反向学习算法交替执行增强算法的探索能力,降低算法的时间复杂度,提高算法收敛速度.对23个基准测试函数进行仿真实验,与改进的正余弦...
  • 遗传算法 求解 TSP

    热门讨论 2011-05-27 15:32:45
    然后对遗传算法的基本术语、个体的编码方式、初始化种群、适应度函数、选择算子、交叉算子、变异算子、运行参数和全局最优收敛以及TSP问题的数学模型进行了阐述。 第三章:遗传算法在TSP上的应用与实现,首先通过选取...
  • 第一章至第四章介绍遗传算法的基础知识,包括遗传算法的基本原理,编码、选择、交叉、变异,适应度函数,控制参数选择,约束条件处理,模式定理,改进的遗传算法,早熟收敛问题及其防止等。第五章至第七章介绍英国...
  • 这封信开发了一种快速的迭代收缩阈值算法,可以有效解决欠采样相位检索中的问题。 首先,使用梯度框架和近端正则化理论,将欠采样的相位检索问题公式化为一种最小... 实验结果表明,该算法收敛速度方面优于最新技术。
  • 为优化混合传感网络覆盖性能,基于粒子群算法提出一种优化策略,并通过引进扰动因子,有效地避免了算法陷入早熟陷阱,加速了算法收敛。通过仿真实验,验证了该优化算法能够有效地提高网络覆盖性能,并与最新算法...
  • 扩展蚁群算法是蚁群算法创始人 Dorigo提出的一种用于求解连续空间优化问题的最新蚁群算法,但该算法收敛速度参数和局部搜索参数取值缺乏理论指导,因此其性能受算法参数影响较大。本文提出一种求解连续空间优化的...
  • 针对人工蜂群和粒子群算法的优势与缺陷, 提出一种Tent 混沌... 仿真结果表明, 该算法不仅能有效避免早熟收敛, 而且能有效跳出局部极值, 与其他最新人工蜂群和粒子群算法相比具有较强的全局搜索能力和局部搜索能力.</p>
  • 通过解决这个二次问题,新算法从任何给定的初始参数单调收敛到局部最小值。因此,为了达到所需的最小值,需要良好的初始参数和约束条件,这些参数和约束条件可以通过独立的成分分析成功地估算出来。该新算法与形状...
  • 针对时不变线性系统的迭代学习控制问题,提出了一种改进的时不变系统的PD型迭代学习...仿真实例分析表明,改进的算法利用最新算出的控制分量代替旧的控制分量,使系统的实际输出以更快的收敛速度逼近系统的理想输出。
  • 利用变分不等式和不动点问题的等价关系,给出了一个新的求解一般变分不等式的三步迭代算法;该算法在现有的两步迭代算法基础上,利用校正...最后在适当条件下证明了该算法收敛性,所得结论推广了该领域内的一些最新结果。
  • 结合进化论和遗传理论的最新进展,提出基于学习算子的自学习进化算法;并将正态云模型引入进化过程中,提出云学习算子和基于云学习算子的自学习进化算法。最后的仿真实验表明,该算法具有精度高、收敛速度快等优点,...
  • 针对粒子群优化算法(PSO) 在处理高维复杂函数时容易陷入局部极值、收敛速度慢的缺陷, 从系统的认知分析过程和角度出发, 提出一种基于诺兰模型(NM) 思想的改进PSO 算法. 该算法在Tent 混沌映射选择的参数的基础上, ...
  • 基于最新的噪音受益EM算法,通过人工加噪来加快已有的改进高斯混合模型的收敛速度,从而达到加快图像分割的目的。当添加的噪声满足噪音受益EM定理时,加性噪声加快了EM算法收敛到局部最大值的平均收敛速度。改进的...
  • 用蚁群算法进行函数优化时,存在收敛速度慢且易于陷入局部最优解的问题。针对这一现状,提出了一种微粒群和蚂蚁算法相...与最新的有关研究成果相比,该算法不仅寻优精度高,而且收敛速度大幅提高,效果十分令人满意。
  • 并建立了算法收敛性定理,给出了数值试验结果,该算法使用了一个非常有效的预估和校正步长准则,大大减少了计算量,这一结果推广了单调变分不等式的一些最新结论。

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 135
精华内容 54
关键字:

最新收敛算法