优化算法

作者&投稿:苑爽 (若有异议请与网页底部的电邮联系)
~   SGD算法中的一个关键参数是学习率。之前,我们介绍的SGD使用固定的学习率。在实践中,有必要随着时间的推移逐渐降低学习率,因此我们将第 k 步迭代的学习率记作 ϵ k 。
  这是因为SGD中梯度估计引入的噪声源(m 个训练样本的随机采样)并不会在极小点处消失。相比之下,当我们使用批量梯度下降到达极小点时,整个代价函数的真实梯度会变得很小,之后为 0,因此批量梯度下降可以使用固定的学习率。保证SGD收敛的一个充分条件是

  若 ϵ 0 太大,学习曲线将会剧烈振荡,代价函数值通常会明显增加。温和的振荡是良好的,容易在训练随机代价函数(例如使用Dropout的代价函数)时出现。如果学习率太小,那么学习过程会很缓慢。如果初始学习率太低,那么学习可能会卡在一个相当高的代价值。通常,就总训练时间和最终代价值而言,最优初始学习率会高于大约迭代 100 次左右后达到最佳效果的学习率。因此,通常最好是检测最早的几轮迭代,选择一个比在效果上表现最佳的学习率更大的学习率,但又不能太大导致严重的震荡。

  虽然随机梯度下降仍然是非常受欢迎的优化方法,但其学习过程有时会很慢。动量方法 (Polyak, 1964) 旨在加速学习,特别是处理高曲率、小但一致的梯度,或是带噪声的梯度。动量算法积累了之前梯度指数级衰减的移动平均,并且继续沿该方向移动。动量的效果如图8.5所示

  受 Nesterov 加速梯度算法 (Nesterov, 1983, 2004) 启发,提出了动量算法的一个变种。这种情况的更新规则如下:

  其中参数 α 和 ϵ 发挥了和标准动量方法中类似的作用。Nesterov 动量和标准动量之间的区别体现在梯度计算上。Nesterov 动量中,梯度计算在施加当前速度之后。因此,Nesterov 动量可以解释为往标准动量方法中添加了一个校正因子。完整的Nesterov动量算法如算法3.2所示

  初始点能够决定算法是否收敛,有些初始点十分不稳定,使得该算法会遭遇数值困难,并完全失败。当学习收敛时,初始点可以决定学习收敛得多快,以及是否收敛到一个代价高或低的点。此外,差不多代价的点可以具有区别极大的泛化误差,初始点也可以影响泛化。
  也许完全确知的唯一特性是初始参数需要在不同单元间 ‘‘破坏对称性’’。如果具有相同激活函数的两个隐藏单元连接到相同的输入,那么这些单元必须具有不同的初始参数。如果它们具有相同的初始参数,然后应用到确定性损失和模型的确定性学习算法将一直以相同的方式更新这两个单元。即使模型或训练算法能够使用随机性为不同的单元计算不同的更新(例如使用Dropout的训练),通常来说,最好还是初始化每个单元使其和其他单元计算不同的函数。这或许有助于确保没有输入模式
丢失在前向传播的零空间中,没有梯度模式丢失在反向传播的零空间中。每个单元计算不同函数的目标促使了参数的随机初始化。我们可以明确地搜索一大组彼此互不相同的基函数,但这经常会导致明显的计算代价。例如,如果我们有和输出一样多的输入,我们可以使用 Gram-Schmidt 正交化于初始的权重矩阵,保证每个单元计算彼此非常不同的函数。在高维空间上使用高熵分布来随机初始化,计算代价小并且不太可能分配单元计算彼此相同的函数。
  通常情况下,我们可以为每个单元的偏置设置启发式挑选的常数,仅随机初始化权重。额外的参数(例如用于编码预测条件方差的参数)通常和偏置一样设置为启发式选择的常数。
  我们几乎总是初始化模型的权重为高斯或均匀分布中随机抽取的值。高斯或均匀分布的选择似乎不会有很大的差别,但也没有被详尽地研究。然而,初始分布的大小确实对优化过程的结果和网络泛化能力都有很大的影响。
  更大的初始权重具有更强的破坏对称性的作用,有助于避免冗余的单元。它们也有助于避免在每层线性成分的前向或反向传播中丢失信号——矩阵中更大的值在矩阵乘法中有更大的输出。如果初始权重太大,那么会在前向传播或反向传播中产生爆炸的值。在循环网络中,很大的权重也可能导致混沌(chaos)(对于输入中很小的扰动非常敏感,导致确定性前向传播过程表现随机)。在一定程度上,梯度爆炸问题可以通过梯度截断来缓解(执行梯度下降步骤之前设置梯度的阈值)。较大的权
重也会产生使得激活函数饱和的值,导致饱和单元的梯度完全丢失。这些竞争因素决定了权重的理想初始大小。
  也有助于避免在每层线性成分的前向或反向传播中丢失信号——矩阵中更大的值在矩阵乘法中有更大的输出。如果初始权重太大,那么会在前向传播或反向传播中产生爆炸的值。在循环网络中,很大的权重也可能导致混沌(chaos)(对于输入中很小的扰动非常敏感,导致确定性前向传播过程表现随机)。在一定程度上,梯度爆炸问题可以通过梯度截断来缓解(执行梯度下降步骤之前设置梯度的阈值)。较大的权重也会产生使得激活函数饱和的值,导致饱和单元的梯度完全丢失。这些竞争因素决定了权重的理想初始大小。
  有些启发式方法可用于选择权重的初始大小。一种初始化 m 个输入和 n 输出的全连接层的权重的启发式方法是从分布 U(−1/√ m ,
1/√ m ) 中采样权重,而 Glorot and Bengio 建议使用标准初始化

  后一种启发式方法初始化所有的层,折衷于使其具有相同激活方差和使其具有相同梯度方差之间。这假设网络是不含非线性的链式矩阵乘法,据此推导得出。现实的神经网络显然会违反这个假设,但很多设计于线性模型的策略在其非线性对应中的效果也不错。
  数值范围准则的一个缺点是,设置所有的初始权重具有相同的标准差,例如1/√ m ,会使得层很大时每个单一权重会变得极其小。Martens (2010) 提出了一种被称为稀疏初始化(sparse initialization)的替代方案,每个单元初始化为恰好有 k 个非零权重。这个想法保持该单元输入的总数量独立于输入数目 m,而不使单一权重元素的大小随 m 缩小。稀疏初始化有助于实现单元之间在初始化时更具多样性。但是,获得较大取值的权重也同时被加了很强的先验。因为梯度下降需要很长时间缩小 ‘‘不正确’’ 的大值,这个初始化方案可能会导致某些单元出问题,例如maxout单元有几个过滤器,互相之间必须仔细调整。

  Delta-bar-delta 算法 (Jacobs, 1988) 是一个早期的在训练时适应模型参数各自学习率的启发式方法。该方法基于一个很简单的想法,如果损失对于某个给定模型参数的偏导保持相同的符号,那么学习率应该增加。如果对于该参数的偏导变化了符号,那么学习率应减小。当然,这种方法只能应用于全批量优化中。

  AdaGrad 算法,如算法8.4所示,独立地适应所有模型参数的学习率,缩放每个参数反比于其所有梯度历史平方值总和的平方根 (Duchi et al., 2011)。具有损失最大偏导的参数相应地有一个快速下降的学习率,而具有小偏导的参数在学习率上有相对较小的下降。净效果是在参数空间中更为平缓的倾斜方向会取得更大的进步。

  在凸优化背景中,AdaGrad 算法具有一些令人满意的理论性质。然而,经验上已经发现,对于训练深度神经网络模型而言,从训练开始时积累梯度平方会导致有效学习率过早和过量的减小。AdaGrad在某些深度学习模型上效果不错,但不是全部。

  RMSProp 算法 (Hinton, 2012) 修改 AdaGrad 以在非凸设定下效果更好,改变梯度积累为指数加权的移动平均。AdaGrad旨在应用于凸问题时快速收敛。当应用于非凸函数训练神经网络时,学习轨迹可能穿过了很多不同的结构,最终到达一个局部是凸碗的区域。AdaGrad 根据平方梯度的整个历史收缩学习率,可能使得学习率在达到这样的凸结构前就变得太小了。RMSProp 使用指数衰减平均以丢弃遥远过去的历史,使其能够在找到凸碗状结构后快速收敛,它就像一个初始化于该碗状结构的 AdaGrad 算法实例。
  RMSProp 的标准形式如算法8.5所示,结合 Nesterov 动量的形式如算法8.6所示。相比于 AdaGrad,使用移动平均引入了一个新的超参数ρ,用来控制移动平均的长度范围。经验上,RMSProp 已被证明是一种有效且实用的深度神经网络优化算法。目前它是深度学习从业者经常采用的优化方法之一。

  Adam (Kingma and Ba, 2014) 是另一种学习率自适应的优化算法,最好被看作结合 RMSProp 和具有一些重要区别的动量的变种。首先,在 Adam 中,动量直接并入了梯度一阶矩(指数加权)的估计。将动量加入 RMSProp 最直观的方法是将动量应用于缩放后的梯度。结合缩放的动量使用没有明确的理论动机。其次,Adam 包括偏置修正,修正从原点初始化的一阶矩(动量项)和(非中心的)二阶矩的估计(算法8.7)。RMSProp 也采用了(非中心的)二阶矩估计,然而缺失了修正因子。因此,不像 Adam,RMSProp 二阶矩估计可能在训练初期有很高的偏置。Adam 通常被认为对超参数的选择相当鲁棒,尽管学习率有时需要从建议的默认修改。

  目前,最流行并且使用很高的优化算法包括 SGD、具动量的 SGD、RMSProp、具动量的 RMSProp、AdaDelta 和 Adam。


随机化的作用
概念:随机化(Randomization)在一组测定值中,每个测定值都是依一定的概率独立出现的,则称这一组测定值的出现是随机化的。可用游程检验来确定一组测定值的出现是否是随机化的。随机化算法是这样一种算法,在算法中使用了随机函数,且随机函数的返回值直接或者间接的影响了算法的执行流程或执行结果。

图像分割算法总结
        图像分割常用算法大致分为下面几类。由于图像的能量范函,边缘追踪等方法的效果往往只能解决特定问题,效果并不理想,这里不再阐述。当然二值化本身也可以分割一些简单图像的。但是二值化算法较多,我会专门做一个文章来总结。这里不再赘述。&...

算法的描述方式有几种?分别是什么
描述算法的方法有多种,常用的有自然语言、结构化流程图、伪代码和PAD图等,其中最普遍的是流程图,分思法。流程图(Flow Chart)使用图形表示算法的思路是一种极好的方法,因为千言万语不如一张图。流程图在汇编语言和早期的BASIC语言环境中得到应用。相关的还有一种PAD图,对PASCAL或C语言都极适用。

算法的三种基本结构是
算法有顺序结构、条件分支结构、循环结构三种基本逻辑结构。1、顺序结构:顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的。它是任何一个算法都离不开的一种基本算法结构。顺序结构在程序框图中的体现就是用流程线将程序框自上...

简述算法的五个特性
算法的五个特征如下:1、有穷性(Finiteness):算法的有穷性是指算法必须能在执行有限个步骤之后终止。一个算法的评价主要从时间复杂度和空间复杂度来考虑。2、确切性(Definiteness):算法的每一步骤必须有确切的定义。3、输入项(Input):一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0...

算法在高等数学研究中有哪些作用?
优化问题:在数学中,优化问题是寻找最佳解决方案的问题。算法在解决优化问题时非常重要,特别是在运筹学和工业工程领域。例如,线性规划和整数规划算法用于在给定的约束条件下最大化或最小化某个目标函数。计算效率:随着问题规模的增大,手工计算变得不切实际。算法通过提供有效的计算步骤,可以显著提高计算...

算法的基本特性是什么?
算法的基本特性 1、有穷性 算法的有穷性是指算法必须能在执行有限个步骤之后终止;2、确切性 算法的每一步骤必须有确切的定义;3、输入项 一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;4、输出项 一个算法有一个或多个输出,以反映对输入数据加工...

如何利用机器学习和人工智能算法来优化投资组合的选取和管理?_百度...
模型选择与训练:根据问题的性质选择合适的机器学习模型。例如,可以使用回归模型来预测股票价格,使用分类模型来判断买卖时机,或者使用强化学习来直接生成交易策略。模型需要在历史数据上进行训练,通过优化算法调整模型参数以最小化预测误差或最大化预期收益。风险管理与优化:在模型训练完成后,需要对其进行...

如何把握算法多样化和优化
通过教研室组织的培训,不断学习、实践和反思,摸爬滚打中我们有了一些自己的体会:一、算法多样化不等于算法全面化 算法多样化是一个学习共同体为解决某一个问题,通过动手实践、自主探索和合作交流后形成的多种计算方法的集合体。它是针对一个学习共同体而言的,绝不是针对某一学习个体而言。多样化并不...

如何引导学生进行算法优化
汇报时我尽量让学生叙述 。 “兴趣是最好的老师”、教师问学生答,你的4拍6。因为口算是计算能力的一个重要组成部分,又掌握了计算方法,大大地提高了群体学生口算练习的质量、补充。有趣的游计算能力是每个人必须具备的一项基本能力:让学生拿着口算卡片找到得数等,优化算法,培养戏,使学生懂得这种...

宜春市17234893975: 优化算法 - 搜狗百科
政服利舒: 优化算法有很多,关键是针对不同的优化问题.例如可行解变量的取值(连续还是离散)、目标函数和约束条件的复杂程度(线性还是非线性)等,应用不同的算法.1、对于连续和线性等较简单的问题,可以选择一些经典算法,如梯度、Hessian 矩阵、拉格朗日乘数、单纯形法、梯度下降法等.2、对于更复杂的问题,则可考虑用一些智能优化算法,如遗传算法和蚁群算法,此外还包括模拟退火、禁忌搜索、粒子群算法等.

宜春市17234893975: 优化算法有哪些?能分多少类? -
政服利舒: G 共轭梯度法 动 动态规划 协 协同优化算法 多 多主体优化系统 极 极小化极大算法 牛 牛顿法 矩 矩阵链乘积 社 社会认知优化 禁 禁忌搜索 粒 粒子群优化 遗 遗传程序 遗传算法

宜春市17234893975: 怎么样优化算法多样化 -
政服利舒: 1.算法多样化是“群体多样化” 算法多样化不是要求每个学生都想出或都掌握两种或多种算法.“一个学生也许只想到了一种算法,许多学生也许就有多种算法,实施算法多样法时,教师不必将每一种算法都挖掘出来,更不能凭教师自己的想象...

宜春市17234893975: 如何更好的优化算法? - C / C++ -
政服利舒: 时间复杂度O(n*n);空间复杂度n[ol][*]#include [i] [*]void main() [*]{ [*]int n,i,j,k,temp; [*]cout >n; [*]int *s=new int[n]; [*]cout >s[i]; [*]for(i=0,j=n-1;i

宜春市17234893975: 什么叫算法优化 -
政服利舒: 简单的说就是让算法更合理,速度更快

宜春市17234893975: 有什么优化算法可以求解几十个变量? -
政服利舒: %基本粒子群优化算法(Particle Swarm Optimization)-----------%名称:基本粒子群优化算法(PSO)%作用:求解优化问题%说明:是2维变量的求解,程序中做了少量修改,可以准确迭代出结果%作者:周楠%时间:2009-12-18-2:00...

宜春市17234893975: 高中研究性学习,编程中的优化算法 -
政服利舒: 优化算法,优化是一个动词,是对某个算法的具体优化.所有的算法都是有优化的空间的.比如动态归划算法,有斜率优化,四边形不等式优化,等等.还有图论的算法,如SAP算法,这个可以用间隙优化,变成ISAP.你可以选择其中一个算法然后来说明一些优化的方法,还有高精度算法,大数相加的,可以有进制优化,常数优化,能不用取余的就不用取余,能用加法的不用乘法,能用减法的不用除法.等等

宜春市17234893975: 高层建筑结构优化算法有哪几种 -
政服利舒: 高层建筑结构优化算法:①优化准则法一从直观的力学原理出发,选定使结构达到最优的准则,然后根据这些准则选取适当的迭代格式,寻求结构的最优解.②数学规划法一从解极值问题的数学原理出发,运用数学规划方法求得一系列设计参数的最优解.结构优化设计:在给定约束条件下,按某种目标(如重量最轻、成本最低、刚度最大等)求出最好的设计方案,曾称为结构最佳设计或结构最优设计,相对于“结构分析”而言,又称“结构综合”;如以结构的重量最小为目标,则称为最小重量设计.

宜春市17234893975: powell 优化算法的过程 -
政服利舒: Powell优化算法是利用仪器测井理建立误差函数(非相关函数),借助Powell方向加速法求出非相关函数达到最小时的解,对于气,水两相流动,从预设的气,水流量初始值出发,沿不同的广向进行搜索,可求出气,水两相流动中可能最大产量...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网