首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >监督学习与数据标注技术剖析

监督学习与数据标注技术剖析

原创
作者头像
用户11764306
发布2026-05-21 00:02:03
发布2026-05-21 00:02:03
690
举报

监督学习很好——但问题出在数据收集上

2017年4月2日

13分钟阅读

关于本文

本文基于作者在哥本哈根“AI如何塑造未来工作”活动中的演讲。监督学习是当前大多数AI系统的基础:你提供带标注的输入-输出对,系统学习后能对新数据进行类似计算。许多人期待无监督学习能成为救星——希望算法足够“先进”,无需你指定就能自动计算出任何你想要的输出。这就像期望有一种高级编程语言,甚至不需要你写程序。

监督学习常被视为不便且昂贵:不仅需要大量样例,这些样例还需要标注。这意味着过程中必须有人类为数据打标签,且标签要与系统预测的目标一致。为了获得有意义的结果,样例和标签需要尽可能贴近你的具体应用。

机器如何“学习”

来看一个训练简单词性标注器的例子——该程序能判断句子中每个词是名词、动词、形容词等。函数输入是一个样例序列,每个样例包含上下文和人类标注员提供的正确标签。输出是权重表 W,用于根据上下文预测标签。为简化示例,上下文仅包含三条证据:当前词及其左右邻居。

代码语言:python
复制
def train_tagger(examples):
    n_tags = max(tag for features, tag in examples)
    W = defaultdict(lambda: numpy.zeros(n_tags))
    for (word, prev, next), human_tag in examples:
        scores = W[word] + W[prev] + W[next]
        guess = scores.argmax()
        if guess != human_tag:
            for feat in (word, prev, next):
                W[feat][guess] -= 1
                W[feat][human_tag] += 1
    return W

训练开始时,W 中所有权重为0,系统对任何上下文都认为所有标签概率相等。采用错误驱动方法:迭代每个样例,根据当前权重计算各标签得分,选最高分作为预测。若预测匹配人类标注的标签则跳过;若不匹配,则在该上下文中降低“错误”标签的分数,提高人类标注标签的分数——简单到只是加减一个点数。由此可见,human_tag 是最关键的部分。如果人类数据质量好,模型准确率会快速提升;如果数据糟糕、存在错误和不一致,模型也会变差。

AI 中的人类知识从何而来

知识可从各种免费来源提取(如维基百科消歧数据、Reddit 评论中的表情符号情感预测)。但无论构建什么应用,通常至少需要一些针对你问题的特定数据,这些数据必须由人类标注。最流行的标注数据来源是某机构的众包平台。该平台允许发布“人类智能任务”(HIT),由全球工人完成。工人们平均每小时赚约5美元,对任务毫无投入感,界面停留在21世纪初的调查风格,激励也完全错位——你需要担心被工人欺骗,工人也要担心被你欺骗。讽刺的是,我们所谓改变世界的 AI 知识竟来源于此。

解决方案1:基于用户体验驱动和主动学习的数据收集

当人类与机器交互时,体验决定了交互的成败。完成任务所需时间、点击和精力越多,结果效率越低。即使是界面上最细微的改动也能产生显著影响。与其让标注员面对一段包含实体的文本、要求高亮、从下拉菜单选择标签再确认,不如将整个交互拆解为简单的二元决策。虽然需要问更多问题才能获得相同信息,但每个问题都简单聚焦。你将收集更多用户操作,获得大量可学习的小片段,并在人类与模型之间形成更紧密的反馈循环。不需要按固定队列提问,当人类点击样例时,可以根据模型当前状态优先选择问题。这让计算机负责其擅长的事——记忆和一致性。

每个二元标注的单一信息量低于完整的标注样例,尤其是“被拒绝”的负例可能有多种错误方式。但训练并不需要完美信息,只需要稳定的错误梯度序列。采用主动学习方法时,模型选择一个任务并呈现给人类标注,标注后的单个任务可以立即调整模型的内部权重,并影响下一个任务的选择。一个简单策略是询问模型最不确定的样例。

解决方案2:通用模型的迁移学习

无论构建什么应用,都需要关于语言和世界的基础知识——从基本语法到各种短语、表达和实体。预训练模型让你能用通用信息启动应用,然后进行微调和改进以满足定制需求。通过深度学习,你甚至可以将多个模型串联起来,并基于最终的任务特定错误调整整个流程。通常,可复用的组件是网络中最低、最不抽象的层。例如,一个意图识别模型接收用户输入,返回意图(预测用户可能想要什么)。模型计算一系列内部表示,编码关于语言和世界的可泛化信息。短语含义层(可能使用 CNN 或 RNN 层计算)让模型判断“best way”等表达。实体标签层负责为“catalinas”分配正确标签(是人、地点还是其他)。如果你拥有模型的权重,不仅能修正错误输出,还能纠正导致错误的所有错误假设。迁移学习的优势在于对模型有完全的写入权限——如果只是调用云 API,则只能采用效果差得多的微调方式。

结论

如果使用某服务商仅通过 API 访问模型,你的模型本质上仍是黑盒。你无法轻松地反向传播来纠正模型的内部表示,只能为只读模型添加变通方案或用更多样例重新训练。这挑战了当前薄客户端和集中式云计算的趋势。

监督学习才刚刚变得好用,随着迁移学习和完全可微分模型的普及,它还在不断进步。仅仅因为标注工具和流程糟糕就放弃对模型输出的控制是不合理的。问题确实存在,但问题不在于监督学习这个概念本身。FINISHED

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于本文
  • 机器如何“学习”
  • AI 中的人类知识从何而来
  • 解决方案1:基于用户体验驱动和主动学习的数据收集
  • 解决方案2:通用模型的迁移学习
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档