公众号/机器之能
人工智能具有传统软件无法企及的巨大市场潜力,全球潜在市场价值高达数万亿美元。
硅谷顶级风投a16z投资人马丁·卡萨多 ( Martin Casado)和马特·伯恩斯坦( Matt Bornstein)撰写的第一篇关于AI经济学的文章(The New Business of AI)已被多家国内科技媒体翻译并广泛传播。他们发现全球 AI 公司都有一个惊人共性,毛利率太低,通常在 50-60%,远低于 SaaS 业务 60-80%以上的毛利率。而且AI 本身就是一个成本中心。
他们指出来,建立具有与传统软件公司相同吸引力(也就是高毛利)的人工智能公司,面临巨大挑战。人工智能公司毛利率通常较低,很难扩大规模,并不总是具有强大的护城河。
这篇文章可视为两位投资人系列文章下篇,目的在于为AI公司如何应对那些挑战提供指导性意见。在与数十家领先机器学团队进行正式和非正式对话后,作者分享了他们的经验教训,最佳实践和秘诀。
需要注意的是,文章重点针对那些依赖机器学习(主要是监督学习)提供核心服务的AI公司和产品。
编译 | 吴昕
建立具有与传统软件公司相同吸引力(也就是高毛利)的人工智能公司,通常面临巨大挑战。人工智能公司毛利率通常较低,很难扩大规模,而且并不总是具有强大的护城河。
不过,许多经验丰富的AI公司在改善其公司财务状况方面已取得了巨大进步。手段包括数据工程、模型研发、云运营、组织化设计、产品管理等。其背后共同点在于,深刻而实际地理解所要解决的问题。
作为讨论AI经济学系列文章的下篇(上篇为 The New Business of AI),本文第一部分旨在解释为什么理解问题如此重要(尤其是存在长尾数据分布时),并将其与 AI公司面临的经济挑战联系起来。
第二部分分享了我们从采访中获得的一些应对策略,这些策略可以帮助ML团队构建性能更高的应用程序和利润更高的AI业务。
了解要解决的问题
构建与实验(或软件与人工智能)
与软件工程相比,AI开发通常「更接近于制药中的分子发现」 。因为它是一个类似化学或物理学的过程。AI 开发人员将统计模型拟合到数据集,测试该模型对新数据的性能如何,并加以重复。这本质上是试图控制现实世界的复杂性。
而软件开发是一个构建和工程过程,定义应用程序规范和整体体系结构后,可以逐步添加新特性和功能,比如一次一行代码、库或API调用,直到形成一幅完整愿景。
软件开发人员能很大程度上控制这个过程,借助标准计算机科学实践(例如模块化、工具化、虚拟化或选择正确的抽象方法),通常可以控制最终系统的复杂性。
然而,由于训练数据本身固有系统复杂性,AI 开发人员几乎无法掌控AI应用。
而且,对于许多自然系统而言,数据通常凌乱、长尾、不可预测甚至高度熵。更糟糕的是,由开发人员编写的代码不会直接改变程序运作,正如一位经验丰富的创始人曾比喻过的,「ML本质上是创建代码的代码(根据输入数据的功能)……这将附加创建一个难以理解的间接层。」
长尾与机器学习
面对长尾分布数据,想要建立一家高效的AI公司会遇到许多困难。尽管长尾概念的正式定义可能很烧脑,但其背后的直觉却相对简单:从长尾分布中随机选择一个数据点,它很有可能就位于尾巴上(比如,50 %以上概率,甚至可能更高)。
以互联网搜索词为例。分布的「开头」和「中间」中的热门关键字(下图蓝色所示)占所有字词的比例不到30%。剩余70%的关键字位于「尾巴」中,每个月的搜索量不到100次。
假设不管查询在分布中位置如何,都需要花费相同的工作量来处理查询,那么,长尾分布系统的大部分工作将落在尾部,在这里,每个查询产生的价值相对较低,但花费的工作量都是一样的。
然而,越来越明显的是,长尾分布在机器学习中也非常普遍,反映出现实世界状态和典型数据收集实践。下图就显示了几个流行AI研究数据集中几类模型频率。
这些类型的分布不一定很糟糕。但与互联网搜索的例子没啥不同,当前,ML技术也不能很好地处理它们。
监督学习模型往往在常见输入(即分布开头)上表现良好,但在稀疏数据(分布的尾巴)情况下会遇到困难。由于尾部情况才是大多数,因此,ML开发人员会陷入一个循环(有时似乎是无限的):收集新数据、再训练,以解决边缘情况。
然而,忽视这些尾巴同样令人痛苦,比如会让人错过客户和机会,收益不佳,也让用户沮丧。
对AI经济学的影响
长尾及其引发的工作量,被证明是让AI业务难以经济起来的主要原因。最直接的影响是数据和计算资源的原始成本。机器学习的这些成本通常比传统软件要高得多,因为要获得准确的结果需要大量的数据,大量的实验和大量的参数。人工智能应用程序的开发成本和故障率可能比典型软件产品高出3-5倍。
然而,仅仅关注云计算成本就忽略了长尾理论的两个更有害的潜在影响。首先,长尾会导致基础设施以外的高可变成本。
例如,如果发送给聊天机器人的问题因客户的不同而差异很大,也就是说,大部分问题都在尾部,那么构建一个精确系统很可能需要针对每个客户付出大量的工作。不幸的是,根据解决方案分布,这些付出和相关销售成本可能很难通过精心设计而被消减掉。
更糟糕的是,面临长尾问题的人工智能公司实际上会出现规模不经济。也就是说,相对于竞争对手,随着时间的推移,经济状况会变得更糟。因为,数据有收集、处理和维护的成本。虽然相对于数据量,这种成本会随着时间的推移而降低,但是,额外数据边际效益下降更快。事实上,这种关系似乎是指数级的,在某种程度上,开发人员可能需要10倍数据才能实现2倍主观上的改进。
虽然人们很希望能有一个类似于摩尔定律的人工智能来显著提高处理性能并降低成本,但这似乎并没有实现(尽管算法有所改进)。
接下来,我们介绍从采访对象获取的思考和解决这些问题的指南。
构建更好的AI系统
寻求解决方案
许多人工智能系统被设计用来预测复杂的底层系统交互,这也是输入数据长尾分布的原因。开发人员通常不能完全描述数据特征,所以会通过一系列(监督的)学习实验来建模。这一过程需要大量工作,可能触及业绩渐近线,进而引发或加剧人工智能公司面临的许多经济挑战。
这也是AI商业困境症结所在。如果经济学是问题的根源而不是技术本身,我们如何改进它们?没有简单的答案。
在某种程度上,长尾是对问题复杂性的一种衡量。也就是说,它是我们首先需要自动化的原因,并且与解决问题所需要的努力直接相关。不过,有一些方法可以帮助我们将长尾作为一阶焦点并加以处理。
我们从ML工程师和研究人员那里听到了很多关于这个话题的建议。下面就分享一些最好、最具创新性的指导意见。
最简单的情况:界定问题
在最简单的情况下,理解这个问题意味着,搞清楚你是不是在处理长尾分布。如果不是,比如,这个问题可以用线性回或多项式加以合理描述,那么,你根本不需要使用机器学习! 尤其是不要使用深度学习!
奇怪的建议?但是它反映出我们曾经提及的AI成本中心难题,而且正如本文第一部分提到的,这些难题很难解决。
随着模型复杂性增加,这些问题也会变得更糟,因为复杂模型训练和维护成本高昂。如果使用不当,甚至可能比简单技术模型性能更差。比如,更容易使小型数据集过于参数化,或者生成性能迅速退化的脆弱模型。
Shopify的工程师指出,逻辑回归和随机森林之所以流行是有原因的:
它们具有可解释性,可扩展性和成本效益。虽然在许多情况下,更大更复杂的模型性能更好(例如,对于语言理解/生成,捕获快速变化的社交媒体趋势),但是,只有当可以确定何时模型准确性能显著提升,将大把钞票砸在训练和维护模型上才有价值和意义。
「机器学习不是宗教,而是科学、工程学再加一点艺术。机器学习方法很多,我们倾向于用先进的武器解决眼前的问题,但如果仔细观察,你会发现有的问题就是个螺丝钉问题。」 另一位机器学习领导者如是说。
更难一点:全球范围的长尾问题
如果确实面临长尾问题,包括最常见的NLP(自然语言处理),计算机视觉和其他ML任务,那么,确定客户、区域、细分和其他用户群之间的一致性程度,至关重要。如果重叠程度很高,很大程度上可以使用全局模型(或整体模型)为大多数用户提供服务,也会对毛利率和工程效率产生巨大积极影响。
在访问大型用户数据集的B2C技术公司中,最经常看到这种模式。对于B2B供应商来说,在熵相对较低的场景下,通常也有同样的优势,比如自动驾驶汽车,欺诈检测或数据输入,在这些环境中,部署环境对用户行为的影响相当弱。
在上述情况下,一些基于本地的训练(例如针对主要客户的训练)仍然必要。不过,通过在全球语境下界定问题,积极围绕长尾建构问题,能够将这些训练需求最小化。对此的标准建议包括:
添加更多训练数据(包括客户数据),调整超参数或调整模型体系结构来优化模型,这往往只有在触及长尾时才管用;
通过明确限制用户可以进入系统的范围来缩小问题范围,这个办法针对一个拥有庞大“头部”的长尾分布最有效,比如专注于高价值联系人的数据供应商,或者那些易受用户错误影响的长尾分布,比如Linkedin应该有17000个与IBM相关的实体;
转化问题为单匝界面(例如,内容信息流,产品建议,「您可能认识的人」等),或者提示用户输入/设计人类故障转移以涵盖特殊情况(例如,自动驾驶汽车的远程操作)
但对于许多现实问题,这些策略可能并不可行。对于这些情况,经验丰富的ML建设者共享了一种更通用的模式 ——componentizing(组合)。
例如,Cloudflare的ML工程师分享了一个与Bot检测器有关案例,主要是通过处理大量日志文件,识别(并标记或阻止)数百万个网站的非人类访问者。
然而,将其视为单个任务在规模上是无效的,因为「机器人」概念包括数百种表现出独特行为的不同子类型(搜索爬网程序,数据抓取程序,端口扫描程序等)。团队使用集群技术并尝试了各种级别粒度,最终发现了6-7类机器人,每种机器人都可以使用独特的监督学习模型加以处理。
如今,他们的模型正提供实时保护,还有类似软件业务的毛利率。
确实很难:本地的长尾问题
许多问题没有显示出客户或其他用户群之间的全局一致性,一些局部问题差异反而很常见。但是,这并不等于说确定重叠无足轻重,因为输入数据(特别是在企业中)可能由于商业或监管原因而彼此分离。通常,全球性问题和局部问题的区别在于可用数据范围。
局部ML问题经常存在长尾分布,需要加以解决。但是局部变化程度,会导致工作量迅速增加。
例如,一家大型音乐流媒体公司发现,他们需要为每个运营国家提供独特的播放列表生成模式。类似地,工厂分析供应商通常为每一个客户或装配线提供一种独特的模型。
虽然没有简单的解决办法,不过有几种策略可以帮助将全球模型的好处带到局部问题当中。
近期可行的选择是元模型模式,在该模式中,单个模型被训练针对覆盖一系列客户或任务。在研究语境下,这项技术被讨论最多(例如多任务机器人)。但对于人工智能应用公司来说,这个办法可以大大减少需要维护的模型数量。
例如,一家成功的市场营销初创公司能够将数千种离线的、针对客户的模型组合成单一元模型,这样再训练成本要低得多。
另一个新兴的解决方案是迁移学习。ML团队普遍认为,预先训练的模型,尤其是BERT或GPT-3等基于注意力的语言模型可以全面减少和简化训练需求,最终,仅用少量数据对每个客户模型进行微调也会变得更加容易。
这些技术的潜力是毋庸置疑的。然而,目前应用相对较少,部分原因在于其庞大规模导致操作困难而且成本高昂。而且,在许多应用中仍需要做客制化工作。
最后,一些大型科技公司实践者描述了一种基于主干模型的迁移学习变体。例如,Facebook维护数千个ML模型,大多数都是针对特定任务单独训练的。但是,随着时间的推移,可以将共享相似功能的模型与通用「主干」结合在一起,以降低复杂性。目标是使躯干模型尽可能「厚」(即完成大部分工作),同时使特定「分支」模型尽可能「薄」而又不牺牲准确性。
比如,一家自动化产品描述的AI团队将七个垂直特定模型(一个用于家具,一个用于时尚,一个用于汽车等)组合到一个主干架构中,该架构的精确度提升两倍,并且运行成本更低。
在某种程度上,这种方法看起来很像全局模型模式。同时,它允许并行模型开发,并且还有高度的局部精度,为数据科学家提供了更丰富的嵌入式数据,将一些O(n^2)问题,比如语言翻译,转化为O(n)问题。这可能预示着未来的发展方向,有助于定义ML开发过程的基本模块或接口。
赌注:操作样本
最后,许多经验丰富的机器学习工程师们强调了最佳操作实践对提高AI经济效益重要性。下面是一些最引人注目的案例。
整合数据管道。模型扩张并不一定意味着管道扩张。当全球模型不可行的时候,通过将大多数客户合并到一个单一数据转换过程,一位创始人实现了效率提升,这样做对系统延迟的影响相对较小。也有团队通过减少再训练频率(例如,通过夜间排队或在积累了足够数据时再训练),或者在更靠近数据的地方训练来降低成本。
构建边缘案例引擎。如果连长尾都看不到,你就没办法解决它。例如,特斯拉组装了一个庞大的怪异停车标志数据集,训练自动驾驶仪模型。对于大多数机器学习团队来说,以可重复方式收集长尾数据,这个能力很重要,通常包括识别分布外数据、寻找相似案例、标记新数据并经常使用主动学习进行智能化再训练。
拥有基础架构。许多领先的机器学习组织运行(甚至设计)自己的机器学习集群。在某些情况下,这对初创公司来说,也是个好主意。一位CEO每年节省了约1000万美元,当公司从AWS切换到主机托管设施中的自己GPU盒。创始人的关键问题是,搞清楚节省多少成本才能证明维护成本支出的合理性,以及确定云服务价格曲线下降速度情况。
压缩,编译和优化。随着模型不断发展,支持有效推理和训练的技术(包括量化、蒸馏、修剪和编译)变得至关重要。利用预训练模型或自动API也越来越多。这些工具不会改变大多数AI问题的经济性,但有助于降低大规模管理成本。
测试,测试,测试。这听起来很明显,但是一些专家鼓励ML团队将测试作为优先级——而不是基于像F分数这样的经典机制。机器学习应用程序通常以不确定的方式执行(并失败)。「bug」可能并不直观,比如原因可能在于不良数据,精确度不匹配或隐性地侵犯隐私。另外,升级还涉及到数十个应用程序,不能向后兼容。这些问题需要对数据分布、预期漂移、偏差、对抗策略和其他因素进行可靠测试。
原文链接: