欢迎光临
我们一直在努力

[深度学习]一文读懂监督/无监督/自监督

在机器学习中,“有没有标签、标签从哪来、模型靠什么学习”决定了三种最核心范式:监督学习、无监督学习、自监督学习。它们看起来相似,但本质差别在“监督信号的来源与形式”。下面用一个统一视角,一次性讲清楚。

一、监督学习(Supervised Learning):老师直接给答案

监督学习的核心是:数据由“输入 + 人工标注”构成,模型的任务是学习从输入到标签的映射。

也就是说,损失函数直接依赖真实标签。最典型的例子是图像分类与语义分割:给一张猫的图片,标签就是“cat”;给一张室内场景图,每个像素都标注“墙/地板/椅子”。模型不断比较“预测 vs 标注”的误差进行学习。

这种方式的优点是目标明确、收敛稳定、效果通常最好;但缺点同样明显:高度依赖人工标注(成本高、难扩展)。本质上,监督学习是在回答一个问题:
👉 “已知标准答案,我如何把输入映射到这个答案?

直观举例:假想一个小孩

👶 监督学习
你告诉他:

这是猫
这是狗

二、无监督学习(Unsupervised Learning):完全没有答案

无监督学习的设定更“原始”:只有输入,没有任何标签。形式是

x→学习数据分布或结构

没有明确的“对错”,模型只能从数据本身挖掘规律。典型任务是聚类(clustering):把大量图片自动分组,比如猫聚一类、狗聚一类,但模型从未被告知“猫/狗”这些概念。

它常见的方法包括 K-means、PCA、密度建模等。优点是不需要标注、可以利用海量数据;但问题在于:
👉 目标不明确,模型不知道“什么才是重要的结构”
因此学到的往往是统计规律(如分布、方差),但不一定是对任务有用的“语义”。

无监督伪代码示例:

# ========================================
# 1. 初始化
# ========================================

model = Encoder() # 特征提取网络 f(x)
optimizer = Optimizer(model.parameters)

temperature = 0.07 # 温度参数(控制分布平滑)

# ========================================
# 2. 数据增强函数(关键!)
# ========================================

def augment(x):
x = random_crop(x)
x = color_jitter(x)
x = random_flip(x)
return x

# ========================================
# 3. 相似度函数
# ========================================

def similarity(z1, z2):
# 归一化后点积(cosine similarity)
z1 = normalize(z1)
z2 = normalize(z2)
return dot(z1, z2)

# ========================================
# 4. 对比损失(InfoNCE)
# ========================================

def contrastive_loss(z1, z2, batch):
loss = 0

for i in range(len(batch)):
pos = similarity(z1[i], z2[i]) # 正样本(同一图)

neg_sum = 0
for j in range(len(batch)):
if j != i:
neg = similarity(z1[i], z2[j]) # 负样本
neg_sum += exp(neg / temperature)

loss_i = -log( exp(pos / temperature) /
(exp(pos / temperature) + neg_sum) )

loss += loss_i

return loss / len(batch)

# ========================================
# 5. 训练循环
# ========================================

for epoch in range(num_epochs):
for batch in dataloader:

# ——– Step 1:生成两个视角 ——–
x1 = augment(batch)
x2 = augment(batch)

# ——– Step 2:提取特征 ——–
z1 = model(x1) # [B, D]
z2 = model(x2)

# ——– Step 3:计算损失 ——–
loss = contrastive_loss(z1, z2, batch)

# ——– Step 4:反向传播 ——–
optimizer.zero_grad()
loss.backward()
optimizer.step()

print(f"Epoch {epoch}, Loss: {loss}")

直观举例:假想一个小孩

👶 无监督学习

你什么都不说,只给他看很多动物:
猫、狗、马、牛……

他慢慢会发现:

有些长得很像 → 一类
有些完全不同 → 分开

他说:👉 “我觉得它们可以分几类”

(但不一定有意义)

三、自监督学习(Self-Supervised Learning):自己制造“题目”

自监督学习可以看作是无监督的“升级版”,核心思想是:

没有人工标签,但人为设计一个“预测任务”,从数据中自动生成监督信号

形式上变成:

x→构造伪标签 y′→L(f(x),y′)

经典例子包括:

  • NLP 掩码预测:句子 “I love [MASK]”,预测被遮住的词

  • 图像对比学习:同一张图的不同增强视角应该相似

  • 图像重建:遮挡部分图像,让模型恢复

关键在于:
👉 标签不是人给的,而是数据自身结构生成的“伪标签”
这样模型就被“引导”去学习更有意义的特征(比如语义一致性、结构不变性)。相比传统无监督,自监督目标更清晰、效果更强,已经成为当前主流范式。

👶 自监督学习

你不给答案,但给任务:

把被遮住的词补上
判断两张图是不是同一个东西

👉 小孩为了完成任务:
被迫学会语义

四、如何判断无监督/自监督模型正确率或模型效果

很多人都有个问题:

👉 没有标签,那我怎么知道模型学得好不好?

就好像没有正确答案,我怎么知道我做的题目正确与否

先说结论(最重要)

👉 自监督没有“直接的正确率(accuracy)”
👉 只能通过“间接方式”判断好坏

下面介绍三大主流评估办法:

方法1:下游任务评估(最重要🔥)

这是工业界 + 学术界最标准的方法

✔ 思想

如果学到的特征好,那用它做别的任务也会好

✔ 流程

1️⃣ 训练自监督模型:

x → f(x)(学特征)

2️⃣ 冻结模型(不再训练):

f(x) 固定

3️⃣ 训练一个简单分类器:

Linear classifier(线性层)

4️⃣ 用真实标签评估:

👉 如果准确率高:

✔ 说明特征好
✔ 模型“学会了”

✔ 这个方法有名字:

👉 Linear Probing

✅ 方法2:聚类评估(无标签方式)

✔ 思想

看模型是否自动把相似数据聚在一起

✔ 做法

1️⃣ 提取特征:

z = f(x)

2️⃣ 做聚类(K-means)

3️⃣ 评估指标:

  • NMI(Normalized Mutual Information)

  • ARI(Adjusted Rand Index)

👉 如果:

同类数据在同一簇

说明模型学到了结构

⚠️ 注意:

这些指标通常还是需要“隐藏标签”来计算(仅用于评估)

✅ 方法3:可视化(直观但不严格)

✔ 方法

把高维特征降到2D:

z → 2D

✔ 看什么?

如果出现:

一团猫
一团狗
一团车

👉 模型学到了语义结构

⚠️ 缺点:

  • 不定量

  • 只能辅助判断

五、总结:三者的相似性与差异性

从本质上看,这三种方法都在做同一件事:
👉 学习一个函数,让数据在某种空间中更有结构、更有意义

但它们的关键差别在于“监督信号从哪来”:

方法是否有标签标签来源学习目标特点
监督学习 ✅ 有 人工标注 直接预测答案 精准但昂贵
无监督学习 ❌ 无 学数据分布 自由但弱
自监督学习 ❌ 无人工标签 数据自身构造 解伪任务学表征 平衡最优

可以用一句话总结三者关系:

  • 监督学习:老师给答案,你学解题

  • 无监督学习:没有答案,你自己观察世界

  • 自监督学习:没有答案,但有人给你出题,你在解题中理解世界

进一步从能力上看:

  • 无监督学习更偏“发现结构”

  • 自监督学习更偏“学习表示(representation)”

  • 监督学习更偏“完成具体任务”

因此现代深度学习通常采用一个统一范式:
👉 自监督预训练(学特征) + 监督微调(学任务)


🎯 最后一条核心理解

三者的本质区别不在“有没有标签”,而在“监督信号是谁设计的”

  • 人设计标签 → 监督学习

  • 没人设计 → 无监督学习

  • 人设计任务、数据提供答案 → 自监督学习

直观类比来说:

🎓 监督学习
考试:
题目 → 答案
👉 直接看分数

🎓 自监督学习
你没有答案,但你训练了一个人:
理解能力
逻辑能力
表达能力
然后你让他去做:
数学 / 语文 / 物理
👉 看成绩
👉 这就是:
下游任务评估

赞(0)
未经允许不得转载:171主机测评 » [深度学习]一文读懂监督/无监督/自监督
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址