Snorkel-数据标注系统

2023-05-16

为什么需要数据标注

在面临机器学习问题时,我们往往会面临两个问题:数据和算法(模型)。随着各种机器学习框架的完善,算法的应用门槛正在逐渐的降低。但数据的获取却仍然是一个费时费力的必需流程。在工作中,我们通常会面临如下问题:

  1. 该任务有大量数据,但都没有可靠标签
  2. 该任务为新增需求,没有任何(或者很少)原始数据,但需要快速上线。这在快速迭代的产品开发中尤为常见,比如在分类系统中的新增类别
  3. 标注数据来源多样(不同的标注team或个人),数据中混杂了噪音
  4. 数据标注成本过高,或者没有标注人力
  5. 模型已经在某一应用场景中训练良好,现在需要迁移到类似场景中,但没有监督数据

针对以上问题,我们通常的做法有:无监督学习可迁移特征,规则系统与模型结合或者单纯的堆叠规则系统,半监督的方法扩充标签数据,增加人工校验和标注等。但这些方法要么操作起来太麻烦(比如无监督的方法,要求数据量要足够大),要么成本太高,或者灵活性太差。有没有更好的方法呢?或者一种统一的编程范式?(转https://zhuanlan.zhihu.com/p/55138499)

通过规则标注样本

很直观的想法我们可以根据多个规则从多个数据源进行生成,但规则往往会带来噪声甚至是错误。

多个规则也可能存在不一致的问题,一种简单的解决方法是直接剔除冲突部分样本,但这种做法实际上抛弃了模型本身需要深度学习的困难部分,一定程度上会影响模型的性能。

另一个曾经尝试的办法是对规则样本进行分层采样,分层的方法是对样本进行关联切分成多个网格,比如有特征a,b,c,那可以切分成a*b,a*c,b*c,a*b*c等,并计算各个网格内样本对照验证集的准确率,按照不同的准确率作为采样权重进行分层采样。但这种办法还是有验证集。

最后我们可以考虑斯坦福大学在 2016 年Snorkel 项目中的Data Programming的方法。

Snorkel & Data Programming

Snorkel 将人工 One By One 的标注方式,通过 Label Function(LF) 进行抽象,并通过 多任务弱监督(Multi-Task Weak Supervision) 方式基于 LFs 训练得到一个生成模型与各 LF 的权重,从而可以对每个命中不同 LFs 的样本给出预测标记与得分。每个规则可以作为一个 Label Function,从论文中对Label Function数量和性能的对比发现,Label Function不宜太少也不宜太多。同时我们也可以使用通Snorkel 的 LFAnalysis 对各个规则之间的关联性和冲突性进行分析,如果某些规则冲突性较大,可以适当进行一些过滤。

LFs 分析之后,可以基于 LabelModel 进行训练,并对全量进行预测,比如二分类场景中我们采取模型基于 0.5 阈值给出的预测标注。最终选取的时候,可以选择模型预测置信度较高的部分,也可以选择规则标注与模型预测标注一致的部分。

总结

Snorkel 的核心思想:

1、估计不同弱标签的准确度or置信度;

2、将标签的准确度or置信度做为样本权重影响分类器的训练。

跟 factor graph or基于矩阵分解的都是类似思路。有人实际在使用的时候效果并不好,一种可能的原因是标签的准确度做为样本权重,可能是本来就好分的样本权重大(样本好分,所以不同弱标签更容易有共识),本来就不好分的样本权重小,这样对模型的性能提升就比较小。新的思路是可以让人工标注极小量标签,然后借鉴迁移学习的方法,让 带噪声标签的训练样本的分布 和 人工标注样本的分布 接近,从而让样本的重要性作为样本权重影响分类器的训练。

转载:https://zhuanlan.zhihu.com/p/55138499

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Snorkel-数据标注系统 的相关文章

  • BFD的原理及配置

    BFD 简述 BFD xff08 Bidirectional Forwarding Detection xff0c 双向转发检测 xff09 是一个通用的 标准化的 介质无关和协议无关的快速故障检测机制 xff0c 用于检测IP网络中链路的
  • ISIS协议基础知识

    前言 介绍 ISIS xff0c 中间系统到中间系统的网络协议 xff0c 最初是OSI组织为了他的CLNP xff08 类似于TCP IP中的IP网络 xff09 而设计的动态路由协议 xff0c 后IETF对其进行修改和填充 xff0c
  • 信息安全管理与评估 21年国赛真题解析答案

    祝各位选手在比赛中荣获佳绩 xff0c 网络系统管理与信息安全交流群可见其他文章 xff0c 欢迎各位的加入 本文仅供参考 xff0c 请勿购买专栏 xff0c 有意合作私聊 DCRS工作任务 DCRS 开启 telnet 登录功能 xff
  • 神州数码 AP上线指南(待优化)

    网络安全 amp 网络系统管理交流群 xff1a 320870333 AP默认地址192 168 1 10 wireless no auto ip assign enable ap authentication none discovery
  • 【IPv6】IPv6 NDP邻居状态详解

    NDP 邻居状态 任意两个通信的主机在通信之前 xff0c 先要建立邻居 xff08 省的去查找arp了 xff09 因为接下来的文字会很乱 xff0c 排版费劲 xff0c 所以用这个来 未完成 Incomplete 可达 Reachab
  • 【IPv6】基本概念及字段

    IPV4知识点 xff1a 字段值 IPv4字段共 字段值解释Version版本版本字段 xff0c 可以区分V4和V6版本 xff0c V4是0100 xff0c V6是0110 xff0c 需要注意的是V4和V6头部除了版本字段位置相同
  • 【IPv6】基本概念及字段

    IPV4知识点 xff1a 字段值 IPv4字段共 字段值解释Version版本版本字段 xff0c 可以区分V4和V6版本 xff0c V4是0100 xff0c V6是0110 xff0c 需要注意的是V4和V6头部除了版本字段位置相同
  • 智能云卸载残留问题

    在今天我将1803版本更新到了1809版本 xff0c 更新之后我就发现输入法多了一个 智能云输入法 看来是之前对于卸载智能云输入法并没有卸载的很全面 彻底删除两部曲 卸载智能云就不需要教了把 一 先将智能云输入法从语言选项中删除 步骤 x
  • Ubuntu 20.04下安装微信

    Ubuntu 20 04下安装wine微信 安装必要的工具及deepin wine依赖 sudo apt install wget g 43 43 git 安装deepin wine git clone https gitee com ws
  • Unable to determine the device handle for GPU 0000:04:00.0: GPU is lost. Reboot the system to recov

    Original url https askubuntu com questions 235760 unity does not appear after installing proprietary nvidia drivers gpu
  • 【Maven】Maven报错:The packaging for this project did not assign a file to the build artifact

    Maven Maven报错 xff1a The packaging for this project did not assign a file to the build artifact 问题描述问题发生问题解决 问题描述 对写好的项目打
  • ubuntu系统安装clamav

    ubuntu系统安装clamav 添加用户 groupadd clamav useradd g clamav s bin false c 34 Clam AntiVirus 34 clamav 安装 sudo apt get install
  • SQLyog无法连接Linux下的MySQL问题

    SQLyog直接连接报错 xff1a 解决步骤 xff1a 一 测试网络 windows cmd上ping linux ip地址查看是否能ping通 二 关闭MySQL防火墙 systemctl stop firewalld xff08 开
  • 正则表达式边界符中的 ^, $, \A, \Z, \z

    转载自 http blog csdn net ggicci article details 8015087 Regex 本文介绍正则表达式中边界符 和 以及 A 和 Z z 的比较和用法 本文的正则表达式在 Java 中测试 本文的一些概念
  • vnc的默认端口更改

    vnc的默认端口是5901 xff0c 这个说法是不对的 vnc并不是只有一个端口 以前另一个文章介绍了nvcserver的配置用户的过程 xff0c 里面提到了桌面号 xff0c 这个桌面号就可以端口有密切关系 先看看这个配置 VNCSE
  • CentOS查看开启端口

    安装nmap yum span class hljs keyword install span nmap span class hljs comment 输入y安装 span 使用nmap span class hljs title nma
  • 使用stm32互补输出PWM波并且控制死区时间,带刹车功能

    使用stm32互补输出PWM波并且控制死区时间 xff0c 带刹车功能 项目背景 xff1a 需要20k带死区时间的互补pwm波连接IGBT驱动器 使用高级定时器1 xff0c CH1 PA8 CH1N PB13 BKIN PB12 如果是

随机推荐

  • tensorflow2安装教程

    本教程还未写完请不要看 参考网站 官网 https tensorflow google cn tutorials keras classification hl 61 zh cn 分析视频 https www bilibili com vi
  • 创建支持es6,vscode可调试的nodejs es6工程

    通常vscode调试es6工程时 xff0c 比如有import语句 xff0c 会有如下错误 xff1a SyntaxError Unexpected token import 网上有很多例子都是不可行的 xff0c 或者是老版本的vsc
  • Docker 镜像使用帮助

    注意 本镜像只提供 Debian Ubuntu Fedora CentOS RHEL 的 docker 软件包 xff0c 非 dockerhub Docker 官方在 2015 年 7 月启用新的仓库 xff0c 软件包名由 lxc do
  • Linux下安装VNC图形化远程桌面工具

    Linux 下安装 xff1a 1 下载 vncserver vncview vnc Linux 版 下载地址 http download csdn net detail jxmykl 7789529 vnc Windows 版 下载地址
  • 对抗攻击Adversarial Attack

    参考链接 xff1a xff08 1 xff09 对抗攻击常见方法汇总 https blog csdn net qq 43367558 article details 121694626 xff08 2 xff09 对抗性样本攻击方法汇总
  • docker 防火墙 设置不生效问题解决

    centos7 想把容器的端口8500禁止掉 方法1 firewall cmd zone 61 public remove port 61 8500 tcp permanent xff08 没有用 xff09 报错Warning NOT E
  • 【组成原理期末复习】06总线系统

    一 基本概念 定义 数字计算机是由若干系统功能部件构成的 xff0c 这些系统功能部件在一起工作才能形成一个完整的计算机系统 计算机的若干功能部件之间不可能采用全互联形式 需要有公共的信息通道 xff0c 即总线 总线是构成计算机系统的互联
  • Build ONIE SDK

    Linux ubuntu 4 15 0 29 generic 31 16 04 1 Ubuntu SMP Wed Jul 18 08 54 04 UTC 2018 x86 64 x86 64 x86 64 GNU Linux sudo ap
  • SUMO/检测器设置(E3)学习总结

    一 E3检测器简介 Multi Entry Exit Detectors xff08 E3 xff09 可以用来检测通过检测区域的平均速度 车辆通过检测区域的平均停车次数 车辆通过区域的平均延误 一段时间内进入检测区域车辆数 一段时间内进入
  • source insight4 行结束符 CRLF转化为LF

    options gt preferences gt files gt default line endings 改成Unix LF显示行结束符 options gt preferences gt syntax formatting gt f
  • linux内核的反向路由检查机制

    今天遇到一个问题 xff0c eth1 eth2 双网卡 xff0c 都配有IP 默认网关在eth1 上 尝试给另一个网卡加上同样的默认网关 插入之后 xff0c 发现ens161 无法访问 ens256 可以访问 删除此条路由 xff0c
  • testpmd csum engine 测试 checksum hw offload

    dpdk版本 xff1a 网卡 xff1a intel E810 测试拓扑如下 xff1a root 64 usr share jmnd sy admin2 0 bin testpmd l 3 5 n 4 a ec 01 1 a ec 09
  • 修改git config

    git config local e 编辑仓库级别配置文件 git config global e 编辑用户级别配置文件 git config system e 编辑系统级别配置文件
  • Linux软件包的安装(rpm+yum)

    概述 xff1a 1 rpm软件包管理命令 软件包的获取 a 光盘镜像中有很多软件包可以使用 xff1a 先挂载光盘 xff0c 再查看软件包 b 从软件的官网获取 rpm 安装rpm包 ipm ivh 软件包名称 删除rpm包 ipm e
  • ubuntu samba配置好 没有权限写入解决

    在ubuntu下创建 samba后发现不能写 xff0c 用下面方法即可解决 xff1a 进入共享目录后 xff1a 执行命令 xff1a chmod R go 43 rwx share
  • outlook 使用git send-email发送邮件smtp的配置

    sendemail smtpencryption 61 tls sendemail smtpserverport 61 587 sendemail smtppass 61 xxxx sendemail smtpserver 61 smtp
  • virtio-user pmd driver 加载命令

    host server client dpdk testpmd l 9 10 n 4 file prefix 61 vhost vdev net vhost0 iface 61 tmp sock0 queues 61 1 i dpdk te
  • testpmd vdev设置队列深度

    dpdk testpmd l 2 3 n 4 file prefix 61 mtr vdev 61 net virtio user0 path 61 dev vhost vdpa 0 queues 61 1 queue size 61 51
  • ovs-vswitchd dbg

    root 64 Standard PC i440FX PIIX 1996 home smoke test gdb fGNU gdb Ubuntu 8 1 1 0ubuntu1 8 1 1 Copyright 2018 Free Softwa
  • Snorkel-数据标注系统

    为什么需要数据标注 在面临机器学习问题时 xff0c 我们往往会面临两个问题 xff1a 数据和算法 xff08 模型 xff09 随着各种机器学习框架的完善 xff0c 算法的应用门槛正在逐渐的降低 但数据的获取却仍然是一个费时费力的必需