实在智能RPA学院|包小黑如何科学地打标——弱监督系统snorkel在法律场景的应用

一、导言

数据是人工智能的基石,更多的数据、更高的质量往往意味着更好的效果。然而大规模高质量数据的获取并非易事,通常需要花费大量的时间、精力和成本,尤其是在需要领域知识的情况下。数据标注,正日益成为人工智能发展过程中的瓶颈。鉴于此,弱监督方式开始受到人们越来越多的关注,如远程监督、规则/分类器进行启发式标注等。一般基于这种方式得到的数据准确率和覆盖率有限,需要对不同数据源进行合并来提高。对此,由斯坦福大学开发的snorkel系统,为这一场景提供了一整套解决方案,而基于snorkel metal实现的大规模多任务学习,则再次刷新了GLUE基准。本文首先会简单介绍一下snorkel系统的原理,接着将应用snorkel到法律场景的要素识别中,最后将讨论一下后续的工作方向。

 

二、snorkel 介绍

snorkel系统主要用于解决数据标注问题,它不需要用户去手动标注训练数据,而是采用编程的方式快速进行批量标注,在实验测试中相比7小时的纯人工打标,速度提升2.8倍,预测性能提升45.5%。

snorkel系统结构如下,主要包括数据处理(CONTEXT HIERARCHY)、数据标注 (LABELING FUNCTION INTERFACE)、生成模型(GENERATIVE MODEL)三部分:

实在智能RPA学院|包小黑如何科学地打标——弱监督系统snorkel在法律场景的应用

数据处理

数据处理:用于对文本进行结构化处理,方便提取出待标注的候选集。snorkel采用spacy进行文本数据的处理,包括词性标注、实体识别等。

标注函数

标注函数:用于对数据样本进行打标,得到标注矩阵(LABEL MATRIX)。用户可以自实现标注函数,也可以用snorkel提供的接口,包括:正则、远程监督、弱分类器以及标注函数生成器。

实在智能RPA学院|包小黑如何科学地打标——弱监督系统snorkel在法律场景的应用

实在智能RPA学院|包小黑如何科学地打标——弱监督系统snorkel在法律场景的应用

建模时机

建模时机:相比上述建模方法,在拟合不同标注函数的打标结果时进行简单投票也能得到最终的标签,虽然效果可能较差,但速度很快。对此,需要在计算时间和效果上进行折中考虑。理论研究证明,在标注密度(样本平均非0标签的比例)过高或过低时,上述建模方法相比投票方法并不能带来很好的效果提升,只有标注密度处于中等的时候才能带来最大收益。

实在智能RPA学院|包小黑如何科学地打标——弱监督系统snorkel在法律场景的应用

 

三、法律场景的应用

判别模型:snorkel系统最终输出的标签为概率值,相比真实标签,保留了建模时的噪声信息。在获得snorkel打标的标签后,可直接用于后续判别模型的训练。

实在智能RPA学院|包小黑如何科学地打标——弱监督系统snorkel在法律场景的应用

数据准备

针对婚姻家庭相关纠纷(离婚纠纷、婚约财产纠纷等),使用snorkel对1.3万裁判文书未标注数据进行标注作为训练集,5000人工标注数据作为测试集。数据结构为案件描述+要素,模型需要预测案件描述信息中是否包含要素,包含为1,否则为0。

数据处理

snorkel系统的数据处理流程主要是方便后续标注函数的编写。这里我们只简单考虑正则方式,不需要这一过程,因此直接跳过。

标注函数

考虑3组正则作为标注函数,正则1和正则2均由人工根据要素编写,但在性能上存在差别,正则3用同义词对正则1进行扩展得到。

生成模型

利用标注函数对1.3万未标注数据进行标注,得到1.3万*3的标注矩阵,使用snorkel训练生成模型后得到标签预测值。

判别模型

使用1.3万snorkel打标数据训练分类器,在5000测试数据上进行效果测试。

生成模型效果

为了测试生成模型对不同标注函数打标结果的拟合效果,我们直接使用3个标注函数对测试样本进行打标,测试每个标注函数的准确率,再同生成模型输出的标签预测值进行比较。

标注函数以及生成模型在测试样本上的 f1(精确率/召回率)如下

实在智能RPA学院|包小黑如何科学地打标——弱监督系统snorkel在法律场景的应用

可见生成模型会对不同标注结果进行拟合,取得一个折中结果。

snorkel 打标效果

为了测试由snorkel打标数据训练的判别模型的效果,我们使用另外人工标注的1万样本训练分类器作为对比。最终效果对比如下

实在智能RPA学院|包小黑如何科学地打标——弱监督系统snorkel在法律场景的应用

可见基于snorkel打标数据训练出来的模型效果接近人工标注的效果。

思考

直接使用正则1可以得到更好的效果,但需要考虑的是这一结果可能是因为测试样本的分布与正则1更接近。不同的标注函数代表了不同的信息,因此增加标注函数可以提升模型的泛化能力。相较于直接使用正则1,更好的做法是提升其他标注函数的效果。

总结

深度学习对数据的依赖,导致数据标注的重要性不断提升。snorkel通过编程标注的方式,可以方便快速的进行大量的数据标注,并通过训练生成模型对标注结果进行拟合,可以给出较为准确的标注结果。在法律场景的尝试中可以发现,使用snorkel打标数据训练的模型,其效果接近人工标注的效果。但仍存在很多问题,例如如何设计标注函数来得到最好的效果,基于测试结果可以知道,生成模型是拟合出一个折中的结果,标注函数设计的太差会导致结果变差。另外得到标注数据后如何更好地使用也是需要继续研究的方向(参考斯坦福大学后续metal项目)。

Reference:

1. A. Ratner, S. H. Bach, H. Ehrenberg, J. Fries, S. Wu, and C. Re ́. Snorkel: Rapid training data creation with weak supervision. VLDB, 11(3):269–282, 2017

2. https://github.com/HazyResearch/snorkel

3. https://github.com/HazyResearch/metal