Epoch不仅旧,而且有害?Reddit机器学习板展开讨论量子位
- 时间:
- 浏览:0
有一天,一个调参曼正在训练一个深学习模型,使用的两个数据集丢失函数不同,数据集的大小还没有固定,每天都在增加。
他有点烦恼,这该怎么设定Epoch个数呢。
为了验证那个想法,驯兽师去读了很多论文。当发现越来越多的人介绍他们的训练方法时,只说了做了几个搭配,就放弃了Epoch。
他暗示并强调Epoch数据集是有限的。这不仅麻烦,还有潜在的“危害”。去除Epoch并减少一个循环嵌套层总是好的。
于是他在Reddit开始讨论: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/