C2-2.1 Mini-batch 梯度下降

2024-04-10 17:04
文章标签 梯度 下降 batch c2 2.1 mini

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

C2-2.1 Mini-batch 梯度下降

1、什么是Mini-batch 梯度下降

起因:是我们有很大的一组训练样本,比如这里有5000万个训练样本,由于一次性对这些训练样本进行训练拟合模型,会发生训练速度过慢的情况 / 完全训练不了因为数据量太大了,对内存 GPU都是一个考验。这样就引出来mini-batch梯度下降算法

解释:这个算法的原理正如名字一样min-batch:把特别大的数据集划分成一个个小撮,比如这里5000万条数据,我们每5000个样本(在min-batch中每组最少2000+)划分成一个组,把这个组称之为X{i},Y{i}。x(1)x(1000)称之为X{1},x(1001)x(2000)称之为X{2},y也同理,以此类推…在训练的时候,不使用for循环,而是使用线性代数的点乘方法,对每一组的1000个样本进行并行运算。提高运算速度。内存不足的情况。

核心思想:这种方法通过在内存容量计算效率之间找到平衡,使得处理大型数据集成为可能,同时也利用了现代计算硬件的并行处理能力。

2、一个生动的解释:

想象你有一个非常大的书架,上面放着成千上万的书。你的任务是逐本检查这些书,并在每本书上做一些标记。如果你一次拿出所有的书来检查,那么你可能没有足够的空间放所有的书,而且这个任务也会显得非常压倒性。这就像是在深度学习中一次处理整个数据集。

所以,你选择了一个更有效的方法:一次只拿出书架上的一小部分书,比如说10本,来进行检查和标记。处理完这10本书之后,你再拿出接下来的10本。这样,你一次只处理少量的书,这样既节省空间,又使得任务更加可管理。这就像是mini-batch梯度下降法,其中你一次只处理一小部分(一个mini-batch)的数据。

现在,来到了“并行处理”和“向量化”的部分。当你在处理这10本书的时候,你可以同时为这10本书做标记,而不是一本一本地去做。这就是向量化——你一次性处理了一个小批次的书籍,而不是一个接一个。在计算机中,这样的操作可以通过矩阵和向量来实现,而且现代计算机硬件(比如GPU)非常擅长同时处理这样的任务。

所以,总结一下:

  • 一次处理一个mini-batch:这就像是一次从书架上拿下一小部分书来检查。
  • 向量化和并行处理:这就像是同时为这一小部分的书做标记,而不是一本本单独处理。

3、学习过程的思想纠正

3.1 并行处理

  • **并行处理指的是:**对每一组的5000条数据进行一起的并行处理。

而不是:说对分成的1000组,这1000个组同时处理

3.2 一次处理一个

刚学习的时候有一个误区:一次处理一个???不是说min-batch 梯度下降是提高效率的吗,为什么又一次处理一个???那还能提高效率了吗?

  • 一次处理一个mini-batch:我们这里划分了1000个组,每次迭代迭,是一个组一个组进行的,每次迭代的结果是得到这一个组的最佳结果。在内存容量计算效率之间找到平衡。

与一次处理整个数据集(如在批量梯度下降中)相比,使用mini-batches减少了内存需求,因为每次只加载一个mini-batch的数据到内存中。这样不仅减少了内存压力,还可以更有效地利用缓存,提高数据访问速度。

4、可视化图的解释

4.1 “等高线”图

在这里插入图片描述

蓝色:为 batch 梯度下降,即 mini batch size = m,
紫色:为 stochastic 梯度下降,即 mini batch size = 1,
绿色:为 mini batch 梯度下降,即 1 < mini batch size < m。

  • **传统的梯度下降算法:**遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种梯度下降法叫做这称为Batch gradient descent(BDG)。我们知道 Batch 梯度下降的做法是,在对训练集执行梯度下降算法时,必须处理整个训练集,然后才能进行下一步梯度下降。当训练数据量非常多时,每更新一次参数都要把数据集里的所有样本都看一遍,虽然收敛性能好,但是一次迭代需要等待多长时间,速度慢,会极大的降低训练速度。

  • 随机梯度下降,stochastic gradient descent(SDG),每看一个数据就算一下损失函数,然后求梯度更新参数。这个方法速度比较快,但是永远不会收敛,可能在最优点附近晃来晃去,无法收敛。两次参数的更新也有可能互相抵消掉,造成目标函数震荡的比较剧烈。

  • 因此,为了克服两种方法的缺点,现在一般采用的是一种折中方法,mini-batch gradient decent(在内存容量和计算效率之间找到平衡)。这种方法把数据分为若干个batch,按batch来更新参数,这样,一个batch中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性。另一方面因为批的样本数与整个数据集相比小了很多,计算量也不是很大。

4.2 梯度下降图

在这里插入图片描述

  • 图一:是batch 梯度下降:虽然性能好,但是内存 与 时间消耗比较大。
  • **图二:是mini batch 梯度下降:**总体都是呈下降的趋势的,但是为什么会呈波浪形下降的???
    • 是这样的:mini-batch梯度下降学习的过程是一组(比如一组有5000个数据)一组的学习,因为我们的内存是有限的,使用mini-batch就是在内存 与 效率之间找到权衡,因为每次只加载一个mini-batch的数据到内存中,每次学习完一组数据后,拟合曲线,然后再学习下一组。
    • 这样就会出现一个问题:有的数据集学习的比较好,有的学习的不是很好,有噪音:
      • 例如学习一个图片:这个图片我们分成3*3大小,学习识别一个鸟,学习到一个组X{1}(想象成是一个第一个小方块),学习到的是鸟嘴。下一次识别图片的时候,会把鸡也当做鸟。这样就叫噪音
      • 学习到第二个小方块,X{2},学习到了鸟头了,这样模型J的损失函数值会更低了,学习的效果会更好了…以此类推。

5、【书籍参考】

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这篇关于C2-2.1 Mini-batch 梯度下降的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

✨机器学习笔记(二)—— 线性回归、代价函数、梯度下降

1️⃣线性回归(linear regression) f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b​(x)=wx+b 🎈A linear regression model predicting house prices: 如图是机器学习通过监督学习运用线性回归模型来预测房价的例子,当房屋大小为1250 f e e t 2 feet^

【2.1 深度学习中的感知机是什么】

2.1 深度学习中的感知机是什么 深度学习是机器学习的一个分支,它模拟人脑的工作方式来处理数据,尤其是通过神经网络的结构来自动提取数据的特征并进行分类、回归或其他复杂的任务。在深度学习的早期发展中,许多基础概念和模型为后续的复杂网络奠定了基础。其中,**感知机(Perceptron)**是一个非常重要的基础模型,它实际上是神经网络和深度学习的前身之一。 感知机的基本概念 感知机是一种二分

AI学习指南深度学习篇-带动量的随机梯度下降法的基本原理

AI学习指南深度学习篇——带动量的随机梯度下降法的基本原理 引言 在深度学习中,优化算法被广泛应用于训练神经网络模型。随机梯度下降法(SGD)是最常用的优化算法之一,但单独使用SGD在收敛速度和稳定性方面存在一些问题。为了应对这些挑战,动量法应运而生。本文将详细介绍动量法的原理,包括动量的概念、指数加权移动平均、参数更新等内容,最后通过实际示例展示动量如何帮助SGD在参数更新过程中平稳地前进。

AI学习指南深度学习篇-带动量的随机梯度下降法简介

AI学习指南深度学习篇 - 带动量的随机梯度下降法简介 引言 在深度学习的广阔领域中,优化算法扮演着至关重要的角色。它们不仅决定了模型训练的效率,还直接影响到模型的最终表现之一。随着神经网络模型的不断深化和复杂化,传统的优化算法在许多领域逐渐暴露出其不足之处。带动量的随机梯度下降法(Momentum SGD)应运而生,并被广泛应用于各类深度学习模型中。 在本篇文章中,我们将深入探讨带动量的随

【AI大模型应用开发】2.1 Function Calling连接外部世界 - 入门与实战(1)

Function Calling是大模型连接外部世界的通道,目前出现的插件(Plugins )、OpenAI的Actions、各个大模型平台中出现的tools工具集,其实都是Function Calling的范畴。时下大火的OpenAI的GPTs,原理就是使用了Function Calling,例如联网检索、code interpreter。 本文带大家了解下Function calling,看

什么是GPT-3的自回归架构?为什么GPT-3无需梯度更新和微调

文章目录 知识回顾GPT-3的自回归架构何为自回归架构为什么架构会影响任务表现自回归架构的局限性与双向模型的对比小结 为何无需梯度更新和微调为什么不需要怎么做到不需要 🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习 🦅个人主页:@逐梦苍穹 📕所属专栏:人工智能 🌻gitee地址:x

软件架构风格: C2体系风格

通俗示例 想象一下你正在使用一套乐高积木来搭建一个复杂的模型。每块乐高积木都是一个独立的部件,而乐高积木之间的接口设计得非常标准化,使得你可以轻松地将不同的积木组合在一起。如果你想要更换掉模型中的某一块积木,你只需要把它拔下来,然后插入新的积木即可,不需要重新设计整个模型。 通俗解释 C2体系风格 C2是一种软件体系结构风格,它强调组件之间的松耦合和高内聚。在C2风格中,软件系统被设计为一

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

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

2.1ceph集群部署准备-硬件及拓扑

硬件配置及建议 时至今日,ceph可以运行在各种各样的硬件平台上,不管是传统的x86架构平台(intel 至强系列、基于amd的海光系列等),还是基于arm的架构平台(比如华为鲲鹏),都可以完美运行ceph集群,展现了其强大的适应能力。 ceph的不同组件对硬件的需求有些许不同,下面是官方推荐的硬件要求: 组件资源最低配置要求OSD处理器最少1 core每200-500 MB/s最少1 co

分布式训练同步梯度出现形状不一致的解决方案

1、问题描述           为了加快大模型的训练速度,采用了分布式训练策略,基于MultiWorkerServerStrategy模式,集群之间采用Ring—Reduce的通信机制,不同节点在同步梯度会借助collective_ops.all_gather方法将梯度进行汇聚收集,汇聚过程出现了: allreduce_1/CollectiveGather_1 Inconsitent out