关键要点
- 大多数机器学习项目最终都无法投入实际应用。导致这些项目失败的原因主要有五个:选择错误的研究方向、数据质量或标签标注存在问题、模型与实际产品之间的差距、离线环境与在线环境的不匹配,以及非技术因素的干扰。
- 在开始项目之前,必须明确业务目标,并确认确实需要运用机器学习技术来解决这些目标。将业务目标转化为具体的机器学习应用方案,通常需要大量的数据处理工作、客观的功能设计,有时还需要投入高昂的基础设施成本,因此后期调整方向会带来巨大的代价。
- 应将数据视为一种产品来对待:防止数据泄露或产生偏见,投资于数据的标签标注工作以及高质量的数据集建设,并尽早建立评估流程,以避免项目发布后出现严重问题。
- 通过平衡投资组合来管理不确定性:优先推出低风险、高收益的项目以证明投资的合理性,同时也要支持那些虽然风险较高但有可能带来颠覆性成果的研究方向。
- 鼓励跨职能团队尽早开展合作并积极参与项目的推进。成功的机器学习团队会协调各方利益相关者,明确最小可行产品的工作范围,尽早完成端到端的开发以便进行A/B测试,并根据监测结果不断优化项目方案。
这篇文章总结了我在2024年旧金山QCon大会上发表的演讲内容。过去十年间,我一直在社交媒体、金融科技以及生产力工具等多个领域从事应用科学研究和机器学习工程工作。虽然我看到很多项目取得了成功,但也有许多项目最终未能投入实际应用。本文探讨了项目成败的原因,以及我们可以从中吸取哪些经验。
在这篇文章中,我分析了导致机器学习项目失败的一些常见原因,比如机器学习的固有不确定性、优化目标的不匹配,以及从业者之间存在的技能差距。首先,我介绍了机器学习项目的生命周期及其与普通软件项目的区别;接着,我详细阐述了五个常见的错误陷阱,并说明了如何降低遇到这些问题的风险。
机器学习项目的失败率
我在多个领域参与过机器学习项目的研究与开发,包括社交媒体平台、金融科技解决方案以及生产力工具等领域。其中一些项目最终成功投入了实际应用,但也有很多项目未能达到预期目标。虽然每个项目都让我学到了不少东西,也让我接触到了许多新的技术,但当自己倾注了大量心血的项目却没有产生预期的效果时,那种感觉确实很糟糕。我在想:是不是只有我遇到了这样的问题?这个问题的严重程度到底有多高呢?
早期的一些研究指出,机器学习项目的失败率高达85%;最近的调查也得出了类似的结果。在2023年Rexer Analytics的一项调查中,共有300多名机器学习从业者参与了这项研究,其中只有32%的人表示他们的项目已经成功投入实际应用。不同行业的失败率也存在差异:大型科技公司已经拥有多年的人工智能应用经验,而传统企业及初创公司则仍在努力探索如何有效地运用人工智能技术。
并非所有的失败都是坏事。机器学习项目本身就具有不确定性和实验性,因此在探索数据并尝试一些基础模型之前,往往无法确定这些技术是否真的能够帮助我们得出结论。如果根据这些初步的研究结果,你决定迅速调整项目方向或终止该项目,那么这种做法其实应该被视为一种成功——这正是鼓励创新所遵循的“快速失败”原则。
在本文中,我重点讨论那些属于“糟糕的失败”案例:那些没有明确目标、持续拖延下去的项目;那些虽然离线测试结果良好却从未被实际应用的模式;以及那些即使已经部署到位却仍然没有被采纳的解决方案。
机器学习项目的生命周期
从宏观的角度来看,一个典型的机器学习项目生命周期包含六个步骤。首先需要确定一个可以通过机器学习来优化的业务目标,并将这个目标转化为一个具体的机器学习问题;接下来就是收集相关数据、训练各种模型;然后选择表现最好的模型进行实际部署并持续监控其运行情况;最后,根据监控过程中获得的反馈信息对整个系统进行优化和改进。

这是一张简化后的机器学习项目生命周期示意图。(来源:作者)
这种迭代式的生命周期有两个重要的特点:
- 这是一个漫长且包含多个步骤的过程,需要多个团队之间的紧密协作;由于其中涉及诸多复杂因素,因此失败的风险也会相应增加。
- 机器学习项目本质上是基于数据的优化过程,因此来自数据、模型以及监控系统的反馈信息对于项目的成功至关重要。
陷阱1:解决错误的问题
在我们想要讨论的这五个常见陷阱中,最关键的问题之一就是优化了错误的目标。在Rexer Analytics进行的调查中,当被问及在开始一项项目之前目标是否已经明确界定时,29%的机器学习从业者表示“大多数情况下目标是明确的”,而26%的人则认为这种情况很少发生。这种目标不明确的问题,其实是机器学习工程师在开始任何项目之前就会面临的常见难题。
过去,人们常常在业务目标存在一定模糊性的情况下开始一个项目。然而对于机器学习项目而言,这种不确定性反而会成为严重的障碍。要理解这个问题,我们就需要探讨业务目标是如何被转化为机器学习解决方案的。当然,我们首先需要确定的是:这个问题是否确实与机器学习有关。
一旦确认这是一个机器学习相关的问题,我们就需要将其明确界定为一个具体的机器学习问题。这包括确定需要提取哪些数据、如何进行数据预处理,以及训练什么样的模型或采用何种架构和超参数设置。根据模型的复杂程度,训练过程往往需要使用成本较高的基础设施(例如GPU)。
归根结底,我们的目标就是优化一个数学上定义明确的目标函数。而这个目标函数的优劣,在很大程度上取决于我们试图解决的具体业务问题类型。如果业务目标在后期发生了变化,那么就需要对相关的数据、目标函数以及处理流程进行调整,否则可能会导致之前所做的工作全部白费。因此,为了确保从一个好的机器学习问题出发开始项目,我们通常需要向业务团队提出许多问题。
下面我举一个例子,来说明如何提高选择成功项目的几率。几年前,我曾加入了一个为多个业务部门提供支持的AI金融科技团队。每个部门都会将自己的项目宣传为“最重要的”,而且经常会使用一些我们都不懂的专业术语。我们的团队必须在这种混乱中理清头绪,优先投资于那些最有可能取得成功的项目。
在这一年里,我参与了多个不同业务领域的项目。对公司来说,也是对我个人而言,最大的成功就是开发出了一个适用于个人银行业务和商业银行业务的预测模型。这个项目的成功离不开以下三个因素:
- 与主营业务的紧密相关性:个人银行业务和商业银行业务都是公司的主要盈利来源,因此高层对此给予了高度重视。
- 与现有系统的兼容性:我们的模型能够融入到现有的端到端监控/报告系统中,我们只需要替换原有的模型即可。
- 技术可行性:现有的模型结构已经相当先进,所以我们有信心能够开发出性能更好的模型。
仅仅因为其他人都在做某个机器学习项目,或者从技术上来说这个项目是可行的,并不足以成为开始它的理由。优秀的机器学习项目必须同时满足三个条件:既具有较高的实际价值(能给相关方带来好处),又能带来可观的利润(其成本能够被业务收益所抵消),并且在技术上也确实可行。因此,在项目启动之前,我们必须仔细思考这些问题:目标是否已经明确界定?预期的利润是否足以覆盖投入的成本?所做的各种假设是否现实合理?该模型可能会带来哪些风险?
项目组合的平衡也很重要。低风险、高收益的项目通常是比较容易取得成功的;而高风险、高收益的项目,只要我们能够充分了解其中的风险,并保持项目组合的均衡,也是值得去尝试的。成功的项目能够证明在AI基础设施和人才投入上是值得的,而那些风险较高的项目则有可能带来颠覆性的成果。
第二个陷阱:数据相关的问题
第二个陷阱就是数据本身所带来的挑战。这是机器学习项目中最为常见的问题之一,也许也是你的团队抱怨最多的问题。数据在哪里?我们是否能够处理海量数据?尽管公司已经投入了大量资源来解决这些问题,但这并不意味着不存在其他潜在的隐患,这些隐患最终仍可能对你的项目造成负面影响。在机器学习领域有句著名的谚语:“输入垃圾,输出垃圾”。机器学习项目完全依赖于从数据中识别出规律;如果数据本身存在问题,那么你通过研究得出的结论很可能会不可信。
多年来,机器学习社区已经建立了一套标准的数据处理流程框架,涵盖了数据收集、处理以及特征工程等环节。人们在进行数据准备时通常也会执行一些常见的操作,比如过滤重复项和异常值、填补缺失数据,以及通过对数据进行重新采样来平衡数据分布。每一个正规的机器学习团队都会使用或调整这些标准流程,但仅仅依靠这些措施仍然是远远不够的。
如果你有兴趣了解机器学习项目为何会失败,这个GitHub仓库中收录了多年来发现的众多失败的机器学习案例。其中绝大多数失败原因都与数据有关。即便这些方案是由大型科技公司或大学研究人员开发的,他们也无法完全避免与数据相关的问题。
2022年普林斯顿大学的这项研究在22篇经过同行评审的论文中发现了严重的缺陷;这些问题后来还影响到了17个领域的290多篇后续研究。其中最突出的问题就是数据泄露。该研究将数据泄露分为八类,包括训练数据和测试数据的混合、采样偏差等问题。由于数据泄露的种类繁多,因此很难在早期就发现并加以预防。

数据准备工作往往就像是在探索冰山——表面看到的只是冰山的一小部分,许多问题,尤其是那些与你自己掌握的数据相关的问题,都隐藏在冰山之下。大型组织还会面临数据孤岛的问题:不同团队可能无法了解到所有可用的数据资源,从而导致一些错误的、“看似无解”的结论。数据标注也是另一个重要的挑战。通常情况下,我们需要收集并标注用于评估的数据集,提供详细的注释指南,并进行质量检查。即便如此,你仍然可能会发现标注后的数据存在一些不一致之处,从而无法将其用于模型训练。
借助“模型即服务”技术以及预训练好的模型,团队可以通过外部API直接跳过训练环节,但评估工作依然充满挑战。在早期的人工智能研发阶段,许多团队依赖人工审核或少量样本数据进行测试。这种做法在初期确实可行,但如果没有完善的评估流程,最终得到的只会是一些临时性的修复措施,其影响范围也难以预测。归根结底,我们仍然需要在大型语言模型和人工智能技术的评估方面投入大量精力。
虽然从一开始就试图完美解决所有问题是不现实的,但有一点必须强调:一定要花时间仔细研究并理解你掌握的数据。根据观察结果发现新的特征并对数据进行处理,而不是机械地套用标准流程。此外,还需要投入资源来收集高质量的标注数据。归根结底,机器学习的成功在很大程度上取决于数据的质量。
陷阱3:从模型到产品的转化
我想重点指出的第三个问题是,如何将一个机器学习模型转化为能够服务于大规模、实时用户的功能性产品。这一转化过程并不仅仅意味着部署代码而已,还需要付出巨大的努力来应对生产环境中的各种限制和额外要求。

现实世界中机器学习系统的架构示意图。来源
线下模型通常使用历史数据(这些数据往往已经过处理或抽样),并且采用以机器学习为核心的评估指标;而线上模型则利用实时数据、端到端的系统架构,以及与业务目标相契合的评估标准。

(来源:作者提供)
让我举一个例子来说明这个问题。这是很多年前我参与的首次产品上线项目。当时我们正在开发一个照片推荐系统,旨在帮助创意社区中的摄影师推广自己的作品。业务团队担心,新用户注册后可能会发布一两张照片,然后就再也不会回到我们的网站来了。针对这一担忧,我们的数据科学团队开始进行调查,试图找出问题的根源。他们发现,用户在初期获得的点赞数量与他们的留存率之间存在很高的相关性。基于这一发现,我们的目标变成了尽快推广新用户的作品,让他们能够迅速得到反馈,从而再次返回我们的网站。
当时,大多数推荐系统都采用协同过滤机制:如果用户A和用户B喜欢很多相同的物品,那么我们就会向用户B推荐用户A喜欢的那些物品。这也解释了为什么我们的新用户获得的点赞数量很少——这种现象被称为“冷启动问题”:由于这些新用户之前没有任何互动记录,因此他们的作品几乎不会被任何人注意到。
为了解决这个问题,我们构建了一个基于内容的推荐系统,该系统能够根据图片本身来预测其受欢迎程度。具体流程是:对于用户A来说,首先找到与他过去喜欢的照片相似的作品,然后通过 popularity 分类器进行筛选,从而减少那些质量较低的推荐结果。
一旦分类模型得到优化,我们就将其整合到了生产流程中。然而,进行的在线A/B测试结果却参差不齐:用户的点赞数增加了,但页面浏览时长却缩短了,这一现象显然表明用户的参与度在下降。不知为何,我们的推荐系统给用户带来了不好的使用体验,用户不再愿意继续浏览我们的网站。
经过多次尝试和调整,我们最终找到了一种更好的方法来利用这些数据来提升推荐效果。不过,这样一来,推荐系统本身的结构也变得复杂了许多。这个优化过程其实是一个漫长而繁琐的过程,其中涉及许多环节——不仅需要了解离线评估与在线评估之间的差异,还需要关注多项业务指标,而而不能只关注某一项核心指标。
一旦模型被正式投入生产环境,它就会成为整个系统的一部分。通常情况下,推荐系统会整合多个模型的输出结果,而这些模型的输出往往并不是相互独立的;因此,一个在离线环境中表现非常出色的模型,在集成后的系统中其效果可能会大打折扣。从这个经验中我们可以得出一个结论:不要过度优化离线模型,而应该尽快通过A/B测试来验证这些模型是否符合业务目标。
陷阱5:非技术性障碍
最后一个常被忽视的陷阱与非技术因素有关。回顾我们之前调查的内容,当人们被问及在部署模型时遇到的主要障碍时,最常见的两个答案与技术完全无关:那就是缺乏相关方的支持以及缺乏充分的主动规划。
根据Rexer Analytics的调查结果,以下是人们在被问到“在您的组织或客户组织中,部署模型时面临的主要障碍是什么?”这个问题时给出的前十个答案:
- 决策者不愿意批准对现有运营流程的调整
- 缺乏足够的主动规划
- 不了解正确的模型部署方法
- 用于模型评估的数据无法及时获取
- 没有专人负责模型的部署工作
- 员工不愿意或无法有效利用模型输出结果
- 在计算模型得分或将模型及其评分集成到现有系统中存在技术障碍
- 隐私或法律方面的问题
- 决策者认为模型的性能不够理想
- 无法提供决策者所需的模型透明度信息
与相关方打交道是一件非常棘手的事情,因为许多决策者并没有人工智能领域的背景知识;他们可能会被一些新闻标题或之前的软件使用经验所影响,从而低估了机器学习所带来的风险和不确定性。这时,人工智能专家的作用就显得尤为重要了。我们的工作不仅仅是构建模型,还包括帮助相关方了解他们对于这些人工智能项目究竟应该抱有什么样的期望。
这意味着我们还需要承担教育相关的职责——让相关方明白机器学习是如何工作的(以及为什么数据处理流程如此重要),理解机器学习项目本质上具有不确定性,了解模型的各种局限性,以及了解构建和部署模型所需要付出的实际成本。
在管理和规划机器学习项目时,也有若干关键原则需要遵循:
- 明确界定最小可行产品,并设定简单的优化目标。通常来说,从简单开始会取得更好的效果,而非从复杂的项目入手。
- 尽早构建端到端的系统架构,以便进行A/B测试,并尽快获取实际应用中的反馈。
- 根据反馈结果迅速迭代开发,必要时调整项目目标并扩充数据来源。

(来源:作者)
我发现一种行之有效的策略是:将用于探索性创新、高风险项目的项目孵化器与用于推广经过验证的解决方案的产品线区分开来。这样既能推动创新,又能有效控制风险。
关键在于,管理机器学习项目与管理传统的软件工程项目是有区别的。我们必须适应这些特殊性,才能确保团队能够获得非技术层面的支持。
结论
虽然我们无法保证能够完全避免所有错误,但确实有一些原则或最佳实践可以参考。我们应该选择那些具有可行性、吸引力且能带来利润的项目;要以数据为中心开展工作;鼓励跨职能团队尽早展开合作并进行积极的管理;要尽快构建端到端的系统以便进行测试;并且要根据机器学习项目的特点来调整项目管理方案。
以上这些只是导致机器学习项目失败的原因中的一部分。不过,它们可以为我们的讨论提供一个良好的起点。最后,我想引用查理·芒格的一句话作为结束:“尽可能从自己的亲身经历中学习,尽量减少通过他人成败的经历来间接获取知识。”
参考文献
\({}^{[2]}\) Kapoor, Sayash, 和 Arvind Narayanan。2023年。〈a href=”https://doi.org/10.1016/j.patter.2023.100804″>基于机器学习的科学领域中的“泄漏问题”与可重复性危机
\({}^{[4]}\) Yi, Jeonghee, Ye Chen, Jie Li, Swaraj Sett, 和 Tak W. Yan。2013年。〈a href=”https://doi.org/10.1145/2487575.2488215″>预测模型的性能评估