松鼠乐园 松鼠乐园
  • 注册
  • 登录
  • 首页
  • 快捷入口
    • Vue
    • Tensorflow
    • Springboot
    • 语言类
      • CSS
      • ES5
      • ES6
      • Go
      • Java
      • Javascript
    • 工具类
      • Git
      • 工具推荐
    • 服务器&运维
      • Centos
      • Docker
      • Linux
      • Mac
      • MySQL
      • Nginx
      • Redis
      • Windows
    • 资源类
      • 论文
      • 书籍推荐
      • 后端资源
      • 前端资源
      • html网页模板
      • 代码
    • 性能优化
    • 测试
  • 重大新闻
  • 人工智能
  • 开源项目
  • Vue2.0从零开始
  • 广场
首页 › 人工智能 › 人工智能进阶必备——熟知机器学习深度学习主流优化算法

人工智能进阶必备——熟知机器学习深度学习主流优化算法

迦娜王
3年前人工智能
588 0 0

什么是优化算法?

简单来说就是一种通过迭代逼近最优解的方法,即最优解的渐近估计方法。

深度学习优化算法经历了 SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 这样的发展历程,目前Adam应该是最常用的优化算法。

为什么需要优化算法?

1.有的问题并没有解析解,只能迭代求得近似解

2.问题有解析解,但是求解析解的计算复杂度大的无法接受

3.求解析解有新数据进来时候需要全部重算,而online算法则只需要更新一下

无动量或一阶动量方法

人工智能进阶必备——熟知机器学习深度学习主流优化算法

梯度下降基础公式

BGD(Batch gradient descent/批量梯度下降):

  • 简介:每一步迭代都用到训练集所有数据
  • 缺点:该方法缺点是计算复杂度,存储复杂度都很高,只适用于小样本
  • 优点:全局最优解,实现简单

SGD(Stochastic Gradient Descent/随机梯度下降)/MBGD(Mini-batch Gradient Descent/小批量梯度下降法):

  • 简介:每步迭代用一小批样本
  • 缺点:参数初始化敏感,容易陷入局部最小值,一般不是全局最优,收敛慢(路径是锯齿状的)。
  • 优点:较BGD训练速度快,但依旧算是慢,经常会在局部最小值处震荡。
  • 注意点:选取batch时候要尽量保持抽取的随机性,即熵最大准则。然后随机抽取的方式会引入噪声,所以即使算法到达最优解附近,算法仍会震荡,所以我们需要随着时间的推移逐渐降低学习率。

SGD with Momentum(引入动量)

  • 简介:在SGD基础上引入一阶动量,即针对SGD的震荡问题,通过引入动量,抑制震荡,加速收敛。一阶动量为各个时刻梯度方向的指数移动平均值,
  • 缺点:参数初始化敏感,容易陷入局部最小值,不是全局最优解,收敛慢
人工智能进阶必备——熟知机器学习深度学习主流优化算法

引入一阶动量的SGD

SGD with Nesterov Acceleration

人工智能进阶必备——熟知机器学习深度学习主流优化算法

梯度下降方向

  • 简介:针对SGD-M的步骤一进行优化,SGD-M在t时刻的梯度下降方向,由历史累计动量与当前梯度方向共同决定,而本方法则选择先按照累计动量方向走一步,通过用下一步的梯度方向与历史累计动量结合来计算SGD-M中的梯度方向
  • 缺点:参数初始化敏感,容易陷入局部最小值,一般不是全局最优,收敛慢(路径是锯齿状的)
  • 优点:可以在梯度大跳跃后,对当前梯度进行校正。

二阶动量/自适应学习率

AdaGrad:

  • 简介:希望对经常更新的参数,学习率低。而对更新少的参数,需要更大的学习速率。
  • 缺点:需要人工设置全局学习率,参数更新次数多之后,可能导致训练提前终止,因为该算法从训练开始的时候就累积梯度的平方,导致学习率会过早和过量的减小。
  • 优点:不需要对每个学习率调节,可自适应对不同参数有不同学习率。在稀疏数据的场景下表现优异。

AdaDelta:

  • 简介:针对二阶动量持续累积导致训练提前终止的情况,引入时间窗,即将累积量改为指数移动平均值改为过去一段时间,而非一直累积。
  • 缺点:会在局部最小值附近抖动
  • 优点:不需要预设学习率,中期加速效果好,且避免参数更新两边单位不统一

RMSProp:

  • 简介:基于AdaGrad梯度累积的思路,将梯度累积改为指数加权移动平均的方法,改善AdaGrad在非凸优问题上到达局部凸结构之前梯度已经变得太小,RMSProp通过指数衰减平均丢掉较远的历史,使其在找到凸碗状结构时学习率不至于太小,可以迅速收敛。
  • 缺点:多引入了一个超参数
  • 优点:在非凸问题上会比AdaGrad方法更好

Adam:

  • 简介:将Momentum与RMSProp结合,引入动量与二阶据估计(指数加权),且通过校正因子提高对超参数的鲁棒。
  • 优点:对超参数非常鲁棒,收敛速度快

NAdam:

  • 简介:引入Nesterov动量的Adam,即将Adam的动量添加方式改为Nesterov动量
  • 优点:对梯度矫正能力强
0
超全!深度学习在计算机视觉领域应用一览(附链接)
上一篇
谷歌实时端到端双目系统深度学习网络stereonet
下一篇
评论 (0)

请登录以参与评论。

现在登录
聚合文章
Servicios profesionales Organizaciones
1年前
在Gitee收获近 5k Star,更新后的Vue版RuoYi有哪些新变化?
1年前
vue3.x reactive、effect、computed、watch依赖关系及实现原理
1年前
Vue 3 新特性:在 Composition API 中使用 CSS Modules
1年前
标签
AI AI项目 css docker Drone Elaticsearch es5 es6 Geometry Go gru java Javascript jenkins lstm mysql mysql优化 mysql地理位置索引 mysql索引 mysql规范 mysql设计 mysql配置文件 mysql面试题 mysql高可用 nginx Redis redis性能 rnn SpringBoot Tensorflow tensorflow2.0 UI设计 vue vue3.0 vue原理 whistle ZooKeeper 开源项目 抓包工具 日志输出 机器学习 深度学习 神经网络 论文 面试题
相关文章
我收集了12款自动生成器,无聊人士自娱自乐专用
输入一张图,就能让二次元老婆动起来,宛如3D:这全是为了科学啊
使用ONNX+TensorRT部署人脸检测和关键点250fps
基于 Keras 的烟火检测
松鼠乐园

资源整合,创造价值

小伙伴
墨魇博客 无同创意
目录
重大新闻 Centos CSS Docker ES5 ES6 Go Java Javascript Linux Mac MySQL Nginx Redis Springboot Tensorflow Vue Vue2.x从零开始 Windows 书籍推荐 人工智能 前端资源 后端资源 壁纸 开源项目 测试 论文
Copyright © 2018-2022 松鼠乐园. Designed by nicetheme. 浙ICP备15039601号-4
  • 重大新闻
  • Centos
  • CSS
  • Docker
  • ES5
  • ES6
  • Go
  • Java
  • Javascript
  • Linux
  • Mac
  • MySQL
  • Nginx
  • Redis
  • Springboot
  • Tensorflow
  • Vue
  • Vue2.x从零开始
  • Windows
  • 书籍推荐
  • 人工智能
  • 前端资源
  • 后端资源
  • 壁纸
  • 开源项目
  • 测试
  • 论文
热门搜索
  • jetson nano
  • vue
  • java
  • mysql
  • 人工智能
  • 人脸识别
迦娜王
坚持才有希望
1224 文章
35 评论
242 喜欢
  • 0
  • 0
  • Top