谷歌白皮书四十三条 ML 黄金法则

http://martin.zinkevich.org/rules_of_ml/rules_of_ml.pdf

“谷歌于白皮书中总结了四十三条 ML 黄金法则,旨在帮助已经掌握了基础知识的开发者少走弯路。鉴于其珍贵程度与技术性,我们逐条做了严格尊重原文的翻译。”

作者:恒亮

编者按:此白皮书为谷歌总结的机器学习(ML)最优实践方法,浓缩了其多年技术积累与经验,尤其是 Youtube、Google Play 和 Google+ 等平台背后的 ML 算法开发、维护经历。谷歌于白皮书中总结了四十三条 ML 黄金法则,旨在帮助已经掌握了基础知识的开发者少走弯路。鉴于其珍贵程度与技术性,我们逐条做了严格尊重原文的翻译。若你已学习过机器学习课程,抑或有开发 ML 模型的经验,那么应当具备足够的背景知识理解这篇文章。术语

以下是对文中反复出现的术语的解释。

实例( Instance):做预测的对象。比如说,实例可以是一个网页,你想要把它分类为“关于猫”或者“与猫不相关”。
标记(Label):预测任务的答案。它既可以是机器学习系统生成的答案,也可以是训练数据中提供的正确答案。举例来说,一个网页的标记可以是“关于猫”。
特征(Feature):预测任务中实例的属性。比如说,某网页可能有“包含关键词‘猫’”的特征
特征栏 (Feature Column):这是谷歌自创的术语,意为关联特征的集合。比如说,用户的所有可能居住国家的集合。一个样例的特征栏可以有一个或多个特征。特征栏可被看作是 VW 系统(微软、雅虎所用)中的命名空间,或者场( field)。
样例(Example):有标记的实例(具备特征)。
模型(Model):对预测任务的统计表达。你用样例训练模型,然后用模型做预测。
指标(Metric):你在意的数字。可被直接优化过,也可没有。
目标(Objective):你的算法试图优化的指标。
流水线(Pipeline):机器学习算法的基础设施;包括从前端收集数据,把它放入训练数据文档,训练一个或多个模型,以及把模型输出、产品化。

概览:

为了开发出好产品:

做机器学习这一行首先要摆正心态,你是一名(优秀的)工程师,不要拿专家的标准来要求自己。

事实上,你将要面对的大多数难题是工程问题(engineering problems)。即便是一个杰出的ML 专家,坐拥该级别才有的资源,其大多数收获也来自于特征而不是 ML 算法。所以,ML 开发的基本路线是:

保证可靠的端到端流水线
从制定合理的目标着手
用简单的方式,加入符合常识的特征
确保流水线始终可靠
该方法能帮你赚钱养家,并且让很多人满意。只有当无路可走、简单的技巧无法再起作用时,你才需要偏离该路线。但注意,提高复杂度会拖慢将来的产品发布。另外,当你穷尽了简单技巧,或许就到了登堂入室、探索 ML 最前沿技术的时候了。具体请看本文机器学习第三阶。

本文分为四个部分:

第一部分“1.0 做机器学习之前”,会帮你搞清楚,你创建机器学习系统的时机是否已经成熟。
第二部分“2.0 机器学习第一阶”是关于设置你的第一个流水线。
第三部分“3.0 机器学习第二阶”,关乎启动和重复,同时向流水线加入新特征。
最后一部分“4.0 机器学习第三阶”是关于达到瓶颈后怎么办。

43 条黄金法则列表:

对发布一个不含 ML 技术的产品,不要有顾虑
首先要设计和贯彻指标
在机器学习和复杂启发算法之间,选择前者
第一个模型要简单,把基础设施弄好
测试基础设施要与 ML 测试分开
复制流水线时当心数据遗落
把启发式(heuristics)变为特征,不然就对它们做外部处理
了解系统的时效性
在输出模型之前发现问题
于无声处听惊雷:注意没表现出来的故障
注意特征栏的维护者和文件
选择直接优化哪个目标时,不需要想太多
选择一个简单、可观察并且可归属(attributable)的指标来作为第一个目标
用可解释的模型开头,修补漏洞会更简单
用 policy layer(规则层)把垃圾信息过滤和质量排序分来
做好模型被推倒和重建的准备
直接以观察到的或报告的特征开始训练,而不是经过学习的特征
从不同的上下文环境中提取特征
尽量选择更具体的特征
以合理的方式组合、修改现有特征
通过线性模型学到的特征权重的数目,大致与数据量成正比
清理不需要的特征
你并不是一个典型的用户
版本之间存在对等差分(symmetric difference)
选择模型时,性能胜过预测能力
从误差中查找新模式、创建新特征
尝试量化观察到的异常行为
注意短期行为和长期行为的差别
确保训练和服务一样好的最直接办法是:保存服务时使用的特征,然后将这些特征导入日志,以便在训练中使用。
重视采样数据
注意表格中的数据可能改变
尽量在训练和服务流水线中复用代码
训练和测试的数据不能相同
在二进制分类过滤的应用场景中(例如垃圾邮件检测),不要为了纯净的数据做太大的性能牺牲
注意排序问题的固有偏差
避免具有位置特征的反馈回路
测量训练/服务偏差
如果目标之间不搭,并成为问题,就不要在新特征上浪费时间
模型发布决策是长期产品目标的代理
保证集成模型(ensemble)的简洁
当性能达到瓶颈,相比精炼现存信号,不如寻找新性质的信息源
不要期望多样性、个性化、相关性和受欢迎程度之间有紧密联系
不同产品中,你的朋友总是那一个,你的兴趣不会如此

评论

还没有任何评论,你来说两句吧

发表评论

浙ICP备16008686 -
善始者实繁,克终者盖寡