在机器学习中,在实现梯度下降的过程中epoch、batch、iteration都会出现。
首先了解一下梯度下降算法:
一、梯度下降
1、应用:求解无约束最优化问题
2、原理:
比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。
从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
二、epoch
epoch:纪元、时期、时代,在这里表示跑完一个完整的数据;一个epoch:所有的数据送入网络中, 完成了一次前向计算 + 反向传播的过程。为了达到模型的最有拟合状态,通常会使用多次epoch。简单说,epochs指的就是训练过程中数据将被“轮”多少次。由于一个epoch的通常非常大,所以会将数据分成多个batch,进行多次迭代。
举个例子:训练集有1000个样本,batch-size=10,那么训练完整个样本集需要:100次iteration,1次epoch。
具体的计算公式为:
one epoch = numbers of iterations = N = 训练样本的数量/batch_size
三、batch size
batch:一批; (食物、药物等)一批生产的量; 批;分批处理;在这里表示的意思与他本身的词义相同,就是将一整个数据分批进行输入处理。batch-size就是划分的大小,也就是一次输入的数据。
四、iteration
iteration:迭代,在这里的作用与他本身的含义一致。在将数据划分成多个批次就会多次执行程序模块,每一次迭代都是一次权重更新,每一次权重更新需要batch_size个数据进行Forward运算得到损失函数,再BP算法更新参数。1个iteration等于使用batchsize个样本训练一次。