谷歌的机器学习规则:关于机器学习工程的最佳实践

几天前谷歌的工程师们发布了一份关于如何构建ML产品的手册(顺便说一下,这是关于coursera上gcp专门化的一个新的TensorFlow)。

【福利:完整的中文版详情见文末】这些人在开发大型项目方面有很多经验,他们已经写下了他们的最佳实践。唯一的问题是,这个文档非常巨大,所以本文决定总结一下这里的关键点。总共有43条规则,它们大致按照发展阶段的顺序进行,分为3个阶段。让我们开始吧。

谷歌的机器学习规则:关于机器学习工程的最佳实践

第一阶段:第一管道

如果一个简单的启发式或手动的工作可以完成工作,那么先把ML放到一边,直到你得到足够的数据。

添加指标,然后添加更多的指标。跟踪每件事,看看你的应用程序的每个部分是如何工作的。当你有问题或者只是不确定的时候——添加一个度量。

不要在启发式上花费太多时间。一旦它变得复杂,切换到ML模型。这样以后开发和维护更容易。

首先把重点放在基础设施上。用一个简单的模型构建一个管道,并确保整个过程运行良好。

将测试添加到管道的每个部分,测试您的基础设施、数据、模型。当您在复制一个新项目的现有管道时,请确保不会丢弃可能有用的数据。

不要轻易放弃你的启发式,它们可能为您的ML模型生成有用的特性。

保持新鲜的模型,跟踪你的模型的性能如何随着时间的推移而降低,并确保它不会在生产中腐烂。

在生产前跟踪您的模型的性能,特别是当它是一个面向用户的模型时。

测试你的数,再次,确保所有的功能都被收集,数据保持良好。

创建文档的功能。它们来自哪里,为什么有用。

选择正确的目标,它必须反映项目的主要目标的性能。

选择正确的目标可能比较困难,所以选择一个容易度量的度量指标,并且是“真实”目标的代理。

简单的模型更容易调试,线性或逻辑回归可能是一个不错的选择。

单独的垃圾邮件过滤和质量排名。这些模型经常以不同的方式使用。

第二阶段:工程特性迭代计划

您的特性和模型将随时间而变化,所以请确保您已经准备好更新它。

从直接观察到的特征开始,为将来的更新留下学习的特性。

尝试在上下文中泛化的特性,像“喜欢”这样的指标在推荐、质量排名和其他模型中都很有用。

不要忘记添加非常具体的功能。即使他们没有很好地推广,他们仍然有价值。如果它们只适用于一小部分示例,那么正则化将会过滤掉它们。

用人类可以理解的方式手工制作新特性,尽量不要过度思考。

您可以在线性模型中学习的特性权重的数量与您所拥有的只数据量大致成比例。有大约1000个例子——使用几十个特性。拥有超过10亿的功能就足够了。

谷歌的机器学习规则:关于机器学习工程的最佳实践

从管道中删除未使用的特性。如果你发现某些功能并不能改善你的模型,那就扔掉它。

不要让工程师做UX测试。通过一个众包平台,或者通过一个真实用户的现场实验来完成。

跟踪多少模型不同。在进一步测试新模型之前,计算它的输出与前一个模型的不同。

关注你的模型的效用,而不是预测能力。一个新的模型可能具有更高的准确性,但是在实践中它是多么有用、更重要。

查看模型的错误并创建新特性来修复它们。尝试找出错误中的模式并添加各自的特性。

创建度量来跟踪这些错误。当您拥有优化的指标时,优化变得更容易。

模型在长期内可能有非常不同的行为。即使在短期内,它也完全符合你的预期。

收集数据并在训练期间使用它来测试模型。通过这种方式,您将确保模型在部署后会执行良好。

重要的采样数据,不要随意丢弃。

不要忘记,数据本身可能会在训练和服务之间发生变化。有时候,你可以用每小时/每天/每周的快照来处理它。在训练和生产管道之间尽可能多的共享代码。

使用早期的数据进行训练,稍后的数据进行测试。这将帮助您大致估计您的模型将来的性能。

为获得干净的训练数据,在二进制分类任务中只占一小部分。向用户显示1%或0.1%的数据以获得新的训练数据。

使一般的特征更加严格,并且只允许在排序任务中有正的权重。不要让你的排名系统变得过于偏颇。避免使用位置特征的反馈循环。在训练期间将它们分开,在发球时避免使用。

测量您的模型在训练、验证、测试和实时数据上的执行情况。跟踪他们的差异,并尝试调整模型以减少差异。

阶段3:细化和复杂模型

重新审视你的目标,确保它与你的产品目标一致。

发布决策是长期产品目标的一个代表,通常一个决定会影响多个指标,所以不要匆忙做出决定。

保持你的基础和集成模型分开。基础模型只接受原始的输入,整体只从基本模型中获取输出。

当您的性能停止增长时,寻找新的特性来源。不要太长时间专注于现有的工作。

多样性、个性化和相关性非常重要,但不像受欢迎程度那么高。

你的朋友在不同的产品上都是一样的,你 的兴趣可能会有不同。我们往往有着相同的联系,但我们的目标改变了。

谷歌的机器学习规则:关于机器学习工程的最佳实践

作者认为在做ML项目的时候有这些指导方针是很好的。因为如果你不这样做,你可能会进入技术债务。所以,不要忘记在工作中给它们加上书签,并时不时地重温一下。


分享到:


相關文章: