为什么神经网络研究人员关心时代?

机器算法验证 神经网络 梯度下降
2022-01-31 00:34:23

随机梯度下降中的一个时期被定义为数据的单次传递。对于每个 SGD minibatch,抽取k个样本,计算梯度并更新参数。在 epoch 设置中,样本是在没有替换的情况下抽取的。

但这似乎没有必要。为什么不在每次迭代时从整个数据集中随机抽取k个随机抽取每个 SGD 小批量?k在大量时期内,或多或少经常看到样本的小偏差似乎并不重要。

3个回答

除了弗兰克关于实用性的回答和大卫关于查看小子组的回答(这两点都很重要)之外,实际上还有一些理论上的理由更喜欢抽样而不进行替换。原因可能与大卫的观点有关(本质上是优惠券收集者的问题)。

2009 年,Léon Bottou 比较了特定文本分类问题 ( ) 的收敛性能。n=781,265

博图 (2009)。一些随机梯度下降算法的奇怪快速收敛学习和数据科学研讨会论文集。作者的pdf

他通过 SGD 用三种方法训练了支持向量机:

  • 随机:在每次迭代时从完整数据集中抽取随机样本。
  • Cycle:在开始学习过程之前打乱数据集,然后按顺序遍历它,以便在每个 epoch 中以相同的顺序查看示例。
  • Shuffle:在每个 epoch 之前重新洗牌数据集,以便每个 epoch 以不同的顺序进行。

凭经验检验分配的批次。E[C(θt)minθC(θ)]Cθtt

  • 对于 Random,收敛大约在的数量级上(正如当时现有理论所预期的那样)。t1
  • 的数量级上获得收敛(其中但根据排列而变化,例如)。tαα>1α1.8
  • Shuffle 更加混乱,但最佳拟合线给出了比 Random 快得多t2

这是他的图 1,说明: 以给定速率收敛的图示

这后来在理论上得到了论文的证实:

Gürbüzbalaban、Ozdaglar 和 Parrilo(2015 年)。为什么随机改组胜过随机梯度下降arXiv:1510.08560NIPS 2015 邀请演讲视频

他们的证明仅适用于损失函数是强凸的情况,即不适用于神经网络。但是,可以合理地预期类似的推理可能适用于神经网络案例(这更难分析)。

从性能的角度来看,这确实是非常不必要的,训练集很大,但是使用 epoch 会很方便,例如:

  • 它给出了一个很好的度量标准:“神经网络被训练了 10 个 epoch”比“神经网络被训练了 18942 次迭代”或“神经网络被训练了 303072 个样本”更清楚。
  • 在训练阶段发生了足够多的随机事件:随机权重初始化、小批量洗牌、辍学等。
  • 很容易实现
  • 它避免了想知道训练集是否足够大以至于没有时期

[1] 给出了另一个原因,考虑到今天的计算机配置,这并不是那么相关:

对于任何随机梯度下降方法(包括小批量情况),对于估计器的效率而言,每个示例或小批量近似独立地采样是很重要的。因为随机访问内存(或者更糟糕的是,磁盘)是昂贵的,一个很好的近似,称为增量梯度(Bertsekas,2010),是以与它们在内存中的顺序相对应的固定顺序访问示例(或小批量)或磁盘(如果我们不是在每个示例仅访问一次的纯在线案例中,则在第二个时期以相同的顺序重复示例)。在这种情况下,如果首先以随机顺序放置示例或小批量(为了确保这种情况,首先打乱示例可能很有用),则更安全。如果每个时期都改变访问小批量的顺序,则可以观察到更快的收敛,如果训练集保存在计算机内存中,这可能是相当有效的。


[1] 本吉奥,约书亚。基于梯度的深度架构训练的实用建议。 ”神经网络:交易技巧。施普林格柏林海德堡,2012. 437-478。

我有点不同意这显然无关紧要。假设有一百万个训练样本,我们抽取一千万个样本。

在 R 中,我们可以快速查看分布的样子

plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")

二项式 PMF

一些示例将被访问 20 次以上,而其中 1% 的示例将被访问 3 次或更少。如果仔细选择训练集来表示真实数据中示例的预期分布,这可能会对数据集的某些区域产生真正的影响——尤其是当您开始将数据分割成更小的组时。

考虑最近的案例,其中一位伊利诺伊州选民实际上被过度采样了 30 倍,并显着改变了模型对他的人口群体的估计(在较小程度上,对整个美国人口)。如果我们在阴天、景深较窄的情况下不小心对绿色背景拍摄的“Ruffed Grouse”图像进行过采样,而对其他类型的松鸡图像采样不足,则模型可能会将这些不相关的特征与类别标签相关联。分割数据的方法越多,这些子组就越多,发生这种错误的机会就越多。