与AI一起爬山的冒险

2020-09-26 01:06:01

在上一篇文章中,我概述了我最近构建人工智能产品的经验以及它们与传统软件的区别。在本系列的第二部分中,我将进一步讨论AI产品(模型)是如何成为动态实体的,这些实体需要不断优化,以及这种现象的影响。

让我们设想一下,我们正在努力构建一款新型的人工智能产品。我们的产品将接收车祸图像作为输入,并生成输出决策:汽车是否完全损失。可以想象,这个模型可以被保险公司用来对他们收到的汽车保险索赔进行快速评估。他们可以使用我们的产品快速将收到的索赔归类为全损或其他。

我们的产品开发工作有两个部分,我今天将重点介绍这两个部分。第一个是在最初的数据采集中帮助构建我们的产品。第二个是让客户使用产品,这可能需要定制校准。

在本文中,我将交替使用术语AI、ML、模型和产品来表示基于人工智能的产品-软件2.0产品。

构建这样的模型需要足够大的数据集来帮助训练模型。训练数据既表示我们的模型在部署后期望看到的数据(在我们的示例中将是图像),也表示指示每个图像的语义的标签。在我们的例子中,每个图像附带的标签将是一个二进制数,0或1,其中0表示图像中的汽车不是完全损失的,反之亦然。下面是几个训练数据可能是什么样子的示例。

获取这些数据并不简单,无论是从找到它的角度,还是从更关键的角度正确地给它贴上标签都是如此。数据采购通常有几种途径:DIY、Partner、Buy。

你可以自己做,也许可以通过抓取谷歌或其他网站来获取数百万张(大多数ML算法需要大量数据)的车祸图像。这假定您拥有图像版权,而这些网站允许您这样做。你可以与IIHS这样的实体合作,这些实体可以让你访问他们的数据集。最后,你可能会买到车祸数据集。这些选项不是互斥的。无论您使用哪种方式获取数据,您都必须正确地对其进行标记。

回想一下,在我们的上一篇文章中,我们提到过ML模型类似于训练孩子识别形状。如果孩子使用的卡片标签不正确,孩子将无法正确分类形状。ML型号都是一样的。因此,正确标记数据是绝对关键的。您可能需要开发内部功能才能正确标记培训数据。要做到这一点,很可能需要你雇佣在汽车保险领域拥有深厚专业知识的人,以确保你的培训数据被正确贴上标签。

你已经获得了你的数据,正确地给它贴上了标签,并且有了一个你有信心完成这项工作的模型。现在是时候把你的产品卖给你的客户了。在这种情况下,我们的客户将是汽车保险公司。看起来很简单,但事实并非如此。有几条皱纹会让事情变得复杂。

让我们使用下面显示的图像来尝试回答一个简单的问题:汽车的损坏是完全损失吗?根据维基百科的定义,全损定义为“……。全损或核销是指受损财产的损失价值、修理费或打捞费用超过其保险价值的情况,简单地用新的等价物取代旧财产更具成本效益。

这一定义使完全损失是相对的,而不是绝对的评估。例如,保险公司A在市场M经营,可以将上述汽车视为全损。而在不同市场N运营的另一家保险公司B可能不会。也许他们有非常不同的成本结构,也许B可以获得一支才华横溢、价格低廉的维修劳动力,而A则没有。

接下来,让我们考虑下图。这辆车遭受了相当大的冰雹破坏,很可能是完全损失。但是,一旦我们将此图像输入到我们的模型中,它就会返回0,或者不会完全丢失。刚刚发生了什么?

事实证明,我们的训练数据没有任何冰雹破坏的图像。我们的模型根本没有接受过识别和评估冰雹损失的培训。对于我们的模型来说,这张照片看起来和一辆完美的车没有什么不同。注意,有人可能会争辩说,我们的模型还应该生成第三个输出“我不知道”,以表明它无法正确地对图像中的损坏进行分类。

这种情况并不是特别不寻常。实际上,您的模型是在某个数据集上训练的,但是一旦部署,它可能会遇到从未见过的数据。从统计学上讲,这意味着您的模型将暴露在它不熟悉其分布的数据中。在ML语言中,这也称为模型漂移。

暴露于来自不同于训练数据的分布的数据以及潜在地必须更改模型的分类规则的影响可能具有深远的影响。首先,您可能需要花费一些时间来测试您的产品,以评估其相对于客户环境和她的期望的性能。如果性能足够,意味着它满足您和客户的目标,那么您可以继续在实际生产工作负载中实际使用您的产品。

但是,在很多情况下,特别是最近开发的模型,您必须根据客户的数据校准模型。在上面的例子中,您必须调整您的模型以识别冰雹造成的损失,并根据客户的阈值评估总损失。总而言之,这意味着必须根据客户的数据集来训练您的模型-这是一个冗长且昂贵的(GPU)提议。它还可以极大地延长您的销售周期。

我们已经介绍了最初开发和发布您的产品的流程,如下所示。您可以获得大量数据,对其进行标记,并使用它来训练模型,最终确定一个(或多个)符合您的业务目标的模型。

接下来,您将把这个模型放到野外,很可能您必须对其进行自定义以满足客户需求,如下所示。

我之前提到过,你应该把你的模型看作活生生的实体,他们需要不断地训练,就像一个处于早期发展阶段的孩子一样。要做到这一点,一种方法是将您发布的模型与您在客户现场定制校准的模型进行集成。您想要取上面绿色框中的模型,将其与黄色中的模型合并,以生成新版本的发布模型。您可以通过将客户数据与您自己的培训数据合并,并根据此组合数据集构建一个新模型来实现这一点。或者,您可以通过称为联合学习的ML技术合并这两个模型。

在凯隆,我们称这种现象为爬山。老实说,我不确定这是否是一个行业术语-AFAIK不是-但我喜欢它,并将坚持使用它。就像爬山一开始很难,随着你的适应变得更容易一样,你的人工智能产品接触的数据越多,就会变得越好。从长远来看,您不应该在每个客户地点进行校准。如果你是,那么很可能你是在反对一个无界分布,或者是一个尾巴非常长的分布。那将是一场艰苦的战斗!安德森·霍洛维茨(Andreessen Horowitz)最近的一篇文章-驯服尾巴:改善人工智能经济学的冒险-也解决了这个问题。我强烈建议你读一读。