一文让你完全搞懂BATCH_SIZE

1、名词介绍算法

    Batch Size定义:一次训练所选取的样本数。
Batch Size的大小影响模型的优化程度和速度。网络

2、如何理解优化

咱们知道,通常训练神经网络,会喂给神经网络不少数据,通过反向传播来更新权重。如今咱们假设,咱们要喂给神经网络m个样本,神经网络是分层的,并且每一层的神经元个数各不相同,最后的输出层有k个神经元。那么对于一个样本的神经网络的loss,也就是吴恩达说的J(θ),它实际上是输出层各个神经元的loss的和,那对于m个样本,整个神经网络的loss应该是m个样本的loss的和。神经网络

综上,样本有m个,神经网络的输出层有k个神经元,那么这个神经网络的loss=m个单样本loss的和,单样本loss=k个输出层神经元loss的和。也就是说与loss有关的有两个参数,样本数m和输出层神经元k。(固然和权重W和神经网络的深度也有关系,这里咱们只看m和k)数据

因此,对于训练神经网络来讲,我是把m个样本所有喂给神经网络,它前向传播一次后,算出loss,而后再反向传播、梯度降低。若是m很大,那更新一次权重就会花费好久的时间。因此为了提速,咱们能够把m个样本切分开来,造成一个一个的BATCH,先训练这些BATCH。这些BATCH,有着较小的样本数,样本数小了,训练的速度会快一些,可以有表明性的反应当前神经网络的一些状况。时间

batch是指从总样本切分出来的样本,batch_size是每一个 batch 中的样本数,Epoch是总样本的传递次数,batch_numbers使在完成一次Epoch要处理的batch的个数。oss

假设有一个包含200个样本的数据集(总样本),而且选择的batch_size大小为5和1,000个Epoch。这意味着数据集将分为40个Batch,batch_numbers就是40,每一个Batch有5个样本。每喂给神经网络一个batch(5个样本)后,权重将更新。这也意味着一个epoch将涉及40个Batch或40次更新。有1000个Epoch,将传递整个数据集1,000次。bat

3、设置要求参数

1.Batch_Size 过小,算法在 200 epoches 内不收敛。模型

2.随着 Batch_Size 增大,处理相同数据量的速度越快。

3.随着 Batch_Size 增大,达到相同精度所须要的 epoch 数量愈来愈多。

4.因为上述两种因素的矛盾, Batch_Size 增大到某个时候,达到时间上的最优。

5.因为最终收敛精度会陷入不一样的局部极值,所以 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。

相关文章
相关标签/搜索