
曾经有位模型调参者正在对深度学习模型进行训练。这并非一项简单的工作,因为他需要用到的两个数据集具有不同的损失函数,而且这两个数据集的规模都是随着时间而增加的。
那么问题来了,在这种情况之下,该以怎样的策略设定训练的轮次呢?他的内心起了一些疑问。
突然,他脑海中闪过一个念头——既然为什么非要用固定“轮数”(Epoch)的方法来限制模型呢?他觉得,如果对每个Batch进行独立同分布抽样(IID Sampling)的话,或许会有更好的效果。
为了验证这个想法,调参者开始深入研究相关论文。他发现越来越多的研究者在介绍他们的训练方法时,更多是以迭代次数(Iteration)为衡量单位,而非之前的固定轮次(Epoch)。
调参者思考到,固定的Epoch设置仿佛在暗示和强调数据集的有限性,这既麻烦又可能带来“潜在风险”。他认为,去掉Epoch的设定,减少循环嵌套的层数,对模型训练来说总是有益的。
于是他在Reddit上发起了讨论:“Epoch是否已经过时,甚至可能带来危害?”
对此观点,有人表示赞同。他们认为当数据集大小差距悬殊而Batch大小相设置相同的Epoch数似乎不太合理,这会导致大数据集参数更新次数多于小数据集。
另一些人则指出,虽然独立的身份分布抽样可以保证每个样本都有同等机会被使用,但强调这一点也有些矫枉过正了。反对者提出一种看法:驾车不应因为误以为偏离了道路中心就完全放弃方向盘。虽然“大撒把”不会改变车辆在道路上的位置概率,但这种行为却可能增加其他风险。
最终,调参者对这一问题有了更为深远的理解。这个问题颇有些类似统计学中的“频率派与贝叶斯派”的争执。也就是说,数据集应该被视为确定的还是不确定的。
调参者还注意到,以Batch Loss作为损失曲线来衡量模型的表现,比传统的Epoch Loss更有参考价值。
至于反对者所持的观点,他们认为尽管Epoch的概念可能不再那么重要,但仍然有其存在的价值。例如在硬件条件相同的情况下,不同算法或模型间的效率仍会带来显著的差异。
在对这一问题进行探讨时,一位网友通过具体的计算机视觉(CV)模型实例进行了精彩总结。他列举了四种损失可视化方式,并详细解释了每种方式适用的场景。
例如,“Loss/Epoch”可以告诉我们模型需要观察同一张图像多少次才能理解它;“Loss/Iteration”则能告诉我们模型需要多少次参数更新才能达到一定效果;而“Loss/Total Image Seen”则告诉我们算法在处理了多少张图像时达到了某个损失值。这位网友还提到了一种更客观的比较方式——“Loss/Time”,这是对模型的运行速度与性能的综合考量。
还有观点提出在数据增强(Data Augmentation)时,由于数据集规模较小且人为添加了大量微小差异的样本版本,因此无需强调每个样本被同频率使用。
然而反对者指出,数据增强作为正则化的一种形式有助于减少过拟合。即使原始数据集规模较小,“Epoch”的概念仍能体现模型对完整训练集的展示过程。
最后有人问道:“‘纪元’(Epoch)的结束了吗?”调参者回答说:“现在进入了‘时代’(Era)的时代。”
△“无尽随机增强的首字母缩写”即ERA代表“时代”,意味着新的训练策略和时代来临。
参考链接:
— 完 —
