前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础学习系列 | 深度学习优化器使用详解(文末抽奖送书)

基础学习系列 | 深度学习优化器使用详解(文末抽奖送书)

作者头像
集智书童公众号
发布2021-07-07 11:00:59
2820
发布2021-07-07 11:00:59
举报
文章被收录于专栏:集智书童集智书童

1深度学习算法本技----优化器

深度学习算法的本质是优化,实现的途径就是通过调整参数,使得损失尽可能的小。优化器就是实现优化的手段,它沿着损失函数导数的反方向调整参数,使得损失函数取值尽可能的小,从而达到优化的目的。

常见的优化器算法是随机梯度下降(Stochastic Gradient Descent,SGD)算法,以及在随机梯度下降算法基础上改进而来的自适应算法。

2随机梯度下降

按照参数更新时计算梯度所使用样本数量不同来划分,优化器可以划分成批量梯度下降(Batch Gradient Descent,BGD)、随机梯度下降(Stochastic Gradient Descent,SGD)以及小批量梯度下降(Mini-Batch Gradient Descent,MBGD)。

批量梯度下降,是指每一次迭代时,使用全部样本来计算梯度。批量梯度下降的优点是优化过程更稳定,如果损失函数是凸函数,那么,批量梯度更新一定能够找到最优解;缺点是,当样本数据量很大时,由于每一次迭代都需要计算所有样本的梯度,所以,计算过程非常耗时。随着深度学习的发展,样本数据规模也越来越大,批量梯度下降耗时的缺点也越来越凸显。

随机梯度下降,是指每一次迭代时,随机选择一条样本数据来计算梯度。显然,在随机梯度下降算法的每一轮训练的参数更新次数更多。同时由于随机梯度下降的计算量很小,所以,随机梯度下降算法的耗时短、速度快。随机梯度下降的缺点主要有:模型的准确率不如批量梯度下降算法高;可能会收敛域局部最优解,即使损失函数是凸函数也有可能找不到全局最优解;不易实现并行计算,难以充分利用现代计算资源强大的并行计算能力。

小批量梯度下降,是对批量梯度下降和随机梯度下降两种算法折中。通过设置一个批次规模(Batch Size)参数,每一次迭代时,采用该批次数量的样本数据来计算梯度。可以看出,当批次规模等于样本数据的数量时,小批量下梯度下降就是批量梯度下降;当批次规模等于1时,小批量梯度下降时随机梯度下降。

小批量梯度下降是使用最多、最常见的优化算法。在实际应用中,经常会省略前面的“小”字,采用随机梯度下降来代指小批量梯度下降。

3自适应优化器

早期,优化器学习率的设置多采用指数衰减法。当初始学习率和衰减率都是已知的情况下,指数衰减法的每个训练步骤的学习率也是固定的,所以,指数衰减法有可能出现学习率衰减过快、或者学习率衰减过慢的问题。衰减过快是指,模型的参数距离最优解依然很远,但是,此时的学习率已经很小、导致模型需要很长的时间才能拟合;衰减过慢是指,模型已经接近最优解,但是,此时学习率依然很大、模型越过最优解来回震荡,同样会导致模型难以拟合,或者说模型训练困难。

针对以上不足,现代的优化器多采用自适应算法,能在优化过程中动态的调整学习率。比如,引入动量(Momentum)概念,判断本次更新的梯度方向与上一次方向是否一致,如果一致,说明距离最优解很远,就在本次优化的幅度上叠加上一次的优化幅度;如果方向不一致,说明已经越过最优解,就将本地的优化服务减去上一次的优化幅度、降低优化步幅。除了动量之外,有的算法还能各个参数梯度的大小,给不同参数设置不同的学习率,加速模型拟合。

自适应算法能够大幅度提高模型的拟合速度,广泛的应用在深度学习的各个场景中。

4常用优化器简介

常用的优化器都会或多或少的采用自适应优化算法。

4.1.SGD

最常见的优化器是随机下降优化器。在默认的情况下,它的出示学习率会设置为0.01,动量的系数设置为0.0(不采用动量技术)。构造函数如下:

代码语言:javascript
复制
__init__(
    learning_rate=0.01,
    momentum=0.0,
    nesterov=False,
    name='SGD',
    **kwargs
)

4.2.Adam

Adam是最简单、易用的优化器,可以适用于各种常见场景。如果您不知道该选择哪一个优化器,那么,Adam优化器就是您最佳选择。从它的构造函数不难理解这一点,在模型情况下,它的初始学习率设置为很小的0.001、同时设置了动量系统0.9和0.999,再结合自适应优化算法Adam在多个常见的业务场景中都能有出色表现。构造函数如下:

代码语言:javascript
复制
__init__(
    learning_rate=0.001,
    beta_1=0.9,
    beta_2=0.999,
    epsilon=1e-07,
    amsgrad=False,
    name='Adam',
    **kwargs
)

本文选自----《GAN生成对抗神经网络原理与实践》一书中,经授权此公号。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 集智书童 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1深度学习算法本技----优化器
  • 2随机梯度下降
  • 3自适应优化器
  • 4常用优化器简介
    • 4.1.SGD
      • 4.2.Adam
      相关产品与服务
      批量计算
      批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档