关于深度学习中的batch_size

5.4.1 关于深度学习中的batch_size

batch_size可以理解为批处理参数,它的极限值为训练集样本总数,当数据量比较少时,可以将batch_size值设置为全数据集(Full batch cearning)。
实际上,在深度学习中所涉及到的数据都是比较多的,一般都采用小批量数据处理原则。

小批量训练网络的优点:

  • 相对海量的的数据集和内存容量,小批量处理需要更少的内存就可以训练网络。
  • 通常小批量训练网络速度更快,例如我们将一个大样本分成11小样本(每个样本100个数据),采用小批量训练网络时,每次传播后更新权重,就传播了11批,在每批次后我们均更新了网络的(权重)参数;如果在传播过程中使用了一个大样本,我们只会对训练网络的权重参数进行1次更新。
  • 全数据集确定的方向能够更好地代表样本总体,从而能够更准确地朝着极值所在的方向;但是不同权值的梯度值差别较大,因此选取一个全局的学习率很困难。

小批量训练网络的缺点:

  • 批次越小,梯度的估值就越不准确,在下图中,我们可以看到,与完整批次渐变(蓝色)方向相比,小批量渐变(绿色)的方向波动更大。
  • 极端特例batch_size = 1,也成为在线学习(online learning);线性神经元在均方误差代价函数的错误面是一个抛物面,横截面是椭圆,对于多层神经元、非线性网络,在局部依然近似是抛物面,使用online learning,每次修正方向以各自样本的梯度方向修正,这就造成了波动较大,难以达到收敛效果。

如下图所示
stochastic(红色)表示在线学习,batch_size = 1;

mini_batch(绿色)表示批梯度下降法,batch_size = 100;

batch(蓝色)表示全数据集梯度下降法,batch_size = 1100;

从图上可以发现,batch_szie=1 较 batch_size=100 的波动性更大。

设置mini_batch大小是一种艺术,太小时可能会使学习过于随机,虽然训练速率很快,但会收敛到不可靠的模型;mini_batch过小时,网络训练需要很长时间,更重要的是它不适合记忆。

如何选择合适的batch_size值:

  • 采用批梯度下降法mini batch learning时,如果数据集足够充分,用一半(甚至少的多)的数据训练算出来的梯度与全数据集训练full batch learning出来的梯度几乎一样。
  • 在合理的范围内,增大batch_size可以提高内存利用率,大矩阵乘法的并行化效率提高;跑完一次epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快;在适当的范围内,batch_size越大,其确定的下降方向越准,引起训练波动越小。注意,当batch_size增大到一定程度,其确定的下降方向基本不会变化
  • batch_size值增大到超过合理范围时,和全数据训练full batch learning就会表现出相近的症候;内存容量占有率增加,跑完一次epoch(全数据集)所需的迭代次数减少,达到相同的精度所耗损的时间增加,从而对参数的修正也就显得更加缓慢。

调节 Batch_Size 对训练效果影响到底如何?
这里跑一个 LeNet 在 MNIST 数据集上的效果。MNIST 是一个手写体标准库
运行结果如上图所示,其中绝对时间做了标准化处理。运行结果与上文分析相印证:

  • batch_size 太小,算法在 200 epoches 内不收敛。
  • 随着 batch_size 增大,处理相同数据量的速度越快。
  • 随着 batch_size 增大,达到相同精度所需要的 epoch 数量越来越多。
  • 由于上述两种因素的矛盾,batch_size 增大到某个时候,达到时间上的最优。
  • 由于最终收敛精度会陷入不同的局部极值,因此batch_size 增大到某些时候,达到最终收敛精度上的最优。

深度学习:batch_size的设置与影响

什么是神经网络中的批量大小?

Chapter 8Optimization for Training DeepModels

原文地址:https://www.cnblogs.com/gengyi/p/9853664.html

时间: 2024-10-29 21:46:31

关于深度学习中的batch_size的相关文章

深度学习中的Data Augmentation方法(转)基于keras

在深度学习中,当数据量不够大时候,常常采用下面4中方法: 1. 人工增加训练集的大小. 通过平移, 翻转, 加噪声等方法从已有数据中创造出一批"新"的数据.也就是Data Augmentation 2. Regularization. 数据量比较小会导致模型过拟合, 使得训练误差很小而测试误差特别大. 通过在Loss Function 后面加上正则项可以抑制过拟合的产生. 缺点是引入了一个需要手动调整的hyper-parameter. 详见 https://www.wikiwand.c

资深程序员带你玩转深度学习中的正则化技术(附Python代码)!

目录 1. 什么是正则化? 2. 正则化如何减少过拟合? 3. 深度学习中的各种正则化技术: L2和L1正则化 Dropout 数据增强(Data augmentation) 提前停止(Early stopping) 4. 案例:在MNIST数据集上使用Keras的案例研究 1. 什么是正则化? 在深入该主题之前,先来看看这几幅图: 之前见过这幅图吗?从左到右看,我们的模型从训练集的噪音数据中学习了过多的细节,最终导致模型在未知数据上的性能不好. 换句话说,从左向右,模型的复杂度在增加以至于训练

浅谈深度学习中潜藏的稀疏表达

浅谈深度学习中潜藏的稀疏表达 “王杨卢骆当时体,轻薄为文哂未休. 尔曹身与名俱灭,不废江河万古流.” — 唐 杜甫<戏为六绝句>(其二) [不要为我为啥放这首在开头,千人千面千理解吧] 深度学习:概述和一孔之见 深度学习(DL),或说深度神经网络(DNN), 作为传统机器学习中神经网络(NN).感知机(perceptron)模型的扩展延伸,正掀起铺天盖地的热潮.DNN火箭般的研究速度,在短短数年内带来了能“读懂”照片内容的图像识别系统,能和人对话到毫无PS痕迹的语音助手,能击败围棋世界冠军.引

深度学习中得数学,高效计算基础与线性分类器

深度学习说到底就是要调节网络中得权重,使网络的分类结果更接近于训练值.这个重复迭代的过程又是一个线性回归的问题.在这种可能会用到高数,线性代数,概率论中的知识. 一.数学基础提一提. 1.高数中得知识. 高数中最重要的就是微积分了,那在深度学习中出现最多的一个概念就是梯度.什么是梯度呢?要说导数,学过高数的肯定都知道.其实梯度就是当把标量x变成向量X时,对X求导就是梯度.那为什么要用梯度呢?因为梯度等于0在凸函数中往往代表着一个极小值点.我们要求得就是损失函数的极小值,这正是我们需要的.梯度是指

深度学习中 --- 解决过拟合问题(dropout, batchnormalization)

过拟合,在Tom M.Mitchell的<Machine Learning>中是如何定义的:给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比h’小,但在整个实例分布上h’比h的错误率小,那么就说假设h过度拟合训练数据. 也就是说,某一假设过度的拟合了训练数据,对于和训练数据的分布稍有不同的数据,错误率就会加大.这一般会出现在训练数据集比较小的情况. 深度学习中避免过拟合的方法: Dropout      2012年ImageNet比赛的获胜模型A

卷积在深度学习中的作用(转自http://timdettmers.com/2015/03/26/convolution-deep-learning/)

卷积可能是现在深入学习中最重要的概念.卷积网络和卷积网络将深度学习推向了几乎所有机器学习任务的最前沿.但是,卷积如此强大呢?它是如何工作的?在这篇博客文章中,我将解释卷积并将其与其他概念联系起来,以帮助您彻底理解卷积. 已经有一些关于深度学习卷积的博客文章,但我发现他们都对不必要的数学细节高度混淆,这些细节没有以任何有意义的方式进一步理解.这篇博客文章也会有很多数学细节,但我会从概念的角度来看待他们,在这里我用每个人都应该能够理解的图像表示底层数学.这篇博文的第一部分是针对任何想要了解深度学习中

深度学习中的数据增强技术(二)

上篇文章介绍了深度学习中数据增强技术的应用,及部分TensorFlow实现代码.废话不说了,这篇接着介绍: TensorFlow实现图片数据增强 注:类似的方法放在了代码中注释的部分,实际调试时可以分别打开运行 ③图像色彩调整 import matplotlib.pyplot as plt import tensorflow as tf # 读取图片 image_data = tf.gfile.FastGFile("data/dog3.jpg", 'br').read() # 4中调整

干货 | 深入理解深度学习中的激活函数

理解深度学习中的激活函数 在这个文章中,我们将会了解几种不同的激活函数,同时也会了解到哪个激活函数优于其他的激活函数,以及各个激活函数的优缺点. 1. 什么是激活函数? 生物神经网络是人工神经网络的起源.然而,人工神经网络(ANNs)的工作机制与大脑的工作机制并不是十分的相似.不过在我们了解为什么把激活函数应用在人工神经网络中之前,了解一下激活函数与生物神经网络的关联依然是十分有用的. 一个典型神经元的物理结构由细胞体.向其他神经元发送信息的轴突以及从其他神经元接受信号或信息的树突组成. ? 图

深度学习中交叉熵和KL散度和最大似然估计之间的关系

机器学习的面试题中经常会被问到交叉熵(cross entropy)和最大似然估计(MLE)或者KL散度有什么关系,查了一些资料发现优化这3个东西其实是等价的. 熵和交叉熵 提到交叉熵就需要了解下信息论中熵的定义.信息论认为: 确定的事件没有信息,随机事件包含最多的信息. 事件信息的定义为:\(I(x)=-log(P(x))\):而熵就是描述信息量:\(H(x)=E_{x\sim P}[I(x)]\),也就是\(H(x)=E_{x\sim P}[-log(P(x))]=-\Sigma_xP(x)l