我正在选修速成课程,在“第二课- SGD”中写着:
小批次:用来更新权重的随机点。
它还说梯度下降使用小批量。
什么是迷你批次?小批次和普通批次有什么区别?
发布于 2019-10-07 12:32:37
两者都是渐变下降的方法。但是在批处理梯度下降中,您可以在一次迭代中处理整个训练集。然而,在小批处理梯度下降中,您在每次迭代中处理训练集的一个小子集。
此外,比较随机梯度下降,其中您处理一个单一的例子,从训练集在每次迭代。
另一种看法是:它们都是相同的梯度下降方法的例子,批处理大小为m,训练集为n。对于随机梯度下降,m=1。对于批处理梯度下降,m= n。对于小批处理,m=b和b< n,通常b比n小。
小批处理增加了为b确定正确大小的问题,但是找到正确的b可能会大大提高您的结果。
发布于 2019-10-07 15:10:58
@majid gain给出了很好的解释,但我只想添加更多的细节,以确保您得到了这些信息,以及我们为什么使用它,或者使用它可以获得哪些优势:
随机梯度下降根据下面的迭代过程执行更新。这种一次更新单个示例的学习称为online learning.。
其算法如下所示:
procedure Online
for several epochs of training do
for each training example in the data do
Calculate gradients of the loss
Update the parameters according to this gradient
end for
end for
end procedure相反,我们还可以想到一种批量学习算法,它将整个数据集作为一个单元处理,计算该单元的梯度,然后在对数据进行完全遍历之后才执行更新。这两种更新策略都有取舍。
·在线培训算法通常能更快地找到一个相对较好的解决方案,因为在执行更新之前,它们不需要对数据进行全面的检查。
但是,在培训结束时,批量学习算法可以更稳定,因为它们不会受到最近看到的培训示例的过度影响。
批处理的算法如下所示:
procedure Batch
for several epochs of training do
for each training example in the data do
Calculate and accumulate gradients of the loss
end for
Update the parameters according to the accumulated gradient
end for
end procedure·批量训练算法也更容易陷入局部最优;在线训练算法的随机性常常使它们从局部最优中跳出来,并找到更好的全局解决方案。
迷你批处理是这两种策略之间的一个愉快的中介。基本上,小型化训练类似于在线训练,但不是一次处理一个单一的训练例子,而是一次计算n个训练例子的梯度。在n= 1的极端情况下,这相当于标准的在线培训,而在另一个极端,当n等于数据的大小时,这相当于完全批量的训练。
随着训练示例数量的增加,每个参数更新都变得更加信息丰富和稳定,但是执行一次更新的时间却增加了,因此通常选择一个n来实现两者之间的良好平衡。小型化的另一个主要优点是,通过使用一些技巧,实际上可以使n个训练示例的同时处理比单独处理n个不同的例子要快得多。具体而言,通过将多个训练实例和相似的操作分组同时处理,我们可以实现计算效率的巨大提高,因为现代硬件(尤其是GPU,但也包括CPU)具有非常高效的矢量处理指令,可以用适当的结构化输入来利用。
如果您有时间,您可以从这个优秀的纸,中进一步阅读该解释:
https://stackoverflow.com/questions/58269460
复制相似问题