深度学习 优化算法

2023-05-16

深度学习优化算法

  • 优化算法
    • 概念
    • 动量
    • 框架
  • SGD
  • Momentum
  • NAG
  • AdaGrad
  • RMSProp/AdaDelta
  • Adam
  • Ndam
  • 参考

优化算法

概念

优化算法的功能是通过改善训练方式来最大化或者最小化损失函数。模型内部有些参数,是用来计算测试集中目标值 Y Y Y的真实值和预测值的偏差程序,基于这些参数就形成了损失函数 E ( x ) E(x) E(x)。在有效地训练模型并产生准确结果时,模型的内部参数起到了非常重要的作用。

动量

在这里插入图片描述

动量内容可以参考: 动量,EMA指数移动平均

动量特点:

  • 下降初期时,使用上一次参数更新,下降方向一致,能够很好地进行加速。
  • 下降中后期,在局部最小值来回震荡,使得更新幅度增大,跳出局部最优
  • 在梯度改变方向时,能够减少更新。

在这里插入图片描述

框架

优化算法大致经历了SGD–>SGDM–>AdaGrad–>AdaDelta—>Adam—>Ndam的发展过程。以下是优化算法的框架:

设待优化参数为 ω \omega ω,目标函数为 f ω f{\omega} fω,初始化学习率为: l r lr lr。对于每个epoch t t t

  1. 计算目标梯度关于当前参数的梯度: g t = ▽ f ( ω t ) g_t = \bigtriangledown f(\omega_t) gt=f(ωt)
  2. 根据历史梯度计算一阶动量和二阶动量: m t = ϕ ( g 1 , g 2 , . . . g t ) ; V t = φ ( g 1 , g 2 , . . . , g t ) m_t=\phi(g_1, g2_,...g_t); V_t=\varphi(g_1, g_2, ..., g_t) mt=ϕ(g1,g2,...gt);Vt=φ(g1,g2,...,gt)
  3. 计算当前时刻下降梯度: η = a ∗ m t V t \eta=a*\frac{m_t}{\sqrt{V_t}} η=aVt mt
  4. 根据下降梯度进行更新: ω t + 1 = ω t − η t \omega_{t+1} = \omega_t-\eta_t ωt+1=ωtηt

SGD

​​在这里插入图片描述
为了避免SGD和标准梯度下降中存在的问题,一个改进的方法为小批量梯度下降,对每个批次中的n个训练样本,小批量梯度下降只执行一次更新。使用小批量梯度下降的优点是:

  • 减少参数频繁更新,得到更好的收敛效果
  • 可以使用最新的深层学习库中通用的矩阵优化方法,使计算小批量数据的梯度更加高效

使用SGD缺点:

  1. 很难选择合适的学习率。太小的学习率会导致网络收敛过去缓慢,而学习率太大会影响收敛,并导致损失函数在最小值波动,出现梯度发散
  2. 相同的学习率并不适用于所有的参数更新。如果训练集数据很稀疏,且特征频率非常不同,则不应该在相同的程度上进行参数更新。
  3. 在神经网络中,最小化非凸误差函数的另一个关键挑战是避免陷于多个其他局部最小值中。

Momentum

​​​​在这里插入图片描述

NAG

​​在这里插入图片描述

AdaGrad

Adagrad方法是通过参数来调整合适的学习率η,对稀疏参数进行大幅更新和对频繁参数进行小幅更新。因此,Adagrad方法非常适合处理稀疏数据。在时间步长中,Adagrad方法基于每个参数计算的过往梯度,为不同参数θ设置不同的学习率。
在这里插入图片描述

Adagrad方法的主要好处是,不需要手工来调整学习率。大多数参数使用了默认值0.01,且保持不变。Adagrad方法的主要缺点是,学习率η总是在降低和衰减。因为每个附加项都是正的,在分母中累积了多个平方梯度值,故累积的总和在训练期间保持增长。这反过来又导致学习率下降,变为很小数量级的数字,该模型完全停止学习,停止获取新的额外知识。因为随着学习速度的越来越小,模型的学习能力迅速降低,而且收敛速度非常慢,需要很长的训练和学习,即学习速度降低。因此AdaGrad需要改善学习率不断下降的问题。

RMSProp/AdaDelta

在这里插入图片描述

AdaDelta方法的另一个优点是,已经不需要设置一个默认的学习率。目前已完成的改进1) 为每个参数计算出不同学习率;2) 也计算了动量项momentum;3) 防止学习率衰减或梯度消失等问题的出现。
还可以做什么改进?在之前的方法中计算了每个参数的对应学习率,但是为什么不计算每个参数的对应动量变化并独立存储呢?这就是Adam算法提出的改良点。

Adam

在这里插入图片描述

Ndam

在这里插入图片描述

参考

  1. 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
  2. 深度学习中的优化算法串讲
  3. 深度学习最全优化方法总结比较:SGD,Adagrad,Adadelta,Adam,Adamax,Nadam
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 贪心算法详解

    前言 贪心算法是动态规划的一种特殊情况 xff0c 需要满足更为苛刻的条件 xff1a 贪心选择 算法种类时间复杂度暴力算法指数级别动态规划多项式级别贪心算法线性级别 什么是贪心选择性质呢 xff0c 简单说就是 xff1a 每一步都做出一
  • Android驱动程序开发实例精讲-0_Android系统HAL驱动开发经典案例详解(基于Android4.0)

    Android系统HAL驱动开发经典案例详解 xff08 基于Android4 0 xff09 目的 xff1a 通过学习一个LED点灯的简单功能 xff0c 掌握Linux驱动程序与HAL硬件抽象层之间的调用方法 xff0c 同时掌握JN
  • 使用putty连接到虚拟机centos被拒绝解决方法

    今天用putty去ssh本地的虚拟机中的centos系统 xff0c 发现连接被拒 xff0c 跳出了这个错误 因为是第一次用putty连接到自己电脑上的虚拟机 xff0c 碰到这个错误 xff0c 我首先想到是不是centos中的防火墙没
  • libvlc 使用mediaplayer 播放rtsp

    环境 ubuntu18 04 vlc3 0 6源码 从 github上下载的vlc 源码 xff0c 默认配置 xff0c 默认编译 xff0c 用命令 vlc rtsp 192 168 43 129 10086 stream 竟然无法播放

随机推荐

  • c语言下,关闭socket的两种方式

    c语言关闭socket的两种方式 一 shutdown include lt sys socket h gt int shutdown int sockfd int how how的方式有三种分别是 SHUT RD xff08 0 xff0
  • 文件系统(七)—图解进程文件操作

    学习文件系统 xff0c 我们的目标是如何实现一个简单的文件系统 xff1f 磁盘上需要什么结构 xff1f 它们需要记录什么 xff1f 如何访问 xff1f 对于这些问题 xff0c 我们就需要理解文件系统的基本工作原理 xff0c 可
  • 解决Docker ADD/COPY 报ADD failed: stat /var/lib/docker/tmp/docker-builder****: no such file or director

    意思就是说 ADD source target 命令找不到source的文件 搜了大致有以下情况 xff1a 没有source文件 xff0c 或者source文件跟Dockerfile不在同一目录 xff0c 或者命令docker bui
  • Qt各个版本和插件的下载方法

    Qt及其插件的下载 网址 xff1a http master qt io 1 输入网址 后 2 点开archive后 3 打开qt后 xff0c 出来的是qt的版本 4 下载5 2版本为例 xff0c 打开5 2 后 5 里面有两个版本5
  • Centos7 安装Docker以及图形管理界面

    Docker的安装 1 确保系统中没有旧版本 如果安装过的话 xff0c 没有安装则忽略此步 yum span class token operator span y remove docker docker common docker s
  • Android汽车服务篇(三) CarPropertyService下篇

    一 简介 上篇文章介绍了Android汽车服务篇 二 CarPropertyService上篇 我们继续看一看看CarPropertyService 这个服务也是很重要的 绝大部分与车辆硬件功能相关联的属性 如空调 车舱功能 车辆传感器等都
  • PPTV面试算法思考-最长对称子字符串

    题目 最近在微信公众号里看看到了一个PPTV的面试算法题 xff0c 感觉难度适中 xff0c 想试下 题目的内容为求一个字符串的最长对称子字符串 如 xff1a 输入 输出 abba 4 abad 3 acccbaa 3 我的算法1 自己
  • mardown语法详解

    这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题 xff0c 有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中 居左 居右SmartyP
  • C++

    由于见到论坛上不少找书的 xff0c 于是就稍稍汇总总结了一下 xff0c 作为本人即将推出的 C 43 43 资源大汇 系列文章的引子 本文只是初稿 xff0c 其中有不少的纰漏 笔误 打误 xff08 打字错误 xff09 希望各位纠正
  • Tx2 设置静态IP的两种方法

    Tx2设置静态ip的两种方法 Tx2静态ip设置可通过桌面右上角的有线连接配置中的ipv4的配置来设置 xff1b Tx2静态ip设置的第二种方法是通过间接修改ipv4的配置来设置 xff1b 用ifconfig来查看你使用的是哪个网络设备
  • 七 Gazebo学习总结之传感器的添加

    本文展示的是使用者怎么直接通过Gazebo其他模型来创建复杂的模型 xff0c 以及使用 lt include gt 和 lt joint gt 标签来连接一个复杂模型的不同部分 1 增加一个激光器 a 进入先前教程的模型目录中 cd ga
  • STM32、FreeRTOS—— SVC 和 PendSV

    问 I went through the xTaskStartSechudler function which ends up triggering the SVC instruction and i came to know that i
  • MYNTEYE-SDK-ROS-Kinetic-VINS-Mono环境搭建到运行(Ubuntu 16.04)非常详细

    一 首先安装ROS环境 1 确保系统软件处于最新版 xff1a sudo apt get update 2 打开终端 xff0c 输入命令 wget https raw githubusercontent com oroca oroca r
  • win7关机一直卡在正在关机

    win7关机一直卡在正在关机 尝试用win7系统准备工具 xff08 sysprep xff09 来恢复到系统的初始状态 步骤 xff1a 1 win 43 R打开运行窗口 xff1b 2 在窗口中输入 xff1a sysprep xff0
  • Jetson TX2学习笔记(一):软硬件基础环境配置

    拿到了Jetson TX2套件 xff0c 在给套件安装开发环境时踩了很多坑 上网查阅的资料也都没能解决问题 xff0c 这里把成功安装步骤一一记录下来 xff0c 同时将所遇到且网上未提及的问题也进行一下分析 先说一下 xff0c Jet
  • 启动Docker,出现“Got permission denied while trying to connect to the Docker daemon socket“的情况

    启动docker时 xff0c 出现 Got permission denied while trying to connect to the Docker daemon socket 的情况 解决方法 xff1a docker守护进程启动
  • 【matlab调用m文件方法】

    matlab如何调用m文件 matlab调用m文件方法
  • kubernetes(k8s)介绍安装和部署实战

    kubernetes 基本介绍 kubernetes xff0c 简称 K8s xff0c 是用 8 代替 8 个字符 ubernete 而成的缩写 是一个开源 的 xff0c 用于管理云平台中多个主机上的容器化的应用 xff0c Kube
  • latex与mathtype的对应

    在latex中一些特殊的字体在用mathtype实现的时候需要找到相应的字体 xff0c 就是说latex实现的所有特殊的字体 xff0c 实现 xff0c 在mathtype中都能找到相应的对应 例如下面的文本对应 R E u
  • 深度学习 优化算法

    深度学习优化算法 优化算法概念动量框架 SGDMomentumNAGAdaGradRMSProp AdaDeltaAdamNdam参考 优化算法 概念 优化算法的功能是通过改善训练方式来最大化或者最小化损失函数 模型内部有些参数 xff0c