下一代数据标注工具Snorkel:基于弱监督的自动化标注

简介: 我知道你已经用上了最先进的深度学习模型,不过,还在人工标注数据吗?这有点过时了!快来了解下Snorkel —— 最新的基于弱监督学习的大规模训练数据标注神器!要快速掌握机器学习应用的开发,推荐汇智网的机器学习系列教程。

我知道你已经用上了最先进的深度学习模型,不过,还在人工标注数据吗?这有点过时了!快来了解下Snorkel —— 最新的基于弱监督学习的大规模训练数据标注神器!

在这里插入图片描述

要快速掌握机器学习应用的开发,推荐汇智网的机器学习系列教程

现在的机器学习尤其是深度学习模型很强大,但是训练这些模型需要大量的标注数据集!传统的人工标注方式成本非常高,而且很耗时间,在有些情况下根本就是不现实的,例如可能涉及到隐私的问题。当需要领域专家才能够进行数据的标注时,这一问题变得更加糟糕 。而且,随着时间的推移,标注任务有可能也会变化,而这些手工标注的训练数据都是静态的,可能无法应用于变化的任务,造成既往投入的浪费。

斯坦福大学的snorkel系统,就是为了解决数据标注这一机器学习的瓶颈问题而开发的解决方案,它的基本思想就是通过编程来标注海量的数据点。

我们可以使用多种方法来编写标注数据的程序,例如使用假设、类比、规则、知识库等等。这样得到的训练数据集被称为弱监督(Weak Supervision):标注并不精确,并且可能存在多个彼此冲突或重叠的标注信号。

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

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

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

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

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

这一方法的三大优点是:

  1. 可以大规模标注,每个标注函数都可以用于成百上千个数据样本的标注。
  2. 可以利用海量的未标注数据,来构建大量虽然不完美但是足够好的大型训练数据集
  3. 这些标注可以用于训练一个具有大特征集的强大的判别分类器。即使我们只使用
    100个标注函数,每个数据样本依然可以有上千个特征。

因此,通过这种方法得到海量的低质量监督,然后使用统计技术处理有噪标注,我们可以训练出高质量的模型。


原文链接:Snorkel 可编程的数据标注神器 — 汇智网

目录
相关文章
|
24天前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
48 3
|
28天前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
47 4
|
27天前
|
运维 Linux Apache
Puppet这一强大的自动化运维工具,涵盖其基本概念、安装配置及使用示例
【10月更文挑战第8天】本文介绍了Puppet这一强大的自动化运维工具,涵盖其基本概念、安装配置及使用示例。Puppet通过定义资源状态和关系,确保系统配置始终如一,支持高效管理基础设施。文章详细讲解了Puppet的安装步骤、配置方法及DSL语言示例,帮助读者快速掌握Puppet的使用技巧。
54 2
|
1月前
|
监控 虚拟化 云计算
从物理到云:使用自动化工具简化服务器迁移流程
【10月更文挑战第4天】随着云计算的快速发展,越来越多的企业选择将物理服务器迁移到云环境以提高效率和降低成本。本文详细介绍了使用自动化工具简化从物理到云的服务器迁移流程的技术实现细节,并提供了代码示例。
95 6
|
30天前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
|
1天前
|
运维 监控 数据安全/隐私保护
自动化运维工具的设计与实现
【10月更文挑战第34天】在现代IT基础设施管理中,自动化运维工具扮演着至关重要的角色。它们不仅提高了运维效率,还确保了服务的连续性和稳定性。本文将深入探讨如何设计并实现一个自动化运维工具,从需求分析到功能实现,再到最终的测试与部署。我们将通过一个简单的代码示例来展示如何自动执行常见的运维任务,如日志清理和性能监控。文章旨在为读者提供一套完整的方法论,以便他们能够构建自己的自动化运维解决方案。
|
26天前
|
运维 关系型数据库 MySQL
自动化运维工具Ansible的实战应用
【10月更文挑战第9天】在现代IT运维领域,效率和可靠性是衡量一个系统是否健康的重要指标。自动化运维工具Ansible因其简洁、易用的特性,成为了众多企业和开发者的首选。本文将通过实际案例,展示如何利用Ansible进行日常的运维任务,包括配置管理、软件部署以及批量操作等,帮助读者深入理解Ansible的应用场景及其带来的效益。
|
27天前
|
人工智能 运维 监控
自动化运维:从脚本到工具的演变之路
【10月更文挑战第8天】在数字化时代的浪潮中,运维不再是简单的硬件维护,它已经演变成一场关于效率、稳定性和创新的技术革命。本文将带您领略自动化运维的魅力,从最初的脚本编写到现代复杂的自动化工具,我们将一探究竟,看看这些工具如何帮助运维人员简化日常任务,提升工作效率,并最终推动业务发展。
|
1月前
|
机器学习/深度学习 运维 监控
提升运维效率:自动化工具与实践的融合
【10月更文挑战第3天】 在当今信息技术迅猛发展的时代,运维作为保持系统稳定性和性能的关键角色变得越来越重要。本文将探讨如何通过结合自动化工具和最佳实践来优化运维流程,实现高效、可靠的运维管理。从基础监控到高级自动化,我们将一步步引导您了解如何搭建和维护一个高效的运维体系。
33 3
|
1月前
|
运维 Prometheus 监控
运维中的自动化实践每月一次的系统维护曾经是许多企业的噩梦。不仅因为停机时间长,更因为手动操作容易出错。然而,随着自动化工具的引入,这一切正在悄然改变。本文将探讨自动化在IT运维中的重要性及其具体应用。
在当今信息技术飞速发展的时代,企业对系统的稳定性和效率要求越来越高。传统的手动运维方式已经无法满足现代企业的需求。自动化技术的引入不仅提高了运维效率,还显著降低了出错风险。本文通过几个实际案例,展示了自动化在IT运维中的具体应用,包括自动化部署、监控告警和故障排除等方面,旨在为读者提供一些实用的参考。