Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Alex Ratner 等作者Nurhachu Null、Chita编译

斯坦福AI实验室机器学习编程新范式:弱监督

深度学习模型有多好用是众所周知的,高质量的机器学习模型也并不难得。难得的是获取大量人工标注的训练数据,这些数据既昂贵又费时费力。因此,越来越多专业人士开始寻求弱监督范式,斯坦福 AI 实验室对此进行了一些综述,并描述了关于建模和整合各种监督来源的研究。

近年来,机器学习对现实世界的影响突飞猛进。这主要是因为深度学习模型的出现,它让从业者在没有任何手动设计特征的情况下就能够在基准测试数据集上得到当前最佳得分。由于有多个可用的开源机器学习框架(如 TensorFlow 和 pytorch 等)以及大量可用的先进模型,可以说高质量的机器学习模型现在几乎是商品化的资源。但是还有一个隐藏的问题:这些模型要依赖于大量人工标注的训练数据。

创建这些人工标记的训练数据集既昂贵又耗时——通常需要数月或者数年的时间来收集、清洗和调试,尤其是在需要领域专业知识的时候。除此之外,现实世界中的任务通常会变化和发展。例如,标注指南、粒度以及下游用例经常会变化,然后需要重新标注(例如,不能把评论仅分为积极和消极,还要加入中性类别)。鉴于这些原因,从业者越来越多地转向较弱的监督形式,例如,利用外部知识库、模式/规则或者其他分类器来启发式地生成训练数据。从本质上来讲,这些都是以编程方式生成训练数据的方法,或者更简洁地说就是编程训练数据。

本文先是对机器学习中由标注训练数据问题所驱动的领域进行综述,然后描述了本文关于建模和整合各种监督来源的研究。研究人员还讨论了用成百上千个以复杂和变化的方式进行交互的弱监督动态任务为大规模多任务机制构建数据管理系统的愿景。

综述——如何获得更多的标注训练数据?

机器学习中很多传统研究路线同样受到深度学习模型对标注训练数据依赖的驱动,这些学习模型都需要标注数据。本文绘制了一张图来表示这些方法和高级弱监督方法的核心区别:弱监督是使用来自主题专家(SME)的更高级和/或更嘈杂的输入。

目前流行的方法是让主题专家直接标注大量数据,它的关键问题就是太昂贵了:例如,在医学成像领域获得大规模数据集很困难——不像研究生,放射科的医师可不会接受墨西哥卷饼和免费 T 恤作为报酬!因此,机器学习中很多经过充分研究的问题都遇到了标注数据的瓶颈,并受此驱动:

  • 主动学习中,其目标是更高效地利用 SME,让他们标注预计对模型来说最有价值的数据点。在标准的监督学习设置中,这意味着选择需要标注的新数据。例如,我们可能会选择接近当前模型决策边界的乳房 X 光片,然后让放射医师仅标注这些点。但是,我们也可以只要求与这些数据点相关的较弱监督,在这种情况下主动学习能够与弱监督进行完美的互补。

  • 监督学习设置中,它的目标是使用小规模标注训练数据集和较大规模的未标注数据集。然后我们在较高层次上使用关于平滑度、低维结构或距离指标的假设来利用未标注数据(要么作为生成模型的一部分,作为判别模型正则化器,要么学习紧凑的数据表征);从广义上讲,半监督学习的理念不是从主题专家中吸收更多输入,而是利用领域和任务不可知的假设来开发未标注数据,这些数据通常比较廉价,而且可以大量获得。最近的方法使用生成对抗网络、启发式转换模型和其它生成方法来有效地帮助正则化决策边界

  • 在典型的迁移学习设置中,其目标是利用一个或多个在不同数据集上训练好的模型,然后将它们应用到我们的数据集和任务中;例如,我们可能有一个用于检测身体另一个部位肿瘤的大规模数据集,以及在这个数据集上训练得到的分类器,我们现在希望把它们用在我们的乳房 X 光片检测任务中。现在深度学习社区中一个常用的迁移学习方法就是在大规模数据集上「预训练」一个模型,然后在目标任务上对其进行「精调」。另一个相关的研究领域是多任务学习,其中几个任务是联合学习的(Caruna 1993; Augenstein, Vlachos, and Maynard 2015)。

上述范例有可能能够让我们避免向主题专家寻求额外的训练标签。但是,标注一些数据的需求是不可避免的。倘若我们要求他们提供各种较高层次,或较低精度的监督形式(这些会更快、更容易实现)呢?例如,倘若放射科医师花一下午检查一组启发式或其它资源,那么,如果处理得当的话,是否可以有效地替代数千个训练标签?

向 AI 注入领域知识

从历史层面来看,尝试「编写」人工智能(即为其注入领域知识)并不是一件新鲜事——而现在提这个问题的新颖之处在于,人工智能从未如此强大,而就其可解释性和控制性而言仍然是一个「黑盒子」。

在上世纪七八十年代,人工智能的焦点是专家系统,它将领域专家手动整理的知识库和规则与推理引擎结合起来应用。20 世纪 90 年代,作为将知识整合到人工智能系统中的工具,机器学习开始飞速发展,它承诺以强大而灵活的方式根据标注训练数据自动完成这些事情。经典的机器学习方法(无表征学习)通常有个领域专家输入端口。第一,这些模型相比现代模型具有更低的复杂性,这意味着它们使用更少的人工标注数据。第二,这些模型依靠人工设计的特征,这提供了一种直接的方式编码、修改以及与模型的基本数据表征进行交互。但是,特征工程曾经且现在仍然被普遍认为是机器学习专家的任务,他们经常会在整个博士期间为特定任务制定特征。

深度学习模型:因其在不同领域和任务中自动学习表征的惊人能力,深度学习模型在很大程度上都避免了特征工程的任务。但是,它们大部分都是完全的黑盒子,除了要标注大量训练数据和调整网络架构之外,普通的开发者几乎无法没有控制权。在很多意义上,它们与旧专家系统脆弱但易于控制的规则完全相反——它们灵活且难以控制。这让我们从一个稍微不同的角度去思考最初的问题:如何利用我们的领域知识和任务专长来编写现代的深度学习模型?是否可以将基于规则的旧专家系统的直接性与现代机器学习方法的灵活性结合起来?

编码为监督:通过编程来训练机器学习

Snorkel 是我们开发的一个系统,用来支持和探索这种与机器学习交互的新类型。在 Snorkel 中,我们使用没有人工标注的数据,但会要求用户写一些标签函数(LFs),它们是用来标记未标注数据子集的黑盒代码片段。

然后我们就可以使用一组这样的标签函数来为机器学习模型标注训练数据。因为标签函数只是任意的代码片段,所以它们可以编码任意的信号:模式、启发式方法、外部数据资源、来自人群的噪声标签、弱分类器等等。并且,作为代码,我们可以获得所有其他相关的好处,例如模块化、可重用性、可调试性。例如,如果我们的建模目标改变了,我们可以调整标签函数来快速适应。

当然,一个问题是,标签函数会产生噪声输出,这些输出有可能会重叠或者冲突,导致不太理想的训练标签。在 Snorkel 中,我们使用数据规划方法来给这些标签去噪,这包含三个步骤:

  1. 将标签函数应用在未标注数据上。

  2. 在没有任何标注数据的情况下,利用生成模型来学习标签函数的准确率,并相应地加权它们的输出。我们甚至可以自动学习他们之间的相互关系。

  3. 生成模型输出一组概率训练标签,我们可以利用这组标签来训练强大又灵活的判别模型(例如深度神经网络),这个判别模型将会泛化到标签函数中表达的信号之外。

这整个过程可以被视为提供了一个简单、鲁棒和模型不可知的方法来「编写」机器学习模型。

标签函数

从生物医学文献中提取结构化信息是最能激励我们的应用之一:大量的有用信息被有效地锁在数百万篇科学文献的密集非结构化文本中。我们想利用机器学习来提取所有的内容,以便我们的生物合作者可以用它来做类似于诊断遗传疾病的事情。

如果是那种从科学文献中提取关于某种化学—疾病关系的任务,我们可能没有足够大(或任何)标注训练数据集。但是,在生物医学领域,有大量精选的本体、词典和其他资源,包括化学和疾病名称的各种本体、各种已知化学—疾病关系的数据库等,我们可以用它们来为我们的任务提供一种弱监督。此外,我们可以与生物合作者一起提出一系列任务特定的启发式方法、正则表达式模式、经验法则和负面标签生成策略。

作为表达工具的生成模型

在我们的方法中,我们认为标签函数隐式地描述了一个生成模型。快速复习一下:给定数据点 x,它具有未知的标签 y,这是我们想要预测的;在一个判别方法中,我们直接地对 P(y|x) 进行建模,但是在生成方法中,我们对 P(x,y) = P(x|y)P(y) 进行建模。在本文中,我们将训练集标注过程建模为 P(L,y),其中 L 是对象 x 的标签函数生成的标签,y 是对应的真实标签(未知的)。通过学习生成模型并直接估计 P(L|y),基于它们如何重叠和冲突(需要注意的是,我们不需要知道 y),我们实际上学习的是标签函数的相对准确率

我们在标签函数上用这个估计的生成模型来训练最终判别模型的噪声感知版本。为此,生成模型在训练数据的未知标签上推断概率,然后我们最小化判别模型关于这些概率的期望损失。

估计这些生成模型参数可能会相当棘手,尤其是当使用的标签函数(用户表达的或者是推断的)之间存在统计相关性的时候。在本文中,我们证明,给定足够的标签函数,就可以得到与监督式方法(除了在我们的情况中,关于未标注数据)相同的渐进缩放。我们还研究了如何在不使用标注数据的情况下学习标签函数之间的相关性,以及如何显著地提升性能。

Snorkel 在实际应用中的一些记录!

在最近关于 Snorkel 的论文中,我们发现在很多现实应用中,这种与当代机器学习模型交互的新方法效果很好!一些亮点包括:

  • 在斯坦福 Mobilize 中心主办的关于 Snorkel 的 workshop(为期两天)中开展了一项用户研究,我们比较了教主题专家用 Snorkel 和花费等价时间来人工标注数据的生产力。我们发现他们构建模型不仅快了 2.8 倍,而且平均预测性能提高了 45.5%。

  • 在两个现实的文本关系抽取任务(与来自斯坦福大学、美国退伍军人事务部和美国食品药物管理局的研究人员合作)中——以及 4 个其它的基准文本和图像任务上,我们发现 Snorkel 相对基准技术带来了平均 132% 的提升。

  • 我们探索了如何对用户提供的标签函数进行建模的新型权衡空间,进而产生了一个基于规则的优化器来加速迭代开发周期。

下一步:大规模多任务弱监督

我们正在努力把在 Snorkel 中设想的弱监督交互模型扩展到其它模态,如格式丰富的数据和图像、用自然语言监督任务和自动生成标签函数!在技术方面,我们感兴趣是扩展 Snorkel 中心的核心数据编程模型,使其更容易用更高级的接口(如自然语言)指定标签函数,同时更易与其它弱监督方法相结合,例如数据增强。

多任务学习场景的日益流行还引发了一个问题:当嘈杂的、可能相关的标签源现在标注多个相关任务时会发生什么?我们能否通过联合建模对这些任务的监督来受益?我们在 Snorkel 的多任务感知新版本中解决了这些问题,也就是 Snorkel MeTaL,它支持为一个或多个相关任务提供噪声标签的多任务弱监督源。

我们考虑的一个例子是设置不同粒度的标签源。例如,假设我们的目标是训练一个细粒度的命名实体识别(NER)模型来标注特定类别人物和地点的提及。我们有一些细粒度的噪声标签,如「律师」vs「医生」,或者「银行」vs「医院」,有些是粗粒度的标签,如「人物」vs「地点」。通过将这些源表示标记不同的分层相关任务,我们可以对它们的准确率进行联合建模,重新加权并组合它们的多任务标签来创建更干净、更加智能聚合的多任务训练数据,这种数据能够提升最终 MTL(多任务学习)模型的性能。

我们认为,在为多任务学习构建数据管理系统时最令人激动的方面将围绕着处理我们所说的大规模多任务机制展开,其中数十到数百个弱监督任务以复杂多变的方式交互。尽管迄今为止大多数多任务学习研究都考虑过最多处理几项任务,这些任务由静态手工标注的训练集定。但现在各组织——无论是大企业、学术实验室还是在线社区都要维护数十到数百个变化迅速且相互依赖的弱监督建模任务。此外,因为这些任务是弱监督的,所以开发者能够在数小时或者数天内(而不是数月或者数年)添加、删除或者改变任务(即训练集),不过这可能需要重新训练整个模型。

在最近的论文《The Role of Massively Multi-Task and Weak Supervision in Software 2.0》中,我们概括了一些针对上述问题的初始想法,设想了大规模的多任务设置,其中多任务学习模型能够有效地充当训练数据的中央存储库,这些数据被不同的开发者弱标注,然后在一个中央「母体」多任务模型中结合。无论确切外形如何,在这个设想中多任务学习技术有很多令人兴奋的进步——不仅是新的模型架构,而且还与迁移学习方法、新的弱监督方法以及新的软件开发和系统范式日益统一。


原文链接:https://ai.stanford.edu/blog/weak-supervision/

理论斯坦福AI实验室弱监督学习多任务学习
5
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

专家系统技术

专家系统(ES)是人工智能最活跃和最广泛的领域之一。专家系统定义为:使用人类专家推理的计算机模型来处理现实世界中需要专家作出解释的复杂问题,并得出与专家相同的结论。简言之,如图1所示,专家系统可视作“知识库(knowledge base)”和“推理机(inference machine)” 的结合。

半监督学习技术

半监督学习属于无监督学习(没有任何标记的训练数据)和监督学习(完全标记的训练数据)之间。许多机器学习研究人员发现,将未标记数据与少量标记数据结合使用可以显着提高学习准确性。对于学习问题的标记数据的获取通常需要熟练的人类代理(例如转录音频片段)或物理实验(例如,确定蛋白质的3D结构或确定在特定位置处是否存在油)。因此与标签处理相关的成本可能使得完全标注的训练集不可行,而获取未标记的数据相对便宜。在这种情况下,半监督学习可能具有很大的实用价值。半监督学习对机器学习也是理论上的兴趣,也是人类学习的典范。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

判别模型技术

在机器学习领域,有一种分类方法将模型分为判别模型和生成模型(generative model)两种。 判别模型是一种对未知数据y与已知数据x之间关系进行建模的方法,是一种基于概率理论的方法。已知输入变量x,判别模型通过构建条件概率P(y|x)分布预测结果,或试图直接从输入x的空间学习映射到标签{0,1}(如感知器算法)的函数。生成模型则是考虑x与y之间的联合分布。 在实际应用中判别模型非常常见,如:逻辑回归(logistic regression),支持向量机(support vector machine), 提升方法(Boosting),条件随机场(conditional random fields),神经网络(neural network),随机森林(random forests)典型的生成模型则包括:高斯混合模型(Gaussian Mixture Model),隐马尔科夫模型(hidden markov model),简单贝叶斯(naive Bayes)等。不难看出两者的区别。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

表征学习技术

在机器学习领域,表征学习(或特征学习)是一种将原始数据转换成为能够被机器学习有效开发的一种技术的集合。在特征学习算法出现之前,机器学习研究人员需要利用手动特征工程(manual feature learning)等技术从原始数据的领域知识(domain knowledge)建立特征,然后再部署相关的机器学习算法。虽然手动特征工程对于应用机器学习很有效,但它同时也是很困难、很昂贵、很耗时、并依赖于强大专业知识。特征学习弥补了这一点,它使得机器不仅能学习到数据的特征,并能利用这些特征来完成一个具体的任务。

知识库技术

知识库是用于知识管理的一种特殊的数据库,以便于有关领域知识的采集、整理以及提取。知识库中的知识源于领域专家,它是求解问题所需领域知识的集合,包括基本事实、规则和其它有关信息。

数据管理技术

数据管理是利用计算机硬件和软件技术对数据进行有效的收集、存储、处理和应用的过程,其目的在于充分有效地发挥数据的作用。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

决策边界技术

在具有两类的统计分类问题中,决策边界或决策曲面是一个超曲面,它将底层的向量空间分成两组,每组一个。分类器会将决策边界一侧的所有点分为属于一个类,而另一侧属于另一个类。也即二元分类或多类别分类问题中,模型学到的类别之间的分界线。

特征工程技术

特征工程是利用数据所在领域的相关知识来构建特征,使得机器学习算法发挥其最佳的过程。它是机器学习中的一个基本应用,实现难度大且代价高。采用自动特征工程方法可以省去采用人工特征工程的需求。Andrew Ng 说“挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。”

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

命名实体识别技术

命名实体识别(NER)是信息提取(Information Extraction)的一个子任务,主要涉及如何从文本中提取命名实体并将其分类至事先划定好的类别,如在招聘信息中提取具体招聘公司、岗位和工作地点的信息,并将其分别归纳至公司、岗位和地点的类别下。命名实体识别往往先将整句拆解为词语并对每个词语进行此行标注,根据习得的规则对词语进行判别。这项任务的关键在于对未知实体的识别。基于此,命名实体识别的主要思想在于根据现有实例的特征总结识别和分类规则。这些方法可以被分为有监督(supervised)、半监督(semi-supervised)和无监督(unsupervised)三类。有监督学习包括隐形马科夫模型(HMM)、决策树、最大熵模型(ME)、支持向量机(SVM)和条件随机场(CRF)。这些方法主要是读取注释语料库,记忆实例并进行学习,根据这些例子的特征生成针对某一种实例的识别规则。

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

生成对抗网络技术

生成对抗网络是一种无监督学习方法,是一种通过用对抗网络来训练生成模型的架构。它由两个网络组成:用来拟合数据分布的生成网络G,和用来判断输入是否“真实”的判别网络D。在训练过程中,生成网络-G通过接受一个随机的噪声来尽量模仿训练集中的真实图片去“欺骗”D,而D则尽可能的分辨真实数据和生成网络的输出,从而形成两个网络的博弈过程。理想的情况下,博弈的结果会得到一个可以“以假乱真”的生成模型。

推理引擎技术

推理机是实施问题求解的核心执行机构,常见于专家系统。它是对知识进行解释的程序,根据知识的语义,对按一定策略找到的知识进行解释执行,并把结果记录到动态库的适当空间中去。

主动学习技术

主动学习是半监督机器学习的一个特例,其中学习算法能够交互式地查询用户(或其他信息源)以在新的数据点处获得期望的输出。 在统计学文献中,有时也称为最佳实验设计。

多任务学习技术

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

推荐文章
暂无评论
暂无评论~