前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习的四十三条经验法则——来自谷歌的ML工程最佳实践

机器学习的四十三条经验法则——来自谷歌的ML工程最佳实践

作者头像
AI科技大本营
发布2018-04-26 11:36:59
6420
发布2018-04-26 11:36:59
举报
文章被收录于专栏:AI科技大本营的专栏

本文主要围绕的是谷歌公司(Google)在机器学习方面的经验,旨在为那些具备一定机器学习基础的读者提供最佳的经验法则。文章向读者展现机器学习经验法则的方式,与谷歌 C++ 风格指南以及其它流行的编程实践指南相类似。如果你曾上过机器学习的相关课程,或者曾构建或研究过机器学习的模型,那么你就已经具备了足够多的阅读本文的知识了。AI100 编译了《Rules of Machine Learning: Best Practices for ML Engineering》全文内容

本文共分为四部分:

  1. 关于第一部分,它会帮助读者理解,当下构建机器学习系统是否适合。
  2. 关于第二部分,它将向读者介绍,第一次该如何部署自己的工作流。
  3. 关于第三部分,它将向读者介绍,机器学习系统是一个不断迭代更新的过程,工作流中会持续不断地添入新特征;同时,第三部分还会涉及如何评价模型、如何评价训练过程中的偏误。
  4. 在最后一部分,文章为大家提供了一些停滞不前时的做法。

在机器学习之前

  • 法则1:不用害怕发布一款没有用到机器学习的产品。
  • 法则2:将度量标准的设计和执行置于首位。
  • 法则3:在机器学习和启发式方法中优先选择机器学习。

机器学习阶段1:第一条工作流

认真对待第一条工作流的基础架构建设。虽然发挥想象力构思模型很有意思,但首先得确保你的工作流是可靠的,这样出了问题才容易发现。

  • 法则4:第一个模型要简单,基础架构要正确。
  • 法则5:单独测试基础架构。
  • 法则6:复制工作流时留意丢失的数据。
  • 法则7:要么把启发式方法转化为特征,要么在外部处理它们。

监 控

一般来说,所有系统都要设置良好的警示程序,警报系统需要顺利执行,或者设置一个仪表板页面(dashboardpage)。

  • 法则8:了解系统的更新需求。
  • 法则9:输出模型前发现问题。
  • 法则10:当心潜在的故障。
  • 法则11:为特征栏指定负责人并进行文件编制。

你的第一个目标

你会关注许多系统评测指标,但机器学习算法的目标通常只有一个——这个目标是一个数字,算法需要不断地努力优化这个数字。在这里,我对目标和度量作一下区分:度量是系统报告给出的数字,不一定很重要。

  • 法则12:选择直接优化的目标时不要想太多。
  • 法则13:选择一个简单、可观测并且可归类的评估指标作为你的第一个目标。
  • 法则14:从容易解释的模型入手会让调试过程更加容易。
  • 法则15:在策略层将垃圾信息过滤和质量排名分开。

机器学习阶段2:特征工程

在机器学习系统研发周期的第一阶段,重点是把训练数据导入学习系统,确定度量和兴趣的评价指标(仪表化),并创建基础架构。当你有了一个端对端的系统,并且该系统的单元和测试都仪表化之后,第二阶段便开始了。

在第二阶段可以轻松实现许多成果。很多明显的特征都能被纳入系统。因此,该阶段需要纳入尽可能多的特征,并依据直观的感觉组合起来。在这个阶段,所有的度量仍会上升,会有很多成果发布,这时候最适合招募大量工程师,他们可以整合你需要的数据,来创造一个真正了不起的学习系统。

  • 法则16:做好反复发布新模型的打算。
  • 法则17:从直接观测到的特征入手,使用reported特征,而不是learned特征。
  • 法则18:利用那些能跨语境使用的特征进行探索。
  • 法则19:尽量使用明确的特征。
  • 法则20:组合并改良现有的特征,用浅显易懂的方式创造新特征。
  • 法则21:线性模型中的特征权重的数量应大致和样例数量形成一定的比例。
  • 法则22:清除那些不再使用的特征。

系统的人工分析

在进入机器学习的第三阶段之前,有必要先关注一下机器学习课程上没有教过的东西:如何看待和改进现有的模型。这更像是艺术而非科学,但却能帮助我们避免某些反模式(anti-pattern)。

  • 法则23:你并非典型终端用户。
  • 法则24:测试模型之间的差量(delta参数)。
  • 法则25:选择模型时,性能表现比预测力更重要。
  • 法则26:在错误中寻找规律,然后创建新特征。
  • 法则27:量化系统的不良行为。
  • 法则28:注意,短期行为相同并不代表长期行为也相同。

训练偏差(Training-Serving Skew)

训练偏差是指训练时的表现和实际运行时的表现的差别。这种偏差可能由以下因素引起:

  1. 在训练时和在实际工作流中用不同的方式处理数据。
  2. 训练中的数据和在实际运行中的不同。
  3. 模型和算法之间存在回馈环。

我们观察到 Google 的机器学习产品也出现了训练偏差,这个训练偏差为实际的运行状况带来了负面的影响。最好的解决方案就是对其进行监督,以便观察到系统和数据的不易察觉的变化。

  • 法则29: 要让实际产品和训练时表现一样好,最好的方法是实际运行中保留特征集,并记录到日志中以便训练中使用。
  • 法则30: 抽样数据很重要,不要武断删去。
  • 法则31:如果要从表格中组合数据,注意训练时和实际运行时表格可能发生改变。
  • 法则32:尽量在训练流和实际运行流中使用重复代码。
  • 法则33:使用比训练时还要新的数据来测试模型。
  • 法则34:在过滤器的二元分类(比如检测垃圾邮件或定义感兴趣邮件)中,为了获得干净的数据牺牲一些短期性能表现。
  • 法则35:明白排序问题存在固有偏差。
  • 法则36:用位置特征来避免反馈环。
  • 法则37:测量训练偏差。

机器学习阶段3:放慢速度、优化细化和复杂的模型

相关的信号肯定在提示,第二阶段已经接近尾声了。首先,你每月的收益开始减少。你开始权衡比较各种度量:在某些试验中,有些度量获得了提高,而另一些度量却在下降。而且,事情变得越来越引人注目。随着收益越来越难得,机器学习也变得更为复杂。

警告:相比之前两个章节,这个章节的法则大有纸上谈兵之嫌。很多团队十分顺利地走过了第一阶段和第二阶段,但是到了第三阶段,却不得不开创新的道路。

  • 法则38: 如果目标有问题,就不要在新特征上浪费时间。
  • 法则39:发布决策依赖多个标准。
  • 法则40:保持模型集合(ensembles)的简单性。
  • 法则41:当性能达到峰值时,寻找新的定量信息源加以补充而非改善现有信号。
  • 法则42: 多样化、个性化或相关性可能与模型的流行与否,并不相关。
  • 法则43:在不同的产品中,朋友可能相同,但兴趣却不尽然。

本文由 AI100 编译,转载需得到本公众号同意。


编译:AI100

原文链接:http://martin.zinkevich.org/rules_of_ml/rules_of_ml.pdf


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档