← 全部极客知识库

大模型通识 / AI 理论基础

3. 监督学习、无监督学习与自监督学习:训练信号从哪里来

原文备份 · 第 4 / 14 篇 · 查看极客时间原知识库 ↗

本篇目录 · 7 节

来源:AI 理论基础

上一篇的邮件分类器,有人提前告诉它哪些邮件正常、哪些是垃圾邮件。程序比较预测与这些答案,再选择参数。

现在回到我们的个人复习助手。假设你积累了一千篇笔记,想让工具帮忙整理。你可能提出三个不同的要求:

  • 我已经给一部分笔记标好了“前端”“数据库”等类别,希望工具按这个标准分类。
  • 我还没想好分类目录,希望先看看这些笔记里有哪些相近的内容。
  • 我想利用大量没有分类标签的文本,让模型学习语言规律,之后再用于具体任务。

三种要求都涉及数据,但程序据以改进的线索不同。这个线索就是本篇关心的训练信号:学习过程依据什么判断当前做法是否更好,以及应当怎样调整。

读完后,你应该能通过“输入是什么、目标从哪里来、训练在改善什么”区分三类学习,而不只是记住三个名字。下面的笔记、分组和句子都为教学构造,没有运行真实训练;读者无需准备数据集或安装软件。先理解上一篇的特征、标签和参数即可。

监督学习:先有任务答案,再学习怎样预测

先看第一种需求。你确定笔记只能放入“前端”或“数据库”两个目录,并整理了一些样本:

笔记内容摘要 你给出的类别
用 CSS 调整页面布局 前端
排查按钮点击后没有响应的问题 前端
用索引减少数据库查询时间 数据库
用事务保证多次数据库修改一起成功 数据库

训练时,模型接收笔记内容或从中提取的特征,预测类别,再与已有类别比较。它要学的是:怎样从输入得到与目标相符的输出。这就是监督学习,supervised learning。

这里的“监督”,不是要求一个人盯着每一步计算。把成对的输入与目标准备好后,训练程序可以反复计算、比较和调整。上一篇的垃圾邮件分类,就是这种思路。

监督学习也不只用于分类。如果你想根据笔记长度、难度等信息估计阅读需要多少分钟,目标变成了一个数值,这通常属于回归,regression。分类回答“属于哪类”,回归回答“数值是多少”。Google:监督学习中的分类与回归

注意,“已有目标”不等于“全部目标必须人工逐条填写”。阅读时长可以来自合适的行为记录,设备的某个数值可以来自测量。不过,这些记录是否准确、是否对应你真正关心的问题,仍需检查。例如,网页开着二十分钟,不等于用户认真读了二十分钟。

更容易忽略的是,分类标准也来自人。一篇“在网页里显示数据库查询结果”的笔记,究竟归前端还是数据库?如果不同整理者判断不一致,模型接收到的目标也会互相冲突。训练可以帮助复现标准,却不能替你自动决定最适合自己的知识目录。

所以,监督学习适合回答一个已经说清楚的问题:我希望得到某种输出,并且有一些可用于学习的输入—目标示例。

无监督学习:没有类别答案,也可以寻找结构

再看第二种需求。你有很多笔记,但还没有一个满意的分类体系。此时逐篇指定“正确类别”可能太早,你只是希望先发现相近内容。

一种办法是聚类,clustering:依据选定的表示和相似性,把比较接近的样本放到一起。聚类是无监督学习,unsupervised learning的一种常见方法,但无监督学习的范围并不限于聚类。

例如,我们有六篇笔记:

编号 笔记标题
A CSS 布局入门
B 按钮交互排错清单
C JavaScript 事件机制
D 数据库事务入门
E SQL 查询排错清单
F 数据库索引机制

按主题看,一个可能的分组是 A、B、C 在一起,D、E、F 在一起。但按写作形式看,也可以把 A、D 的“入门”文章放一起,把 B、E 的“排错清单”放一起,把 C、F 的“机制”文章放一起。

这不是两个真实算法的实测结果,而是让你看到:同一批材料可以具有多种结构。 输入如何表示、怎样计算相似、允许分成多少组,都会影响找到的结构。仅仅说“自动分组”,还不足以确定你需要什么。

那么,没有正确类别,算法怎么知道分得好不好?它仍然需要一个可计算的目标。

以常见的 K-means 为例,可以先把每篇笔记表示为一组数字,再指定组数 K。算法为每组寻找一个中心,调整样本归属和中心位置,使样本到所属中心的平方距离总和尽量小。这是一个明确的优化目标,并不需要提前知道“这篇应该是前端”。具体的数字表示留到第 05 篇解释。scikit-learn:K-means 的目标与过程

但距离小,并不自动意味着目录对人有用。如果表示方法主要反映文章长度,算法可能把长文分到一起;如果它主要反映词语或语义关联,结果又可能不同。算法算出的“组 0”也不会天然等于“前端”,类别名称和实际用途需要进一步解释。

因此,“无监督”在这里意味着没有逐篇提供目标类别,不意味着没有目标函数、没有设计选择,或没有人来评估结果。如果目的是整理复习资料,就应实际检查:同组笔记是否值得一起复习,混合主题是否需要多标签,分组是否方便查找。

自监督学习:把原始数据变成练习题

第三种需求更加接近大语言模型:手上有大量文本,但没有人为每句话写一道题、配一个答案,能训练吗?

可以。关键是从文本本身构造输入和目标,这叫作自监督学习,self-supervised learning。例如隐藏一部分内容,让模型根据可见部分预测被隐藏的内容。训练信号来自原始数据的结构,无需为每个这样的目标额外做人工标注。Meta AI:自监督学习的信号来源

拿一句非常短的话看整个过程:

原句:我用卡片复习概念
教学切分:[我] [用] [卡片] [复习] [概念]

这里为了便于阅读,手动切成五个单位。真实语言模型处理的单位叫 Token,实际分词未必与汉字或词语一一对应;第二部分会专门解释。现在只需把方括号里的内容看成可以预测的单元。

第一种出题方法,是根据前面的内容预测下一个单元:

模型可用于当前预测的内容 从原句取得的目标
我 用
我 用 卡片
我 用 卡片 复习
我 用 卡片 复习 概念

并没有人额外写四个答案。程序移动切分位置,就从原句中取得了四对输入与目标。训练程序让模型对下一个单元给出预测,再根据原文实际出现的单元衡量预测好坏,调整参数。

这也是语言建模中根据已有序列预测下一个 Token 的基本思路。训练关注的是原文目标获得的概率,而不只是每次挑出的第一名是否答对;概率和损失函数会在第 06 篇展开。《动手学深度学习》:语言模型与训练目标

这里还有一道必须遵守的边界:预测“卡片”的这个位置,不能直接看到待预测的“卡片”和它后面的答案。 实际训练可以在一次计算里处理多个位置,但必须限制每个位置能使用的信息,不能靠偷看目标完成任务。具体机制留到第二部分。

第二种出题方法,是遮住中间的一部分:

模型看到:我 用 [遮住] 复习 概念
训练目标:卡片

这次模型可以利用缺口两侧的内容。BERT 的预训练任务之一就是预测经过遮蔽处理的 Token,通常称为掩码语言建模,masked language modeling。上面的句子只是机制示意,不代表 BERT 的完整遮蔽规则,也不是说所有语言模型都以这种方式训练。BERT 原论文:预训练任务

两种方法的可见信息不同,适合的模型组织方式也不同;它们的共同点是,训练程序从已有文本中拿出了可检查的目标。

已经拿到原文答案,为什么还需要学习

你可能会问:答案本来就在文件里,为什么不直接复制?

因为训练程序和模型当前预测所能看到的信息不同。训练程序持有原句,用它构造题目并检查答案;模型在某个预测位置,只能使用被允许看到的部分。就像出题的人知道填空答案,但答题的人拿到的是遮住内容后的题目。

单看“我用卡片复习”这一题,模型确实可能记住它。训练的目的却是让它在大量不同上下文中形成可复用的规律,在没有见过的文本上也能作出有用预测。至于实际学到了规律还是主要记住材料,需要另外评估,不能由“用了自监督”这个名称保证。

而且,“原文目标”不等于“唯一合理答案”。“我用卡片复习”后面也可以接“英语”。在我们这条训练材料里,目标是“概念”,只是因为作者当时写了这个词。语言模型通过大量实例学习不同续接的可能性,而不是获得一本列尽所有合法句子的标准答案册。

更进一步,原文也可能写错事实。假如某条材料把活动日期记错,自动构造训练目标的程序仍可以把错误日期当作目标。这解释了一个重要边界:能够自动得到训练答案,不等于自动得到经过核实的事实。

自监督学习显著减少了为每一个预测位置手工标注的需求,但没有消除收集、筛选、清洗数据,以及设计任务、投入计算和检验效果的工作。大量文本能变成训练材料,是因为建立了从数据到训练目标的转换过程,而不是因为模型“随便看一遍就什么都懂了”。

这三个名字,并不是三个完全隔离的箱子

阅读资料时,你可能发现一些文章把语言模型预训练叫作“无监督学习”,另一些叫作“自监督学习”。两者未必在描述不同的训练过程。

有的用法把“不依赖额外人工标注”的学习广泛放在无监督范畴里;强调自监督时,则更具体地指出训练目标由数据本身构造。Meta 的解释也讨论了用“自监督”澄清训练信号存在的动机。遇到名称差异,先看作者到底让模型预测什么,再判断其含义。

在本教程里,我们采用下面的区分,方便讨论实际机制:

学习方式 本篇中的训练依据 最容易混淆的地方
监督学习 提供任务输入及其目标,例如笔记和类别 目标不一定全部人工填写
无监督学习,以聚类为例 没有指定类别答案,按设定标准寻找结构 没有类别标签,不等于没有优化目标
自监督学习 从数据自身构造预测目标,例如原句的后续或被遮住部分 有目标,但通常无需逐个额外人工标注

这张表不是给整个机器学习领域画一棵唯一正确的分类树,也没有覆盖所有方法。例如强化学习还会利用行动产生的奖励信号,第 10 篇再展开。

同一个模型也可以经历多种训练。先通过自监督任务学习可复用的文本表示,再用带类别的笔记继续进行监督训练,是可以衔接起来的路线。在已有参数基础上,为具体任务继续训练,通常称为微调,fine-tuning。BERT 论文就讨论了预训练后再针对下游任务微调的方式。这里的“下游任务”,指在已有训练基础上要完成的具体用途,例如文本分类。BERT:微调阶段

因此,不能给一个模型贴上“自监督模型”的标签,就推断它从未接受过监督训练;也不能看到应用现在用于分类,就反推出此前每个训练阶段都是按这个类别表进行的。

对个人项目,先问你究竟缺什么

如果你想做的是复习助手,这些区别能帮助你更准确地提出需求。

当目录已经确定,但分类不稳定时,可以先收集一批明确的输入与期望类别,用于检查现有模型;确有需要时,再考虑是否训练或微调。准备了带标签样本,不代表一定要从零训练,它们也可以首先用于评估。

当目录本身还没有想清楚时,探索分组可能比过早给所有笔记定类别更合适。但要查看分组依据,不能把机器分出的组当成唯一合理的知识结构。

当你只是把笔记交给现成聊天模型,让它输出分类,当前操作通常是推理。即使这些笔记没有标签,也不能因此把这次调用叫作无监督训练;模型是否在更新参数、采用什么训练目标,是另外的事实。

同样,让一个模型给材料自动贴标签,再用这些标签训练分类器,也不能只因“标签不是人写的”就称为自监督。这属于使用模型生成的标签;它与从原始数据自身取得后续内容或隐藏部分的目标,有不同的来源和错误风险。

这些判断最终都回到三个问题:模型实际看到什么,训练目标从哪里来,以及这里是否真的发生了训练。

理解检查:为同一批笔记安排不同任务

请先独立判断以下情形,并说明依据。

  1. 给两百篇笔记标注“前端”或“数据库”,用这些成对数据训练分类器,属于哪种学习?
  2. 不提供类别,把笔记按某种表示的距离分组。既然没有标签,是否可以不设计任何好坏标准?
  3. 取原句“我 用 卡片 复习 概念”,让模型根据“我 用 卡片”预测下一个教学单元。目标是什么,为什么叫自监督?
  4. 把没有标签的笔记发给已经训练好的聊天模型,请它分类,没有更新参数。这次操作是不是无监督训练?
  5. 原句中的事实写错了,自动生成的下一个单元目标会自动纠正它吗?

第 1 题: 监督学习。训练有输入笔记和对应目标类别,程序依据预测与目标之间的差异改进。

第 2 题: 不可以。还需要定义表示、相似性或其他优化依据。即使某个算法提供默认配置,这些选择也仍然存在;得到结果后还要检查它是否适合整理笔记。

第 3 题: 目标是“复习”。它从原句取得,没有为这个预测位置另请人编写答案。预测时不能让该位置直接使用目标本身,否则就破坏了这道题的设置。

第 4 题: 不是。这是在用已有模型进行推理。输入有没有标签,不足以判断发生了哪一种训练,甚至不足以判断是否发生训练。

第 5 题: 不会。这个构造过程取得的是原文中出现的内容,没有另外核实事实。模型最终是否会在其他情境中复现该错误,还受其余数据和训练影响,但这一步本身没有纠错保证。

下一篇会沿着第 5 题继续:既然模型接受的信号来自数据,那么数据的质量、覆盖范围、重复和错误,会怎样影响它能学到什么?


上一篇:02|机器学习:程序怎样从数据中学到规律

下一篇:04|数据怎样决定模型能学到什么

返回:第一部分大纲