弱监督学习-snorkel

1. 什么是弱监督学习

弱监督问题旨在研究通过较弱的监督信号来构建预测模型,即在少量的标注样本上学习建模,达到大量样本上同样的效果

弱监督学习主要分为三类

  • 不确切监督(inexact supervision):标签不确切,粗粒度标签;只到大类,没有到具体的小类。

  • 不准确监督(inaccurate supervision):标签不准确,有噪声;打标人员打标的时候存在结果矛盾的标签

  • 不完全监督(incomplete supervison):标签少,标签不全。其中这种是最常见的情况。

    Snorkel框架能解决的是后面两种

可以视为弱监督源的示例包括:

  • 领域启发式搜索,例如:常见模式、经验法则等
  • 已有的正确标注的数据,虽然不完全适用于当前的任务,但有一定的作用,传统上被称为远程监督
  • 不可靠的非专家标注人,例如:众包标注

2. Snorkel弱监督框架

2.1 snorkel的应用场景

  • 无标签业务,标注资源有限,需要快速冷启动。
    具体针对业务中经常遇到的有大量输入数据,但带标签的数据很少的情况,可应用snorkel的弱监督学习流程快速提供打标数据。

  • 已有规则模型或弱监督模型的业务,但缺乏有效的整合
    业务方已经积累了很多规则模型,但彼此之间缺乏耦合。可将这些规则模型作为弱监督模型用于snorkel中

  • 打标结果存在一定的问题,需消歧处理
    很多标注任务是多人同时标注的,结果数据可能出现彼此矛盾的情况,尤其是在较主观的业务场景(如情感分类,意图分类等),可以使用snorkel进行消歧

2.2 snorkel简介

snorkel基于弱监督学习的方法可以再很大程度上缓解大规模工业数据集生成的问题,利用已有的知识迅速的标注出大规模的数据。我们可以使用多种方法来编写标注数据的程序,例如使用假设、类比、规则、知识库等等。这样得到的训练数据集被称为弱监督(Weak Supervision):标注并不精确,并且可能存在多个彼此冲突或重叠的标注信号。

Snorkel是一个围绕数据编程范式(Data Programming paradigm)而构建的系统,用于快速创建、建模并管理用于机器学习的训练数据集

数据编程范式是一个简单但强大的方法,请领域专家给出各种各样的监督信号作为标注函数,可以使用像Python这样的脚本函数来编写这些标注函数。标准函数中编码了领域相关的推理规则,可以使用正则表达式经验规则等常见的模式进行标注。这样生成的标注是包含噪声的,并且可能彼此冲突。

在Snorkel中,这些标注推断被称为标注函数(Labeling Function),下面是一些常见类型的标注函数:

  • 硬编码的推导:通常使用正则表达式
  • 语义结构:例如,使用spacy得到的依存关系结构
  • 远程监督:例如使用外部的知识库
  • 有噪声人工标注:例如众包标注
  • 外部模型:其他可以给出有用标注信号的模型

在这里插入图片描述

图1. 使用外部模型作为标注函数

当编写好标注函数后,Snorkel将利用这些不同的标注函数之间的冲突训练一个**标注模型**(Label Model)来估算不同标注函数的标注准确度。通过观察标注函数之间的彼此一致性,标注模型能够学习到每个监督源的准确度。

例如,如果一个标注函数的标注结果总是得到其他标注函数的认可,那么这个标注函数将有一个高准确率,而如果一个标注函数总是与其他标注函数的结果不一致,那么这个标注函数将得到一个较低的准确率。通过整合所有的标注函数的投票结果(以其估算准确度作为权重),我们就可以为每个数据样本分配一个包含噪声的标注(0~1之间),而不是一个硬标注(要么0,要么1)。

接下来,当标注一个新的数据点时,每一个标注函数都会对分类进行投票:正、负或弃权。基于这些投票以及标注函数的估算精度,标注模型能够程序化到为上百万的数据点给出概率性标注。最终的目标是训练出一个可以超越标注函数的泛化能力的分类器。

2.3 Snorkel使用

ToDo

参考

[1]. 教你如何以少胜多?-弱监督学习与snorkel系统 这篇文章的参考链接可以看看
[2]. Snorkel DryBell: A Case Study in Deploying Weak Supervision at Industrial Scale (paper地址)
[3]. snorkel started
[4].Snorkel 学习笔记 简介与入门 LF TF SF Labeling Functions Transformation Function Slicing Function 示例 这篇文章参考链接里有snorkel教程,值得一看

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值