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


69

随机梯度下降的时期被定义为对数据的单次通过。对于每个SGD微型批次,将绘制样本,计算梯度并更新参数。在时代设置中,样本被抽取而无需替换。k

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


1
+1问题,有趣的是,我有几乎完全相同的问题要问!
Haitao Du

轶事证据,但我最近在MNIST数据上使用SGD拟合了一层神经网络,训练规模为50000。经过一个随机遍历后,分类精度不高于30-40%,对数似然率显然没有收敛。因此,我又重复了30个步骤,以达到90%以上的准确性。至少通过反例,这向我表明了它们可能是必要的。
tomka

6
@tomka这似乎提供了必要的证据,即必须对数据进行多次传递,这与此处提出的方法是一致的:每次训练迭代都要重复抽取样本k
Sycorax

1
另一个有趣的问题是:小批量订购是否也会对过拟合产生影响?
2016年

3
@Pinocchio标准的SGD做法是不替换而进行采样(直到样本池耗尽,此时新的纪元将再次使用所有数据)。我的问题是为什么它不使用抽样替换。事实证明,一个答案是无需替换就可以提高模型的收敛速度。
Sycorax

Answers:


60

除了弗兰克(Franck)关于实用性的答案和戴维(David)关于研究小亚群的答案(两者都是重要点)之外,实际上还有一些理论上的理由更喜欢不替换样本。原因可能与David的观点有关(这本质上是优惠券收集者的问题)。

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

巴托(2009)。某些随机梯度下降算法的奇异快速收敛性。学习和数据科学研讨会论文集。(作者的pdf

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

  • 随机:在每次迭代时从完整数据集中抽取随机样本。
  • 循环:在开始学习过程之前先对数据集进行洗牌,然后按顺序遍历它,以便在每个纪元中您都可以以相同的顺序看到示例。
  • 随机播放:在每个时期之前重新混合数据集,以便每个时期以不同的顺序进行。

他凭经验检查了收敛,其中是成本函数,是优化步骤的参数,期望值超出了改组分配的批次。E[C(θt)minθC(θ)]Cθtt

  • 对于随机而言,收敛大约在(这是现有理论所期望的)。t1
  • 周期以的阶数(但根据排列而变化,例如,图1的)获得收敛。tαα>1α1.8
  • 洗牌是越乱,但最佳拟合线给,高于随机更快。t2

他的图1说明了这一点: 给定速率下的收敛图

这篇论文后来在理论上证实了这一点:

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

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


3
这是一个非常有见地的答案。非常感谢您的贡献。
Sycorax

1
抱歉,您的无知,但您能再解释一下这三个之间的区别吗?我对“随机”感到特别困惑,当您说“样本”时,您是什么意思?我知道这不是您要引用的内容,但是标准的Neural Net迷你批次SGD通常会在每次迭代时对批次进行采样而无需更换。那是随机的吗?如果是这样,那与Shuffle有什么不同?
Pinocchio

1
现在,我重新阅读了所有这三种算法,它们似乎是相同的算法,无论是否对数据集进行混洗,以及SGD的批次始终总是随机的,有何区别?
Pinocchio

3
@Pinocchio想象一下一个四元素数据集。随机可能去ACADBBCA;每个条目都是完全随机的。周期可能会过去BDAC BDAC BDAC;它为每个时期选择一个顺序,然后重复。随机播放可以是BDAC ADCB CBAD;它会进入时代,但每个都是随机的。此分析不使用小型批处理,而是一次使用一个元素的SGD。
Dougal

这是一个很好的答案。谢谢你!
DankMasterDan

24

从具有大量训练集的性能角度来看,确实确实没有必要,但是使用纪元会很方便,例如:

  • 它给出了一个相当不错的指标:“神经网络训练了10个纪元”比“神经网络训练了18942次迭代”或“神经网络训练了303072个样本”的说法更为明确。
  • 在训练阶段,发生了足够多的随机事件:随机权重初始化,小批量改组,辍学等。
  • 易于实现
  • 它避免了想知道训练集是否足够大而没有历元

[1]给出了另一个原因,鉴于今天的计算机配置,该原因并没有太大关系:

对于任何随机梯度下降方法(包括小批量情况),对于估计器的效率而言,重要的是,每个示例或小批量应近似独立地采样。由于随机访问内存(或者更糟的是访问磁盘)的成本很高,因此一个很好的近似值(称为增量梯度(Bertsekas,2010年))是按照与它们在内存中的顺序相对应的固定顺序访问示例(或迷你批)。或磁盘(如果不是在纯在线情况下每个示例仅被访问一次,则在第二个时代以相同的顺序重复示例)。在这种情况下,如果先随机放置示例或微型批处理,则更为安全(为确保是这种情况,首先对示例进行混洗可能会很有用)。如果在每个时期更改了迷你批的访问顺序,则会观察到更快的收敛速度,如果训练集保存在计算机内存中,则可以合理地有效。


[1] Bengio,Yoshua。“ 基于梯度的深度架构培训的实用建议。 ”神经网络:交易技巧。Springer Berlin Heidelberg,2012年。437-478。


1
这些似乎很不错,但是对于您的更新而言,似乎每个时间段采样是相关采样(因为一个时间段内两次被采样的概率为0)。因此,我不确定作者如何宣称时代结构是独立的,除非他们的“近似独立”的含义是“根本不是独立的”。k
Sycorax

1
@Sycorax不放回抽样,尽管当然是不独立的,在某种意义上说,它是“近似独立” 更换。从训练对任何一个数据点都不太在意的分类器的角度来看,这种可交换性肯定非常接近“近似独立”。
Dougal

18

我有些不同意它显然无关紧要。假设有100万个培训示例,并且我们抽取了1000万个样本。

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

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

二项式PMF

一些示例将被访问20次以上,而其中1%将被访问3次或更少。如果精心选择训练集以表示实际数据中示例的预期分布,那么这可能会对数据集的某些区域产生实际影响,尤其是一旦开始将数据切成较小的组时。

考虑一下最近的一个案例,其中一名伊利诺伊州选民有效地对其样本进行了30倍的过采样,并大大改变了其人口统计模型的估计值(在较小的范围内,对整个美国人口而言)。如果我们不小心对多云背景下景深较窄的绿色背景下拍摄的“粗糙松鸡”图像进行了过度采样,而对其他种类的松鸡图像进行了欠采样,则该模型可能会将那些不相关的特征与类别标签相关联。分割数据的方式越多,这些子组就会越多,出现这种错误的机会也就越多。


1
我认为对于大型培训集,这在实践中不会有很大的不同,但绝对可以,对于较小的培训集,我肯定会有所不同。
Franck Dernoncourt '16

5
@FranckDernoncourt很好,整个观点是,如果您开始查看小的子组,那么对于大型数据集可能会很重要。在大型数据集中,这并非不常见的过程
dimpol

非常确定您应该使用统一的分布,而不是二项式
lahwran

2
@lahwran我们正在从元素中采样次,并进行了替换。在R中,该值为。在此处,您可以使用绘制频率分布。看起来就像我上面绘制的二项式分布。107106samples = sample(1:1E6, size = 1E7, replace = TRUE)plot(table(table(samples)) / 1E7)
David J. Harris,

2
啊哈!那我错了。
lahwran
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.