生产型机器学习系统:静态训练与动态训练

一般来说,您可以通过以下两种方式训练模型:

  • 静态训练(也称为离线训练)是指您只训练一次模型。然后,您会在一段时间内提供同一经过训练的模型。
  • 动态训练(也称为在线训练)是指您持续或至少频繁地训练模型。您通常会提供最近训练的模型。
图 2. 用原始面团制作出三个完全相同的面包。
图 2. 静态训练。训练一次;多次提供相同的构建模型。(图片来自 Pexels 和 fancycrave1。)

 

图 3. 每次使用生面团制作面包,都会得到略有不同的面包。
图 3. 动态训练。频繁重新训练;提供最新构建的模型。(图片来自 Pexels 和 Couleur。)

 

表 1. 主要优点和缺点。

静态训练 动态训练
优点 更简单。您只需开发和测试一次模型即可。 更具适应性。您的模型将及时跟踪特征与标签之间关系的任何变化。
缺点 有时会更旧。如果特征与标签之间的关系随时间而变化,模型的预测结果将会下降。 工作量更多。您必须持续构建、测试和发布新产品。

如果您的数据集确实不会随时间而变化,请选择静态训练,因为与动态训练相比,静态训练的创建和维护成本更低。不过,数据集往往会随时间而变化,即使是您认为恒定不变的特征(例如海平面)也是如此。要点:即使使用静态训练,您仍然需要监控输入数据是否发生变化。

例如,假设有一个经过训练的模型,用于预测用户购买花卉的概率。由于时间紧迫,我们仅使用 7 月和 8 月的花卉购买行为数据集训练了一次模型。该模型在几个月内运行良好,但在情人节前后做出的预测非常糟糕,因为在花卉节日期间,用户行为会发生巨大变化。

如需详细了解静态和动态训练,请参阅管理机器学习项目课程。

练习:检查您的理解情况

以下关于静态(离线)训练的两项陈述是正确的?
模型会在收到新数据时进行更新。
实际上,如果您离线训练,则模型无法在有新数据到来时将其纳入考虑。如果您尝试学习的分布随时间而变化,这可能会导致模型过时。
您可以在将模型应用于生产环境之前对其进行验证。
是的,离线训练可让您在将模型引入生产环境之前有充足的机会验证模型性能。
与在线训练相比,离线训练对训练作业的监控要求更低。
一般来说,离线训练的训练时间监控要求更为宽松,这可让您免去许多生产环境注意事项。不过,模型的训练频率越高,您在监控方面的投入就越大。您还应定期进行验证,以确保对代码(及其依赖项)所做的更改不会对模型质量产生不利影响。
在推理时,对输入数据的监控工作非常少。
与直觉相反,您确实需要在投放时监控输入数据。如果输入分布发生变化,我们模型的预测结果可能会变得不准确。例如,假设一个仅使用夏季服装数据训练的模型突然被用于预测冬季的服装购买行为。
以下哪个关于动态(在线)训练的表述是正确的?
模型会在收到新数据时进行更新。
这是在线训练的主要优势;通过允许模型使用新数据进行训练,您可以避免许多过时问题。
您几乎无需监控训练作业。
实际上,您必须持续监控训练作业,以确保它们运行正常且按预期运行。您还需要支持的基础架构,例如,能够在训练过程中出现问题(例如作业存在 bug 或输入数据损坏)时将模型回滚到之前的快照。
在推理时,对输入数据的监控工作非常少。
与静态离线模型一样,监控动态更新模型的输入也很重要。您可能不会面临较大的季节性效应带来的风险,但如果输入数据突然发生巨大变化(例如上游数据源中断),仍然会导致预测结果不可靠。