神经网络中Epoch、Iteration、Batch_size相关理解和说明

神经网络的有监督学习,实现权值更新一般有三种典型方案。

  1. 随机梯度下降法(SGD): 计算每个训练数据的误差,并立即调整权重。如果我们有 100 个训练数据点,SGD 将调整权重100 次
  2. 批处理方法中,针对训练数据的所有误差,计算每个权重更新,并且使用权重更新的 平均值 来调整权重。该方法使用所有的训练数据,只执行一次更新操作。
  3. 小批量处理:从 100 个训练数据中挑选出 20 个随机的数据,小批量处理方法将被应用于这 20 个数据的处理。在这个例子中,总共进行 5 次加权调整才能完成所有数据的训练过程 (5 = 100/20)。

借助图片理解:
如果我们有 100 个训练数据点,

  • 随机梯度下降法(SGD):每次随机选择一个数据点,参与训练,权重更新100次。
  • 批处理方法:针对训练数据的所有误差,计算每个权重更新,只执行一次更新操作。
  • 小批量处理:它是随机梯度下降法(SGD) 与批量处理二者的结合。权重更新5次

在这里插入图片描述

以下内容来自:
神经网络中Epoch、Iteration、Batchsize相关理解和说明_Microstrong-CSDN博客_epoch https://microstrong.blog.csdn.net/article/details/78597738?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&dist_request_id=1332037.9665.16191653504390027&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control

batch_size:翻译为:批大小(批尺寸)。

简单点说,批量大小将决定我们一次训练的样本数目。

batch_size将影响到模型的优化程度和速度。

为什么需要有Batch_Size:

batchsize的正确选择是为了在【内存效率】和【内存容量】之间寻找最佳平衡。

Batch_Size的取值:
在这里插入图片描述

  1. 全批次处理:Batch(蓝色)

如果数据集比较小,我们就采用全数据集。全数据集确定的方向能够更好的代表样本总体,从而更准确的朝向极值所在的方向。

注:对于大的数据集,我们不能使用全批次,因为会得到更差的结果。

  1. 迷你批次处理:Mini-batch(绿色)

选择一个适中的Batch_Size值。就是说我们选定一个batch的大小后,将会以batch的大小将数据输入深度学习的网络中,然后计算这个batch的所有样本的平均损失,即代价函数是所有样本的平均。

  1. 随机:Stochastic(Batch_Size等于1的情况)(红色)

每次修正方向以各自样本的梯度方向修正,横冲直撞各自为政,难以达到收敛。(随机性选择数据)

适当的增加Batch_Size的优点:
1.通过并行化提高内存利用率。

2.单次epoch的迭代次数减少,提高运行速度。(单次epoch=(全部训练样本/batchsize)/iteration=1)

3.适当的增加Batch_Size,梯度下降方向准确度增加,训练震动的幅度减小。(看上图便可知晓)

经验总结:

  • 相对于正常数据集,如果Batch_Size过小,训练数据就会非常难收敛,从而导致underfitting。
  • 增大Batch_Size,相对处理速度加快。
  • 增大Batch_Size,所需内存容量增加(epoch的次数需要增加以达到最好的结果)
  • 这里我们发现上面两个矛盾的问题,因为当epoch增加以后同样也会导致耗时增加从而速度下降。因此我们需要寻找最好的Batch_Size。

iteration:翻译为:迭代。

迭代是重复反馈的动作,神经网络中我们希望通过迭代进行多次的训练以达到所需的目标或结果。

每一次迭代得到的结果都会被作为下一次迭代的初始值。

一个迭代 = 一个正向通过 + 一个反向通过

epoch:翻译为:时期。

一个时期 = 所有训练样本的一个 正向传递 和一个 反向传递

参考链接:http://blog.csdn.net/anshiquanshu/article/details/72630012

总结:

epoch
当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一次epoch。然而,当一个epoch对于计算机而言太庞大的时候,就需要把它分成多个小块

Batch是什么?
在不能将数据一次性通过神经网络的时候,就需要将数据集分成几个batch。(一次训练中,分成几批数据,喂给神经网络

Batch Size
batch size将决定我们一次训练的样本数目。注意:batch size 和 number of batches是不同的。

Iteration
Iteration是batch需要完成一个epoch的次数。

举个例子:

有一个2000个训练样本的数据集。将2000个样本分成batch_size大小为500的batch,那么完成一个epoch需要4个iteration
再翻译:
有一个2000个训练样本的数据集。将2000个样本分成批处理大小为500的数据块,那么完成一个时代需要4次迭代

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值