三三文章网 - 科技知识大全是专业科技新媒体网站。网站著眼于新一代科技新闻的全面及时处理报导,让网民在外面第二时间交待全球新一代的科技资讯。内容涵括AI+、互联网、IT、创业投资、核定、区块链、智能硬件等领域

Epoch不仅旧,而且有害?Reddit机器学习板展开讨论量子位

  • 时间:
  • 浏览:0

有一天,一个调参曼正在训练一个深学习模型,使用的两个数据集丢失函数不同,数据集的大小还没有固定,每天都在增加。

他有点烦恼,这该怎么设定Epoch个数呢。

在烦恼的过程中,突然想到为什么必须决定Epoch数量。对每个Batch进行独立同分布采样(IID Sampling)不就行了吗。

为了验证那个想法,驯兽师去读了很多论文。当发现越来越多的人介绍他们的训练方法时,只说了做了几个搭配,就放弃了Epoch。

他暗示并强调Epoch数据集是有限的。这不仅麻烦,还有潜在的“危害”。去除Epoch并减少一个循环嵌套层总是好的。

于是他在Reddit开始讨论:Epoch过时了,是不是连危害都有?

Epoch多余吗?有人同意这个观点:

但调查员觉得让每个样本定期使用是他的疑点,IID抽样确认分布相同,认为让其在相同频率下使用是一种误解。

反对者

调查人员最后总结说,这场辩论类似于统计学中的“频率派VS贝叶斯派”。也就是说,数据集应该是确定的还是不确定的。

如何比较模型。他还注意到,有人在用Batch Loss做损耗曲线。他认为比Loss更有参考价值。

反对者认为你的这个方法很好,但Epoch仍然有用。

因为即使是相同的硬件,不同模型的算法效率不同也会产生很大的差异。

最后,一位网友以CV模型为例成功总结了这一话题,列举了四种损耗可视化方式,介绍了在什么情况下应该使用哪一种。

Loss/Epoch告诉你一个模型要观察多少次同一个图像才能理解。

Loss/Iteration告诉您需要几次参数更新。这在比较优化程序时很有用,有助于加快训练速度或提高精度。

Loss/Ttal Image Seen告诉我们算法在看到多少图像时的损失。它适用于比较两种算法使用数据的效率。

如果你的算法是50万张达到70%,100万张达到75%,这可能比50万张达到50%,100万张达到80%的好。

此外,它还消除了Batch Size的影响。这允许在不同GPU上训练的具有不同Batch Size的模型之间进行公平比较。

Loss/Time也很重要。如果新模型减少了100个Epoch,但每个操作慢100倍,我就不选择这个模型。

Loss/Tim与硬件的具体表现有关,但并不准确。我不会把这个写在论文里的。但在我的机器上,这是一个评估模型的好参数。

使用数据扩展?有网友主张,数据扩展(Data Augmentation)的情况下Epoch也有点多余。因为数据集太小,所以不需要人为地添加每个样本只有微小差别的版本,使其在相同的频率下使用。

反对者认为,数据增强作为规范化的一种形式减少了过度拟合,但你引入的实际信息在训练模型时也仅限于原始数据集。如果你的原始数据集足够小,Epoch就意味着你已经向模型展示了整个培训集,仍然很有意义。

有人问:

参与者:

◆无限随机扩展的首字母缩写ERA表示“时代

参考链接:

[1]https://www.Reddit.com/r/MachineLearning/comments/n61vxw/d_is_the_concept_of_an_Epoch_being_phased_out_or/