[Day 21] 资料标注 (2/2) — 各种标注方法

子曰:『工欲善其事,必先利其器。

前言

昨天提到依照 Ground truth 改变的速度会让不同任务的标注有各种难易度:
labeling difficulty
而依照不同的难度会有不同的标注方法,接下来就让我们来谈谈各种标注方法吧。

标注方法 (基础版)

Process Feedback (Direct Labeling)

持续创造训练资料集。

最常见的例子为真实 vs. 预测的点击率 (CTR),若使用者真的有点击就标注为 True,反之为 False,其标注流程如下:

  1. Feature 为模型接收到的输入
  2. Label 则由系统的回馈得来
  3. 把前两个接起来就是新的训练资料 (注意前两者会存在时间差,要仔细配对好)
    Process Feedback
    *图片修改自 MLEP — Process Feedback and Human Labeling

其优点为:

  • 可以不断创造新的训练资料
  • 标签可以快速随时间演变
  • 能捕捉强烈的标签信号 (例如有没有点击是一翻两瞪眼,这样的信号就叫强烈)

缺点为:

  • 大部分任务不适合
  • 无法捕捉 Ground Truth
  • 必须针对任务客制化

常用的方法为日志分析 (log analysis),因为大部分资料都来自於监控系统时产生的日志。
其中开源的日志分析工具有:

  • Logstash — 免费的开源资料处理 Pipeline
  • Fluentd — 开源的资料采集器 (data collector)

若使用云端平台则有以下云端日志分析工具:

Human Labeling

由人类手把手教学。

基本上就跟想像的一样,在前面已经讨论很多了,这里再复习一下步骤:
Human Labeling

标注方法 (进阶版)

以上两种方法为比较常见的方法,接下来介绍一些进阶方法,它们的中心思想都是自动化标注流程以减少高昂的人力成本 (以标签的正确性为代价),那就让我们继续吧。

Semi-Supervised Labeling

只手工标注一部分资料,剩下让演算法帮忙。

其做法为将少数由人类标注的资料与大量的未标注资料结合,利用已标注资料在特徵空间中的 cluster 或结构来推论剩余的标签为何。
Semi-Supervised Labeling

假设不同类别的标签在特徵空间中必须 cluster 在一起或具有某些可辨别的结构。

此方法的优点如下:

  • 将已标注与未标注资料结合可以提升模型准确率。
  • 取得未标注资料成本很低,所以可以大幅增加资料量。

用来标注的半监督式演算法称为标签传递 (Label propagation),它会以未标注资料和已标注资料的相似性或群体关系 (community structure) 作为标注的基准。
以 Graph-based label propagation 为例,它会利用相邻的已标注资料来进行标注,而这些标签则会传递到该 cluster 剩余的资料中:
Graph-based label propagation
*图片修改自 MLEP — Semi-supervised Learning

Label propagation 属於 转导推理 (transductive learning),也就是不学习映射函数,直接利用样本自身进行映射。

Active Learning

依据现有资料来智能取样尚未标注的资料 (专注於最重要的部分)。

主动学习 (Active Learning) 指的是可以智能取样资料的演算法,它会找出较能提升模型预测性的样本,因此特别适用於以下情境:

  • 有限的资料预算:例如医疗领域请医生标注成本超高,主动学习可以帮助我们减轻这个负担。
  • 不均匀的资料:主动学习可以将罕见类别挑出来。
  • 标准取样方法无法提升模型在目标 Metrics 的表现:主动学习或许可以找到某些方法来达到目标。

其中心思想为选择最能帮助模型学习的已标注资料,又细分为以下两种策略:

  • 完全监督式:直接使用那些资料作为训练集。
  • 半监督式:利用这些已标注资料来进行标签传播。

Active learning strategies
*图片修改自 MLEP — Active Learning

而主动学习的整体流程为:
Active learning cycle

以下为常见的主动学习技巧:

  • Margin sampling:选取现有模型较没信心的样本进行标注。
    首先会使用已标注的资料训练模型,接着选取最靠近决策边界 (不确定性最高) 的点进行标注,将其加回训练集重新训练 (移动决策边界),如此反覆至模型表现不再提升为止:
    Margin sampling
  • Cluster-based sampling:由明确的 cluster 间取样以 "覆盖" 特徵空间。
  • Query-by-committee:集成数个模型,选取它们意见最分歧的样本。
  • Region-based sampling:将特徵空间分成几个部分,分别执行不同的主动学习演算法。

Weak Supervision

程序化 (Programmatic) 的标注方法,通常藉由 subject matter experts 设计的规则来标注。

弱监督是指使用若干不同来源的资讯产生标签,通常这些来源都是 SME 设计的规则,因此产生的标签是不完美的 (会有 "杂讯" 产生),也就是说不一定 100% 正确。
更精确来说,它会使未标注的资料存在数个 noisy 的条件分布,而其目标就是学习一个生成式模型来衡量这些杂讯来源的权重。
Snorkel 为最受欢迎的 weak supervision 框架,它不需要手动标注,可以程序化地建立与管理训练集,其原理如下:
Data programming pipeline in Snorkel

以上就是今天的内容,我们当然还可以搭配前几天提到的资料增强 (Data Augmentation) 来增加有标签的资料量,藉由提升特徵空间的涵盖率可以改善模型表现,但今天就到此为止啦,明天见罗!!
/images/emoticon/emoticon35.gif

参考资料


<<:  Day 22:1863. Sum of All Subset XOR Totals

>>:  Day23:交给专业的来

DAY 11- 区块操作模式

"什麽叫你只会加密128位元?" --- 花了不少篇幅介绍两中区块加密方式,DE...

{CMoney战斗营} 的期末专题 # 前後端分离

令人崩溃的期末专题进行了两个礼拜,终於在茫然的浑沌中摸索出一些头绪,对规划工作和时辰安排有比较好的掌...

Day10 跟着官方文件学习Laravel-Migration

Migration 是资料库的版本控制,让你和你的团队能够互相去共想资料库的结构,你是否曾经曾告诉你...

DAY21 MongoDB Profiler 如何监控效能差的操作

DAY21 MongoDB Profiler 如何监控效能差的操作 有处理过资料库效能问题的大概都知...

[Day N] - 出书玩真的!出版罗~《IoT没那麽难!新手用 JavaScript 入门做自己的玩具!》

大家好,我是17King~ d(`・∀・)b 跟大家报告一个好消息! 我的书终於出版啦!!! (拍手...