Stochastic Gradient Descent vs Batch Gradient Descent vs Mini-batch Gradient Descent

2023-12-15 15:32

本文主要是介绍Stochastic Gradient Descent vs Batch Gradient Descent vs Mini-batch Gradient Descent,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

梯度下降是最小化风险函数/损失函数的一种经典常见的方法,下面总结下三种梯度下降算法异同。

1、 批量梯度下降算法(Batch gradient descent)

以线性回归为例,损失函数为这里写图片描述

BGD算法核心思想为每次迭代用所有的训练样本来更新Theta,这对于训练样本数m很大的情况是很耗时的。

BGD算法表示为
这里写图片描述
或者表示为
这里写图片描述
这里写图片描述
其中X(m*n)为训练样本矩阵,α为学习速率,m为样本数,y(m*1)为样本结果标签向量,Theta(n*1)为参数向量

其中损失函数 J 对Theta的导数为
这里写图片描述

for iter = 1:num_iterstheta=theta-alpha/m*X'*(X*theta-y);end

迭代num_iters次的BGD如上述代码所示

BGD大体执行过程
这里写图片描述

2、随机梯度下降算法(Stochastic Gradient Descent)

SGD在大规模训练集上会更高效
SGD的损失函数也与BGD有所不同
这里写图片描述

SGD算法在于每次只去拟合一个训练样本,这使得在梯度下降过程中不需去用所有训练样本来更新Theta。BGD每次迭代都会朝着最优解逼近,而SGD由于噪音比BGD多,多以SGD并不是每次迭代都朝着最优解逼近,但大体方向是朝着最优解,SGD大约要遍历1-10次数据次来获取最优解。

SGD算法大体分两步
这里写图片描述

SGD算法大体执行过程
这里写图片描述

其中学习速率α一般设置为常数,但我们也可以将α随迭代次数而减小,这样更有利于我们函数收敛向最优解

小批量梯度下降算法(Mini-batch Gradient Descent)

MBGD有时候甚至比SGD更高效。
MBGD不像BGD每次用m(所有训练样本数)个examples去训练,也不像SGD每次用一个example。MBGD使用中间值b个examples
经典的b取值大约在2-100
例如 b=10,m=1000

这里写图片描述

此处MBGD每次只用10个examples来训练。

参考自Andrew NG 在coursera的machine learning week10
参考链接

这篇关于Stochastic Gradient Descent vs Batch Gradient Descent vs Mini-batch Gradient Descent的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/496945

相关文章

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 (debug笔记)

Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 ##一、 缘由及解决方法 把这个pytorch-ddpg|github搬到jupyter notebook上运行时,出现错误Nn criterions don’t compute the gradient w.r.t. targets error。注:我用

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置:  // launch.json{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information,

解决服务器VS Code中Jupyter突然崩溃的问题

问题 本来在服务器Anaconda的Python环境里装其他的包,装完了想在Jupyter里写代码验证一下有没有装好,一运行发现Jupyter崩溃了!?报错如下所示 Failed to start the Kernel. ImportError: /home/hujh/anaconda3/envs/mia/lib/python3.12/lib-dynload/_sqlite3.cpython-

VSC++: 括号对称比较

括号的使用规则:大括号,中括号,小括号{[()]};中括号,小括号[()];小括号();大括号、中括号、小括号、中括号、小括号、大括号{[()][()]};大括号,中括号,小括号,小括号{[(())]};大括号,中括号,小括号,小括号{[()()]};小括号不能嵌套,小括号可连续使用。 {[]}、{()}、([])、({})、[{}]、{}、[]、{[}]、[(])都属非法。 char aa[

一键部署Phi 3.5 mini+vision!多模态阅读基准数据集MRR-Benchmark上线,含550个问答对

小模型又又又卷起来了!微软开源三连发!一口气发布了 Phi 3.5 针对不同任务的 3 个模型,并在多个基准上超越了其他同类模型。 其中 Phi-3.5-mini-instruct 专为内存或算力受限的设备推出,小参数也能展现出强大的推理能力,代码生成、多语言理解等任务信手拈来。而 Phi-3.5-vision-instruct 则是多模态领域的翘楚,能同时处理文本和视觉信息,图像理解、视频摘要

Apache Kylin VS Apache Doris全方位对比

1 系统架构 1.1 What is Kylin1.2 What is Doris2 数据模型 2.1 Kylin的聚合模型2.2 Doris的聚合模型2.3 Kylin Cuboid VS Doris RollUp2.4 Doris的明细模型3 存储引擎4 数据导入5 查询6 精确去重7 元数据8 高性能9 高可用10 可维护性 10.1 部署10.2 运维10.3 客服11 易用性 11.1

简单的spring batch学习

前言 公司批量任务是数据库执行的,想修改成java执行批量任务,所以简单了解了下springbatch批量任务框架,此处是其学习笔记,具体学习视频地址为bilibili springbatch,以下为其学习笔记内容以及源码信息 一、课程目标 课程目标 系统了解Spring Batch批处理 项目中能熟练使用Spring Batch批处理 课程内容 前置知识 Java基础

vs环境下C++dll生成和使用

动态库和静态库: 动态库:全名动态链接库,用于将你的函数封装,让别人只能调用,不能看你的实现代码。由引入库和dll组成:引入库包含导出的函数和变量名,dll包含实际的函数和数据,运行时加载访问dll文件。  Windows API中的所有函数都封装在dll里面,最重要的三个: Kernel32.dll:包含管理内存、进程和线程的各个函数。User32.dll:包含用于执行用户界面任务,如窗口和

VS Code与SVN关联

VS Code是一款轻量级的集成开发环境,可通过安装插件与SVN进行关联。以下是将VS Code与SVN关联的步骤: 安装SVN插件:在VS Code中打开Extensions(快捷键:Ctrl+Shift+X),搜索并安装"svn"插件。 安装SVN命令行工具:在计算机上安装SVN命令行工具,确保在命令行中可以运行svn命令。 配置SVN路径:在VS Code中打开用户设置(快捷键:Ct