0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

梯度下降两大痛点:陷入局部极小值和过拟合

zhKF_jqr_AI 来源:未知 作者:胡薇 2018-04-27 17:01 次阅读

介绍

基于梯度下降训练神经网络时,我们将冒网络落入局部极小值的风险,网络在误差平面上停止的位置并非整个平面的最低点。这是因为误差平面不是内凸的,平面可能包含众多不同于全局最小值的局部极小值。此外,尽管在训练数据上,网络可能到达全局最小值,并收敛于所需点,我们无法保证网络所学的概括性有多好。这意味着它们倾向于过拟合训练数据。

有一些手段有助于缓解这些问题,不过并没有绝对地预防这些问题产生的方法。这是因为网络的误差平面一般很难穿越,而神经网络整体而言很难解释。

随机梯度下降与mini-batch随机梯度下降

这些算法改编了标准梯度下降算法,在算法的每次迭代中使用训练数据的一个子集。SGD在每权重更新上使用一个样本,mini-batch SGD使用预定义数目的样本(通常远小于训练样本的总数)。这大大加速了训练,因为我们在每次迭代中没有使用整个数据集,它需要的计算量少得多。同时,它也有望导向更好的表现,因为网络在训练中断断续续的移动应该能让它更好地避开局部极小值,而使用一小部分数据集当有助于预防过拟合。

正则化

正则化基本上是一个惩罚模型复杂度的机制,它是通过在损失函数中加入一个表示模型复杂度的项做到这一点的。在神经网络的例子中,它惩罚较大的权重,较大的权重可能意味着神经网络过拟合了训练数据。

最左:欠拟合;最右:过拟合

若网络的原损失函数记为L(y, t),正则化常数记为λ,则应用了L2正则化后,损失函数改写为如下形式:

正则化在损失函数中加入了网络的每个权重的平方和,以惩罚给任何一个连接分配了过多权重的模型,希望能降低过拟合程度。

动量

简单来说,动量在当前权重更新上加上一小部分前次权重更新。这有助于预防模型陷入局部极小值,因为即使当前梯度为0,之前梯度绝大多数情况下不为0,这样模型就不那么容易陷入极小值。另外,使用动量也使误差平面上的移动总体上更为平滑,而且移动得更快。

基于这一简单的动量概念,我们可以重写权重更新等式至如下形式(α为动量因子):

还有其他一些更高级的动量形式,比如Nesterov方法。

学习率退火

我们可以不在整个训练过程中使用同一学习率,而是随着时间的进展降低学习率,也就是退火。

最常见的退火规划基于1/t关系,如下图所示,其中T和μ0为给定的超参数,μ为当前学习率:

这经常被称为“搜索并收敛”(search-then-converge)退火规划,因为直到t达到T之前,网络都处于“搜索”阶段,学习率没有下降很多,在此之后,学习率减慢,网络进入“收敛”阶段。这和探索(exploitation)与利用(exploration)间的平衡多多少少有些关系。刚开始我们优先探索搜索空间,扩展我们关于空间的整体知识,随着时间的推进,我们过渡到利用搜索空间中我们已经找到的良好区域,收缩至特定的极小值。

结语

这些改进标准梯度下降算法的方法都需要在模型中加入超参数,因而会增加调整网络所需的时间。最近提出的一些新算法,比如Adam、Adagrad、Adadelta,倾向于在每个参数的基础上进行优化,而不是基于全局优化,因此它们可以基于单独情况精细地调整学习率。在实践中,它们往往更快、更好。下图同时演示了之前提到的梯度下降变体的工作过程。注意看,和简单的动量或SGD相比,更复杂的变体收敛得更快。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4732

    浏览量

    100373
  • 动量
    +关注

    关注

    0

    文章

    6

    浏览量

    7905
  • 正则化
    +关注

    关注

    0

    文章

    17

    浏览量

    8119

原文标题:如何改进梯度下降算法

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何对一波形所有极大(小)用三次样条插函数拟...

    哪位大神能帮我一下,本人在做小电流接地系统选线,在matlab中搭建了系统模型后进行了单相接地故障仿真,对于仿出来的波形要进行HHT变换,其中第一步就是要对仿真图形所有极大极小值用三次样条插
    发表于 08-09 19:10

    关于检测的离散信号求极值问题

    我现在收集到一些离散信号,一维数组,想找到极大极小值,然后连线用三次样条拟合,1、请问有没有什么好用的控件或者算法找到这些极大极小值2
    发表于 01-03 10:55

    分享一个自己写的机器学习线性回归梯度下降算法

    单变量线性回归算法,利用Batch梯度梯度下降算法迭代计算得到误差最小的代价函数theta0,theta1。调节学习率a可以观察拟合得到的函数和代价函数误差收敛情况。
    发表于 10-02 21:48

    机器学习新手必学的三种优化算法(牛顿法、梯度下降法、最速下降法)

    法的问题在于,每一步都需要对 aplha_k 进行优化,这样做的成本相对高昂。例如,对于二次函数,每次迭代都需要计算多次矩阵乘法以及向量乘。但对于梯度下降,每一步只需要计算导数并更新
    发表于 05-07 08:30

    如何更新权重实现梯度下降

    实现梯度下降
    发表于 07-15 10:09

    keras内置的7个常用的优化器介绍

    法,随机梯度下降,小批量梯度下降法。它们的学习率是固定的。 1.1 基础梯度下降算法 顾名思义
    发表于 08-18 06:32

    改进的BP网络算法在图像识别中的应用

    利用改进的BP网络算法,可以有效地抑制网络陷入局部极小值,提高网络训练速度。实验验证表明,改进的算法对图像识别的准确率较高。
    发表于 02-07 11:40 40次下载
    改进的BP网络算法在图像识别中的应用

    机器学习:随机梯度下降和批量梯度下降算法介绍

    梯度下降和批量梯度下降种迭代求解思路,下面从公式和实现的角度对者进行分析。下面的h(x)是
    发表于 11-28 04:00 8796次阅读
    机器学习:随机<b class='flag-5'>梯度</b><b class='flag-5'>下降</b>和批量<b class='flag-5'>梯度</b><b class='flag-5'>下降</b>算法介绍

    梯度下降算法及其变种:批量梯度下降,小批量梯度下降和随机梯度下降

    现在我们来讨论梯度下降算法的三个变种,它们之间的主要区别在于每个学习步骤中计算梯度时使用的数据量,是对每个参数更新(学习步骤)时的梯度准确性与时间复杂度的折衷考虑。
    的头像 发表于 05-03 15:55 2.1w次阅读

    讲解随机梯度下降、类别数据编码、Vowpal Wabbit机器学习库

    在数据量不大的情况下,上面的数学效果不错(我们这里不讨论局部极小值、鞍点、学习率选择、动量等问题,请参考《深度学习》一书的数值计算那一章)。批量梯度下降有一个问题——
    的头像 发表于 07-17 09:11 6199次阅读

    简单的梯度下降算法,你真的懂了吗?

    梯度下降算法的公式非常简单,”沿着梯度的反方向(坡度最陡)“是我们日常经验得到的,其本质的原因到底是什么呢?为什么局部下降最快的方向就是梯度
    发表于 09-19 00:17 811次阅读

    如何使用区域相似度实现局部拟合活动轮廓模型

    针对局部拟合(LBF)模型不能分割纹理图像和收敛速度慢等问题,提出一种结合局部拟合与区域间相似度的活动轮廓模型。该模型在LBF模型中引
    发表于 03-12 14:27 2次下载

    基于双曲网络空间嵌入与极小值聚类的社区划分算法

    真实复杂网络节点度分布服从幂律分布,而双曲空间能够完整表现这一特性。为此,提出一种基于双曲空间嵌入与极小值聚类的社区划分算法MHE。将建模后的复杂网络嵌入庞加莱圆盘模型,保留复杂网络的全局拓扑信息
    发表于 04-01 15:18 11次下载
    基于双曲网络空间嵌入与<b class='flag-5'>极小值</b>聚类的社区划分算法

    基于局部拟合与全局信息的改进活动轮廓模型

    的中心,改变轮廓半径的大小以确定初始轮廓的位置。使用局部熵项来増强图像边缘处的响应,将局部熵图像拟合能量项与RSF模型共同构成局部能量项,
    发表于 05-26 15:31 5次下载

    JPEG LS算法局部梯度计算原理

    如果同一个上下文中对少量元素进行编码,通常无法获得足够的上下文编码信息。但是如果对大量元素进行编码又会带来存储空间变大的问题。因此要对局部梯度进行量化处理。
    的头像 发表于 04-25 10:46 397次阅读
    JPEG LS算法<b class='flag-5'>局部</b><b class='flag-5'>梯度</b><b class='flag-5'>值</b>计算原理