互联网资讯 / 人工智能 · 2023年12月8日 0

过时和有害性的讨论

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

有一天,一位调参专家在训练一个深度学习模型,遇到两个数据集的损失函数不一致,并且数据集的规模每天都在增长。

他开始思考,如何确定Epoch的数量。

在思索中,他突然想到:为何一定要设定Epoch数量?只需对每个BATch进行独立同分布抽样即可。

为了验证自己的想法,调参专家查阅了许多论文,发现越来越多的研究者在介绍训练方法时只提到进行了多少次ITeRation,而不是Epoch。

他意识到,Epoch给人一种数据集是有限的印象,这不仅带来麻烦,还有潜在的风险。因此,去掉Epoch的概念,可以减少循环嵌套的层数,这总是有益的。

于是,他在ReddIT上发起了讨论:Epoch是否已经过时,甚至可能带来危害?

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

有人对此表示赞同:

这是有道理的。当数据集规模差异很大,而BATch大小相同的情况下,统一的Epoch会造成大数据集的参数更新次数多,小数据集的参数更新次数少。

Epoch的主要好处在于确保每个样本被定期使用。但调参专家认为,确保样本被频繁使用正是他怀疑的地方,IID抽样已经保证了分布一致,再要求样本同频率使用可能会误导。

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

反对者则认为:

不能因为觉得车在路中间就放开方向盘,虽然这样做不会改变你恰好在路中间的概率,但却增加了方差。

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

调参专家最后总结道,这场争论有点类似于统计学中的频率派和贝叶斯派之争,核心问题在于数据集究竟是确定的还是不确定的。

那么,如何比较模型呢?

他还注意到,有人使用BATch LoSS来绘制损失曲线,他认为这种方式比Epoch LoSS更具参考价值。

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

反对者则表示,这种方法不错,但Epoch依然有其用处。

因为即使在相同的硬件环境下,不同模型的算法效率也会有显著差异。虽然各种TRansfoRMeR和CNN的底层代码实现相似,但其他模型可能差异很大。例如,我们的CUDA LSTM实现至少与CudnnLSTM同样快,且比原版TensoRFlow实现快约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与硬件性能有关,不够精确,但在自己的机器上可以很好地评估模型的参数。

在使用数据增强时,是否也适用?

有网友提出,数据增强时Epoch似乎有些多余,因为数据集较小时,给每个样本添加多个微小差异的版本,并不需要确保它们被同频率使用。

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

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

有人问:

你是想说Epoch的时代已经结束了吗?

调参专家答:

是的,现在是时代(ERa)的时代。

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

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