头图

作者:Ygor Serpa 编辑:小白

在从事机器学习、人工智能和开发工作近六年后,我列出了我多年来从成功和失败的项目中总结的七条经验教训。最核心的一点是,尽管学习了无数的模型和技术,一名高效、专业的数据科学家和算法工程师要学会尽可能避免复杂性。毕竟真正驱动商业价值的是对紧迫问题的有效解决,而非盲目追求最先进的技术。

更具体地说,在实际业务中,数据科学家需要解决的问题从来不是单一孤立的,而是复杂多元的。数据科学家有很多事情可以做,如改进现有模型,部署新模型,重做某个特定步骤等。经验告诉我,人们往往会陷入模型而忘记其他事情,但通常那些被遗忘忽略的事情往往会对解决问题起到决定性作用。

自2015年来,我一直在从事人工智能的相关工作,在多项AI项目中担任领导者或唯一的开发人。我的职业生涯发展主要涉及两个重要的方面:(1)我必须自己弄清楚项目和开发的大部分内容;(2)大多数时候,我与那些几乎不知道 AI 真正能做什么的人一起工作。

通过这些经历,我总结了如下经验:

1. 最简单的模型通常表现最好
2. 生产中优先选择久经考验的方法
3. 生活中的一切都可以改善,最关键的是要知道优先改进什
4. 寻找AI应用场景和解决方案的重要性高于对现有模型的优化
5. 代码的准确度和结果的准确一样重要
6. 不要为用AI而用AI
7. AI需与业务紧密耦合

1. 最简单的模型通常表现最好

不同问题的最佳解决方案各不相同,有些需要神经网络来解决,有些依赖XGBoost,还有一些特殊问题也可以使用决策树、逻辑回归和线性回归来合理解决。

在了解了所有奇妙的技术之后,算法工程师总是很想在 Scikit-learn库中寻找新的技术,但不要这样做。正相反,从你可以使用的最简单的方法开始,如果线性插值就可以解决问题,那就用这一方法。一味追求花哨最终什么也得不到。

在实践中,更简单的方法或许不会像其他方法那样可以解决多种问题,但其核心优势在于,模型越简单,就越容易解释它的工作原理,解释它和数据的适配度,解释其预测的原因,同时也越容易进行模型调试等。使用花哨的高斯过程或最先进的网络不会带来任何额外的增益。在可能的情况下,优先考虑线性插值,然后是逻辑回归和决策树。

Tips:花了几个月的时间学习复杂的分类器、校准和预处理,但最终会发现最简单的方法是最好的。

2. 生产中优先选择久经考验的方法

摒弃其他因素,直观地去看神经网络的话,新发布的网络过于花哨了。所有华丽的点缀最终都只是点缀而已。我们需要一个在任何不确定的环境都能运行良好的、久经考验的模型。

在我的经验中,ResNet 正是这样:久经考验。

在我几乎每天与训练网络打交道的三年中,我总是在项目计划中选择一天寻找新的损失函数、激活函数等来尝试解决问题。在这一过程中我发现,95%的情况下,采用创新方法得出的结论与我使用Cross entropy/L2, ReLU, CNN和Adam函数等得到的结果大致相同(存在1%的波动)。

Tips:我们不应该尝试新事物吗?当然不是。但是请记住,坚持久经考验的方法始终是最安全的选择。

3. 生活中的一切都可以改善,最关键的是要知道优先改进什么

坦白说,这可能是本文最重要的信息。

我们可以随时改进模型,总是可以让其运行得更快,但问题的关键在于我们最优先要做什么。

我参与过不计其数的会议,讨论一些不存在的可扩展性问题或者规划如何避免一些永远不会发生的潜在变化。事实上,大多数人并不需要10%更优的模型,他们真正需要的是多 10% 的客户。

花几天时间去调试这些我们称之为网络的疯狂野兽是令人愉快的,但这对真正商业价值的影响是有限的。企业启动 AI 项目时,最紧迫的问题是构建AI模型。拥有模型之后,下一个关键点是获取更多数据,以及将AI模型投入实际生产。一旦这两个问题都解决了,最重要的问题便成为如何扩大AI的应用范围。对于实际业务来说,与持续优化改进单点的AI模型相比,在更大范围内应用AI通常可带来更高的投资回报率。

坦白说,大多数企业管理者并不知道AI到底是什么以及AI能做什么,他们或许会想象AI会做出超人的壮举。因此,掌握模型并教育周围的人也是数据科学家和算法工程师的一项重要工作。

*Tips:认真审视你所做的和拥有的一切,明确最薄弱的环节是什么,准确识别改变什么会带来最大的业务价值,识别之后便持续改进和迭代这些方面。


4. 寻找AI应用场景和解决方案的重要性高于对现有模型的优化

正如上一个技巧所说,根据我的经验,改进已投入生产的模型通常是一项低优先级的任务。但是在具有良好的AI开发生产和管理工具的情况下,我们可以不断输入数据对模型进行重新训练,以得到更好的模型。

如果目前你所在企业的AI开发生产管理中没有这样的反馈循环,那么你可以在下次会议上提出这一点,作为企业推进AI应用需要重点注意的事项。当企业建立起高效顺畅的数据接入与处理、模型训练、模型部署与应用的通路后,AI开发人员可以将更多地时间分配在AI应用场景和解决方案的探索上。与改进已经启用的AI模型相比,扩大AI的应用、探索新的场景和解决方案,可能会带来更大的商业价值。新场景和解决方案的探索意味着接入数据、探索数据、找到适合的模型、训练模型、以及将模型应用到生产中看看会发生什么等一系列系统工作。

Tips:成为一名更高效的AI专业人士需要做的显著的转变是,从只专注对现有模型的改进向积极探寻新的AI应用场景迈进,后者通常才是更高的商业价值所在。

5. 代码的准确度和结果的准确一样重要

AI 对遗漏步骤或者糟糕的数学方法等常见错误具有较高的容忍度,尤其是在梯度推进器(Gradient Boosters)、支持向量机(SVM) 和神经网络等数值导向的方法中。

举个简单的例子,假设我们忘记对输入的数据进行标准化,模型将从未标准化的数据中进行学习。但问题在于 AI 模型通常有两条独立的代码路径:训练和推理。假设模型的训练代码中存在数学错误,但在推理脚本中没有,结果将是灾难性的:该模型所有的参数都是基于对已损坏数据集的拟合,在随后投入到生产中后,输出给客户的也必然是错误的结果。常见的错误再比如,我们在自定义数据增强时出现错误,使模型付出了两倍努力来解码一个在实际生产中永远不会出现的条目。

方法缺陷可以以很多种形式隐藏在训练和推理脚本中,如未进行正态化化、错误的数据类型、受损的数据扩充等。AI开发人员需要确保代码中的这一切都是正确的,最好可以有可视化的方法来检查、识别这些错误。

最后,达到90%准确率并不意味着模型可以投入生产,高准确率的代码本身可能就是一个bug,不要轻信任何一段代码。

Tips:代码中可能有些可怕的错误未被注意到,因为它们对训练结果的影响没有严重到推翻整个模型系统。但将这样的模型投入到生产中可能会对业务产生不利影响,因此请认真地对待对模型的测试。

6. 不要为用AI而用AI

AI并非所有问题的万能解药。有些问题用传统代码便可以较好地处理。代码是可读的、确定性的、可理解的,最重要的是,处理的结果更加精确。当我们对数组进行排序时,我们期待的结果并不是“有89% 的机会让数组排序”。这种通过传统代码就能够更加精确地解决的问题则无需AI的帮助。

而另一些问题,比如物体检测或图像生成,无法通过传统代码简单地解决,需依赖AI算法。AI模型的问题是,它从来不是完美的, 90%准确的模型,仍有10%的可能会出错。

Tips:准确判断AI的适用场景很重要,不要“为用AI而用AI” 。

7. AI需与业务紧密耦合

企业应用 AI 和大数据并不是为了展示机器学习强大能力或对神经网络的掌握程度,而是希望通过将人工智能应用于非常规任务来推动商业价值。那么,如何衡量商业价值呢?

目前对于模型的评估主要是基于精确度指标,如正确预测的数量、找到的对象数、检测到的人体关节点等。然而,这些都是局部的度量指标,用以判断模型在解决任务时的局部具体影响。商业价值的产生则来自于模型与业务的紧耦合,切实影响利润、转化率、客户流失等全局价值。但衡量是否使用AI等单一干预措施对企业全局业务的影响通常是极具挑战性的,这依赖算法团队和业务团队的紧密、高效配合。同时也需要选取可行的对比基线,以排除其他因素的干扰。比如,假设我们追踪的商业价值指标是销售量数据,但其可能受季节影响而波动。

Tips:比AI本身更重要的是让AI对应用产品/业务/用户生活产生有价值的影响。模型准确度是一个很好的局部衡量标准,但它不能代表商业价值。AI业务和商业价值的充分发挥,依赖于算法团队和业务团队的相互信任与紧密配合。

本译文基于:
Ygor Serpa,7 Truths To Be a Better AI Professional


从经验到实战

本周六(4/16) 14:00,我们将举办实战型IDP Meetup,从数据科学家、大数据工程师的视角,分享AI开发生产平台如何帮助解决其日常工作难题。

活动详情:https://segmentfault.com/e/11...


Baihai_IDP
134 声望444 粉丝

IDP是AI训推云平台,旨在为企业和机构提供算力资源、模型构建与模型应用于一体的平台解决方案,帮助企业高效快速构建专属AI及大模型。