Epoch不仅过时,而且有害?Reddit机器学习板块展开讨论

新闻 机器学习
Epoch最大的好处是确保每个样本被定期使用。当使用IID抽样时,你只要能想办法确保所有样本被同样频繁地使用就好了。

  [[397895]]

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。

有一天,一个调参侠在训练一个深度学习模型,要用到的两个数据集损失函数不同,数据集的大小还不是固定的,每天都在增加。

他有点发愁,这该怎么设置Epoch数呢?

在纠结的过程中,他突然想到:干嘛非得定一个Epoch数?只要对每个Batch进行独立同分布抽样 (IID Sampling)不就得了。

为了验证这个想法,调参侠去看了很多论文。发现越来越多的人介绍他们的训练方法时,只说进行了多少个Iteration,而抛弃了Epoch。

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

于是他在Reddit发起了讨论:Epoch是不是过时了,甚至还有危害?

Epoch不仅过时,而且有害?Reddit机器学习板块展开讨论

Epoch多余吗?

有人对这个观点表示赞同:

挺有道理,当数据集大小有很大差距,Batch大小相同时,设置一样的Epoch数,岂不是大数据集参数更新的次数多,小数据集参数更新次数少了,这似乎不对劲。

Epoch最大的好处是确保每个样本被定期使用。当使用IID抽样时,你只要能想办法确保所有样本被同样频繁地使用就好了。

但调参侠觉得让每个样本被定期使用就是他怀疑的点,IID抽样已经确保分布相同了,再让他们同频率被使用就是一种误导。

Epoch不仅过时,而且有害?Reddit机器学习板块展开讨论

反对者认为:

不能因为你觉得车没开在路的正中间就放开方向盘不管了,虽然大撒把不会改变你正好在路中间的概率,但它增加了方差

Epoch不仅过时,而且有害?Reddit机器学习板块展开讨论

调参侠最后总结道,这个争议有点像统计学里的“频率派 VS 贝叶斯派”,即认为数据集到底应该是确定的还是不确定的。

该怎么比较模型?

调参侠还注意到,有人用Batch Loss做损失曲线。他认为这比Epoch Loss更有参考价值。

[[397896]]

反对者觉得,你这个方式是挺好的,但Epoch依然有用。

因为即使在相同的硬件上,不同模型的算法效率不同也会带来巨大差异。

像各种Transformer和CNN这种底层代码实现都差不多,但是别的模型就可能有很不一样。比如我们自己的CUDA LSTM实现,至少和CudnnLSTM一样快,比原版TensorFlow实现快4倍左右。

最后,有个网友以CV模型为例对这个话题做出精彩总结,列了4种损失可视化方式,并介绍了什么情况该用哪个。

Epoch不仅过时,而且有害?Reddit机器学习板块展开讨论

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

Loss/Iteration告诉你需要多少次参数更新。当比较优化器时这很有用,可以帮助你加快训练速度或达到更高的精度。

Loss/Total Image Seen告诉你算法看到了多少图像时的损失。适合比较两种算法使用数据的效率。

如果你的算法在50万张时达到70%、100万张时达到75%,这可能比50万张时达到50%,100万张时达到80%的还要好。

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

Loss/Time也很重要,因为如果一个新模型减少了100个Epoch,但每个Iteration都慢100倍,我就不会选择这个模型。

虽然Loss/Time关系到硬件的具体表现,不够精准,我不会把这个写到论文里。但在自己的机器上这是很好的评估模型的参数。

使用数据增强时呢?

有网友提出,数据增强 (Data Augmentation)时Epoch也有点多余。因为数据集太小,人为给每个样本添加很多只有微小差距的版本,没必要让他们被同频率使用。

[[397897]]

反对者认为,数据增强作为正则化的一种形式减少了过拟合,但你引入的实际信息在训练模型时仍然局限于原始数据集。如果你的原始数据集足够小,Epoch表示你向模型展示了整个训练集,仍然是有意义的。

有人问道:

你是想表达“纪元(Epoch)”的纪元结束了吗?

调参侠:

对,现在是“时代(Era)”的时代。

Epoch不仅过时,而且有害?Reddit机器学习板块展开讨论

△无尽随机增强的首字母缩写ERA意为“时代”

 

 

 

责任编辑:张燕妮 来源: 量子位
相关推荐

2023-10-11 07:59:06

Redditmods机器人

2019-12-20 09:25:24

机器学习人工智能计算机

2018-12-27 14:20:52

机器学习人工智能Reddit

2022-04-26 14:13:26

物联网IoT

2011-12-30 11:11:13

2021-01-18 23:01:04

机器学习技术人工智能

2020-08-29 18:32:21

物联网投资物联网IOT

2021-03-11 09:55:51

机器学习人工智能计算机

2011-11-11 10:12:51

曙光

2017-02-25 20:32:36

2018-06-20 11:34:19

Reddit数据科学机器学习

2019-12-25 14:29:35

神经网络机器学习开源项目

2019-11-19 09:58:16

机器学习人工智能框架

2020-07-03 15:15:37

机器学习人工智能计算机

2021-04-07 14:50:14

计算机互联网 技术

2022-02-25 14:07:17

机器学习人工智能深度学习

2021-06-16 09:30:06

深度学习编程人工智能

2009-11-13 16:53:12

Oracle文档

2009-12-18 14:23:22

Fedora进程管理

2009-12-29 12:50:24

Ubuntu root
点赞
收藏

51CTO技术栈公众号