深度学习-全连接神经网络-详解梯度下降从BGD到ADAM - [北邮鲁鹏]

news2024/11/27 3:56:26

文章目录

  • 参考文章及视频
  • 导言
  • 梯度下降的原理、过程
    • 一、什么是梯度下降?
    • 二、梯度下降的运行过程
  • 批量梯度下降法(BGD)
  • 随机梯度下降法(SGD)
  • 小批量梯度下降法(MBGD)
  • 梯度算法的改进
    • 梯度下降算法存在的问题
    • 动量法(Momentum)
      • 目标
      • 改进思想
      • 为什么有效
      • 动量法还有什么效果?
  • 自适应梯度(AdaGrad)
      • AdaGrad存在的问题
      • AdaGrad算法具有以下特点:
    • RMSProp
    • ADAM梯度下降法
    • 总结


参考文章及视频

耿直哥讲AI:https://www.bilibili.com/video/BV18P4y1j7uH/?spm_id_from=333.337.search-card.all.click&vd_source=f6c19848d8193916be907d5b2e35bce8
计算机视觉与深度学习 北京邮电大学 鲁鹏 清晰版合集(完整版):https://www.bilibili.com/video/BV1V54y1B7K3?p=5&vd_source=f6c19848d8193916be907d5b2e35bce8

导言

梯度下降的原理、过程

一、什么是梯度下降?

梯度下降(Gradient Descent)是一种常用的优化算法,主要用于寻找函数的局部最小值。在机器学习和深度学习中,我们通常使用梯度下降来优化损失函数,从而找到使损失最小的模型参数。

梯度在数学上可以看作是函数在某一点的斜率,或者说是函数在该点变化最快的方向。在多维空间中,梯度是一个向量,指向函数增长最快的方向。而"梯度下降"的思想就是,如果我们想找到函数的最小值,那么从当前位置沿着梯度的负方向,即函数下降最快的方向,进行迭代更新就可能找到这个最小值。

通俗的来讲就是:

  • 想象一下你置身于一个大山谷中,你的目标是找到山谷最低处的位置。但是你没有地图,也不能一下子看到整个山谷的形状。所以你只能根据自己当前所处位置的周围情况来判断往哪个方向走。
  • 梯度下降法就像是你通过观察地势斜率来下山。你站在某个位置上,然后观察周围的地势斜率。地势斜率的方向指示了最陡下坡的方向,而你的目标是下到山谷的最低点。
  • 开始时,你随机选择一个位置作为起点。然后你观察当前位置的地势斜率,并朝着斜率最陡的方向迈出一步。然后,你再次观察新位置的地势斜率,并再次朝着最陡的方向迈出一步。你不断重复这个过程,每次都往下坡最陡的方向前进,直到你无法再下降或者到达了山谷的最低点。
  • 通过这种迭代的方式,你能够一步步地接近山谷的最低点,也就是最优解。梯度下降法通过不断地调整位置,最终找到了函数的最小值点(或者最大值点)。

如图所示:
在这里插入图片描述
陡峭度=梯度

需要注意的是,梯度下降法中的步长(学习率)很重要。
如果步长太大,你可能会错过最低点;
如果步长太小,你会花费很长的时间才能到达最低点。
所以选择一个合适的步长是梯度下降法的一个关键因素。

二、梯度下降的运行过程

梯度下降的过程很直观,可以分为以下几个步骤:

  1. 初始化参数:给定一个初始点。
  2. 计算梯度:在当前点,计算函数的梯度,即各个参数的偏导数。
  3. 更新参数:按照以下公式更新参数:θ = θ - α * ∇f(θ)。其中,θ代表当前的参数,α是学习率(决定了步长的大小),∇f(θ)是函数在θ处的梯度。
  4. 迭代更新:重复步骤2和步骤3,直到梯度接近0,或者达到预设的迭代次数。

这个过程会持续进行,直到找到一个足够好的解,或者达到预设的迭代次

批量梯度下降法(BGD)

批量梯度下降(Batch Gradient Descent)是梯度下降算法的一种变体,用于优化机器学习模型的参数。与其他梯度下降算法相比,批量梯度下降在每次迭代中使用整个训练数据集来计算梯度和更新参数。

在这里插入图片描述
批量梯度下降通常用于小型数据集或参数空间较小的模型

  • 它的优点是能够更准确地收敛到全局最优解(如果存在),并且在参数更新方向上相对稳定。
  • 然而,由于每次迭代时都要使用整个数据集,因此它的计算成本较高。尤其是在大规模数据集上。

随机梯度下降法(SGD)

随机梯度下降(Stochastic Gradient Descent,SGD)是一种梯度下降算法的变体,用于优化机器学习模型的参数。与批量梯度下降不同,随机梯度下降在每次迭代中仅使用一个样本来计算梯度和更新参数。

在这里插入图片描述
随机梯度下降是一种每次迭代仅使用一个样本来计算梯度并更新参数的梯度下降算法。

  • 它的优点是计算代价较低,适用于大规模数据集,这一特性有助于算法逃离局部最小值,并具有一定的探索性。
  • 然而,由于梯度估计存在噪音,参数更新可能不稳定。

小批量梯度下降法(MBGD)

小批量梯度下降(Mini-Batch Gradient Descent)是梯度下降算法的一种变体,介于批量梯度下降(Batch Gradient Descent)和随机梯度下降(Stochastic Gradient Descent)之间。
它在每次迭代中使用一小批次(mini-batch)的样本来计算梯度和更新参数。

在这里插入图片描述

梯度算法的改进

梯度下降算法存在的问题

损失函数特性:一个方向上变化迅速而在另一个方向上变化缓慢。
优化目标:从起点处走到底端笑脸处。
梯度下降算法存在的问题:山壁间振荡,往谷底方向的行进较慢。
在这里插入图片描述
仅增大步长并不能加快算法收敛速度:相当于在振荡方向加了一个更大的速度,往山谷方向也加了,但是很小。

动量法(Momentum)

动量法梯度(Momentum Gradient Descent)下降通过引入动量变量,可以在更新过程中积累之前的梯度信息,并根据历史梯度的趋势来调整参数更新的方向和幅度。这样可以使参数更新在梯度方向上更加稳定,并且可以加速学习过程,尤其在目标函数存在大体量或弯曲的情况下。

目标

改进梯度下降算法存在的问题,即减少震荡,加速通往谷底

改进思想

利用累加历史梯度信息更新梯度
在这里插入图片描述
μ取值范围[0,1)

  • 当动量系数μ等于0时,动量法梯度下降变为普通的梯度下降算法。在这种情况下,动量变量v的更新公式简化为:
    v = 0 * v + g = g
    也就是说,动量变量v只受当前梯度的影响,而不考虑历史梯度信息。参数更新时,只使用当前梯度乘以学习率进行更新。这样的更新方式使得参数更新的方向和幅度完全依赖于当前的梯度值。
  • 当动量系数μ等于1时,动量法梯度下降完全依赖于历史梯度信息。动量变量v的更新公式为:
    v = 1 * v + g = v + g
    动量变量v实际上就是历史梯度的累积,因为历史梯度乘以1之后仍然是历史梯度本身。在参数更新时,只使用动量变量v进行更新,而不再考虑当前梯度的贡献。 即使g走到平坦局域了为0 了,可是v不为0,则权值θ还在持续更新。

建议取0.9,可以将其理解为摩擦系数 v = 0.9v 多次迭代后,v会接近于0

为什么有效

累加过程中震荡方向相互抵消,平坦方向得到加强

动量法还有什么效果?

在这里插入图片描述
它在参数更新中引入了动量概念,以加速学习过程并帮助跳出局部最优解和鞍点。

自适应梯度(AdaGrad)

AdaGrad(Adaptive Gradient Algorithm)是一种自适应梯度算法,用于在机器学习中优化模型的参数。它根据参数的梯度历史信息自适应地调整学习率,使得在训练过程中较大的梯度得到较小的学习率,而较小的梯度得到较大的学习率。
AdaGrad算法的核心思想是为每个参数维护一个梯度的累积平方和,并在参数更新时将学习率除以这个累积平方和的平方根。

在这里插入图片描述
如何区分震荡方式与平坦方向?
梯度幅度的平方较大的方向是震荡方向;
梯度幅度的平方较小的方向是平坦方向。

在这里插入图片描述
震荡方向和平坦方向的梯度的平方和不断累加
在这里插入图片描述
因为震荡方向的梯度大,因此累加平方梯度r不断变大,所以ε1不断减小
因为平坦方向的梯度小,因此累加平方梯度r不断变肖,所以ε2不断增大

AdaGrad存在的问题

由于累加平方梯度r在不断的变大,在多次迭代后,r会变得非常大,则ε1和ε2都会变成一个非常小的值。失去调节作用。

AdaGrad算法具有以下特点:

  • 自适应学习率:AdaGrad算法根据参数的梯度历史信息自适应地调整学习率。当某个参数的梯度较大时,其累积平方和较大,学习率较小;当梯度较小时,累积平方和较小,学习率较大。这样可以保证在训练早期参数更新幅度较大,而在训练后期逐渐减小。

  • 处理稀疏梯度:AdaGrad算法在处理稀疏数据集时表现良好。由于累积平方和的累加,较少出现的参数梯度将获得更大的学习率,从而更快地进行参数更新。

  • 累积平方和的增长:AdaGrad算法累积了梯度的平方和,随着训练的进行,累积平方和会逐渐增大。这可能导致学习率过度下降,使得训练过程变得缓慢。为了解决这个问题,后续的优化算法如RMSprop和Adam引入了衰减系数,对累积平方和进行平滑衰减。

RMSProp

RMSprop(Root Mean Square Propagation)是一种自适应梯度算法,用于在机器学习中优化模型的参数。它是对AdaGrad算法的改进主要解决AdaGrad算法累积平方梯度过度增大的问题。
RMSprop算法的核心思想是为每个参数维护一个梯度平方的移动平均,并在参数更新时使用这个移动平均来调整学习率。

算法思路:
在这里插入图片描述
当ρ等于0:不考虑历史梯度 ,r = 0 * r + (1 - 0)g * g = g * g 仅依靠当前的的梯度

  • 就把梯度大的降低一些,梯度小的增大一些

当ρ等于1:即所有的历史梯度都考虑进来,r = 1 * r + (1 - 1) g * g = r

  • 权值一直不会变了

建议取0.999, v = 0.999v + 0.001 * g * g 多次迭代后,v会不断减小

ADAM梯度下降法

Adam(Adaptive Moment Estimation)是一种自适应梯度算法,结合了动量法和RMSprop算法的优点,用于在机器学习中优化模型的参数。它在训练过程中自适应地调整学习率

算法思路:
在这里插入图片描述
修正偏差为什么可以缓解冷启动?
在进行第1次更新的时候:
v初始值为0,μ初始值为0.9
v ( 1 ) = 0 + 0.1 g v^{(1)} = 0 + 0.1 g v(1)=0+0.1g

则通过修正偏差
v ^ 1 = 0.1 g / 1 − ( 0.9 ) 1 = g \hat{v}^1 = 0.1 g / 1 - (0.9)^1= g v^1=0.1g/1(0.9)1=g
解决了开始的梯度被减少10倍的问题
在进行第10次更新的时候:
修正偏差项就不起作用了
v ^ 10 = v 9 g / 1 − ( 0.9 ) 10 = v \hat{v}^{10} = v^9 g / 1 - (0.9)^{10} = v v^10=v9g/1(0.9)10=v
所以修正项仅在初期为了解决冷启动的时候起作用,来防止初期r = v = 0,更新特别慢的问题

总结

分享一个动态查看各种梯度梯度算法下降过程的图的网站https://www.ruder.io/optimizing-gradient-descent/
这个博主写的更多更详细:https://blog.csdn.net/oppo62258801/article/details/103175179?ydreferer=aHR0cHM6Ly93d3cuYmluZy5jb20v

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

同时可以学习一下算法的实现:https://zhuanlan.zhihu.com/p/77380412

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1008939.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

activemq学习笔记

传统的request/response 在客户端提交请求后必须等待服务端处理完毕给于反馈,这期间客户端完全处于空闲等待状态,甚至有可能超时; 基于消息中间件的request/response 客户端提交请求,不必等待服务器处理,客户端可以继…

《网页设计与制作-初级》

《网页设计与制作》是web前端开发技术中静态网页中的内容,主要包括html、css、js中的静态内容部分,是专业基础课程。 随着5G时代的到来,人工智能与物联网结合行业的飞速发展,更多的互联网的崛起。这肯定就比如伴随着对移动互联网…

1023. 驼峰式匹配

1023. 驼峰式匹配 原题链接:完成情况:解题思路:参考代码: 原题链接: 1023. 驼峰式匹配 https://leetcode.cn/problems/camelcase-matching/description/ 完成情况: 解题思路: /**题目理解&am…

【TA 方法积累】贴图快速无缝化处理

参考: SDC4D 最好用的无缝贴图制作方法【C4D教程】_哔哩哔哩_bilibili 方法1:Tiling 3D Materials, Quickly ,pixplant 方法2:SD修改(推荐) 核心就是SD里的这个节点,Make It Tile Patch Col…

冠达管理:打新股的风险有多大?

在股市中,打新股是一种常见的出资方式,也是出资者追求高回报的途径之一。但是,打新股也伴随着必定的危险。本文将从多个视点分析打新股的危险,并对其进行评估。 首要,商场危险是打新股面对的主要危险之一。在我国&…

线性回归方程

性回归是利用数理统计中的回归分析来确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法,是变量间的相关关系中最重要的一部分,主要考查概率与统计知识,考察学生的阅读能力、数据处理能力及运算能力,题目难度中等&…

07 目标检测-YOLO的基本原理详解

一、YOLO的背景及分类模型 1、YOLO的背景 上图中是手机中的一个app,在任何场景下(工业场景,生活场景等等)都可以试试这个app和这个算法,这个app中间还有一个button,来调节app使用的模型的大小,更大的模型实时性差但精…

计算机竞赛 机器学习股票大数据量化分析与预测系统 - python 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果UI界面设计web预测界面RSRS选股界面 3 软件架构4 工具介绍Flask框架MySQL数据库LSTM 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 机器学习股票大数据量化分析与预测系统 该项目较为新颖&am…

佳节发好文,详细解读HTTP错误状态码产生原因及解决办法

文章目录 HTTP的错误状态码同样适用于HTTPS网页客户端HTTP报错代码服务端原因HTTP错误状态码访问成功状态码访问错误状态码 客户端和服务器端都共同有的报错代码推荐阅读 HTTP(Hypertext Transfer Protocol)是用于在客户端和服务器之间传输数据的协议。当…

【校招VIP】测试算法考点之智力分析

考点介绍: 智力题(逻辑分析题)准备校招的同学们好好准备下,测试笔试中经常遇到。 测试算法考点之智力分析-相关题目及解析内容可点击文章末尾链接查看! 一、考点试题 1.5个囚犯在装有100颗豆子的袋子里摸,他们谁的存活几率大? 5个囚犯,分…

竞赛 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉

文章目录 0 简介1 二维码检测2 算法实现流程3 特征提取4 特征分类5 后处理6 代码实现5 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于机器学习的二维码识别检测 - opencv 二维码 识别检测 机器视觉 该项目较为新颖,适合作为竞赛课…

实时显示当前文件夹下的文件大小,shell脚本实现

图片来源于网络,如果侵权请联系博主删除! 需求: 写一个shell终端命令,实时显示当前文件夹下的文件大小 实现: 您可以使用以下的Shell脚本命令来实时显示当前文件夹下的文件大小: while true; docleardu …

【网络教程】超越平凡:一文揭示SSH-keygen的神秘世界

SSH(Secure Shell)是一种网络协议,用于安全地连接到远程计算机。SSH-keygen 是 SSH 协议的一部分,用于生成、管理和转换身份验证密钥对。 SSH-keygen 命令的基本语法如下: ssh-keygen [选项]以下是 ssh-keygen 命令的一些常用选项和参数: -t:指定要生成的密钥类型。例如…

基于传统的三维点云补全方法

目前,三维视觉受到了学术界和工业界的广泛关注,在目标检测、语义分割、三维重建等领域都取得了突破性的进展。然而,一个固有的问题是由于物体遮挡、镜面反射、物体自遮挡、视角变换和传感器分辨率的限制,传感器在真实场景下所获取…

元宇宙安全与著作权相关市场与技术动态:韩国视角

元宇宙市场动态 元宇宙安全与著作权维护技术现状 元宇宙有可能为商业创造巨大价值,尤其是在零售和时尚领域。时尚产品的象征性价值不仅在物理空间中得以保持,在虚拟空间中也是如此。通过元宇宙平台,企业可以开发虚拟产品,降低供…

指针扩展之——数组指针

前言:小伙伴们好久不见,因为刚刚开学事情比较多,所以好久没有更新,还请大家见谅。 那么从今天开始,博主承诺每周至少会出1-2篇博客,感谢小伙伴们的支持! 今天这篇文章,我们一起来了…

06-Redis缓存高可用集群

上一篇:05-Redis高可用集群之水平扩展 1.集群方案比较 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master&#xff0c…

C++之ostream操作函数operator<<、operator=、put、write、tellp、seekp、flush、swap总结(二百零八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

数据结构 > 算法的时间复杂度(1)

目录 1.算法效率 1.1如何衡量一个算法的好坏 1.2算法的复杂度 1.3复杂度在校招中的考察 2.时间复杂度 2.1时间复杂度的概念 2.2大O的渐进表示法 2.3特殊情况 1.算法效率 1.1如何衡量一个算法的好坏 如何衡量一个算法的好坏呢?比如对于以下斐波那契数列&…

定积分的性质:不等式性质与中值定理

目录 定积分的不等式性质 定积分的中值定理 定积分的常用计算公式 定积分的不等式性质 定积分的不等式性质主要包含两个方面:定积分的绝对值性质和估值定理。 首先,定积分的绝对值性质可以表述为:如果函数f(x)在区间[a,b]上可积&#xff…