编者按:此白皮书为谷歌总结的机器学习(ML)最优实践方法,浓缩了其多年技术积累与经验,尤其是 YouTube、Google Play 和 Google+ 等平台背后的 ML 算法开发、维护经历。谷歌于白皮书中总结了四十三条 ML 黄金法则,旨在帮助已经掌握了基础知识的开发者少走弯路。本文上接雷锋网"谷歌机器学习白皮书全解析 43条黄金法则(三)"
第二阶段将要结束的时候,一定会有些信号。首先,你每月的收益开始降低。你开始要在指标之间做牺牲:一些试验中有的上升有的下降。从此情况变得更有趣。由于更难产生效益,机器学习不得不变得更复杂。
警告:这部分有许多开放式的实践法则。我们亲眼看着很多团队走过第一阶段和第二阶段的幸福期——一旦到达第三阶段,开发团队就不得不找出他们自己的路。
当达到度量瓶颈,你的团队开始关注 ML 系统目标范围之外的问题。如同之前提到的,如果产品目标没有包括在算法目标之内,你就得修改其中一个。比如说,你也许优化的是点击数、点赞或者下载量,但发布决策部分依赖于人类评估者。
(雷锋网注:谷歌工程师在这里举了个例子)Alice 有一个关于降低安装预测的逻辑损失的想法。她加入一个特征。逻辑损失下降。当她实时测试时,安装量上升了。但在公司的发布会议上,有人指出每日活跃用户数降低了 5%。团队决定不发布该模型。Alice 很失望,但意识到发布决策取决于多个标准,其中只有一部分能够被 ML 直接优化。
事实是,现实世界并不是网络游戏:没有“攻击值”和“血量”来衡量产品的健康。团队需要利用收集的数据,来试图预测将来系统的表现会怎样。他们需要操心用户黏性、每日活跃用户、每月活跃用户、收入和广告主的收益。这些 A/B 测试中的指标,实际上只是长期目标的代理:让用户满意、增加用户、让合作方满意还有利润;即便这时你还可以考虑高品质、有使用价值的产品的代理,以及五年后一个繁荣的企业的代理。
做出发布决策变得容易的唯一一种情况是:所有指标都变好了(起码没有变差的)。如果团队在复杂 ML 算法和简单启发式算法之间有的选择;如果简单的启发式算法在这些指标上做得更好;那么应当选择后者。另外,所有指标数值并没有明确的排序。更具体的,考虑以下两种情形:
雷锋网注:标题栏(自左至右)为试验,每日活跃用户以及每日收入
如果现有系统是 A ,团队不会想要转移到 B。如果现有系统是 B,团队也不会想要转到 A。这看起来与理性决策相抵触:但是,对指标变化的预期情形或许会发生,或许不会。因此任意一种改变都有相当大的风险。每一个指标覆盖了一些团队所关注的风险。但没有指标能覆盖团队的首要关切——“我的产品在五年后会怎样?”
另一方面,个体倾向于选择能直接优化的目标。大多数 ML 工具喜欢这样的环境。这样的环境下,一个能快速创建新特征的工程师能稳定输出一系列产品发布。有一种叫“多目标学习”(multiobjective learning)的机器学习开始解决这一问题。比如说,可以制定一个在每个指标上有下限的约束满意度问题(constraint satisfaction problem),然后优化指标的一些线性组合。但即便那时,也不是所有指标都能轻易表达为 ML 目标:如果一个文件被点击,或者 APP 被安装,这是因为有内容被展示出来。但搞清楚用户为什么访问你的页面就更加难了。如何预测一个页面在将来是否成功,是一项 AI-complete 问题(雷锋网注:意味着完成它的难度相当于解决 AI 问题),与计算机视觉和自然语言处理一样难。
接收原始特征、直接对内容排序的统一模型,是最容易理解、最容易修补漏洞的模型。但是,一个集成模型(一个把其他模型得分组合在一起的“模型”)的效果会更好。为保持简洁,每个模型应该要么是一个只接收其他模型的输入的集成模型,要么是一个有多种特征的基础模型,但不能两者皆是。如果你有单独训练、基于其它模型的模型,把它们组合到一起会导致不好的行为。
只用简单模型来集成:那些只把基础模型的输入作为输出、进行接收的模型。你或许想要为这些集成模型强加上属性。比如,基础模型生成得分的提高,不应该降低集成模型的分数。另外,如果连入模型在语义上可解释(比如校准了的)会更好,这样其下层模型不会与集成模型混淆。再者,强行让下层分类器预测的概率升高,不会降低集成模型的预测概率。
你已经加入了一些关于用户的人口统计信息,还有文件中的词语。你经历了模板探索,和正则化(regularization)调参。但连续几个季度的发布,你都没有看到核心指标有超过 1% 的提升。现在怎么办?
你已经到了为不同寻常(雷锋网注:很不一样)的特征,创建基础设施的时候了。比如用户昨天、上周、去年检索的文档,或是另一种属性的数据。为你的公司使用维基数据(wikidata)实体或者一些内部的东西(比如谷歌的知识图,Google’s knowledge graph)。你或许需要使用深度学习。开始调整你对投资回报的期望,并作出相应努力。如同所有工程项目,你需要平衡新增加的特征与提高的复杂度。
一系列内容的多样性能意味着许多东西,内容来源的多样性最为普遍。个性化意味着每个用户得到属于他们自己的结果。相关性意味着一个特定检索的结果,对应它比对应其他检索更合适。因此,这三个属性的定义都有别于“标准”。
但标准更难被打败。
注意:如果你的系统在统计点击量、耗费时间、浏览数、点赞数、分享数等等,你事实上在衡量内容的受欢迎程度。有团队试图学习具备多样性的个性化模型。为个性化,他们加入允许系统进行个性化的特征(有的特征代表用户兴趣),或者加入多样性(表示该文档与其它返回文档有相同特征的特征,比如作者和内容),然后发现这些特征比他们预想的得到更低的权重(有时是不同的信号)。
这不意味着多样性、个性化和相关性就不重要。如同上个法则所指出的,你可以通过后处理来提高多样性或相关性。如果你看到长期目标的进步,那么你可以宣布在受欢迎程度之外,多样性和相关性是有价值的。你可以继续采用后处理,或者直接根据多样性或相关性修改目标。
谷歌的 ML 团队 常常把一个预测某产品联系紧密程度(the closeness of a connection in one product)的模型,应用在另一个产品上,然后发现效果很好。另一方面,我见过好几个在产品线的个性化特征上苦苦挣扎的团队。是的,之前看起来它应该能奏效。但现在看来它不会了。有时候起作用的是——用某属性的原始数据来预测另一个属性的行为。即便知道某用户存在另一个属性能凑效的历史,也要记住这一点。比如说,两个产品上用户活动的存在或许就自身说明了问题。
全文结束。感谢您对雷锋网的支持。谷歌白皮书原文地址:http://martin.zinkevich.org/rules_of_ml/rules_of_ml.pdf
相关文章: