batch, patch, token,iteration, epoch分别是什么?

写这篇博客主要是记录一下自己在读论文的时候,有些疑惑的地方。以前注意到了这些小问题,但是没有了解仔细,
导致出现了类似的东西,搞不清他们之间的区别,所以就写篇博客记录一下,
希望以后都能坚持把不懂的东西都弄懂,希望自己能成为一个严谨的人   其实这篇文章主要是弄清batch和patch之间的区别

一、Batch :

定义: 在训练神经网络时,不是一次性将所有数据输入模型,而是将数据分成小批量(batches),然后逐批输入模型进行训练。

补充: 与一次性处理所有数据相比,使用批量可以加快训练速度,并且使得内存使用更加高效。同时,批量处理还有助于模型更好地泛化,因为它引入了一定程度的随机性。
在这里插入图片描述
Batch 的选择

  • 极端一:batch_size为全数据集(Full Batch Learning):

    好处

     1.由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。

     2.由于不同权重的梯度值差别巨大,因此选择一个全局的学习率很困难。Full Batch Learning可以使用Rprop只基于梯度符号并且针对性单独更新各权值。

   坏处:

     1.随着数据集的海量增长和内存限制,一次性载入所有的数据进来变得越来越不可行。

     2.以Rprop的方式迭代,会由于各个Batch之间的采样差异性,各次梯度修正值相互抵消,无法修正。这才有了后来 RMSProp 的妥协方案。

  • 极端二:Batch_size=1:

   Batch_size=1,也就是每次只训练一个样本。这就是在线学习(Online Learning)。线性神经元在均方误差代价函数的错误面是一个抛物面,横截面是椭圆。对于多层神经元,非线性网络,在局部依然近似是抛物面。使用在线学习,每次修正方向以各自样本的梯度方向修正,难以达到收敛。如下图所示:

在合理范围内,增大 Batch_Size 有何好处?

内存利用率提高了,大矩阵乘法的并行化效率提高。
跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。

盲目增大 Batch_Size 有何坏处?

内存利用率提高了,但是内存容量可能撑不住了。
跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
Batch_Size增大到一定程度,其确定的下降方向已经基本不再变化。

二、Patch:

定义: 在图像处理中,一个patch通常指的是图像中的一个小的矩形区域。在卷积神经网络(CNN)中,patch是指卷积核覆盖的图像区域。

补充: Patch是局部区域的概念,通常用于描述图像处理中的局部特征提取。与整个图像或整个特征图(feature map)相比,patch关注更小的区域。
在这里插入图片描述

三、Token:

定义: 在自然语言处理中,token是指文本中的一个单词、短语或符号。在深度学习模型中,特别是在处理序列数据时,文本被分割成一系列的tokens。

补充: Token是处理文本数据时的基本单位。不同的tokens代表了不同的语义信息,模型通过学习这些tokens的表示来进行语言理解和生成。

四、Iteration :

定义: 在训练过程中,每次迭代指的是一次前向传播和一次后向传播的过程,即一次参数更新的过程。

补充: 迭代关注的是模型参数更新的频率。一个epoch包含多个迭代,因为一个epoch意味着整个数据集被遍历了一次。

五、Epoch :

定义: 在训练过程中,一个epoch意味着整个数据集被完整遍历了一次。

补充: Epoch关注的是数据集被遍历的次数。一个epoch完成后,模型参数会根据整个数据集进行一次更新。通常,为了达到较好的训练效果,需要多个epoch。

六、参考文章

参考文章原文链接:batch参考文章

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐