0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

高效构建基于机器学习的产品的经验

zhKF_jqr_AI 来源:未知 作者:李倩 2018-07-02 14:42 次阅读

编者按:Insight Data Science AI负责人Emmanuel Ameisen分享了高效构建基于机器学习产品的经验。

要构建通用AI,先掌握线性回归

从基本开始

试图发展对世界的科学理解的时候,大多数领域从粗略的勾勒开始,之后才探索重要的细节。拿物理来说吧,我们从简单模型(牛顿力学)开始,渐渐深入更复杂的模型(相对论),到时我们将知道,我们最初的假定是错误的。通过在最简单的有用层次推理,我们可以高效地解决问题,

所有事情都应该尽可能简单,但不要过于简单。

阿尔伯特·爱因斯坦

从非常简单的模型开始这一做法,同样可以应用于机器学习工程,通常可以证明,这是非常有价值的做法。事实上,我们在Insight看到数以百计的项目从想法到发布成品的全过程,发现从一个简单的基线模型开始,一贯地导向更好的最终产品。

应对复杂问题时,简单的方案,有很多缺陷:

它们有时候忽略输入的重要方面。例如,简单模型常常忽略句子中的词序,或者变量之间的相关性。

它们受到限制,难以得到精细的结果。大多数简单模型可能需要配合启发式方法或手工指定的规则才能供客户使用。

它们并不那么有趣,可能无法让你在开发时获得尖端研究的体验。

这些方案常常产生受到误导的输出,可能在我们看来非常愚蠢,正如本文标题所言,蠢模型。然而,如同我们将在本文中描述的,它们提供了极为有用的第一步,让我们可以更好地理解我们的问题,以找到最好的处理方法。正如George E. P. Box所说:

所有模型都是错误的,但有些模型有用。

换句话说:如果你想玩下有趣的玩意,从复杂的模型开始。如果你想解决问题、构建产品,从愚蠢的模型开始。

什么是基线?

不同的分布需要不同的基线(来源:xkcd/1725)

基线模型不仅易于配置,同时有合理的几率提供不错的结果。试验基线模型通常很快,而且代价较低,因为流行的软件包大多包括了基线模型实现。

值得考虑的一些基线:

线性回归。从一组特征预测连续值(价格、年龄等),首先尝试下线性回归。

逻辑回归。试图分类结构数据或自然语言时,逻辑回归通常能给出快速、牢靠的结果。

梯度提升树。Kaggle竞赛经典模型!从时序预测到一般结构数据,梯度提升树难以战胜。尽管比其他基线要稍微难以解释一点,它通常表现出色。

简单卷积架构。对大多数图像分类、检测、分割问题而言,微调VGG或再训练某个U-net变体通常是一个良好的开始。

还有更多!

简单基线模型的选择取决于要处理的数据类型和任务类型。如果你打算基于多个特征预测房价,那选择线性回归很合理。不过,如果你想要构建语音到文本算法,那选择线性回归就不怎么合理了。你需要思考你希望从基线模型中得到什么,以选择最佳的基线。

为什么从基线开始?

部署模型需要很多工作,确保提交前充分探索(来源:Uber)

开始一个项目时,首要的是了解会阻碍项目进度的未曾预见的潜在挑战。即使基线模型最终没有成为最终版本的模型,它们仍然能够让你非常快速地迭代,浪费最少的时间。下面是一些原因。

基线将花去不到1/10的时间,可能提供高达90%的结果

生产率乘以9!

这里有一个非常常见的故事:一个团队想要实现一个模型预测用户点击广告的概率。他们从逻辑回归开始,并很快(经过一些微调)达到了90%精确度。

问题在于:这个团队应该集中精力将精确度提高到95%,还是应该以这样90%的方式解决其他问题?

大多数最先进的模型,由于其随机性本质,仍然会给出非零误差率。你的用例可能不同,但大多数系统的效率本质上是乘法的,这意味着你宁愿选择90%精确度的10个连续步骤(导致34%的最终精确度),而不是一个99%的步骤,跟着九个10%的步骤(0.000000099%)。

从基线开始,让你可以首先解决瓶颈!

基线模型为更复杂的模型提供了上下文

通常,模型表现有三个易于评定的层次:

微不足道的可实现表现,你希望任何模型都能超过这个层次。例如,在分类任务中,每次都猜测最频繁出现的分类所得到的精确度。

人类表现,人类在这一任务上能够达到的表现。在某些任务上,计算机的表现比人类好很多(比如下围棋),在其他一些任务上,则比人类要差(比如写诗)。知道人类能够表现得多好,有时可以帮助你事先为算法设定期望。不过,由于人类/计算机在不同领域的任务上表现不一样,这也许需要进行一些文献检索加以校正。

部署模型要求的表现,从商业和可用性角度出发,使你的模型适宜部署到生产环境的最小价值。通常而言,聪明的设计决策可以让这一价值更容易实现。例如,Google的智能回复,显示三个建议回复,明显提升了显示有用结果的几率。

以上三个层次缺了一层,我会称它为“合理的自动化表现”,这代表可以通过一个相对简单的模型实现的表现。这对评估复杂模型是否表现良好而言,是不可或缺的,也能让我们处理精确性和复杂性的折衷。

许多时候,我们发现基线模型的表现和复杂模型相当,甚至优于复杂模型,特别是选择复杂模型时没有查看基线模型失败之处的时候。此外,复杂模型通常更难部署,这意味着,很有必要事先衡量它们在简单基线水平上的提升,是否值得额外的工程上的努力来部署它们。

简单模型易于部署

根据定义,基线模型是简单的。它们通常包含相对较少的可训练参数,无需太多工作就可以快速拟合数据。

这意味着,在工程上,简单模型:

训练起来更快,让你能够迅速得到模型表现的反馈。

研究充分,这意味着你碰到的大多数错误或者是构建模型时的简单bug,或者突显了你的数据有问题。

推理起来更快,这意味着部署它们不需要很多基础设施工程,也不会增加延迟。

构建和部署一个基线模型之后,正是决定下一步做什么的最佳时机。

构建基线模型之后做什么?

是时候拿一些论文出来看?

就像我们之前提到的那样,如果你发现基线模型的表现不够好,那么,查看简单模型失效之处有助于你找到更好的方法。

例如,在我之前写的NLP初步中,通过查看基线的误差,我们可以看到它无法区分有意义的单词和填充词。这引导我们使用可以捕捉这一细微差别的模型。

基线帮助你理解数据

如果基线表现良好,你就不用为配置一个更复杂的模型操心了。如果基线表现不佳,它产生的错误种类对理解数据的偏离和特定问题非常有指导性。大多数机器学习的问题是通过更好地理解和准备数据解决的,而不是通过选择更复杂的模型解决的。查看基线的表现有助你发现:

哪些分类更难区分。对大多数分类问题而言,查看混淆矩阵能得到很多关于哪些分类导致模型出现问题的信息。当特定分类上的表现特别差时,值得探索数据以理解为什么。

模型捕捉到了哪些信号。大多数基线可以提取特征重要性,揭示输入的哪些方法预测性最好。分析特征重要性对理解模型如何做出判定以及模型在哪些方面有所欠缺非常有帮助。

模型错过了哪些信号。如果数据的特定方面从直觉上看起来很重要,但模型忽略了它。那么进行特征工程或者选用其他能够更好地利用数据这一方面的模型会是一个好主意。

基线帮助你理解任务

基线不仅有助于你更好地理解数据,还能让你看到推理的哪一部分容易,哪一部分困难。进而允许你探索改进模型的哪个方向使困难部分表现更好。

例如,在尝试预测给定团队在守望先锋中的胜率时,Bowen Yang从逻辑回归开始。他很快发现在游戏过半之后预测精确度戏剧性地提升了。这一观察帮助他决定下一个模型的选择,一种允许从先验信息学习的嵌入技术,在一开始就提升了精确度。

大多数机器学习问题遵循“没有免费午餐”定理:并不存在一个万能的解决方案。从多种架构、嵌入策略、模型中选定能够提取和利用数据结构的最佳方案是一项挑战。查看简单的基线勉力建模的内容,对做出选择帮助很大。

再举一个例子。试图分割心脏MRI影像时,Chuck-Hou Yee首先尝试了一个原始的U-net架构。这让他发现模型产生的很多分割误差是因为缺少上下文信息(小型感受野)。为了应对这一问题,他转而使用了扩张卷积,这一选择显著提升了模型的表现。

当基线派不上用场的时候

最后,为某些任务构建有效的基线非常困难。如果你打算从音源中分离出不同的说话人(鸡尾酒会问题),你可能需要从复杂模型开始,以得到满意的结果。在这些情形下,作为简化模型的替代,你可以简化数据:尝试让你的复杂模型过拟合数据的一个非常小的子集。如果你的模型具备学习这一问题的表达能力,它会很简单。如果发现这部分很困难,那么通常这意味着你需要试试其他模型。

结语

当你意识到强大的模型的存在之后,很容易忽略那些简单方法。然而,和大多数领域一样,在机器学习中,从基本开始总是很有价值的。

学习如何应用复杂方法固然是一项挑战,机器学习工程师的最大挑战是为给定的任务决定建模策略。首先尝试简单模型可以为这一决策提供信息;如果简单模型的表现平平无奇,转而使用一个更复杂的模型,一个擅长避免基线产生的特定错误的模型。

在Insight,这一方法总共节省了数以千计小时的时间。我们希望这一方法对你同样有用。如果遇到问题,或有什么想法,欢迎留言!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像分类
    +关注

    关注

    0

    文章

    87

    浏览量

    11838
  • 基线
    +关注

    关注

    0

    文章

    10

    浏览量

    7924
  • 机器学习
    +关注

    关注

    66

    文章

    8119

    浏览量

    130550

原文标题:创造机器学习产品的秘诀:总是从蠢模型开始

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【下载】《机器学习》+《机器学习实战》

    、Apriori算法、FP-Growth算法。第四部分介绍了机器学习算法的一些附属工具。全书通过精心编排的实例,切入日常工作任务,摒弃学术化语言,利用高效的可复用Python代码来阐释如何处理统计数据,进行
    发表于 06-01 15:49

    构建机器学习产品必需的数学背景

    必读我们该如何学习机器学习中的数学
    发表于 08-15 11:44

    机器学习经验总结

    面试经验机器学习
    发表于 08-16 14:20

    从利用认知 API 到构建出自定义的机器学习模型面临哪些挑战?

    一直是人们利用风能的工具,如今,利用风能的工具每一天都在变得更高效、更安全,且更易于管理,因为我们有了机器学习
    发表于 07-12 06:19

    什么是机器学习? 机器学习基础入门

    中,我将概述机器学习,它是如何工作的,以及为什么它对嵌入式工程师很重要。什么是机器学习机器学习
    发表于 06-21 11:06

    RF产品设计经验

    RF产品设计经验,很好的学习资料,快来下载吧
    发表于 02-16 16:49 8次下载

    Airbnb机器学习和数据科学团队经验分享

    Airbnb资深机器学习科学家Shijing Yao、前Airbnb数据科学负责人Qiang Zhu、Airbnb机器学习工程师Phillippe Siclait分享了在Airbnb
    的头像 发表于 07-07 09:24 3641次阅读

    ML-Bench 1.0构建和分析机器学习基准

    本讲座描述了用于构建机器学习基准的分析方法。
    的头像 发表于 11-13 06:32 2255次阅读

    机器学习的12大经验总结

    本文整理了关于机器学习研究者和从业者的 12 个宝贵经验,包括需要避免的陷阱、需要关注的重点问题、常见问题的答案。希望这些经验机器
    的头像 发表于 12-13 15:29 2400次阅读

    如何才能正确的构建机器学习的模型

    组织构建一个可行的、可靠的、敏捷的机器学习模型来简化操作和支持其业务计划需要耐心、准备以及毅力。各种组织都在为各行业中的众多应用实施人工智能项目。这些应用包括预测分析、模式识别系统、自主系统、会话
    发表于 01-11 19:25 14次下载

    六个构建机器学习模型需避免的错误

    近年来,机器学习在学术研究领域和实际应用领域得到越来越多的关注。但构建机器学习模型不是一件简单的事情,它需要大量的知识和技能以及丰富的
    发表于 05-05 16:39 1265次阅读

    Python机器学习应用

    机器学习的目标:机器学习是实现人工智能的手段,主要研究内容是如何利用数据或经验进行学习,改善具体
    发表于 05-25 16:24 19次下载

    轻松入门,高效成长: "TensorFlow 机器学习技能解锁季"

    体系,体验 TensorFlow 的最佳实践模式? 《 TensorFlow 入门实操课程》 带你零基础快速上手 想高效实践机器学习模型部署,借助 TensorFlow 在多端灵活运行你的模型? 即使
    的头像 发表于 11-10 11:35 588次阅读

    高效理解机器学习

    来源:DeepNoMind对于初学者来说,机器学习相当复杂,可能很容易迷失在细节的海洋里。本文通过将机器学习算法分为三个类别,梳理出一条相对清晰的路线,帮助初学者理解
    的头像 发表于 05-08 10:24 355次阅读
    <b class='flag-5'>高效</b>理解<b class='flag-5'>机器</b><b class='flag-5'>学习</b>

    机器学习构建ML模型实践

    实践中的机器学习构建 ML 模型
    的头像 发表于 07-05 16:30 453次阅读