当前位置: 首页 > news >正文

【深度学习】Mini-Batch梯度下降法

Mini-Batch梯度下降法

在开始Mini-Batch算法开始之前,请确保你已经掌握梯度下降的最优化算法。

在训练神经网络时,使用向量化是加速训练速度的一个重要手段,它可以避免使用显式的for循环,并且调用经过大量优化的矩阵计算函数库。但是当数量增加到一定级别的时候,比如说五百万、五千万或者更大,此时此刻即便是进行了向量化,其训练速度也是挺慢的。Mini-Batch最优化算法则可以加速这种情况下的训练过程。

字如其名,Mini-Batch梯度下降法就是将数据集划分为若干个更小的数据集(Mini-Batch),然后依次对小规模数据集进行处理。假设每一个子集中只有1000个数据样本,那么在总样本量为500万的时候,会被分为5000个子集。原数据集的特征部分为 x ( 1 ) , x ( 2 ) , x ( 3 ) . . . x ( 1000 ) , x ( 1001 ) . . . . x ( m ) x^{(1)},x^{(2)},x^{(3)}...x^{(1000)},x^{(1001)}....x^{(m)} x(1),x(2),x(3)...x(1000),x(1001)....x(m),现在被划分为:
X { 1 } = x ( 1 ) , x ( 2 ) , x ( 3 ) . . . x ( 1000 ) X { 2 } = x ( 1001 ) , x ( 1002 ) , x ( 1003 ) . . . x ( 2000 ) X { 3 } = x ( 2001 ) , x ( 2002 ) , x ( 2003 ) . . . x ( 3000 ) X^{\{1\}}=x^{(1)},x^{(2)},x^{(3)}...x^{(1000)}\\ X^{\{2\}}=x^{(1001)},x^{(1002)},x^{(1003)}...x^{(2000)}\\ X^{\{3\}}=x^{(2001)},x^{(2002)},x^{(2003)}...x^{(3000)} X{1}=x(1),x(2),x(3)...x(1000)X{2}=x(1001),x(1002),x(1003)...x(2000)X{3}=x(2001),x(2002),x(2003)...x(3000)
其中 X { i } X^{\{i}\} X{i}表示第i个Mini-Batch的样本集
同样地,标签集也被划为5000个子集,分别是
Y { 1 } = y ( 1 ) , y ( 2 ) , y ( 3 ) . . . y ( 1000 ) Y { 2 } = y ( 1001 ) , y ( 1002 ) , y ( 1003 ) . . . y ( 2000 ) Y { 3 } = y ( 2001 ) , y ( 2002 ) , x ( 2003 ) . . . x ( 3000 ) Y^{\{1\}}=y^{(1)},y^{(2)},y^{(3)}...y^{(1000)}\\ Y^{\{2\}}=y^{(1001)},y^{(1002)},y^{(1003)}...y^{(2000)}\\ Y^{\{3\}}=y^{(2001)},y^{(2002)},x^{(2003)}...x^{(3000)} Y{1}=y(1),y(2),y(3)...y(1000)Y{2}=y(1001),y(1002),y(1003)...y(2000)Y{3}=y(2001),y(2002),x(2003)...x(3000)
其中 Y { i } Y^{\{i}\} Y{i}表示第i个Mini-Batch的标签集

一个完整的Mini-Batch子集由标签子集和样本子集构成,第i个Mini-Batch子集等于 ( X { i } , Y { i } ) (X^{\{i\}},Y^{\{i\}}) (X{i},Y{i})
接下来说一下向量化表示,假设一个样本有n个特征,一个Mini-Batch有m个样本,那么他的KaTeX parse error: Expected 'EOF', got '}' at position 2: X}̲应该是一个m行n列的矩阵,他的Y是一个m行1列的矩阵

划分完自己之后,然后我们会单独处理各个Mini-Batch子集。比如说先前向传播,然后计算代价函数,根据代价函数反向传播求出梯度下降中的导数,然后使用梯度下降进行计算。就和一个神经网络差不多,不是吗?总的来说就是训练规模较大的神经网络的时候,我们应该将他们切分为若干个较小的子集,然后让各个子集独立地进行神经网路的训练,就是这样。

在传统的梯度下降中(左图),代价函数cost应该随着迭代的进行而逐渐下降;但是在Mini-Batch中就不一样了,他的cost函数会有一定的波动,但是整体应该是向下的(右图)
在这里插入图片描述
此外,需要我们个人决定的一个关键参数是Mini-Batch的大小,假设如果将一个数据集只划分为1个Mini-Batch,那么实际上他就是普通的梯度下降法,这是情况1;另一个极端是,一个Mini-Batch中只有一个样本,每个样本就是一个Mini-Batch,这种情况下的算法称之为随机梯度下降,这是情况2。

在情况1中,其实就是普通的梯度下降,他下降会十分“顺滑”,这是因为相对噪音比较小,但是对样本量大的情况来说,他将会相当耗时(蓝线)。而在情况2中,因为每个样本都是单独的Mini-Batch,大多数时候会朝着最小值前进,但是有一些样本是噪声样本,因此偶尔会指向错误的方向,因此这会使得其路线十分的九转十八弯(紫线)。而且他不会稳定收敛于一个点,而是在最小值的周围反复打转

上述的两个极端例子我们可以知道,当Mini-Batch子集设计的太大的时候,虽然噪声少,下降较为顺滑,但是会有较大的时间开销;反之,较小的子集会导致噪声较大,下降的精度不高,但是单次训练速度快,而且较小的子集也无法充分来自于向量化的训练加速,总训练时间反而不是最快的。在实际中,选择适中的子集大小能够保证一定的精度,也能提高速度,并且利用好向量化带来的加速,在此基础之上,根据自己的目标选择合适的子集大小,平衡好训练速度和精度问题

相关文章:

【深度学习】Mini-Batch梯度下降法

Mini-Batch梯度下降法 在开始Mini-Batch算法开始之前,请确保你已经掌握梯度下降的最优化算法。 在训练神经网络时,使用向量化是加速训练速度的一个重要手段,它可以避免使用显式的for循环,并且调用经过大量优化的矩阵计算函数库。…...

AI项目六:WEB端部署YOLOv5

若该文为原创文章,转载请注明原文出处。 一、介绍 最近接触网页大屏,所以就想把YOLOV5部署到WEB端,通过了解,知道了两个方法: 1、基于Flask部署YOLOv5目标检测模型。 2、基于Streamlit部署YOLOv5目标检测。 代码在…...

敲代码常用快捷键

1、代码拖动 PyCharm:按住 shiftalt鼠标选中某一区域来拖动,即可实现拖动这一区域至指定区域。Visual Studio Code (VSCode): - Windows/Linux:Alt 鼠标左键拖动 - MacOS:Option 鼠标左键拖动 IntelliJ IDEA: - Win…...

MyBatis: 分页插件PageHelper直接传递分页参数的用法

一、加分页插件依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.13</version></dependency>二、配置分页插件&#xff0c;并配置相关属性&a…...

Python基于Flask的高校舆情分析,舆情监控可视化系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 运行效果图 基于Python的微博大数据舆情分析&#xff0c;舆论情感分析可视化系统 系统介绍 微博舆情分析系…...

Python第一次作业练习

题目分析&#xff1a; """ 参考学校的相关规定。 对于四分制&#xff0c;百分制中的90分及以上可视为绩点中的4分&#xff0c;80 分及以上为3分&#xff0c;70 分以上为2分&#xff0c;60 分以上为1分; 五分制中的5分为四分制中的4分&#xff0c;4分为3分&#…...

InstallShield打包升级时不覆盖原有文件的解决方案

一个.NET Framework的Devexpress UI Windows Form项目&#xff0c;用的InstallShield&#xff0c;前些个版本都好好的&#xff0c;最近几个版本突然就没法更新了&#xff0c;每次更新的时候都覆盖不了原文件&#xff0c;而且这样更新后第一次打开程序&#xff08;虽然是老程序&…...

服务器巡检表-监控指标

1、巡检指标 系统资源K8S集群NginxJAVA应用RabbitMQRedisPostgreSQLElasticsearchELK日志系统 2、巡检项 检查项目 检查指标 检查标准 系统资源 CPU 使用率 正常&#xff1a;&#xff1c;70% 低风险&#xff1a;≥ 70% 中风险&#xff1a;≥ 85% 高风险&#xff1a;≥ 9…...

无涯教程-JavaScript - DDB函数

描述 DDB函数使用双倍余额递减法或您指定的某些其他方法返回指定期间内资产的折旧。 语法 DDB (cost, salvage, life, period, [factor])争论 Argument描述Required/OptionalCostThe initial cost of the asset.RequiredSalvage 折旧结束时的价值(有时称为资产的残值)。 该…...

uniapp打包微信小程序。报错:https://api.weixin.qq.com 不在以下 request 合法域名列表

场景&#xff1a;在进行打包上传测试时&#xff0c;发现登录失效&#xff0c;但在测试中【勾选不效应合法域名】就可以。 出现原因&#xff1a;我在获取到用户code后&#xff0c;直接使用调用官方接口换取openid 解决方案&#xff1a; 可以把code带给后端&#xff0c;让他们返…...

stm32之31.iic

iic双线制。一根是SCL&#xff0c;作为时钟同步线;一根是SDA&#xff0c;作为数据传输线 SDN #include "iic.h"#define SCL PBout(8)#define SDA_W PBout(9) #define SDA_R PBin(9)void IIC_GPIOInit(void) {GPIO_InitTypeDef GPIO_InitStructure;//使能时钟GR…...

新的 ChatGPT 提示工程技术:程序模拟

即时工程的世界在各个层面上都令人着迷,并且不乏巧妙的方法来推动像 ChatGPT 这样的代理生成特定类型的响应。思想链 (CoT)、基于指令、N-shot、Few-shot 等技术,甚至奉承/角色分配等技巧都是充满提示的库背后的灵感,旨在满足各种需求。 在本文中,我将深入研究一项技术,据…...

【Python】爬虫基础

爬虫是一种模拟浏览器实现&#xff0c;用以抓取网站信息的程序或者脚本。常见的爬虫有三大类&#xff1a; 通用式爬虫&#xff1a;通用式爬虫用以爬取一整个网页的信息。 聚焦式爬虫&#xff1a;聚焦式爬虫可以在通用式爬虫爬取到的一整个网页的信息基础上只选取一部分所需的…...

leetcode分类刷题:队列(Queue)(三、优先队列用于归并排序)

1、当TopK问题出现在多个有序序列中时&#xff0c;就要用到归并排序的思想了 2、将优先队列初始化为添加多个有序序列的首元素的形式&#xff0c;再循环K次优先队列的出队和出队元素对应序列下个元素的入队&#xff0c;就能得到TopK的元素了 3、这些题目好像没有TopK 大用小顶堆…...

无线窨井水位监测仪|排水管网智慧窨井液位计安装案例

城市窨井在城市排水、雨水、污水输送等方面发挥着重要作用&#xff0c;是污水管网、排水管网 建设重要的组成部分。随着城镇精细化建设及人民安全防范措施水平的提高&#xff0c;对窨井内水位的监测提出了更高的要求&#xff0c;他是排水管网问题的晴雨表&#xff0c;窨井信息化…...

024 - STM32学习笔记 - 液晶屏控制(一) - LTDC与DMA2D初始

024- STM32学习笔记 - LTDC控制液晶屏 在学习如何控制液晶屏之前&#xff0c;先了解一下显示屏的分类&#xff0c;按照目前市场上存在的各种屏幕材质&#xff0c;主要分为CRT阴极射线管显示屏、LCD液晶显示屏、LED显示屏、OLED显示屏&#xff0c;在F429的开发板上&#xff0c;…...

Python数据容器:dict(字典、映射)

1、什么是字典 Python中的字典是通过key找到对应的Value&#xff08;相当于现实生活中通过“字”找到“该字的含义” 我们前面所学习过的列表、元组、字符串以及集合都不能够提供通过某个东西找到其关联的东西的相关功能&#xff0c;字典可以。 例如 这里有一份成绩单&#xf…...

2023年基因编辑行业研究报告

第一章 行业发展概况 1.1 定义 基因编辑&#xff08;Gene Editing&#xff09;&#xff0c;又称基因组编辑&#xff08;Genome Editing&#xff09;或基因组工程&#xff08;Genome Engineering&#xff09;&#xff0c;是一项精确的科学技术&#xff0c;可以对含有遗传信息的…...

Spring MVC:请求转发与请求重定向

Spring MVC 请求转发请求重定向附 请求转发 转发&#xff08; forward &#xff09;&#xff0c;指服务器接收请求后&#xff0c;从一个资源跳转到另一个资源中。请求转发是一次请求&#xff0c;不会改变浏览器的请求地址。 简单示例&#xff1a; 1.通过 String 类型的返回值…...

按键灯待机2秒后灭掉

修改文件&#xff1a;/device/mediatek/mt6580/init.mt6580.rc chown system system /sys/class/leds/red/triggerchown system system /sys/class/leds/green/triggerchown system system /sys/class/leds/blue/triggerchown system system sys/devices/platform/device_info/…...

SpringBoot通过自定义注解实现日志打印

目录 前言&#xff1a; 正文 一.Spring AOP 1.JDK动态代理 2.Cglib动态代理 使用AOP主要的应用场景&#xff1a; SpringBoot通过自定义注解实现日志打印 一.Maven依赖 二.ControllerMethodLog.class自定义注解 三.Spring AOP切面方法的执行顺序 四.ControllerMethodL…...

代码随想录算法训练营第七天 |151.翻转字符串里的单词

今天是代码随想录的第七天&#xff0c;写了力扣的151.翻转字符串里的单词&#xff1b; 之后或许还要再琢磨琢磨 代码随想录链接 力扣链接 151.翻转字符串里的单词&#xff0c;代码如下&#xff1a; # class Solution: # def reverseWords(self, s: str) -> str: # …...

【WebRTC---源码篇】(十:一)WEBRTC 发送视频RTP包

RTPSenderVideo在整个框架中起到重要的作用,它把采集的数据进行编码,并且在流程中会进行将编码后的数据进行RTP打包,最后发送到网络层 RTPSenderVideo::SendVideo //对编码数据打包 bool RTPSenderVideo::SendVideo(int payload_type,absl::optional<VideoCodecType>…...

cmd 90 validate error!(达梦数据库日志报错)

达梦数据库报错 error-cmd 90 validate error! 环境介绍1 解决办法 环境介绍 某生产环境数据库启动后&#xff0c;dm_实例名_202309.log&#xff0c;偶尔报错cmd 90 validate error! 1 解决办法 接口用错了&#xff0c;消息非法&#xff0c;比如用 6 的 JDBC 连 7 或 7 的 …...

Shape Completion Enabled Robotic Grasping

摘要-这项工作提供了一个架构&#xff0c;使机器人能够通过形状完成抓取规划。形状完成是通过使用3D卷积神经网络(CNN)来完成的。该网络是在我们自己的新的开源数据集上训练的&#xff0c;该数据集包含了从不同视角捕获的超过44万个3D样本。运行时&#xff0c;从单个视角捕获的…...

【C++】构造函数意义 ( 构造函数显式调用与隐式调用 | 构造函数替代方案 - 初始化函数 | 初始化函数缺陷 | 默认构造函数 )

文章目录 一、构造函数意义1、类的构造函数2、构造函数显式调用与隐式调用3、构造函数替代方案 - 初始化函数4、初始化函数缺陷5、默认构造函数6、代码示例 - 初始化函数无法及时调用 一、构造函数意义 1、类的构造函数 C 提供的 构造函数 和 析构函数 作为 类实例对象的 初始化…...

VMware16安装ghost版win7

文章目录 准备工作GHO 文件装机工具 新建虚拟机配置虚拟机还需要一个 CD/DVD PE 安装步骤分区还原挂载 CD/DVD开始还原 还原之后 准备工作 GHO 文件 可以去百度搜索这种文件&#xff0c;我这里是从系统之家下载的deepin win7 ghost 系统 装机工具 因为下载的 ghost 版的 w…...

项目集成swagger,访问不到swagger页面

项目集成swagger 文章目录 前言一、背景二、问题复现1.Full authentication is required to access this resource2.Illegal DefaultValue null for parameter type integer 总结 前言 项目集成swagger这个没啥好整的&#xff0c;maven项目就在pom文件导入依赖&#xff0c;ser…...

微信小程序怎么隐藏顶部导航栏(navigationBar)变透明的解决方案

怎么隐藏小程序顶部导航栏&#xff08;navigationBar&#xff09;&#xff1f; 官网说&#xff1a;Navigation是小程序的顶部导航组件&#xff0c;当页面配置 navigationStyle 设置为 custom 的时候可以使用此组件替代原生导航栏。 那么&#xff0c;我们就知道这种效果是可以…...

RabbitMQ基础概念-02

RabbitMQ是基于AMQP协议开发的一个MQ产品&#xff0c; 首先我们以Web管理页面为 入口&#xff0c;来了解下RabbitMQ的一些基础概念&#xff0c;这样我们后续才好针对这些基础概念 进行编程实战。 可以参照下图来理解RabbitMQ当中的基础概念&#xff1a; 虚拟主机 virtual hos…...

有道云笔记 wordpress/自己做网站

亲爱的《烈焰手游》玩家&#xff1a;您们好!感谢大家从《烈焰》手游的支持与厚爱!为了给大家提供更加优质的游戏环境&#xff0c;感受更多的游戏乐趣&#xff0c;提高游戏的可玩性和互动性&#xff0c;应广大玩家的需求&#xff0c;我们将对部分服进行合服操作&#xff0c;以下…...

预约营销型网站建设专家/成人短期就业培训班

敢在今年提裸辞的人&#xff0c;都是勇士。 这是最近笔者在就业话题下看到得最多的一句话。几年前&#xff0c;逃离北上广深的话题火了&#xff0c;也随之而来带起了一股裸辞的风潮。“世界这么大&#xff0c;我想去看看。”成为了年轻人追求自由的目标。 而今年&#xff0c;…...

专业网站建设品牌/昆明seo推广外包

一、ADB 简介 1什么是 ADB? ADB 全称为 Android Debug Bridge&#xff0c;起到调试桥的作用&#xff0c;是一个客户端-服务器端程序。其中客户端是用来操作的电脑&#xff0c;服务端是 Android 设备。ADB 也是 Android SDK 中的一个工具&#xff0c;可以直接操作管理 Androi…...

网站企业优化/中国国家数据统计网

专注于机械行业、专业、职业信息分享服务于制造业百万工程师推荐阅读【机械制图】画图这么久&#xff0c;线型都没搞懂&#xff1f;【机械制图】机械图纸知识解析&#xff0c;这个总结溜溜的【机械制图】机械图纸尺寸标注规则&#xff0c;通过动图复习一下&#xff01;知名机械…...

日挣30元的微信小兼职/昆明seo排名

先上代码&#xff1a;naked.cpp:#include "stdafx.h"extern "C" int __declspec(naked) add2(int x,int y) //引用说明支持跨文件的调用{__asm{ //函数的环境初始化(升栈、保护现场、填充缓…...

c# 网站开发实例教程/百度电话客服

“五险”讲的是五种保险,包括养老保险、医疗保险、失业保险、工伤保险和生育保险; “一金”指的是住房公积金。 其中养老保险、医疗保险和失业保险&#xff0c;这三种险是由企业和个人共同缴纳的保费&#xff0c;工伤保险和生育保险完全是由企业承担的。个人不需要缴纳。这里…...