我每-5-步测量了-10-000-次迭代的神经网络训练

我每 5 步测量了 10,000 次迭代的神经网络训练

原文:towardsdatascience.com/i-measured-neural-network-training-every-5-steps-for-10000-iterations/

我以为我理解了神经网络是如何学习的。训练它们,观察损失下降,每个 epoch 保存检查点。标准工作流程。然后我以 5 步间隔而不是 epoch 级别测量训练动态,我所知道的一切都崩溃了。

开始这次旅程的问题:神经网络的容量在训练过程中是否会扩展,或者它是否从初始化时就是固定的?直到 2019 年,我们都认为答案很明显——参数是固定的,所以容量也必须是固定的。但 Ansuini 等人发现了一些不应该发生的事情:有效表示维度在训练过程中增加。Yang 等人于 2024 年证实了这一点。

这一切都改变了。如果学习空间在网络学习的同时扩展,我们如何从机制上理解它实际上在做什么?

高频训练检查点

当我们用 10,000 步训练 DNN 时,我们过去会每 100 步或 200 步设置检查点。以 5 步间隔进行测量会产生太多难以管理的记录。但这些高频检查点揭示了关于 DNN 如何学习的非常宝贵的信息。

高频检查点提供以下信息:

  • 是否可以恢复早期训练错误(通常不能)

  • 为什么有些架构有效而有些失败

  • 解释性分析应该在何时进行(剧透:比我们想象的要早得多)

  • 如何设计更好的训练方法

在一个应用研究项目中,我以高分辨率测量了 DNN 的训练——每 5 步而不是每 100 步或 500 步。我使用了一个基本的 MLP 架构,以及我过去 10 年一直在使用的相同数据集。

图片

图 1. 实验设置我们使用 z 分数分析来检测离散转换

滚动统计:

结果令人惊讶。深度神经网络,即使是简单的架构,在训练过程中会扩展其有效参数空间。我曾假设这个空间是由架构本身预先决定的。相反,DNNs 会经历离散的转换——小的跳跃,这些跳跃增加了它们学习空间的有效维度。

图片

图 2:训练过程中激活模式的有效维度,使用稳定秩进行测量。我们看到出现了三个不同的阶段:初始崩溃(步骤 0-300),维度从 2500 下降到 500;扩展阶段(步骤 300-5000),维度上升到 1000;稳定阶段(步骤 5000-8000),维度达到平台期。这表明步骤 0-2000 构成了一个质的发展窗口。图由作者提供。

明显的发展窗口。图由作者提供。

在图 2 中,我们可以看到训练过程中激活有效维度的监控。我们看到这些转换集中在训练的前 25%,并在较大的检查点间隔(100-1000 步)中隐藏。我们需要高频检查点(5 步)来检测大多数转换。曲线还显示了一种有趣的行为。初始的崩溃代表了损失景观的重构,其中随机初始化让位于与任务对齐的结构。然后我们看到一个扩张阶段,维度逐渐增长。在 2000-3000 步之间,有一个稳定期,反映了 DNN 架构容量限制。

图 3:表示性维度(使用稳定秩测量)与损失(ρ = −0.951)表现出强烈的负相关性,与梯度幅度(ρ = −0.701)表现出中等负相关性。随着损失从 2.0 降至接近零,维度从 9.0 扩展到 9.6。出人意料的是,改进的性能与扩展而不是压缩的表示相关。图片由作者提供。

这改变了我们思考 DNN 训练、可解释性和架构设计的方式。

探索与扩展

考虑以下两种场景:

| 场景 A: 固定容量(探索

场景 B: 扩展容量 (创新)
您的网络从固定的表示容量开始。训练探索这个预先确定的区域的不同区域。这就像在一张从一开始就存在的地图上导航。早期训练只是意味着“还没有找到好的区域”。

哪个是正确的?

这个问题很重要,因为如果容量扩展了,那么早期训练就无法恢复。你不能仅仅“延长训练时间”来纠正早期的错误。因此,可解释性有一个时间线,其中特征按顺序形成。理解这个顺序是关键。此外,架构设计似乎更多地关于扩展率,而不仅仅是最终容量。最后,存在关键期。如果我们错过了窗口,我们就错过了能力。

当我们需要测量高频检查点时

扩展与探索

图 4:在图 1 描述的实验中,高频采样与低频采样的比较。我们使用滚动统计和 z 分数分析检测离散转换。高频采样捕捉到粗粒度测量所遗漏的快速转换。这种比较测试了时间分辨率是否会影响可观察的动力学。

如图 2 和 3 所示,高频采样揭示了有趣的信息。我们可以识别出三个不同的阶段:

第一阶段:崩溃(步骤 0-300) 网络从随机初始化重新结构化。维度急剧下降,因为损失景观在任务周围重塑。这还不是学习,而是学习准备。
第二阶段:扩展(步骤 300-5,000) 维度稳步上升。这是容量扩展。网络正在建立表征结构。简单的特征能够使复杂的特征得以形成,进而使更高阶的特征得以形成。
第三阶段:稳定化(步骤 5,000-8,000) 增长平台期。架构约束绑定。网络细化它已有的内容,而不是建立新的容量。

这个图揭示了扩展,而非探索。在第 5,000 步时,网络可以表示在第 300 步时不可能表示的函数,因为那时它们还不存在。

容量扩展,参数不变

图 5:激活空间与权重空间的比较。

权重空间维度几乎保持不变

(9.72-9.79)仅在 8000 步中检测到 1 次“跳跃”。图由作者提供

激活空间与权重空间的比较表明,两者都遵循不同的动态,具有高频采样。激活空间显示了 85 个离散跳跃(包括高斯噪声). 权重空间只显示 1 个。相同的网络,相同的训练运行。这证实了在第 8,000 步时,网络计算了在第 5,000 步时无法计算的功能,尽管参数数量相同。这是扩展的最明显证据。

DNNs 通过在训练期间生成新的参数空间选项来创新,以表示复杂任务。

转换快速且早发生

我们已经看到高频采样如何显示许多更多的转换。低频检查点会错过几乎所有这些转换。这些转换集中在早期。三分之二的所有转换发生在前 2,000 步——仅占总训练时间的 25%。这意味着如果我们想了解哪些特征形成以及何时形成,我们需要在步骤 0-2,000 时查看,而不是在收敛时查看。到第 5,000 步时,故事就结束了。

扩展与优化耦合

如果我们再次看图 3,我们会看到随着损失减少,维度扩展。网络在学习过程中不会简化,而是变得更加复杂。维度与损失(ρ = -0.951)高度相关,与梯度幅度(ρ = -0.701)适度相关。这可能会显得有些反直觉:改进的性能与扩展的表征相关,而不是与压缩的表征相关。我们可能会预期网络在学习过程中找到更简单、更压缩的表征。相反,它们扩展到更高维度的空间。

为什么?

一种可能的解释是,复杂任务需要复杂的表征。网络没有找到更简单的解释,而是构建了分离类别、识别模式和泛化所需的表征变化。

实际部署

我们已经看到了一种理解和调试跨任何领域的 DNN 训练的不同方法。

如果我们知道特征在训练期间形成的时间,我们可以在它们结晶时分析它们,而不是在之后逆向工程一个黑盒。

在实际的部署场景中,我们可以实时跟踪表示维度,检测扩展阶段何时发生,并在每个过渡点进行可解释性分析。这告诉我们网络何时构建新的表示结构——以及何时完成。这种测量方法与架构无关:无论你是在训练用于视觉的 CNN,用于语言的 transformers,用于控制的 RL 代理,还是用于跨域任务的复模态模型,它都适用。

示例 1:映射因果依赖的干预实验。在特定窗口中中断训练并测量哪些下游能力丢失。如果在第 2,000-5,000 步中损坏数据永久损害了纹理识别,但在第 6,000 步的相同损坏没有影响,你就找到了纹理特征结晶的时间和它们所依赖的内容。这对于视觉模型中的对象识别、语言模型中的句法结构或 RL 代理中的状态区分同样有效。
示例 2:在生产部署中,连续维度监控可以在训练过程中捕捉到表示问题,此时你还可以修复它们。如果层停止扩展,你有架构瓶颈。如果扩展变得不规则,你有不稳定性。如果早期层饱和而晚期层无法扩展,你有信息流问题。标准的损失曲线不会显示这些问题,直到太晚——维度跟踪会立即揭示这些问题。
示例 3:架构设计的影响同样实用。在候选架构的第一 5-10%的训练期间测量扩展动态。选择具有干净相变和结构化自下而上的发展的网络。这些网络不仅性能更好,而且由于特征在清晰的顺序层中形成而不是混乱的同时性,它们在本质上更容易解释。

接下来是什么

因此,我们已经确定网络在训练期间扩展其表示空间,我们可以以高分辨率测量这些过渡,这为可解释性和干预开辟了新的方法。自然的问题:你能将这应用到你的工作中吗?

我将完整的测量基础设施作为开源发布。我包括了针对 MLPs、CNNs、ResNets、Transformers 和视觉 Transformers 的验证实现,并为自定义架构提供了钩子。

所有的操作只需在训练循环中添加三行即可完成。

GitHub 仓库提供了上述实验的模板:特征形成映射、干预协议、跨架构迁移预测和生产监控设置。测量方法已得到验证。现在重要的是你在将其应用于你的领域时发现了什么。

试试看

pip install ndtracker

仓库中的快速入门、说明和示例:神经维度跟踪器 (NDT)

代码已准备好投入生产。协议已记录。问题待解答。我想看看无论在什么上下文和架构中,你在高分辨率测量训练动态时发现了什么。

你可以分享你的结果,提出与你的发现相关的问题,或者如果这改变了你对训练的看法,就 ⭐️ 仓库。记住,可解释性时间线贯穿所有神经网络架构。

Javier Marín | LinkedIn | Twitter


参考文献 & 进一步阅读

  • Achille, A., Rovere, M., & Soatto, S. (2019). 深度网络中的关键学习期。在 国际学习表示会议 (ICLR) 中。openreview.net/forum?id=BkeStsCcKQ

  • Frankle, J., Dziugaite, G. K., Roy, D. M., & Carbin, M. (2020). 线性模式连接和彩票假设。在 第 37 届国际机器学习会议 (第 3259-3269 页)。PMLR。proceedings.mlr.press/v119/frankle20a.html

  • Ansuini, A., Laio, A., Macke, J. H., & Zoccolan, D. (2019). 深度神经网络中数据表示的内禀维度。在 神经信息处理系统进展 (第 32 卷,第 6109-6119 页)。proceedings.neurips.cc/paper/2019/hash/cfcce0621b49c983991ead4c3d4d3b6b-Abstract.html

  • Yang, J., Zhao, Y., & Zhu, Q. (2024). ε-rank 和楼梯现象:对神经网络训练动态的新见解。arXiv 预印本 arXiv:2412.05144arxiv.org/abs/2412.05144

  • Olah, C., Mordvintsev, A., & Schubert, L. (2017). 特征可视化。Distill, 2(11), e7。doi.org/10.23915/distill.00007

  • Elhage, N., Nanda, N., Olsson, C., Henighan, T., Joseph, N., Mann, B., Askell, A., Bai, Y., Chen, A., Conerly, T., DasSarma, N., Drain, D., Ganguli, D., Hatfield-Dodds, Z., Hernandez, D., Jones, A., Kernion, J., Lovitt, L., Ndousse, K., Amodei, D., Brown, T., Clark, J., Kaplan, J., McCandlish, S., & Olah, C. (2021). 变换电路的数学框架。变换电路线程transformer-circuits.pub/2021/framework/index.html

posted @ 2026-03-28 10:11  布客飞龙IV  阅读(3)  评论(0)    收藏  举报