深度学习常见的优化算法

2023-05-16

文章目录

  • 1.梯度下降算法(batch gradient descent BGD)
  • 2.随机梯度下降法(Stochastic gradient descent SGD)
  • 3.小批量梯度下降(Mini-batch gradient descent MBGD)
  • 4.动量法
  • 5.AdaGrad
  • 6.RMSProp
  • 7.Adam

1.梯度下降算法(batch gradient descent BGD)

每次迭代都需要将样本都送入,这样做的好处是每次迭代都顾及了全部样本,做到了全局最优化算法。
关键词:全局优化

2.随机梯度下降法(Stochastic gradient descent SGD)

针对BGD速度过慢的问题,提出了随机梯度下降算法,随机梯度下降算法是从样本中随机抽出一组,训练后按梯度更新一次,然后再抽取一组,再更新一次。在样本量较大的情况下,可能不用训练完样本就可以获得一个损失值在可接受范围内的模型。
torch.optim.SGD()

3.小批量梯度下降(Mini-batch gradient descent MBGD)

上面提到SGD拥有更快的速度,但是也可能存在一定问题,对于单个样本的训练可能会带来很多噪声,这使得SGD并不是每次迭代都向着最优的方向,因此在刚开始训练时收敛速度可能会很快,但是训练一段时间后速度就会变慢。基于上面的问题又提出了小批量梯度下降算法,它是每次从样本中随机抽取一小批进行训练的,而不是一组,这样可以保证效果且保证速度。

4.动量法

mini-batch SGD算法虽然能够带来很好的训练速度,但是在到达模型最优的时候并不总是真正意义上的最优(可能陷入了局部最优的情况),而是在最优点附近徘徊。
另外一个问题是mini-batch SGD 需要我们挑选一个合适的学习率,当我们采用较小学习率时可能会导致网络的收敛速度太慢;当我们采用较大的学习率时,可能会导致训练过程中优化的幅度跳过函数最优点。我们所希望的仅仅是网络在优化的时候损失函数有一个很好的收敛速度同时摆动的幅度不至于过大。
所以动量法Momentum优化器刚好能解决上述所面临的问题。他通过基于梯度的移动指数加权平均,对网络的参数进行了平滑处理,让梯度的摆动幅度更加平缓。
v = 0.8 v − 0.2 ∇ w , 其 中 ∇ w 表 示 前 一 次 的 梯 度 v = 0.8v-0.2\nabla w,其中\nabla w表示前一次的梯度 v=0.8v0.2w,w
w = w − α v , α 表 示 学 习 率 w=w-\alpha v,\alpha表示学习率 w=wαv,α

关键词:对梯度进行平滑处理,防止振幅过大。

5.AdaGrad

AdaGrad算法就是将每一个参数的每一次迭代的梯度取平方累加之后再进行开方操作,用全局学习率除以这个数字,作为学习率的动态更新,从而达到动态学习率的效果。(前面学习率大,后面学习率小)
g r a d e n t = h i s t o r y _ g r a d e n t + ( ∇ w ) 2 gradent = history\_gradent+(\nabla w)^{2} gradent=history_gradent+(w)2
w = w − α g r a d e n t + ψ ∇ w , 其 中 ψ 为 常 数 , 为 了 保 证 数 值 稳 定 约 设 为 1 0 − 7 w =w-\frac{\alpha}{\sqrt {gradent} +\psi}\nabla w,其中\psi为常数,为了保证数值稳定约设为10^{-7} w=wgradent +ψαw,ψ107

关键词:自适应学习率

6.RMSProp

Momentum算法中,虽然初步解决了优化中摆动幅度过大的问题,为了进一步优化损失函数在更新过程中摆动幅度过大的问题,并且为了进一步加快函数的收敛速度,RMSProp算法对参数的梯度采取了加权平方的算法。
g r a d e n t = 0.8 h i s t o r y _ g r a d e n t + 0.2 ( ∇ w ) 2 gradent = 0.8history\_gradent+0.2(\nabla w)^{2} gradent=0.8history_gradent+0.2(w)2
w = w − α g r a d e n t + ψ ∇ w w=w-\frac{\alpha}{\sqrt{gradent}+\psi}\nabla w w=wgradent +ψαw

关键词:学习率加权

7.Adam

Adam(Adaptive Moment Estimation)算法是将Momentum算法和RMSProp算法结合起来使用的一种算法,能够防止梯度的摆动幅度过大,同时能够加快收敛速度。

1.需要初始化梯度的累积量和平方累积量
v w = 0 , s w = 0 v_w=0,s_w=0 vw=0,sw=0
2.第t轮训练中,我们首先可以计算得到Momentum和RMSProp的参数更新:
v w = 0.8 v + 0.2 ∇ w v_w=0.8v+0.2\nabla w vw=0.8v+0.2w,Momentum计算的梯度
s w = 0.8 s + 0.2 ( ∇ w ) 2 s_w=0.8s+0.2(\nabla w)^{2} sw=0.8s+0.2(w)2,RMSProp计算的梯度
3.对其中值进行处理后,得到:
w = w − α v w s w + ψ w=w-\alpha \frac{v_w}{\sqrt{s_w}+\psi} w=wαsw +ψvw

torch.optim.Adam()
关键词:动量法+RMSProp,学习率自适应,振幅不会过大

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习常见的优化算法 的相关文章

  • docker基本命令及使用实例

    docker基本命令 特别鸣谢 xff1a B站up主 狂神说java的视频 xff0c 让我能短时间了解docker docker文件系统 docker镜像为分层设计 xff0c 相比于全量的虚拟机镜像 xff0c 少了引导程序bootf
  • ubantu 系统分区介绍

    假设分区有40个G 1 500M引导分区 2 10个G的swap分区 swap是一个内存交换空间 xff0c 当内存溢出 xff0c 或者计算机打算休眠的时候 会将数据存在swap分区中 在windows系统中是三个文件 swap的大小通常
  • H3C交换机常用命令(初学)

    一 显示交换机当前的一些配置信息 1 display current configuration 显示当前的一些配置信息 xff0c 如vlan xff0c 端口详细信息 2 display saved configuration 显示下次
  • Linux下的Tcp通信项目范例【demo】

    一 适合阅读对象 2 4个月的初学者 C语言编程方向 xff09 二 项目内容 xff1a 设计一个可以符合多用户进行线上查阅乐器的商城 xff0c 要求可以多个用户查看 xff0c 管理员可随时修改内容 xff0c 普通用户仅可查看 xf
  • 平衡小车之陀螺仪调参

    一 平衡小车 平衡小车作为控制进阶 xff0c 成为每个学习PID控制算法者的必经之路 xff0c 可难可易 xff0c 找到方法则非常容易 xff0c 找不到方法可能盲调数天也没有收获 要让小车平衡 xff0c 我认为需要掌握的技能有几点
  • 常用的字符函数和字符串函数

    一 分类 求字符串长度 xff1a strlen长度不受限制的字符串函数 xff1a strcpy strcat strcmp长度受限制的字符串函数 xff1a strncpy strncat strncmp字符串查找 xff1a strs
  • 成功解决Command "python setup.py egg_info" failed with error code 1 in C:\Users\AppData\

    成功解决Command amp quot python setup py egg info amp quot failed with error code 1 in C Users AppData 目录 解决问题 解决方法 解决问题 Com
  • 解决JetPack4.2 自制载板无法开机

    使用下面方法会导致无法连接显示器 xff01 xff01 xff01 1 源码下载 https developer nvidia com embedded downloads 选择 L4T Sources 下载 L4T JAX and TX
  • Android开发技巧 (五) —— Lambda表达式

    Lambda表达式本质是一种匿名方法 xff0c 它既没有方法名 xff0c 也没有访问修饰符和返回值类型 xff0c 用它来写代码更简洁 xff0c 更易懂 Lambda是Java8的新特性 xff0c 所以要在app build gar
  • 树莓派4B安装ubuntu mate20 +putty和vncsever远程登录+安装ROS

    新买了树莓派4B xff0c 安装环境费了好大功夫 xff0c 终于找到一套可以用的方案 xff0c 记录一下 基本 xff1a 树莓派4B一块64G内存卡电源 显示器 鼠标 键盘 安装系统和换软件源 参考树莓派4B安装Ubuntu Mat
  • jsp医疗辅助诊断管理系统servlet开发mysql数据库web结构java编程计算机网页项目

    一 源码特点 JSP医疗辅助诊断管理系统是一套完善的java web信息管理系统 xff0c 对理解JSP java编程开发语言有帮助serlvet 43 dao 43 bean 模式开发 xff0c 系统具有完整的源代码和数据库 xff0
  • MATLAB2019a中文设置的一些说明

    MATLAB2019a中文设置的一些说明 问题 xff1a 今天打开matlab发现是英文的 xff0c 想要修改成中文 网上方法 xff1a preferences xff08 预设项 xff09 General xff08 常规 xff
  • ERROR: Could not install packages due to an EnvironmentError: [Errno 13] 权限不够的解决办法

    关于错误 xff1a ERROR Could not install packages due to an OSError Errno 13 Permission denied 39 usr local label cn txt 39 Co
  • 每天进步一点点(一)

    1 说一下sram xff0c flash memory xff0c 及dram的区别 xff1f sram xff1a 静态随机存储 这里的静态是指这种存储器只需要保持通电 xff0c 里面的数据就可以永远保持 但是当断电之后 xff0c
  • GPS载频信号简述(L1、L2、L3、L5)

    L1 1575 42 1 023MHzL2 1227 60 1 023MHz L3 用途和频率暂未公开 资料显示其用于发现核爆炸或其他高能量红外辐射事件的核爆炸侦察系统 NDS 平台提供通讯联系 L5 1176 45 1 023MHz xf
  • Ajax详解及使用Ajax时的返回值类型有哪些?

    Ajax详解 Ajax 61 异步 JavaScript 和 XML Ajax 是一种用于创建快速动态网页的技术 通过在后台与服务器进行少量数据交换 xff0c Ajax 可以使网页实现异步更新 这意味着可以在不重新加载整个网页的情况下 x
  • ubuntu20.04双系统分区

    一 分四个区 xff0c 记录下 主分区和逻辑分区目前感觉没啥影响 但是有的电脑可能数量会有限制 boot引导分区 500M 交换分区 xff0c 16G及以下与内存大小一致 根目录 xff0c 如果要安装cuda之类的尽量50G以上吧 其
  • Vins-Fusion运行kitti,euroc和tum数据集并使用evo评估

    基于ubuntu18 04 VIns Fusion 1 修改程序输出位姿信息修改为TUM格式 为了方便评估 xff0c 先将程序的输出位姿信息修改为tum格式 xff0c 需要做如下改动 1 1 回环输出位姿文件pose graph cpp
  • JETSON ORIN NX 烧录系统镜像

    所需环境 xff1a Ubuntu 操作系统 本方法适用于SDKManager 找不到套件的情况 xff01 解决方法如下 xff1a 进入NVIDIA官网 xff08 Jetson Linux 35 2 1 NVIDIA Develope

随机推荐

  • 解决Komodo上自带D435可以打开而外接D435i打不开的原因

    解决Komodo上自带D435可以打开而外接D435i打不开的原因 因为Komodo上装的realsense SDK 和realsense ros版本不对应以及版本太低的原因 xff0c 所以各种问题 按照realsense和realsen
  • C++泛型编程,标准模板库(STL)

    C 43 43 的特点就是添加了面向对象和泛型 面向对象是用类实现的 xff0c 泛型是用模板实现的 xff0c C 43 43 的标准模板库 STL 是泛型一个实例 xff0c 已经被集成到C 43 43 xff0c STL是一些常用的数
  • [工程编写]CMakeLists.txt 如何编写

    最近开始写一些SLAM工程 xff0c 所以对涉及到的内容做一些整理 xff0c 那么要做的第一件事情就是编写一个CMakeLists txt 本文那任乾大佬在知乎关于雷达自动驾驶SLAM的工程距离 1 信息指定 cmake版本确定 xff
  • 在执行 pip install 时遇到错误: ERROR: Complete output from command python setup.py egg_info:

    在执行 pip install 时遇到错误 xff1a pip install U docker compose ERROR Complete output from command python setup py egg info ERR
  • 树莓派登录问题

    在使用树莓派的过程中 xff0c 多次遇到了开机后输入正确密码却被重复多次要求输入的情况 xff0c 在查看他人经验后 xff0c 总结出以下两种情况及可行的方法 不确定密码是否正确 参考博客 纸末 树莓派忘记密码的解决方法 1 xff0c
  • 什么是SDK和API?

    SDK xff1a 在搭建环境的时候知道的sdk xff0c 但并不知道有什么用 SDK Software Development Kit 翻译成中文就是 34 软体开发工具组 34 是用来帮一个 产品 或 平台 开发应用程式的工具组 xf
  • 华为开发者大会总结——个人总结

    方舟编译器 xff08 开源 xff09 xff1a 干掉Java虚拟机 将java代码直接编译成机器码 xff0c 静态语义好编译 xff0c 核心是静态编译出动态语义 xff08 通过华为编译实验室的核心专利 xff09 xff0c 代
  • LoRa关键参数 1、扩频因子(SF) 2、编码率(CR) 3、信号带宽(BW) 4、LoRa信号带宽BW、符号速率Rs和数据速率DR的关系 5、

    LoRa 学习 xff1a LoRa 关键参数 xff08 扩频因子 xff0c 编码率 xff0c 带宽 xff09 的设定及解释 1 扩频因子 xff08 SF xff09 2 编码率 xff08 CR xff09 3 信号带宽 xff
  • MarkDown的语法

    使用MarkDoown时应该注意些什么呢 目录 一 添加标题 二 引用代码块 三 嵌入图片 1 本地图片 2 互联网图片 四 快捷键使用 五 分界线的使用 一 添加标题 在文字前加入相应数量的 一级标题 二级标题 三级标题 四级标题 五级标
  • python试爬李毅吧贴子标题,爬虫最初级

    注 xff1a 以下所有python代码均运行于2 7 0 最近想抓点数据存起来 xff0c 开始捣鼓python 爬虫技术以前没接触过 xff0c 这一回就当练手 xff0c 从零开始 xff0c 从最原始的方式开始 先定个小目标 xff
  • Activity的生命周期

    图来自百度百科 onCreate 启动activity时被调用 xff0c 用于进行初始化操作 xff08 加载布局 绑定事件等 xff09 xff0c 不应在onCreate 中做过多的不必要操作 xff0c 避免造成打开activity
  • Activity的启动模式

    以下为读书笔记 xff1a 实际项目中 xff0c 我们要通过特定的需求 xff0c 为每个活动指定恰当的启动模式 Android一共有4种启动模式 xff1a standard singleTop singleTask singleIns
  • PID参数 Ziegler-Nichols基于时域响应曲线的整定 反应曲线法

    PID控制器是工业过程控制中广泛采用的一种控制器 xff0c 其中 xff0c P I D分别为比例 xff08 Proportion xff09 积分 xff08 Integral xff09 微分 xff08 Differential
  • 郑学坚《微型计算机原理及应用》考点精讲 36讲

    链接 xff1a https pan baidu com s 12 vGBRrjOd UtO8P4e9bow 提取码 xff1a tqmp 当初考研时买的网课 xff0c 现在也用不着了 xff0c 赠与有缘人 书籍记录着别人多年时光总结出
  • 几种常用排序算法

    排序算法代码如下 xff1a void Sort Algorithm Bubble Sort int amp nums const int len bool haschange 61 true for int i 61 0 i lt len
  • 四旋翼姿态解算

    代码思路如下 xff1a 姿态解算 void IMU update float dT imu state st state float gyr VEC XYZ s32 acc VEC XYZ s16 mag val VEC XYZ imu
  • 树莓派4B-基于MCP2515的CAN通信过程记录篇

    本文主要记录使用树莓派4B xff0c 通过外接MCP2515模块来实现CAN通信 xff0c 使用基于Can utils实现CAN消息的收发 准备工作 xff1a 树莓派MCP2515模块杜邦线若干 知乎上一篇较为详细的参考 xff0c
  • nuxt踩坑集

    目录结构 assets 资源文件 用于组织未编译的静态资源如 LESS SASS或 JavaScript components 组件 layouts page 模板页面 xff0c 默认为 default vue可以在这个目录下创建全局页面
  • 记录个人在安装D435i驱动时出现的问题及解决方案

    目录 1 驱动安装 xff1a 2 启动Intel RealSense Viewer后报错No Frames Recevied 3 Record时报错Error opening file 1 驱动安装 xff1a 参考这篇博客 xff1a
  • 深度学习常见的优化算法

    文章目录 1 梯度下降算法 xff08 batch gradient descent BGD 2 随机梯度下降法 xff08 Stochastic gradient descent SGD 3 小批量梯度下降 Mini batch grad