PyTorch 中的自我修复神经网络:无需重新训练即可实时修复模型漂移

当您的生产模型出现偏差并且无法进行重新训练时会发生什么?本文展示了自我修复神经网络如何检测漂移,使用轻量级适配器进行实时适应,并在无需重新训练或停机的情况下恢复 27.8% 的准确度。PyTorch 中的自我修复神经网络:无需重新训练即可实时修复模型漂移的帖子首先出现在《走向数据科学》上。

来源:走向数据科学

已经制作两个月了。准确率为 92.9%。

然后交易模式悄然发生转变。

当仪表板变成红色时,准确率已降至 44.6%。

再训练需要六个小时,并且需要标记数据,而这些数据要到下周才能获得。

这六个小时你做什么?

TL;DR

问题:模型漂移,重新训练不可用

解决方案:自我修复适配器层

关键思想:更新一个小组件,而不是完整模型

系统行为:

  • 主干网保持冻结状态
  • 适配器实时更新
  • 更新异步运行(无停机时间)
  • 符号规则提供弱监督
  • 回滚确保安全
  • 结果:+27.8% 的准确率恢复 — 内部解释了明确的召回率权衡。

    本文介绍的是 ReflexiveLayer:一个位于网络内部的小型架构组件,可在主干网保持冻结状态时调整以适应变化的分布。适配器在后台线程中更新,因此推理永远不会停止。结合用于弱监督的符号规则引擎和用于回滚的模型注册表,在一次没有触及主干权重的情况下,它在本次实验中恢复了 27.8 个百分点的准确率。

    结果是诚实的:恢复是真实的,但伴随着召回权衡,这在欺诈检测中很重要。两者都有完整的解释。

    完整代码,所有 7 个版本,生产堆栈,监控导出,所有图:https://github.com/Emmimal/self-healing-neural-networks/

    为什么标准方法在这里不足

    当模型开始降级时,典型的剧本是以下三件事之一:重新训练新的标记数据,使用包含最近训练的模型的集成,或者回滚到之前的检查点。

    所有标准方法都假设您有一些您可能没有的东西:

  • 标记数据
  • 重新训练的时间
  • 适用于新发行版的检查点
  • 回滚尤其具有误导性。

    在移动的分布上回滚到干净的权重并不能解决问题——它会重复这个问题。

    架构:一个冻结主干,一个可训练适配器

    架构一目了然:

    随时间变化的系统状态