# 4.6 自监督学习

> 自监督学习让 AI 学会了“自己给自己出题，自己给自己判卷”，从而不再依赖昂贵的人工标注数据。不仅要通过老师学（监督），在没人管的时候也要自己学（自监督）。

## 4.6.1 从“英语完形填空”说起

想象一下，你正在做英语考试中的“完形填空”题：

> The weather is very hot today, I want to eat an ice \_\_\_\_.

即使我不给你看答案，你也能凭借几十年来积累的常识，猜出这里填 **“cream” (冰淇淋)** 的概率最大，而不是 “hockey” (冰球) 或 “car” (汽车)。

**你是怎么做到的？** 并没有老师在旁边告诉你“这里必须填 cream”，而是你阅读了无数句子后，掌握了单词之间的搭配规律。**这种利用上下文（Context）来预测缺失部分的能力，就是自监督学习的核心。**

## 4.6.2 自监督学习：自己教自己

在 `4.1` 节我们介绍了 **监督学习**（需要老师打标签）和 **无监督学习**（纯粹自己找规律）。而 **自监督学习 (Self-Supervised Learning)** 介于两者之间，它最巧妙的地方在于：**数据本身就是标签**。

它的工作流程通常是这样的（以文本为例）：

1. **掩码（Masking）/ 挖空**：拿来一段完整的文本，随机把其中几个词盖住（Mask）。
   * 原句：`北京是中国的首都`
   * 挖空后：`北京是中国的[MASK]`
2. **预测（Prediction）/ 填空**：让模型去猜被盖住的词是什么。
3. **计算损失（Loss）/ 对答案**：因为原句是完整的，所以我们知道正确答案是 `首都`。
   * 如果模型猜 `城市`，给 50 分。
   * 如果模型猜 `首都`，给 100 分。
   * 如果模型猜 `苹果`，给 0 分，并狠狠地调整参数。

**哪怕没有任何人工标注的数据，只要有海量的互联网文本，模型就可以通过这种“日夜不停地做完形填空”，学到语言的语法、语义和世界知识。**

## 4.6.3 为什么它是 GPT 的秘诀？

在自监督学习出现之前，机器学习面临的最大瓶颈是 **“数据标注太贵了”**。

想训练一个识别猫的模型，你得找人一张张标“这是猫”；想训练个翻译模型，你得找精通双语的人一句句翻译。

但是，互联网上有无穷无尽的 **“原始文本”**（Raw Text）—— 网页、书籍、论坛对话。这些数据是免费的，但没有标签。

**自监督学习把这些“废料”变成了“金矿”。**

* **BERT 模型**：利用“完形填空”（Masked Language Modeling），学会了双向理解语言。
* **GPT 模型**：利用“文字接龙”（Next Token Prediction），即根据上文预测下一个字，学会了生成流畅的文本。

> **小知识**：GPT 的全称是 **G**enerative **P**re-trained **T**ransformer。其中的 **Pre-trained (预训练)** 指的就是在一个超大规模数据集上进行 **自监督学习** 的过程。

## 4.6.4 小结：机器学习进阶版图

到现在，我们终于拼齐了机器学习的完整版图：

| 学习方式      | 类比    | 关键点            | 适用场景                 |
| --------- | ----- | -------------- | -------------------- |
| **监督学习**  | 老师教学生 | 有题有答案 (Label)  | 分类、预测房价、人脸识别         |
| **无监督学习** | 学生自习  | 有书没答案          | 聚类用户、降维分析            |
| **强化学习**  | 婴儿学走路 | 摔倒了会疼 (Reward) | 下围棋、机器人控制、游戏         |
| **自监督学习** | 做完形填空 | 自己挖空自己填        | 大语言模型 (Pre-training) |

自监督学习的出现，标志着 AI 从 **“必须依赖人类经验”** 走向了 **“可以从海量数据中自主汲取知识”** 的新时代。

## 4.6.5 思考题

如果你要训练一个中文客服助手，在“纯监督学习”和“先自监督预训练再微调”之间，你会如何取舍？为什么？


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yeasy.gitbook.io/ai_beginner_guide/di-er-bu-fen-he-xin-ji-shu-jie-xi/04_machine_learning/4.6_self_supervised.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
