优化算法 - BGD、MBGD、SGD - 梯度下降

2023-11-19

优化算法 - BGD、MBGD、SGD - 梯度下降

  • BGD

    BGD (Batch Gradient Descent),批量梯度下降。

    损失函数: L ( X ; θ ) = ∑ x i ∈ X l ( x i ; θ ) , X L(X;θ) = \sum_{x_i∈X} l(x_i;θ),X L(X;θ)=xiXl(xi;θ)X 代表整个数据集。

    BGD 的参数更新公式为:

    θ t + 1 = θ t − μ ∇ θ L ( X ; θ ) θ_{t+1}=θ_t-μ\nabla_θL(X;θ) θt+1=θtμθL(X;θ)

    BGD 每次都对整个数据集计算梯度,所以计算速度非常慢。无法进行在线学习,即便可以,一个样本加入到大数据集中,对梯度影响也不明显。

    它对于凸函数可以收敛到全局极小值,对于非凸函数可以收敛到局部极小值。

  • SGD

    SGD (Stochastic Gradient Descent),随机梯度下降。

    损失函数: L ( x i ; θ ) = l ( x i ; θ ) , x i ∈ X , X L(x_i;θ) =l(x_i;θ),x_i∈X,X L(xi;θ)=l(xi;θ)xiXX代表整个数据集。

    BGD 的参数更新公式为:

    θ t + 1 = θ t − μ ∇ θ L ( x i ; θ ) θ_{t+1}=θ_t-μ\nabla_θL(x_i;θ) θt+1=θtμθL(xi;θ)

    每次只使用一个样本进行更新,计算速度快,而且可以进行在线学习,即获得一个样本就可以学习一次。而且在学习过程中,有可能还未使用全部样本便已经达到最优解。

    但 SGD 易受噪声点影响,参数更新的方差大,迭代并不是每次都向着最优解方向进行,可能无法达到全局最优解,且学习曲线震荡。

    (震荡的一个好处是可能从以一个局部最优解跳出到另一个更好的局部最优解。)

  • MBGD

    MBGD (Mini-Batch Gradient Descent),小批量梯度下降。

    介于 BGD 与 SGD 之间,每一次利用一小批样本,即 n 个样本进行计算。

    损失函数: L ( X n ; θ ) = ∑ x i ∈ X n l ( x i ; θ ) , X n ∈ X , X n L(X_n;θ) = \sum_{x_i∈X_n} l(x_i;θ),X_n∈X,X_n L(Xn;θ)=xiXnl(xi;θ)XnXXn代表整体数据集中的一个子集。

    BGD 的参数更新公式为:

    θ t + 1 = θ t − μ ∇ θ L ( X n ; θ ) , X n ∈ X θ_{t+1}=θ_t-μ\nabla_θL(X_n;θ),X_n∈X θt+1=θtμθL(Xn;θ)XnX

    可以降低更新时的方差,收敛更加稳定。

以上三种梯度下降方法明显发现两个重要缺点:

  1. 学习率的设定,如果学习率设置得过大,那么会非常震荡,以至于无法收敛;如果设置的太小,学习速度会很慢,还可能陷入局部最优解。对于局部最小值或鞍点来讲,周围是一片平坦的开阔地,其 Error 基本相等,导致梯度基本为 0,被困在这里。

    在局部最小值或鞍点,对 BGD来讲会停止优化,对 SGD 与 MBGD 来讲可能会在周围震荡,来回跳动。

  2. 它们对于不同的参数应用了相等的学习率,但是对于稀疏数据来讲,稀疏特征对应的参数在更新时的梯度会非常小几乎消失,所以在很多轮次后才可能得到稍微明显的更新,而稠密特征的参数则每次都会得到相对明显的更新。

    我们希望对于不同稠密度的特征对应的参数更新采取不同的学习率。对于稀疏的,我们希望调大他的学习率,让“难得”的一次更新步子更大,效果更加明显;对于稠密的,更新太过频繁,我们希望降低它的学习率,让每次的步子稍微小一点,不至于跳出全局最优点。

那么为了解决这两个缺点,产生了很多方法,我们在之后的文章中再做解释。

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

优化算法 - BGD、MBGD、SGD - 梯度下降 的相关文章

  • 优化器(Optimizer)(SGD、Momentum、AdaGrad、RMSProp、Adam)

    文章目录 3 1 传统梯度优化的不足 BGD SGD MBGD 3 1 1 一维梯度下降3 1 2 多维梯度下降 3 2 动量 Momentum 3 3 AdaGrad算法3 4 RMSProp算法3 5 Adam算法 优化器在机器学习 深
  • 通俗理解 - 梯度下降

    本文将从一个下山的场景开始 xff0c 先提出梯度下降算法的基本思想 xff0c 进而从数学上解释梯度下降算法的原理 xff0c 最后实现一个简单的梯度下降算法的实例 xff01 梯度下降的场景假设 梯度下降法的基本思想可以类比为一个下山的
  • 使用动量(Momentum)的SGD、使用Nesterov动量的SGD

    使用动量 Momentum 的SGD 使用Nesterov动量的SGD 参考 xff1a 使用动量 Momentum 的SGD 使用Nesterov动量的SGD 一 使用动量 Momentum 的随机梯度下降 虽然随机梯度下降是非常受欢迎的
  • python torch.optim.SGD

    torch optim sgd学习参数 torch入门笔记14 Torch中optim的sgd Stochastic gradient descent 方法的实现细节 pytorch中使用torch optim优化神经网络以及优化器的选择
  • Adam与SGD

    本文转载自 机器学习炼丹记 xff0c 搜索 julius ai 即可关注 原文链接 xff1a 小象 xff08 一 xff09 一个框架看懂优化算法 机器学习界有一群炼丹师 xff0c 他们每天的日常是 xff1a 拿来药材 xff08
  • 深度学习中的优化算法之SGD

    之前在https blog csdn net fengbingchun article details 75351323 介绍过梯度下降 xff0c 常见的梯度下降有三种形式 xff1a BGD SGD MBGD xff0c 它们的不同之处
  • 深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结

    深度学习中常用的优化算法 SGD Nesterov Adagrad RMSProp Adam 总结 1 引言 在深度学习中我们定义了损失函数以后 xff0c 会采取各种各样的方法来降低损失函数的数值 xff0c 从而使模型参数不断的逼近于真
  • Batch Gradient Descent(python)

    import numpy as np import tensorflow as tf def GradientDescent x y theta m n x shape m is training example while n is fe
  • 梯度下降(BGD)、随机梯度下降(SGD)、Mini-batch Gradient Descent、带Mini-batch的SGD

    一 回归函数及目标函数 以均方误差作为目标函数 损失函数 目的是使其值最小化 用于优化上式 二 优化方式 Gradient Descent 1 最速梯度下降法 也叫批量梯度下降法Batch Gradient Descent BSD a 对目
  • 哈工大2020机器学习实验一:多项式拟合正弦曲线

    源代码请参考 实验一 GitHub 仓库 运行效果请参考 主程序 哈尔滨工业大学计算学部 实验报告 机器学习 实验一 多项式拟合正弦函数 学号 1183710109 姓名 郭茁宁 文章目录 一 实验目的 二 实验要求及实验环境 实验要求 实
  • Adam优化算法(Adam optimization algorithm)

    Adam优化算法 Adam optimization algorithm Adam优化算法基本上就是将Momentum和RMSprop结合在一起 初始化 2 在第t次迭代中 用mini batch梯度下降法计算出dw和db 3 计算Mome
  • Caffe中的优化方法

    在Deep Learning中 往往loss function是非凸的 没有解析解 我们需要通过优化方法来求解 Caffe通过协调的进行整个网络的前向传播推倒以及后向梯度对参数进行更新 试图减小损失 Caffe已经封装好了三种优化方法 分别
  • tensorflow的归一化与梯度下降

    代码 coding utf 8 By author MZ import numpy as np from sklearn datasets import load boston import tensorflow as tf from sk
  • 梯度下降算法总结

    基本梯度下降法 随机梯度下降 批梯度下降法 Momentum梯度下降法 Nesterov Momentum梯度下降法 AdaGrad RMSprop AdaDelta Adam 机器学习中 求解的问题常常变为最优化问题 求解最优化问题 常常
  • 基于梯度的优化算法

    梯度下降优化算法 大多数学习算法都涉及到优化 优化是指改变 x 以最小化或者最大化某个函数 f x 的过程 通常我们所说的优化算法都是指最小化的过程 因此 最大化的过程可以通过最小化 f x 来实现 导数是指某个函数 f x 在某一点上的斜
  • 机器学习中梯度下降法和牛顿法的比较

    在机器学习的优化问题中 梯度下降法和牛顿法是常用的两种凸函数求极值的方法 他们都是为了求得目标函数的近似解 在逻辑斯蒂回归模型的参数求解中 一般用改良的梯度下降法 也可以用牛顿法 由于两种方法有些相似 我特地拿来简单地对比一下 下面的内容需
  • 【机器学习系列】变分推断第三讲:基于随机梯度上升法SGD的变分推断解法

    作者 CHEONG 公众号 AI机器学习与知识图谱 研究方向 自然语言处理与知识图谱 阅读本文之前 首先注意以下两点 1 机器学习系列文章常含有大量公式推导证明 为了更好理解 文章在最开始会给出本文的重要结论 方便最快速度理解本文核心 需要
  • 梯度下降的作用及分类

    一 介绍 梯度下降法是一个最优化算法 通常也称 最速下降法 常用于机器学习和人工智能中递归性逼近最小偏差模型 梯度下降的方向就是用负梯度方向为搜索方向 沿着梯度下降的方向求解极小值 在训练过程中 每次的正向传播都会得到输出值和真实值的损失值
  • 【机器学习】—各类梯度下降算法 简要介绍

    阅读之前看这里 博主是一名正在学习数据类知识的学生 在每个领域我们都应当是学生的心态 也不应该拥有身份标签来限制自己学习的范围 所以博客记录的是在学习过程中一些总结 也希望和大家一起进步 在记录之时 未免存在很多疏漏和不全 如有问题 还请私
  • 优化算法 - BGD、MBGD、SGD - 梯度下降

    优化算法 BGD MBGD SGD 梯度下降 BGD SGD MBGD BGD BGD Batch Gradient Descent 批量梯度下降 损失函数 L X

随机推荐

  • flutter doctor不识别已安装的android studio及授权报错

    不识别解决 flutter config android studio dir C Program Files Android Android Studio 授权报错解决 Open Android Studio Tools gt SDK M
  • Unity使用Remote直接在手机上调试游戏

    Unity Remote是一个调试小工具 方便在手机上直接显示运行效果 并不需要Unity打包 只要在手机上安装UnityRemote APK程序 然后Unity上点击运行就可以了 因为我一般很少在手机上测试 本来都想不起来这个Remote
  • 用Python帮忙找指定小说最新更新且网速最快的网站

    一 引言 这个五一假期自驾回老家乡下 家里没装宽带 用手机热点方式访问网络 这次回去感觉4G信号没有以前好 通过百度查找小说最新更新并打开小说网站很慢 有时要打开好多个网页才能找到可以正常打开的最新更新 为了躲懒 老猿决定利用Python爬
  • 基于rCore的试点班lab1 实现一个系统调用

    实现一个属于你的系统调用 并写一个用户进程来调用该系统调用 该系统调用的功能为 输出你的名字 拼音即可 和学号 相关知识 系统调用 是操作系统提供给应用程序使用的接口 可以理解为一种可供应用程序调用的特殊函数 应用程序可以发出系统调用请求来
  • Python 基础(一):入门必备知识

    目录 1 标识符 2 关键字 3 引号 4 编码 5 输入输出 6 缩进 7 多行 8 注释 9 数据类型 10 运算符 10 1 常用运算符 10 2 运算符优先级 基础 进阶 爬虫 自动化 数据分析 编写小游戏 趣味 Python 文档
  • ajax xhr参数无法接收到,AJAX XHR-Call会创建无效的参数异常

    所以我尝试从异步任务 在此处未显示 因为它不相关 我认为它工作 中的值通过Jquery xhr请求放入进度条中 服务器端的方法并不相关 因为它的工作方式和jquery xhr call都可以 仅限第一次 AJAX XHR Call会创建无效
  • Rasa中文聊天机器人开发指南(3):Core篇

    文章目录 1 对话管理1 1 多轮对话1 2 对话管理 2 Rasa Core 2 1 Stories 2 2 Domain 2 3 Responses 2 4 Actions 2 5 Policies 2 6 Slots 2 6 1 Sl
  • nvm-use成功,但是实际并没有切换到对应node版本

    nvm use命令行运行成功 但是nvm list显示并没有成功 解决方案 情况描述 说明 使用nvm安装完node版本成功之后 nvm list显示并没有切换成功 node v使用的不是use版本 原因 因为在安装nvm之前 独自安装了一
  • rtsp协议c语言,RTSP协议

    RTSP简介 RTSP Real Time Streaming Protocol 是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议 RTSP对流媒体提供了诸如暂停 快进等控制 而它本身
  • 浏览器无法加载本地文件

    问题描述 在Visual Studio Code 编写HTML文件时需要将 csv文件内容在浏览器控制台窗口输出 浏览器控制一直报错 如下图所示 原因 跨域资源共享问题 本地文件是放在file 这样的系统下 而非网络资源比如http 下 造
  • Matlab实现PID控制仿真(附上30个完整仿真源码+数据)

    本文介绍了如何使用Matlab实现PID控制器的仿真 首先 我们将简要介绍PID控制器的原理和控制算法 然后 我们将使用Matlab编写一个简单的PID控制器 并使用仿真环境来验证其性能 最后 我们将通过调整PID控制器的参数来优化控制系统
  • LVGL笔记7--lv_label标签控件

    LVGL笔记7 lv label标签控件 lv label标签控件是LVGL中使用最频繁的控件 主要是用来显示文本信息的 可在程序运行中动态修改文本内容 支持换行显示 图标字体 部分文本重绘色 长文本显示 6种显示模式等功能 lv labe
  • 八段数码管动态显示(输入数据为BCD编码)

    八段数码管动态显示 输入数据为BCD编码 一 数码管概述 图1 八段共阴数码管内部等效原理图 图2 八段共阳数码管内部等效原理图 上面两图分别是对应八段共阴 共阳的数码管内部等效图 共阴是将八个LED数码管的阴极连接在一起接低 阳极segm
  • Docker系列01—容器的发展历程---Docker的生态圈

    Docker 和容器技术的发展可谓是日新月异 本文试图以全局的视角来梳理一下 docker 目前的生态圈 既然是概览 所以不会涉及具体的技术细节 Docker 自从发布以来发生了很多的变化 并且有些方面的变化还非常大 对于技术爱好者来说 我
  • 【模电】0017 开关电源的原理及分析

    开关电源一般简称为DCDC 比我们前两节分析的线性电源复杂一些 它与线性电源最大的不同在于其调整管的工作状态 开关电源中的调整管工作在开关状态 即只工作在饱和区和截止区 1 典型开关电源的原理 一个典型的降压型开关电源原理如下图 首先 我们
  • 前端代理配置

    dev env require dev env port process env PORT 8080 autoOpenBrowser true assetsSubDirectory static assetsPublicPath proxy
  • 海量影像图元合并可以考虑用openmp

    影像合并图元耗时较长 又是重复的功能 可以考虑并行openmp
  • Linux测试比较语句

    测试和比较语句用于if或脚本命令中 if condition then commands else if conditon then commands fi 或 condition command 如果condition为真则执行comma
  • [ 数据结构-C语言 ] 二叉树--初阶 大总结~~

    今天要和大家一起步入一个新的数据结构 二叉树 在学习了解二叉树之前我们先来了解什么是树 以下是本篇的主要内容及目录 目录 1 树的概念及其结构 1 1树的概念 1 2树的相关概念 重点 1 3树的表示 2 二叉树概念及结构 2 1概念 2
  • 优化算法 - BGD、MBGD、SGD - 梯度下降

    优化算法 BGD MBGD SGD 梯度下降 BGD SGD MBGD BGD BGD Batch Gradient Descent 批量梯度下降 损失函数 L X