向AI转型的程序员都关注了这个号????????????

机器学习AI算法工程   公众号:datayx

各种优化器Optimizer的总结与比较

https://blog.csdn.net/weixin_40170902/article/details/80092628

  1. 优化损失函数
    损失函数:为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。在线性回归中,损失函数通常为样本输出和假设函数的差取平方。
    优化损失函数说明了就是想让损失函数收敛到了一定的值,这样模型才是最优的。

    梯度下降优化法经历了

    SGD→SGDM→NAG→AdaGrad→AdaDelta→Adam→Nadam 这样的发展历程。之所以会不断地提出更加优化的方法,是引入了动量Momentum概念。

2.梯度下降法调优
梯度下降法就好比一个蒙着眼睛的人下山,每次在负梯度最大的方向,向前走一步,走出一步后,比较前后的的落差,
若落差小于一定阈值,则认为到达山谷,若落差大于阈值,则继续向前走,直到到达山谷。

在梯度下降法中调优比较重要的是3个因素,步长、初始值、归一化
(1)步长:又称学习率,决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。
步长太小,收敛慢,步长太大,会远离最优解。所以需要从小到大,分别测试,选出一个最优解。
(2)初始值:随机选取初始值,当损失函数是非凸函数时,找到的解可能是局部最优解,需要多测试几次,
从局部最优解中选出最优解。当损失函数是凸函数时,得到的解就是最优解。
(3)归一化:如果不归一化,会收敛的很慢,会形成之字的路线。

3.BGD SDG MBGD
批量梯度下降法BGD
gradient = np.dot(xTrains, loss) / m  #对所有的样本进行求和,然后除以样本数
theta = theta - alpha * gradient

随机梯度下降
gradient = loss[index1]*x[index1]       #只取这一个点进行更新计算
theta = theta - alpha * gradient.T

BGD
计算梯度时使用所有的样本,这样每次算出来的梯度都是当前最优的方向。
优点:迭代次数少; 若损失函数为凸函数,能够保证收敛到全局最优解;若为非凸函数,能够收敛到局部最优值(结果的准确度)
缺点:训练速度慢(时间,每一次训练需要的时间);需要内存大(空间);不支持在线更新

SGD:
和BGD类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度
优点:训练速度快; 支持在线更新; 有几率跳出局部最优解
缺点:容易收敛到局部最优,并且容易被困在鞍点; 迭代次数多

4.牛顿法
基本思想是对损失函数的二阶泰勒展开进行求导。本质上牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。
梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,
坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。
(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。)

5.Momentum [mə'mentəm] 动量优化器
Momentum旨在加速学习,特别是处理高曲率、小但一致的梯度,或带噪音的梯度。
Momentum算法会观察历史梯度(动量),若当前梯度的方向与历史梯度一致(表明当前样本不太可能为异常点),
则会增强这个方向的梯度,若当前梯度与历史梯方向不一致,则梯度会衰减。

形象理解:一个球推下山,球在下坡时积累惯性(动量),在途中若球运动方向不变,因为惯性球会越来越快,若球的方向发生变化,因为惯性球的速度会变慢。
加入的这一项,可以使得梯度方向不变的维度上速度变快,梯度方向有所改变的维度上的更新速度变慢,这样就可以加快收敛并减小震荡。
超参数设定值:  一般 γ 取值 0.9 左右。
缺点:相当于盲目地沿着坡滚,如果它能具备一些先知,例如快要上坡时,就知道需要减速了的话,适应性会更好。

6.NAG(Nesterov Momentum)
Momentum方法中梯度方向由积累的动量和当前梯度方法共同决定,与其看当前梯度方向,不妨先看看跟着积累的动量走一步是什么情况,再决定怎么走。
在小球向下滚动的过程中,我们希望小球能够提前知道在哪些地方坡面会上升,这样在遇到上升坡面之前,小球提前就开始减速,就不容易陷入局部最优解。

7.Adagrad(Adaptive gradient algorithm)
自适应梯度法。它通过记录每次迭代过程中的前进方向和距离,从而使得针对不同问题,有一套自适应调整学习率的方法,
对于出现频率较低参数采用较大的α更新;相反,对于出现频率较高的参数采用较小的α更新。

8.RMSprop
Adagrad会累加之前所有的梯度平方,而RMSprop仅仅是计算对应的平均值,因此可缓解Adagrad算法学习率下降较快的问题。

9.Adam
Adam是另一种自适应学习率的方法。总结以上算法,以SGD作为最初的算法,Momentum在其基础上加入了一阶动量(历史梯度的累计),
AdaGrad和RMSProp在其基础上加入了二阶动量(历史梯度的平方累计),Adam就是结合了一阶动量和二阶动量算法。

10.Nadam
Adam是集大成者,而Nadam = Adam + NAG。

梯度下降代码实现

https://www.jianshu.com/p/f5049e8a27d0


阅读过本文的人还看了以下文章:

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

长按图片,识别二维码,点关注

SGD、Adam优化器相关推荐

  1. Pytorch框架中SGD&Adam优化器以及BP反向传播入门思想及实现

    因为这章内容比较多,分开来叙述,前面先讲理论后面是讲代码.最重要的是代码部分,结合代码去理解思想. SGD优化器 思想: 根据梯度,控制调整权重的幅度 公式: 权重(新) = 权重(旧) - 学习率 ...

  2. #深度解析# 深度学习中的SGD、BGD、MBGD、Momentum、NAG、Adagrad、Adadelta,RMSprop、Adam优化器

    关于SSE.MSE.RMSE.R-Squared等误差公式的深度解析请参考我的这篇博文->#深度解析# SSR,MSE,RMSE,MAE.SSR.SST.R-squared.Adjusted R ...

  3. 通俗理解 Adam 优化器

    Adam吸收了Adagrad(自适应学习率的梯度下降算法)和动量梯度下降算法的优点,既能适应稀疏梯度(即自然语言和计算机视觉问题),又能缓解梯度震荡的问题 常见优化器的详细解析请参考此文章-># ...

  4. Adam优化器(通俗理解)

    网上关于Adam优化器的讲解有很多,但总是卡在某些部分,在此,我将部分难点解释进行了汇总.理解有误的地方还请指出. Adam,名字来自:Adaptive Moment Estimation,自适应矩估 ...

  5. AdaGrad、RMSProp、Adam优化器

    AdaGrad Adaptive Gradient ,自适应梯度,它能够对每个不同的参数调整不同的学习率,对频繁变化的参数以更小的步长进行更新,而稀疏的参数以更大的步长进行更新. 公式: gt表示第t ...

  6. tf.keras.optimizers.Adam 优化器 示例

    tf.keras.optimizers.Adam 优化器 示例 tf.keras.optimizers.Adam(learning_rate=0.001, # 学习率 默认 0.001beta_1=0 ...

  7. PyTorch基础-Adam优化器使用-06

    当不知道使用什么优化器的时候可以使用adam优化器 代码 import numpy as np import torch from torch import nn,optim from torch.a ...

  8. 2学习率调整_Keras的Adam优化器参数理解及自适应学习率

    Adam优化器是目前应用最多的优化器. optimizer--adam_小笨熊~~走向程序猿的~~历程~~专栏-CSDN博客​blog.csdn.net 在训练的过程中我们有时会让学习率随着训练过程自 ...

  9. NLP 神经网络训练慎用 Adam 优化器

    https://www.jianshu.com/p/48e71b72ca67 NLP 神经网络训练慎用 Adam 优化器 theoqian关注 12019.02.10 16:01:45字数 499阅读 ...

  10. Keras Adam代码解析以及EMA的Adam优化器

    文章目录 Keras Adam 初始化 更新函数 带EMA的Adam Adam理论可以参考下这里 优化算法的选择 Keras Adam class Adam(Optimizer):"&quo ...

最新文章

  1. CheckBox UITableViewCell
  2. 常见的面试思考题(MARK)
  3. 专业音频如何把电平转换成dbu_这是我见过最细致的音频系统增益设置指南,跟着学起来!...
  4. JS实现生成一个周对应日期数组
  5. VBA_Excel_教程:过程,函数
  6. 马斯克嘲讽元宇宙:谁会整天戴个头盔?
  7. css广告跟随,jQuery网页右侧广告跟随滚动代码分享
  8. iOS开发UIScrollView使用详解
  9. 渐进式加载 - 基础讲解
  10. MATLAB---同态滤波
  11. 读取xlsx,根据模板图片批量添加文字生成相关图片,如证书,奖状,名片等
  12. 接口测试常用文档模板介绍
  13. FPGA小技巧 - 缩减运算符
  14. 从TCL的40年变革史,看中国制造之路
  15. 银行家算法的实验报告
  16. 春招+秋招面试经历汇总,今天我们聊聊程序员应该进大厂还是国企(Java后端方向)
  17. 你愿意给应届生200万年薪吗?
  18. D3D9 HOOK [透视原理]
  19. 基于51的MPX4115压力检测仿真
  20. 【java实现100以内加减法口算练习程序】

热门文章

  1. 温州近10%的网站存在高危安全漏洞
  2. Deep Learning(深度学习)网络资源
  3. oracle浅析导致数据库性能问题的常见原因
  4. hdu Super Jumping
  5. Spring的事务管理难点剖析(5):联合军种作战的混乱
  6. phantom物料 issue
  7. 关闭Visual Studio 实时调试器
  8. 量子计算机的系统论思考,量子计算机发展带来的思考..doc
  9. 计算机90学时培训小结,90学时培训学习心得体会
  10. android 代码植入,Android Studio之Debug运行期代码植入的方法