一份关于机器学习“模型再训练”的终极指南
此过程会产生一些最佳的模型,然后将其部署到生产中。由于模型漂移具体是指所选模型的预测性能由于特征/目标数据分布的变化而下降,因此模型再训练不应该带来不同的模型生成过程。确切地说,重新训练只是指在新的训练数据集上重新运行生成先前选择的模型的过程。功能、模型算法和超参数搜索空间都应保持相同。可以这样想,再训练不涉及任何代码更改,只涉及改变训练数据集。 这并不是说模型的未来迭代不应包含新特征或不考虑其他算法类型/体系结构。只是说,这些类型的更改会产生完全不同的模型——在部署到生产环境之前,应该对它们进行不同的测试。根据您的机器学习团队的成熟程度,理想情况下,此类更改将与A / B测试一起引入,以测量新模型对预先确定的兴趣指标(例如用户参与度或保留率)的影响。 应该多久重新训练一次模型 到目前为止,我们已经讨论了什么是模型漂移以及识别它的多种方法。于是问题就变成了,我们该如何补救?如果模型的预测性能由于环境变化而下降,解决方案是在反映当前实际情况的新训练集上对模型进行重新训练。那么,您应该多久重新训练一次模型?如何确定新的训练集?对于最困难的问题,答案是视情况而定。但如何视情况而定呢? 有时机器学习问题本身会给出何时需要重新训练模型的建议。例如,假设您正在一家大学招生办工作,并负责建立一个可以预测学生下学期是否会回来的学生流失模型。该模型将在期中后直接用于对当前学生群体进行预测。被确定有流失风险的学生将自动被纳入辅导课程或其他干预措施。 下面我们思考一下这种模型的时间范围。由于我们每学期一次批量生成预测,因此没有必要再频繁地重新训练模型,因为我们将无法访问任何新的训练数据。因此,在观察上学期的哪些学生退学后,我们可能选择在每个学期开始时重新训练我们的模型。这就是定期再训练计划的一个示例。从这个简单的策略开始,往往是一个好办法,但是您需要确定重新训练的频率。快速更改的训练集可能需要您每天或每周进行一次训练。较慢的发行版本可能需要每月或每年进行重新训练。 如果您的团队已经具备了监控上一节中所讨论的度量标准的基础设施,那么将模型漂移的管理自动化可能是有意义的。这个解决方案需要跟踪诊断,然后在实时数据上的诊断与训练数据诊断不同时触发模型再训练。但这种方法也有其自身的挑战。首先,您需要确定一个发散的阈值,它将触发模型再训练。如果阈值太低,则您可能会过于频繁地进行再训练,从而带来高计算成本。如果阈值过高,则可能会因为不经常进行再训练,而导致生产中的模型偏劣质。这比看起来要复杂得多,因为你必须去确定,要收集多少新的训练数据,才能代表世界的新状态。在世界已经发生改变时,用一个训练集太小的模型来代替现有的模型也是没有意义的。 如果您的模型已经在对抗性环境中运行,则需要特别考虑。在诸如欺诈检测这样的设置中,对抗方会改变数据分布以使自己获利。这些问题可以从在线学习中受益,在这之中,模型随着新数据的出现而不断更新。 如何重新训练模型? 最后,但并非最不重要的一点,我们需要讨论如何重新训练模型。您用于模型再训练的方法与您决定再训练的频率直接相关。 如果您打算定期去重新训练模型,那么批量进行重新训练就完全足够了。这种方法涉及使用工作调度程序(例如Jenkins或Kubernetes CronJobs)定期地调度模型训练过程 。 如果您具有自动模型漂移检测功能,那么在识别出漂移时触发模型重新训练就很有意义。例如,您可能有定期的工作,将实时数据集的特征分布与训练数据的特征分布进行比较。当识别出明显的偏差时,系统可以自动安排模型再训练以自动部署新模型。同样,这可以通过诸如Jenkins的作业调度程序或使用 Kubernetes Jobs来执行。 最后,利用在线学习技术更新当前正在生产的模型可能也是有意义的。这种方法依赖于使用当前部署的模型去“播种”一个新模型。随着新数据的产生,模型参数将使用新的训练数据进行更新。 结论 一般情况下,将模型部署到生产环境时,机器学习模型的预测性能往往都会下降。因此,工程师必须通过设置特定于ML的监视解决方案和工作流来启用模型重新训练,从而为性能下降做好准备。虽然重新训练的频率因具体问题而异,但ML工程师可以从简单的策略开始,随着新数据的到来,该策略会定期对模型进行重新训练,并发展为对模型漂移进行量化和做出反应的更复杂的过程。 【凡本网注明来源非中国IDC圈的作品,均转载自其它媒体,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。】 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |