深度学习概念之Epoch,Batch Size和Iterations

Posted 拉风小宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习概念之Epoch,Batch Size和Iterations相关的知识,希望对你有一定的参考价值。

本文解释了深度学习里面三个最常见的概念,他们分别是Epoch,Batch Size和Iterations,看了看现有的博客还是错误蛮多的,看到一篇国外的博文不错,翻译一波

Epoch vs Batch Size vs Iterations – SAGAR SHARMA

你肯定看过好多次这些概念了,但是你肯定想搞清楚这些概念的本质区别,因为他们看起来属实是很相似。

为了搞清楚他们之间的区别,你需要先知道一些别的机器学习概念,比如说梯度下降,去帮助你更好地理解。

下面是一个关于梯度下降的小总结

梯度下降

在机器学习中,为了寻找最佳的结果(曲线的最小值),我们往往会采取迭代的优化算法

梯度指的是斜坡的倾向或者倾斜程度

下降指的是梯度减小的方向

算法是迭代的是指我们需要运行很多次,去得到最优的结果。随着迭代的进行,欠拟合的曲线会逐渐变得更好地拟合数据,下图可以看出这个过程
梯度下降需要一个叫做学习率的(learning rate)参数。在上面的左图中,刚开始的步长比较大就是因为学习率比较大;随着学习率变小,可以看出步长逐渐变小了。并且也可以看出损失函数(Cost Function)也逐渐变小(也有人叫做Loss Function,是一个意思)

当数据量变大时,我们无法一次性把所有数据都喂给模型,这时候我们需要一些术语包括epochs, batch size, iterations。这是因为我们需要把数据划分为更小的尺寸,并且把这些数据一份一份地输入电脑,用来在每一次输入数据时更新神经网络的权值

Epochs

定义:每一个Epoch是指当一个完整的数据集已经被神经网络前向和反向传播一次

因为一个epoch可能很大,因此我们需要把它划分为很多个batch(批次)

为什么我们需要超过一个Epoch?

我知道你一开始肯定是懵的——为什么要把整个数据集喂给神经网络一次是不够的?从而我们需要我们需要喂好几次?
原因在于我们利用梯度下降的方法,它是一种迭代过程。因此只喂一遍更新权值是不够的。

从下图可以看出,只设定一个epoch(喂一遍)会导致欠拟合

随着epoch的增长,权值会更新,逐渐从欠拟合(underfitting)到最优值(optimal),再到过拟合(overfitting),因此不能设置过小或者过大的epoch数量

那么,什么是epoch应当设置的值呢?

不幸的是,这个问题没有一个标准答案。针对不同的数据集答案是不同的,你可以说这个数字是取决于你的数据集的多样性的

Batch Size

定义:在每一个批次中(batch)训练集的数目
请注意:Batch size 和number of batches (批次数)是两个不同的东西

什么是一个Batch呢?

正如前面说的,不能一次性把整个房数据集都喂给神经网络。把数据集划分为多个批次,数目为: Number of Batches

在我写这篇博客的时候也是划分了不同的章节,可以帮助读者更好地理解文章的😄

Iterations

为了得到iterations你需要知道乘法表或者有个计算器(呵呵🙄
定义:Iterations是在一个epoch里需要的批次数(number of batches)
请注意:批次数目(The number of batches)等于在一个epoch中所需的Iteration数目

如果我们有一个有2000个样例的训练集,我们可以把这2000个例子划分为每个批次有500个样例,那么我们完成1个epoch需要4个Iterations
在此例中,Batch Size:500 Iterations: 4 epoch:1


写作最后:最近找国内的深度学习工程师的岗位,需要复习一下深度学习的知识,可能最近会写一些博客,顺便求一波offer😝甭管是国内的国外的求offer🙏🙏🙏

以上是关于深度学习概念之Epoch,Batch Size和Iterations的主要内容,如果未能解决你的问题,请参考以下文章

深度学习中epoch,batch的概念--笔记

深度学习中epoch,batch的概念--笔记

深度学习基础Epoch, Batch, Iteration这三个概念的区别与联系

如何在此类机器学习任务中修复 batch_size 和 epoch

BatchIteration and Epoch

BatchIteration and Epoch