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

本文解释了深度学习里面三个最常见的概念,他们分别是Epoch,Batch Size和,看了看现有的博客还是错误蛮多的,看到一篇国外的博文不错,翻译一波
Epoch vs Batch Size vs– SAGAR
你肯定看过好多次这些概念了,但是你肯定想搞清楚这些概念的本质区别,因为他们看起来属实是很相似 。
为了搞清楚他们之间的区别,你需要先知道一些别的机器学习概念,比如说梯度下降,去帮助你更好地理解 。
下面是一个关于梯度下降的小总结
梯度下降
在机器学习中,为了寻找最佳的结果(曲线的最小值),我们往往会采取迭代的优化算法
梯度指的是斜坡的倾向或者倾斜程度
下降指的是梯度减小的方向
算法是迭代的是指我们需要运行很多次,去得到最优的结果 。随着迭代的进行,欠拟合的曲线会逐渐变得更好地拟合数据,下图可以看出这个过程
梯度下降需要一个叫做学习率的( rate)参数 。在上面的左图中,刚开始的步长比较大就是因为学习率比较大;随着学习率变小,可以看出步长逐渐变小了 。并且也可以看出损失函数(Cost )也逐渐变小(也有人叫做Loss,是一个意思)
当数据量变大时,我们无法一次性把所有数据都喂给模型,这时候我们需要一些术语包括, batch size,。这是因为我们需要把数据划分为更小的尺寸,并且把这些数据一份一份地输入电脑,用来在每一次输入数据时更新神经网络的权值
定义:每一个Epoch是指当一个完整的数据集已经被神经网络前向和反向传播一次
因为一个epoch可能很大,因此我们需要把它划分为很多个batch(批次)
为什么我们需要超过一个Epoch?
我知道你一开始肯定是懵的——为什么要把整个数据集喂给神经网络一次是不够的?从而我们需要我们需要喂好几次?
原因在于我们利用梯度下降的方法,它是一种迭代过程 。因此只喂一遍更新权值是不够的 。
从下图可以看出,只设定一个epoch(喂一遍)会导致欠拟合
随着epoch的增长,权值会更新,逐渐从欠拟合()到最优值(),再到过拟合(),因此不能设置过小或者过大的epoch数量
那么,什么是epoch应当设置的值呢?
不幸的是,这个问题没有一个标准答案 。针对不同的数据集答案是不同的,你可以说这个数字是取决于你的数据集的多样性的

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

文章插图
Batch Size
定义:在每一个批次中(batch)训练集的数目
请注意:Batch size 和 of(批次数)是两个不同的东西
什么是一个Batch呢?
正如前面说的,不能一次性把整个房数据集都喂给神经网络 。把数据集划分为多个批次,数目为:of
在我写这篇博客的时候也是划分了不同的章节,可以帮助读者更好地理解文章的
为了得到你需要知道乘法表或者有个计算器(呵呵
定义:是在一个epoch里需要的批次数( of )
请注意:批次数目(Theof )等于在一个epoch中所需的数目
如果我们有一个有2000个样例的训练集,我们可以把这2000个例子划分为每个批次有500个样例,那么我们完成1个epoch需要4个
在此例中,Batch Size:500 : 4 epoch:1
【深度学习概念之Epoch,Batch Size和Iterations】写作最后:最近找国内的深度学习工程师的岗位,需要复习一下深度学习的知识,可能最近会写一些博客,顺便求一波offer甭管是国内的国外的求offer