Snorkel AI:在ML开发中将数据放在首位

2020-07-16 13:07:04

今天我很兴奋地宣布Snorkel AI的秘密发射!2019年从斯坦福AI实验室剥离出来的Snorkel AI成立于两个简单的前提:首先,机器学习模型学习的标签训练数据越来越多地决定着AI应用的成败。第二,我们可以做得比完全手工标注这些数据好得多。

在斯坦福人工智能实验室,Snorkel AI创始团队花了四年多的时间开发新的程序性方法来标记、扩充、结构化和管理这些训练数据。我们有幸与一些世界领先的组织(如Google、Intel、Apple、Stanford Medicine)一起开发和部署了我们的技术的早期版本,导致我们的发现发表了超过36篇同行评议的出版物;在弱监督建模、数据增强、多任务学习等方面的创新;将我们的技术纳入大学计算机科学课程;以及在您可能在过去几个小时内与之互动的流行产品和系统中的部署。

通过所有这些学术修修补补和行业探索,我们认识到两件事:首先,通过编程而不是手动标记和构建训练数据的概念具有变革潜力,可以使机器学习更迭代、更可审计、部署更快,最终更实用。其次,这些想法不仅改变了你给训练数据贴上标签的方式,而且改变了ML整个生命周期和管道的很多方面:如何注入知识和反馈;如何构建、训练、版本化和监控模型;如何迭代开发整个管道;以及如何将任何ML部署中的全套利益相关者(从主题专家到ML工程师)合并到流程中。

换句话说,我们看到,这种向程序化培训数据的转变需要对整个ML开发和部署过程进行自上而下的重写。在一些令人惊叹的投资者(Greylock、GV、In-Q-tel和其他公司)和令人难以置信的早期客户的支持下,我们去年一直在做这件事:构建和部署Snorkel Flow,这是一个支持ML流程的新愿景的端到端平台。

Snorkel flow首先也是最重要的动机是越来越多的人意识到,训练数据已经成为许多ML管道和AI应用程序开发的关键瓶颈。

今天的ML成功通常依赖于一个隐藏的成本:大量的手工标注的训练数据集。在过去的十年里,我们已经看到人工智能和ML向强大但需要数据的表示学习模型的结构性转变。这些模型-通常是深度学习架构-不仅在避免功能工程和定制模型设计等传统手动开发任务方面更加强大,而且在开放源码中也从未像现在这样容易访问。然而,没有免费的午餐:这些模型非常复杂,有数千万到数亿个参数,它们需要大量的标签训练数据集来学习。和,。除了在标签自然是现有过程的派生的特殊场景之外,这些训练数据集需要手动标注。

ML的手工标记训练数据接口已经取得了巨大的进步,但也被荒谬地打破了。举一个简单的例子:一家银行的法律分析师想要训练一个合同分类模型,并想要给ML模型注入一个简单的启发式方法:如果标题中有“雇佣”,那么合同就应该被贴上“雇佣合同”的标签。很简单,对吧?但事实并非如此。从理论上讲,仅通过标记单个数据点将此特定特征传递给机器学习模型可能需要数千个示例(大致与特征空间的稀疏性成反比)。从这个角度来说,这就像玩20个问题,而不仅仅是直接交流答案-如果你有一个庞大的问答库,这是可以的,但在其他方面完全不切实际。

手动标记培训数据的成本高得令人望而却步,特别是在需要专业知识和隐私的情况下。建立训练数据集通常需要大量的人工标记员,花费巨大的成本和时间。例如,ML当前爆炸性进步背后的基础项目之一ImageNet花了两年多的时间创建。然而,给猫、狗、停车标志和行人贴上标签是一回事;标记医疗图像、法律和金融合同、政府文档、用户数据和网络数据等数据需要严格的隐私保护和主题专家标签器。这意味着,对于金融服务、政府、电信、保险、医疗保健等行业来说,创建培训数据(延伸到使用ML)要么是一项非常昂贵的内部活动-或者更多时候,这项活动根本不可行,更不用说实用了。

对于手工标记的数据,迭代开发是不可能的。从工程和数据科学的角度来看,手动标记训练数据从根本上打破了快速迭代的能力,这在输入数据、输出目标和注释模式一直在变化的现实世界设置中是绝对必要的。从业务角度来看,培训数据是一项昂贵的资产,不能跨项目重复使用,经常会因为不断变化的条件或业务目标而在一夜之间贬值到一文不值,这带来了越来越大的风险-从与COVID相关的延迟到偏差问题。

使用Snorkel flow,用户不需要手动标记任何训练数据,而是开发标记、扩充和构建训练数据的编程操作符,以驱动ML开发过程。

以编程方式标记和构建训练数据。使用Snorkel Flow,其想法是通过编程操作符(如标签函数)直接交流该领域知识。例如,我们的法律分析员可以编写一个标签函数,如果标题中有“雇佣”一词,则将文档标记为“雇佣合同”,否则就放弃;或者,依赖于内部知识库、模型、遗留启发式等等的一系列更复杂和更强大的标签功能。这种使用数据对ML进行有效编程的方法简单、直接、可解释、可修改,并且与所使用的模型无关(这在寒武纪功能强大的新开源模型体系结构不断涌现的情况下尤为重要)。

规则的直接性与ML的灵活性。基于规则的系统长期以来一直在工业中用于某些任务-作为输入,单个规则具有直接和可解释的可取属性。然而,规则也可能是脆弱的,并且缺乏ML方法的健壮性、灵活性和绝对能力。使用Snorkel Flow,您可以两全其美:作为输入的是规则(和其他可解释的资源),而作为输出的是超越这些规则的强大的ML模型。

一个更强大但更弱的监督。与此同时,这种程序性监督在几个转型方面都有优势,但它也更加混乱,并提出了根本性的新的技术挑战。用户编写的标签函数和其他编程运算符将具有不同的未知精度和专业领域,彼此重叠和不一致,并且可能以纠结和未知的方式相关。在四年多的研究中,我们专注于这些问题的算法和系统解决方案,从经验和理论上表明,通过正确的技术,这些深层次的技术挑战是可以克服的。结果是:训练数据与手标数据一样好或更好,创建和维护起来也更加实用。

标签之外:数据增强、切片、监控等。在高性能生产ML中,训练数据不仅仅是标注。例如,数据增强是一种基石技术,其中使用数据的变换副本(例如,旋转或模糊图像)来扩展训练数据集的大小,并使所得到的模型更稳健。将训练数据集分割或结构化为或多或少重要和困难的子集也是管理生产ML的关键部分。最后,在任何生产级ML应用程序中,不仅监视和调整模型,而且监视和调整通知它们的训练数据也是至关重要的。所有这些操作多年来一直是我们研究和部署的主题,现在我们的端到端机器学习平台Snorkel Flow找到了一个集中的家,用于AI应用开发。

通过多年的部署经验,我们认识到这种新的编程方法不仅仅是训练数据-它改变了构建、部署、监视和维护ML驱动的应用程序的整个方式。在过去的一年里,我们一直在构建支持ML:Snorkel flow的这种新方法的端到端平台。

以数据为中心的ML开发过程。Snorkel Flow使用户能够通过迭代和编程标记、扩充和构建训练数据来推动开发和部署ML支持的应用程序的端到端流程。用户从开发编程运算符开始,范围从在按钮UI中开发的简单标签功能(例如,表达规则或试探法)到带来不同信号源的复杂自定义运算符(例如,现有模型、标签、知识库等)。通过Python SDK。Snorkel Flow自动清理和管理这些操作员的输出-还集成任何手工标记的数据或其他信号源(如果可用)-然后使用它来培训最先进的模型,无论是按下按钮还是通过SDK。有关更多详细信息,请参阅此页面。

一个迭代的、可操作的开发和监控循环。Snorkel Flow背后的一个关键设计原则是,成功的ML开发流程必须从根本上是人在环路中-按钮自动化解决方案在现实世界中根本不起作用-但这些环路应该在每个转弯时为用户提供明确的、可操作的指导。在潜水水流中,监测和分析指导用户快速识别和纠正其训练数据和模型中的错误模式。净效果:人工智能是一个迭代的开发过程,而不是受数据约束的一次性练习。

构建和部署端到端AI应用程序,而不仅仅是模型。其中一个关键原则是Snorkel流,即ML应用程序开发完全是关于数据的-不仅是训练数据,而且是围绕组成任何实际生产应用程序的ML模型的各种预处理器、后处理器、连接器和整体工作流。Snorkel Flow提供了一个端到端环境,用于构建这些完整的数据工作流,并只需按一下按钮即可将其部署为API。

一个开发人员优先的平台,完全是关于跨职能团队的。成功的人工智能解决方案需要跨团队和角色的协作-从主题专家的知识和目标到机器学习工程师的部署管道。Snorkel Flow的构建既是开发人员优先的(在每个阶段都具有完全的SDK和CLI访问权限和可配置性),又可以授权并明确包含其他关键角色,以及用于集成主题专家、业务利益相关者和其他人员的按钮式UI和特定的托管工作流。

到目前为止,我们通过Snorkel Flow所建立的一切完全依赖于与一些令人惊叹的早期客户(包括几家美国顶级银行、政府机构和其他大型企业)、令人难以置信的顶级投资者(Greylock、GV、In-Q-tel等)的合作伙伴关系,以及来自谷歌、Facebook、NVIDIA等地的真正千载难逢的工程师团队,以及来自斯坦福大学、华盛顿大学、布朗大学、威斯康星州等地的学者。

展望未来,我们很高兴能继续与来自金融、政府、电信、保险和医疗保健等领域的一批最优秀的团队和组织合作,在帮助我们发展平台的同时提供快速的底线价值。如果您有兴趣成为这些早期合作伙伴中的一员,请在此处联系。

当然,如果我们不说:“我们正在招聘!”我们的公司真的会设在帕洛阿尔托吗?如果您有兴趣成为一个高技术、世界级团队的一员,成为ML、数据和系统的新交叉点的前沿先锋,并对现实世界产生重大而直接的影响,请查看我们的招聘页面。

我们非常兴奋地宣布还有更多即将到来的消息--同时,敬请关注!