8. 深度学习实践:优化(续)

本文深入探讨了深度学习优化中的基本算法,如随机梯度下降、动量法和Nesterov动量,强调了参数初始化策略的重要性,并介绍了自适应学习率算法,如AdaGrad、RMSProp和Adam。此外,还提及了二阶近似方法和优化策略,如批标准化和预训练的作用。
摘要由CSDN通过智能技术生成

接上部分讨论:8. 深度学习实践:优化

3. 基本算法

3.1 随机梯度下降

SGD及其变种很可能是一般ML中应用最多的优化算法。

这里写图片描述

关键参数:学习率。最好的选择方法:监测目标函数值随时间变化的学习曲线。与其科学,更像艺术。实践中有必要随时间逐渐降低学习率。

SGD(1998年就有了)、小批量、基于梯度优化的在线学习算法,一个重要性质:每一步更新的计算时间不依赖于训练样本数目的多寡。

3.2 动量(momentum)法

SGD的学习过程有时会很慢。动量法(1964年)旨在加速学习。积累了之前梯度指数级衰减的移动平均,并且继续沿着该方向移动。

普通的梯度步骤会浪费时间在峡谷的窄轴上来回移动:

这里写图片描述

动量正确的纵向穿过峡谷:

这里写图片描述

动量主要针对两个问题:一是海森矩阵的病态条件,二是随机梯度的方差。该图直观解释了第一个问题。红色路径表示动量学习规则所遵循的路径,黑色箭头表示梯度下降将在该点采取的步骤。

这里写图片描述

动量版算法引入了变量 v 充当速度角色,代表参数移动的方向和速率。速度被设定为负梯度的指数衰减平均。动量一词是物理类比,负梯度是移动参数空间中粒子的力。假设是单位质量,则速度向量 v 可看作是粒子的动量。 α 决定了之前梯度的贡献衰减得有多大,越大则之前梯度对现在方向的影响也越大(放大了之前梯度的效果)。

步长大小为:这里写图片描述

例如,当 α 为 0.9 时,对应着最大速度10倍于梯度下降算法。当许多连续的梯度指向相同的方向时,步长最大。马太效应的感觉。梯度下降算法基于每个梯度简单的更新一步。动量算法则使用力改变粒子的速度。

3.3 Nesterov动量

受Nesterov加速梯度算法(1983,2004)启发,Sutskever(2013)提出了动量算法的一个变种。和标准动量体现在梯度计算上。梯度计算在施加当前速度之后。

这里写图片描述

4. 参数初始化策略

4.1 初始化很重要

有的优化算法是非迭代的,仅是求解一个解点(例如,求二次函数的最小值)。有的本质上是迭代的,但优化时能在可接受时间内收敛到可接受的解,并且与初始值无关(凸优化,不论从哪走,都可以到碗底)。

DL训练算法通常没有这两种奢侈的性质。通常是迭代的,需要指定初始点。训练网络足够困难,大多数算法很大程度地受到初始化选择的影响。初始点能够决定算法是否收敛。当学习收敛时,初始点可决定学习收敛得有多快,以及是否收敛到一个代价高或低的点。

现代的初始化策略是简单的、启发式的。设定改进的初始化策略很困难,因为NN优化至今尚未很好理解。机理不知,没有指导。一个比较确知的特性是:初始参数需要在不同单元间破坏对称性。若相同激活函数的两个隐藏单元连接到相同的输入,则这些单元必须具有不同的初始参数。

4.2 常用的策略

本书讲了2页。理解没到,看了仅是字面意思,暂不做笔记。

5. 自适应学习率算法

学习率是难以设置的超参数之一。若我们相信方向敏感度有些轴对齐(互相正交吗?),则每个参数设置不同的学习率。在整个学习过程中自动适应这个学习率是有道理的。

以下讨论内容,是基于梯度优化方法(学习率是超参数),本节做的改进的算法,对基本形式做了各种调整,学习率(步长)在训练过程中成了一个变化着的值,谓之自适应。

5.1 AdaGrad算法

2011年。思路:独立的适应所有模型参数的学习率,缩放每个参数反比于其所有梯度历史平方值总和的平方根(平方根值越大,缩得越美,学习率越小了)。

这里写图片描述

原来的参数更新,对于所有参数都使用相同的学习率。某一个参数向量变化为:

θt+1,i=

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值