你确定经历过这样的时刻,看着电脑屏幕抓着头,困惑着:「为何我会在代码中使用这三个术语,它们有什么区别吗?」由于它们看起来实在太类似了。算法
为了理解这些术语有什么不一样,你须要了解一些关于机器学习的术语,好比梯度降低,以帮助你理解。网络
这里简单总结梯度降低的含义…机器学习
梯度降低函数
这是一个在机器学习中用于寻找最佳结果(曲线的最小值)的迭代优化算法。学习
梯度的含义是斜率或者斜坡的倾斜度。优化
降低的含义是代价函数的降低。blog
算法是迭代的,意思是须要屡次使用算法获取结果,以获得最优化结果。梯度降低的迭代性质能使欠拟合的图示演化以得到对数据的最佳拟合。get
梯度降低中有一个称为学习率的参量。如上图左所示,刚开始学习率更大,所以降低步长更大。随着点降低,学习率变得愈来愈小,从而降低步长也变小。同时,代价函数也在减少,或者说代价在减少,有时候也称为损失函数或者损失,二者都是同样的。(损失/代价的减少是一件好事)it
只有在数据很庞大的时候(在机器学习中,几乎任什么时候候都是),咱们才须要使用 epochs,batch size,迭代这些术语,在这种状况下,一次性将数据输入计算机是不可能的。所以,为了解决这个问题,咱们须要把数据分红小块,一块一块的传递给计算机,在每一步的末端更新神经网络的权重,拟合给定的数据。io
EPOCHS
当一个完整的数据集经过了神经网络一次而且返回了一次,这个过程称为一个 epoch。
然而,当一个 epoch 对于计算机而言太庞大的时候,就须要把它分红多个小块。
为何要使用多于一个 epoch?
我知道这刚开始听起来会很奇怪,在神经网络中传递完整的数据集一次是不够的,并且咱们须要将完整的数据集在一样的神经网络中传递屡次。可是请记住,咱们使用的是有限的数据集,而且咱们使用一个迭代过程即梯度降低,优化学习过程和图示。所以仅仅更新权重一次或者说使用一个 epoch 是不够的。
随着 epoch 数量增长,神经网络中的权重的更新次数也增长,曲线从欠拟合变得过拟合。
那么,几个 epoch 才是合适的呢?
不幸的是,这个问题并无正确的答案。对于不一样的数据集,答案是不同的。可是数据的多样性会影响合适的 epoch 的数量。好比,只有黑色的猫的数据集,以及有各类颜色的猫的数据集。
BATCH SIZE
一个 batch 中的样本总数。记住:batch size 和 number of batches 是不一样的。
BATCH 是什么?
在不能将数据一次性经过神经网络的时候,就须要将数据集分红几个 batch。
正如将这篇文章分红几个部分,如介绍、梯度降低、Epoch、Batch size 和迭代,从而使文章更容易阅读和理解。
迭代
理解迭代,只须要知道乘法表或者一个计算器就能够了。迭代是 batch 须要完成一个 epoch 的次数。记住:在一个 epoch 中,batch 数和迭代数是相等的。
好比对于一个有 2000 个训练样本的数据集。将 2000 个样本分红大小为 500 的 batch,那么完成一个 epoch 须要 4 个 iteration。