下一代数据标注工具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 可编程的数据标注神器 — 汇智网

目录
相关文章
|
1天前
|
敏捷开发 监控 测试技术
探索自动化测试工具Selenium Grid的高效集成策略
【4月更文挑战第30天】在现代Web应用的快速迭代和持续部署中,测试自动化已成为确保产品质量的关键。Selenium Grid作为一款支持多种浏览器和操作系统的测试工具,提供了并行执行测试用例的能力,极大地提升了测试效率。本文将深入探讨如何高效地将Selenium Grid集成到现有的测试框架中,以及实施过程中的最佳实践,帮助团队最大化测试覆盖率,同时降低资源消耗。
|
2天前
|
中间件 测试技术 API
探索自动化测试工具的新边界:Selenium与Appium的集成实践
【4月更文挑战第30天】 随着移动应用和Web应用的不断融合,传统的自动化测试工具需要适应新的测试环境。本文将详细分析Selenium和Appium这两款流行的自动化测试工具的集成实践,探讨如何构建一个能够同时支持Web和移动端应用的自动化测试框架。通过对比两者的技术架构、功能特性以及在实际项目中的集成过程,我们旨在为读者提供一个清晰的指导,帮助他们在复杂的应用环境中实现高效、稳定的自动化测试流程。
|
2天前
|
弹性计算 运维 Shell
自动化网络扫描工具发现活跃主机
【4月更文挑战第30天】
5 0
|
2天前
|
Web App开发
一键自动化博客发布工具,用过的人都说好(简书篇)
给大家推荐一个一键自动化博客发布工具,完全的一键操作,让你轻松告别手动发布博客的烦恼。
|
2天前
|
机器学习/深度学习 人工智能 机器人
深入理解自动化测试:框架、工具与实践
【4月更文挑战第30天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加速市场交付的关键环节。本文将探讨自动化测试的核心框架、常用工具以及实际应用的最佳实践,旨在为软件测试工程师提供深入的理解和有效的策略,以改进其自动化测试流程。我们将分析几种流行的测试自动化框架,包括Selenium、Appium和JUnit,并讨论如何根据项目需求选择适合的工具。此外,文中还将介绍持续集成(CI)环境下的自动化测试策略,以及如何通过测试结果分析和报告来优化测试过程。目标是帮助读者构建更健壮、更高效的自动化测试系统。
|
3天前
|
IDE 测试技术 持续交付
探索自动化测试工具Selenium的高效应用
【4月更文挑战第29天】 在快速迭代的软件开发过程中,高效的测试策略是确保产品质量的关键。本文将深入探讨如何利用自动化测试工具Selenium来提高软件测试的效率和准确性。通过介绍Selenium的核心功能、脚本编写技巧以及与持续集成环境的集成方法,我们旨在为读者提供一个全面的Selenium应用指南。此外,我们还将讨论常见的问题解决策略,并通过案例分析展示如何有效地运用Selenium进行复杂的Web应用测试。
|
4天前
|
Java 测试技术 数据库连接
软件测试中的自动化工具及其应用
传统的软件测试方法已经不能满足日益增长的软件开发需求,因此自动化测试工具应运而生。本文介绍了几种常用的自动化测试工具,并探讨了它们在软件测试中的应用及优势。
7 0
|
6天前
|
JavaScript 前端开发 测试技术
MechanicalSoup,一个非常实用的 Python 自动化浏览器交互工具库!
MechanicalSoup,一个非常实用的 Python 自动化浏览器交互工具库!
23 9
|
7天前
|
XML 缓存 Java
Gradle 构建自动化工具入门
Gradle 构建自动化工具入门
|
7天前
|
算法 安全 Linux
Ansible自动化工具copy复制用法
Ansible 中的 copy 模块用于将文件或目录从本地计算机或远程主机复制到远程主机上的特定位置。它是一个功能强大的模块,可用于各种文件传输任务. ### 作用 将配置文件复制到远程服务器 将应用程序部署到远程服务器 将日志文件从远程服务器复制到本地计算机 备份和恢复文件和目录
Ansible自动化工具copy复制用法

热门文章

最新文章