AI 科技评论按:随着人工智能技术的研究迈过了初期的野蛮生长,走进深水区。如何充分利用人工标注信息、减小标注工作量、将人类经验与学习规则充分结合成为了急需解决的关键问题!本文结合斯坦福 AI 实验室在弱监督学习领域的研究进展、成果以及相关思考,就弱监督学习的理论方法、标注工具、研究进展三个方面展开讨论。
近年来,机器学习对现实世界的影响与日俱增。在很大程度上,这是由于各种各样的深度学习模型的出现,使得从业人员可以在不需要任何手动操作特征工程的情况下,就可以在对比基准数据集上获得目前最佳分数。现在我们可以使用像 TensorFlow 和 PyTorch 这样的各类开源机器学习框架,以及大量可用的最先进的模型,可以说,高质量的机器学习模型现在几乎成为了一种可商品化的资源。然而,这里还存在一个容易被忽视的问题:这些模型依赖于大量手动标注的训练数据。
然而在很多任务中,这些手动标记的训练集创建起来既昂贵又耗时 ,通常需要花费许多人数月或者数年的成本来进行数据的收集、清理和调试 —— 尤其是在需要领域专业知识的情况下。除此之外,任务经常会在现实世界中发生变化和演变。例如,数据标注指南、标注的粒度或下游的用例都经常会发生变化,需要重新进行标记(例如,不仅要将评论分类为正类或负类,还要引入一个中性类别)。可见,由于数据标注需要付出高昂代价,这种强监督信息是很难获得的。因此,研究者们面对急需解决的数据标注问题,整合了现有的主动学习、半监督学习等研究成果,提出了「弱监督学习」概念,旨在研究通过较弱的监督信号来构建预测模型。
弱监督通常分为三种类型:不完全监督、不确切监督、不准确监督。
(1)不完全监督,指的是训练数据只有部分是带有标签的,同时大量数据是没有被标注过的。这是最常见的由于标注成本过高而导致无法获得完全的强监督信号的情况,例如,聘请领域专家直接给大量数据添加标签的成本就相当高。另外,在为医学影像研究构建大型数据集时,放射科医生可不会接受一点小恩小惠就愿意为你标记数据。而且根据笔者的经验,由于医生对于数据科学的了解往往不够深入,有许多数据的标注结果(例如为分割任务框定的病灶轮廓)是无法使用的,从而产生了很多实际上缺少有效标记的训练样本。该问题可以被形式化表达为:
在训练数据为 D = {(x_1, y_1), …, (x_l, y_l), x_{l+1}, …, x_m},其中 l 个数据有标签、u=m-l 个数据无标签的情况下,训练得到 f:x->y。
在诸多针对不完全监督环境开发的机器学习范式中,主动学习、半监督学习、迁移学习是三种最流行的学习范式。
主动学习(active learning):它假设未标注数据的真值标签可以向人类专家查询,让专家为估计模型最有价值的数据点打上标签(更详细的介绍请参阅:Settles 等人于 2012 年发表的综述文章)。在我们只考虑用查询次数衡量标出成本的情况下,主动学习的目标是在提高查询效率,在查询次数尽可能小的情况下,使得训练出的模型性能最好。因此,主动学习需要选择出最有价值的未标注数据来查询人类专家。
而在衡量查询样本的价值时,有两个被最广泛使用的标准:信息量和代表性。信息量衡量的是一个未标注数据能够在多大程度上降低统计模型的不确定性,而代表性则衡量一个样本在多大程度上能代表模型的输入分布。这两种方法都有其明显的缺点。基于信息量的衡量方法包括不确定性抽样和投票查询,其主要的缺点是在建立选择查询样本所需的初始模型时,严重依赖于对数据的标注,而当表述样本量较小时,学习性能通常不稳定。给予代表性的方法,主要缺点在于其性能严重依赖于未标注数据控制的聚类结果。目前,研究者尝试将这两种方法结合起来,互为补充。举例来说,我们可以选择处于当前模型决策边界附近的乳房 X 线照片,并要求放射科医生仅给这些照片进行标记。但是,我们也可以要求仅仅对这些数据点进行较弱的监督,在这种情况下,主动学习是对于弱监督学习的完美补充;更详细的例子可以参考 (Druck, settle, 和 McCallum 于2009 发表的论文)。
半监督学习(semi-supervised learning):与主动学习不同,半监督学习是一种在没有人类专家参与的情况下对未标注数据加以分析、利用的学习范式。通常,尽管未标注的样本没有明确的标签信息,但是其数据的分布特征与已标注样本的分布往往是相关的,这样的统计特性对于预测模型是十分有用的。
实际上,半监督学习对于数据的分布有两种假设:聚类假设和流形假设。
前者假设数据具有内在的聚类结构,因此,落入同一个聚类的样本类别相同。后者假设数据分布在一个流形上,在流形上相近的样本具有相似的预测结果。可见,两个假设的本质都是相似的数据输入应该有相似的输出。因此,如何更好地衡量样本点之间的相似性,如何利用这种相似性帮助模型进行预测,是半监督学习的关键。半监督学习的方法主要包括:生成式方法、基于图的方法、低密度分割法、基于分歧的方法。本文在这里对这些具体的方法不多赘述,详情请参阅周志华老师的综述文章「A brief introduction to weakly supervised learning」。
迁移学习(transfer learning):迁移学习是近年来被广泛研究,风头正劲的学习范式,其内在思想是借鉴人类「举一反三」的能力,提高对数据的利用率。具体而言,迁移学习的定义为:有源域 Ds和任务 Ts;目标域 Dt 和任务 Tt,迁移学习的目标是利用源域中的知识解决目标域中的预测函数 f,条件是源域和目标域不相同或者源域中的任务和目标域中的任务不相同[2]。在迁移学习研究的早期,迁移学习被分类为「直推式迁移学习」、「归纳迁移学习」和「无监督迁移学习」。
随着深度学习的蓬勃发展,以「基于实例的深度迁移学习」、「基于映射的深度迁移学习」、「基于网络的深度迁移学习」和「基于对抗的深度迁移学习」为代表的深度迁移学习范式也得到了研究人员的关注[2](详情请参阅论文「A Survey on Deep Transfer Learning」,https://arxiv.org/pdf/1808.01974v1.pdf)。例如,我们可能已经有身体其他部位肿瘤的大型训练集,以及此基础上训练的分类器,然后希望将其应用到我们的乳房 X 光检查任务中。在当下的深度学习社区中,一种常见的迁移学习方法是在一个大数据集上对模型进行「预训练」,然后在感兴趣的任务上对其进行 「调优」。由于迁移学习目前已经成为了一个相对独立的研究领域,本文不对迁移学习的相关内容做过多的展开。
(2)不确切监督,即训练样本只有粗粒度的标签。例如,针对一幅图片,只拥有对整张图片的类别标注,而对于图片中的各个实体(instance)则没有标注的监督信息。例如:当我们对一张肺部 X 光图片进行分类时,我们只知道某张图片是肺炎患者的肺部图片,但是并不知道具体图片中哪个部位的响应说明了该图片的主人患有肺炎。该问题可以被形式化表示为:
学习任务为 f: X -> Y,其训练集为 D = {(X_1, y_1), …, (X_m, y_m)},其中 X_i = {x_{I, 1}, …, x_{I, m_i}}, X_i 属于X,X_i 称为一个包,样本 x_{i, j}属于X_i(j属于{1, …, m_i})。m_i 是 X_i 中的样本个数,y_i 属于 Y = {Y, N}。当存在 x_{i, p}是正样本时,X_i 就是一个正包,其中 p 是未知的且 p 属于 {1, …, m_i}。模型的目标就是预测未知包的标签。
多示例学习已经成功应用于多种任务,例如:图像分类、检索、注释,文本分类,垃圾邮件检测,医疗诊断,人脸、目标检测,目标类别发现,目标跟踪等。
(3)不准确监督,即给定的标签并不总是真值。出现这种情况的原因有很多,例如:标注人员自身水平有限、标注过程粗心、标注难度较大。在标签有噪声的条件下进行学习就是一个典型的不准确学习的情况。而最近非常流行的利用众包模式收集训练数据的方式也成为了不准确监督学习范式的一个重要的应用场所。
图 1.三种弱监督学习的示意图[1].
上面提到的学习范式让我们可以不用找领域专家合作者标注额外的训练标签。然而,对某些数据进行标记是不可避免的。如果我们要求数据标注者采用各种类型的更高级、或不那么精确的监督形式,以便能够更快、更简便地提供,对给数据标注工作带来什么影响?例如,放射科医生花一个下午的时间来标记一组启发式的规则或其他资源,如果处理得当,这些资源将能有效地替代数以千计的训练标签,这样的话又可以给数据标注工作带来怎样的作用 ?
将领域知识注入人工智能
从历史维度来看,试图对人工智能进行「编程」(即注入领域知识)并不是什么新鲜事——而本次要探讨的新问题是,AI 虽然在可解释性和可控性方面依旧还是一个「黑盒子」,然而在性能方面却从未像现在这样强大。
20 世纪 70 年代和 80 年代,专家系统是人工智能领域的研究重点,它将来自领域专家手动建立的事实和规则的知识库结合起来,并使用推理引擎来应用它们。20 世纪 90 年代,机器学习作为将知识集成到人工智能系统的工具,开始蓬勃发展,有望能够实现从人工标注训练数据到机器以强大而灵活的方式自动标注训练数据。
经典的(非表示学习)机器学习方法通常有两个领域专家输入的端口。首先,这些模型的复杂度通常比现代模型要低得多,这意味着可以使用规模更小的手动标注数据。其次,这些模型依赖于手动设计的特征,它们为编码、修改和与模型的数据基本表示形式的交互提供了一种直接的方法。然而,通常来说,无论过去还是现在,特征工程都被认为是机器学习专家的任务,他们通常会在整个博士生涯中为特定的任务设计特征。
下面让我们来看看深度学习模型:由于它们具有跨多个领域和任务自动学习表示的强大能力,它们在很大程度上避免了特征工程的任务。然而,它们大部分都完全是个黑盒子,普通开发人员除了能对它们标注大量的训练集和调整网络架构外,几乎无法控制它们。在很大程度上,它们站在了脆弱但易于控制的旧专家系统规则的对立面——它们灵活但难以控制。
这使我们从一个稍微有些不同的角度重新回看最初的问题:我们如何才能利用我们的领域知识或面向细分任务的专业知识来对现代深度学习模型进行编程?有没有办法将基于规则的旧专家系统的直接性与当下这些机器学习方法的灵活性和强大功能结合起来?
使用代码进行监督:通过编程训练机器学习系统
Snorkel 是斯坦福 AI 实验室为支持和探索这种与机器学习模型进行的新型交互而构建的一个系统。在 Snorkel 中,他们不使用手动标注的训练数据,而是要求用户编写标注函数,即用于标注未标注数据子集的黑盒代码片段。
然后,研究人员可以使用一组这样的标注函数来为机器学习模型标注训练数据。由于标记函数只是任意的代码片段,所以它们可以对任意信号进行编码:模式、启发式、外部数据资源、来自众包人员的带噪声的标签、弱分类器等等。而且,他们还可以获得标注函数作为代码所特有的其他相关的好处,比如模块化、可重用性和可调试性。例如,如果建模目标发生了变化,他们可以调整标注函数来快速适应这种变化!
当然,Snorkel 存在的一个问题是,标注函数会产生带噪声的输出,这些输出可能会重合并冲突,从而产生不太理想的训练标签。在 Snorkel 中,他们使用数据编程方法对这些标签进行去噪,该方法包括三个步骤:
1. 将标注函数应用于未标记的数据。
2. 使用一个生成模型在没有任何带标签数据的条件下学习标注函数的准确性,并相应地对它们的输出进行加权。该生成模型甚至可以自动学习它们的相关结构。
3. 生成模型输出一组概率训练标签,之后使用这些标签来训练一个强大、灵活的判别模型 (如深度神经网络),它将泛化到标记函数表示的信号之外。
这整个工作流程可以被视为提供了一个简单的、鲁棒的、与模型无关的方法对机器学习模型进行「编程」。
标注函数
斯坦福 AI 实验室表示,从生物医学文献中提取出结构化的信息是最鼓舞他们的应用之一:从数百万篇科学论文的密集的非结构化文本中锁定大量有用的信息。他们希望使用机器学习技术来提取这些信息,从而使其生物医学合作者可以使用这些信息来诊断遗传病。
对于从科学文献中提取出某种「化学——疾病」关系的任务来说,他们可能还没有规模足够大的标注训练数据集来完成这项任务。然而,在生物医学领域,存在着丰富的知识本体、词典等资源,其中包括各种化学与疾病名称的知识本体、各种类型的已知化学——疾病关系的数据库等,研究人员可以利用这些资源来为他们的任务提供弱监督。此外,他们还可以与生物医学合作者一起提出一系列针对于特定任务的启发式、正则表达式模式、经验法则和负标签生成策略。
将生成模型作为一种表达载体
在斯坦福 AI 实验室的方法中,他们认为标注函数隐式地描述了一个生成模型。快速回顾一下:给定数据点 x,想要预测的未知标签 y,他们在判别方法中直接对 P(y|x) 建模,在生成方法中则对 P(x,y) = P(x|y)P(y) 建模。在本例,他们对标注训练集的过程 P(L,y) 建模,其中 L 是由对象 x 的标注函数生成的标签,y 是相应的 (未知的) 真值标签。通过学习生成模型,并直接估计 P(L|y),他们本质上是在根据它们如何重合并冲突来学习标注函数的相对准确性 (要注意地是,本例中不需要知道 y!)
他们使用这个估计出的生成模型,在标注函数上训练一个能够感知噪声的版本的最终判别模型。为了做到这一点,生成模型推断出训练数据的未知标签的概率,然后他们再最小化关于这些概率的判别模型的期望损失。
估计这些生成模型的参数可能非常困难,特别是当使用的标注函数之间存在统计依赖性时。在论文「Data Programming: Creating Large Training Sets, Quickly」(https://arxiv.org/abs/1605.07723)中,论文作者证明了在给定足够的标注函数的条件下,可以得到与监督方法相同的。同时,该论文还研究了如何在不使用标注数据的情况下学习标注函数之间的相关性,以及如何显著提高性能。
Snorkel 框架
在斯坦福 AI 实验室最近发表的关于 Snorkel 的论文 (https://arxiv.org/abs/1711.10160)中,他们发现在各种实际应用中,这种与现代机器学习模型交互的新方法非常有效!其中的一些亮点包括:
1. 在 Mobilize Center 主办的一场为期两天的关于 Snorkel 的工作坊的用户调研中,他们比较了教领域专家们使用 Snorkel 的效率,以及花同样的时间仅仅对数据进行手动标注的效率。同时,他们还发现,使用 Snorkel 构建模型在速度不仅快了 2.8 倍,而且平均的预测性能也提高了 45.5%。
2. 在与斯坦福大学、美国退伍军人事务部和美国食品和药物管理局的研究人员合作的两个实际的文本关系提取任务,以及其他四个对比基准文本和图像任务中,他们发现,与作为对比基准的技术相比,Snorkel 的性能平均得到了 132% 的提升。
3. 他们探索了如何对用户提供的标记函数建模的新的权衡空间,从而得到了一个能够加速迭代开发周期的基于规则的优化器。
斯坦福 AI 实验室正在进行各种努力,将 Snorkel 设计的弱监督交互模型扩展到其它的模态中,如格式丰富的数据和图像、使用自然语言的监督任务以及自动生成标注函数!
在技术方面,他们对扩展 Snorkel 的核心数据编程模型,使其更容易指定具有更高级别接口(如自然语言)的标注函数,以及结合其他类型的弱监督学习技术 (如数据增强)感兴趣。
随着多任务学习的场景越来越普遍,也引发了这些问题:当带噪声的、可能相关的标注源现在要标注多个相关任务时会怎么样(不准确监督)?能否通过对这些任务的监督进行联合建模来提升性能?在一个新的多任务感知版本的 Snorkel,即 Snorkel MeTaL(https://arxiv.org/abs/1810.02840) 中解决了这些问题,哪个又能够支持为一个或多个相关任务提供带噪声标签的多任务弱监督源?
他们考虑的一个例子,是关于不同粒度的标签源的设置(不确切监督)。例如,假设他们打算训练一个细粒度的命名实体识别模型来标记特定类型的人和位置,同时已经拥有一些细粒度的带噪声的标签,例如标记「律师」与「医生」,或者是「银行」与「医院」;而有些是粗粒度的,例如标记「人」与「位置」。通过将这些源表示为标记不同的与层次相关的任务,他们可以联合建模它们的准确性,并重新加权和组合它们的多任务标签,从而创建数据更加干净、融合了各种智能的多任务训练数据,从而提高最终多任务学习模型的性能。
斯坦福 AI 实验室表示,他们相信,为多任务学习构建数据管理系统最激动人心的方面将围绕着大规模多任务机制,在这种机制的作用下,数十到数百个弱监督(因此也高度动态)任务以复杂、多样的方式交互。
虽然迄今为止大多数多任务学习的工作大多都考虑到了处理由静态手动标注训练集定义的少数几项任务,但世界正在迅速发展成组织(无论是大公司、学术实验室还是在线社区)需要维护数以千计的弱监督、快速变化且相互依赖的建模任务的状态。此外,由于这些任务是弱监督的,开发人员可以在数小时或数天内(而不是数月或数年内)添加、删除或更改任务(即训练集),这可能需要重新训练整个模型。
在最近的一篇论文「The Role of Massively Multi-Task and Weak Supervision in Software 2.0」(http://cidrdb.org/cidr2019/papers/p58-ratner-cidr19.pdf)中,斯坦福 AI 实验室针对上述问题的一些初步想法进行了概述,设想了一个大规模的多任务的场景,其中多任务学习模型有效地被用作一个训练由不同开发人员弱标注的数据的中央存储库,然后组合在一个中央的「母」多任务模型中。无论确切的形式因素是什么,很明显,未来还会出现许多令人兴奋的多任务学习技术的进展——不仅是新的模型架构,也会涉及到与迁移学习方法、新的弱监督方法、新的软件开发和系统范式的统一。
作为一种越来越受到关注的、实用意义很强的学习范式,研究者们近期在 CVPR、AAAI、ACL 等重要的人工智能领域的会议上发表了大量有关多监督学习的最新研究。例如:
Rabinovich 等人(https://arxiv.org/pdf/1809.01285.pdf)设计了一种弱监督方法,用于在完全没有标记数据的情况下,推断词语的抽象性。他们只利用最少的语言线索和文本数据中显示的概念的上下文用法,训练足够强大的分类器,获得与人类标签的高度相关性。
Wu 等人(https://arxiv.org/abs/1805.02333)在 ACL 2018 上针对开放环境下的人机对话任务开发了一种利用未标注数据学习选择基于检索的聊天机器人的响应的匹配模型的方法。该方法采用序列-均衡结构(Seq2Seq)模型作为弱标注器来判断未标注对的匹配程度,然后对弱信号和未标注数据进行学习。
Arachie 等人(https://arxiv.org/abs/1805.08877)在 AAAI 2019 上针对无标签分类器的训练任务提出了一种弱监督的方法——对抗性标签学习,该方法利用投影的「primal-dual」梯度下降法最小化分类器错误率的上限。最小化这个界限可以防止在弱监督方法中出现偏差和依赖。
Vardazaryan 等人(https://arxiv.org/pdf/1806.05573.pdf)针对手术工具定位任务,提出了图像级别的标注任务的训练模式,可以用于在没有显式空间标注的情况下,检测出视频中存在的手术工具病在视频中定位。
在 CVPR 2019 上,Zeng 等人(https://arxiv.org/pdf/1904.00566.pdf)针对像素级图像标注问题,提出了一种多源弱监督视觉显著性检测模型,他们设计了一个分类网络(CNet)和一个标题生成网络(PNet),分别学习预测对象以及生成图像标题。同时,他们还设计了一种能够在网络之间传播监督信号的注意力迁移损失,从而使通过一个监督源训练的网络能够帮助训练使用另一个监督源训练的网络。
Mithun 等人(https://arxiv.org/pdf/1904.03282.pdf)针对通过文本查询实现的视频瞬间检索问题,设计了一种基于文本引导的注意力机制(TGA)的弱监督学习框架,解决了对于每段文本描述相应的视频时间边界进行标注的开销过高的问题。
随着数据驱动的机器学习研究走进深水区,研究者们越来越关注对数据高效利用的研究。本文首先回顾了若监督学习的相关理论,从不完全监督、不确切监督、不准确监督三个方面回顾了目前弱监督学习领域的研究进展。更具体地,本文根据斯坦福大学提出的 Snorkel 框架,介绍了通过对机器学习系统进行编程引入领域专家知识的方法。最后,被本文回顾了弱监督学习领域的一些最新的研究进展。
文章参考:
http://ai.stanford.edu/blog/weak-supervision/
其他参考文献:
[1]Zhou Z H . A brief introduction to weakly supervised learning[J]. National Science Review, 2018, v.5(01):48-57.
[2]Pan S J , Yang Q . A Survey on Transfer Learning[J]. IEEE Transactions on Knowledge and Data Engineering, 2010, 22(10):1345-1359.