数据标注
思维导图
graph TB
id1[有足够数据?]
id11[覆盖以前的]
id2[优化的是标注/数据/模型?]
id21[优化后覆盖]
id3[有足够标注?]
id31[用半监督学习]
id4[预算充足?]
id41[发动人力优势]
id5[使用弱化标注?]
id51[弱监督学习]
id1 -->|Y|id11
id1 -->|N|id2
id2 -->|数据/模型|id21
id2 -->|标注|id3
id3 -->|Y|id31
id3 -->|N|id4
id4 -->|Y|id41
id4 -->|N|id5
id5 -->|Y|id51
半监督学习(Semi-Supervised Learning, SSL)
- 针对于标注少,未标注多的海量数据
- 假设有标注与没有标注的分布:
- 连续性假设:如果一个样本特征与另一个样本特征相似,那么他们有相同的标号
- 聚类假设:数据按类(小丛)分,同一群体有相同的行为,可以按类标号
- 流行假设:数据维度高,内在复杂性并没有这么高,所以可以降低
自学习
- 一个半监督学习的算法
- 假设有一小丛已经标好的数据
- 训练出一个模型
- 预测未标注模型,拿到伪标号,并与已标注合并
- 训练一个新模型,再预测,做循环
- 选择置信度高的标号,降低噪音
- 用相对比较贵/深(并不需要在线上部署)的模型
- 或者做模型融合
flowchart LR
id1[Labeled data]
id2[Models]
id3[Unlabeled data]
id4[Pseudo-labeled data]
id1 -->|1.Train|id2
id3 --> id2
id2 -->|2.Predict|id4
id4 -->|3.Merge|id1
人工标注
众包的考虑因素
用户界面
主动学习
- 与半监督相同,拥有已标注,大量未标注
- 不同的是,人的介入
- 不确定采样(Uncertainly sampling),用人来甄别最不确信的样本
- 把这些难的样本放回训练集,得到的训练结果再筛选出不确定的,做此循环
- 本质就是靠人力标注模型不好分类的样本
主动学习 + 自训练
graph LR
id1[Labeled data] --> |1.Train|id2[Models]
id2 -->|3.Most confident|id3[Pseudo-labeled data]
id3 -->|4.Merge|id1
id4[Unlabeled data] -->|2.Predict|id2
id2 -->|Least confident|id5[Labeled by laborers]
id5 --> id1
质量控制
- 问题
- 人的能力良莠不齐,也会出现失误
- 或者是任务要求比较高
- 方案
- 同一张图片发给多个标注人员,结果少数服从多数,但成本变高
- 或者把模型不确定的样本,先发给某个人与模型预测做对比,吻合则可,不吻合则再发给第二人。
弱监督学习 (Weak Supervision)
- 缺少预算
- 半自动地生成标注
- 数据编程(Data programming)
- 研究人员提出启发式地规则
- 用程序根据据样本特征判断其类别
总结
- 获得标注地方式:
- 自训练——用模型和已有预测未知
- 众包——不置信数据人力为之
- 数据编程——基于对数据的了解,程序筛选
- 备选方案,可采取无监督、自监督算法