简单的例子理解自监督学习
可以把自监督学习理解成:数据自己提供训练答案,不需要人手工标注。
举一个"小球运动预测"的简单例子。
- 原始数据
摄像头拍到小球连续移动的位置:
视频 A:1 → 2 → 3 → 4
视频 B:5 → 4 → 3 → 2
视频 C:2 → 4 → 6 → 8
这些数据没有"向左运动""向右运动"等人工标签,只有连续观察结果。 - 自动生成训练题目和答案
系统把前三个位置作为输入,把下一个位置作为答案:
输入 x 训练目标 y
1 → 2 → 3 4
5 → 4 → 3 2
2 → 4 → 6 8
这里的答案不是人工标注的,而是直接从原始数据的下一时刻取得的。这就是"自监督"中的"自":监督信号来自数据本身。
- 模型进行预测
假设模型采用一条非常简单的规则:
预测位置 = 当前位置 + w × 上一次移动距离
其中,w 是模型需要学习的参数。
假设一开始:
w = 0.5
对于第一条数据:
上一次移动距离:3 − 2 = 1
模型预测:3 + 0.5 × 1 = 3.5
正确答案:4
模型预测错了,于是计算误差:
误差 = (4 − 3.5)² = 0.25
训练程序根据误差调整 w,使下一次预测更接近 4。
经过许多数据的训练后,模型可能学到:
w ≈ 1
此时:
输入 1 → 2 → 3,预测结果为 4
输入 5 → 4 → 3,预测结果为 2
输入 2 → 4 → 6,预测结果为 8
模型由此学到了一个简单规律:如果小球保持当前速度运动,就可以根据过去的位置预测下一位置。
-
为什么这是自监督学习?
因为我们没有告诉模型:
小球正在匀速运动;
小球的速度是多少;
应该使用哪条运动规律;
视频属于什么类别。
系统只是把"过去的观察"作为输入,把"随后真实发生的观察"自动作为训练目标。
可以概括为:
原始序列 → 隐藏未来部分 → 让模型预测 → 用真实未来检查预测 → 调整模型
-
与普通监督学习的区别
普通监督学习可能需要人工标注:
视频 人工标签
视频 A 向右匀速运动
视频 B 向左匀速运动
而自监督学习不需要这些人工标签。它直接使用:
过去几帧 → 预测下一帧
现实中的模型当然不会只预测一个数字,而是预测下一帧图像或下一帧的抽象表征。通过观看大量视频,模型可能逐渐学会:
物体通常连续运动;
物体被遮挡后仍然存在;
物体不会凭空消失;
物体会受到重力影响;
某些行动会造成特定结果。
这正是论文希望通过自监督学习建立世界模型的基本思路。
目标检测的自监督学习
目标检测可以使用自监督学习,但需要区分两种情况:
- 自监督预训练 + 少量标注微调
这是最常见、最成熟的做法。
首先使用大量没有框标注的图片训练视觉模型。例如,对同一张图片进行裁剪、遮挡或颜色变化,让模型学习:
同一物体在不同视角下仍是同一物体;
图像中不同区域之间的关系;
物体的边缘、形状、纹理和空间结构;
根据可见区域推测被遮挡的区域。
训练过程可以表示为:
无标注图片 → 自监督预训练 → 学到视觉特征 → 使用少量检测标注微调
例如,原本可能需要 10 万张带检测框的图片;经过自监督预训练后,可能只需较少的人工标注数据,就能训练出效果不错的检测器。
DINO、MoCo、MAE 等方法经常被用于这种视觉自监督预训练。 - 不使用人工框的目标发现
更激进的方法希望模型直接从无标注图片或视频中发现物体。
例如,给模型一段小汽车行驶的视频:
同一辆车会连续出现在多帧中;
车辆的位置会变化,但外观相对稳定;
车辆区域的运动方式与背景不同;
对同一帧进行两种裁剪后,车辆仍然是同一对象。
系统可以利用这些规律,自动推测哪些像素或区域属于同一个物体。
一个简化过程是:
输入没有标注的视频。
找出连续帧中一起运动的区域。
把稳定运动的区域当作候选物体。
自动生成候选检测框。
使用这些候选框作为伪标签训练检测器。
检测器产生更好的框,再反过来更新伪标签。
这类任务通常称为:
无监督目标发现;
自监督目标定位;
无监督目标检测;
伪标签自训练。
一个简单例子
假设有下面三张连续视频帧:
第 1 帧:小汽车位于画面左侧;
第 2 帧:小汽车位于画面中央;
第 3 帧:小汽车位于画面右侧。
没有人给汽车画框。
系统通过光流或特征匹配发现:某个区域在三帧中保持相似外观,并连续向右运动,而背景基本不动。
于是系统自动生成:
第 1 帧:候选框 A;
第 2 帧:候选框 B;
第 3 帧:候选框 C。
这些自动产生的框就可以充当训练目标。监督信号来自视频自身的时间连续性,而不是人工标注,因此属于自监督或无监督学习范畴。
主要限制
纯粹依靠自监督学习,模型可以比较容易地发现"这里可能有一个独立物体",但要准确判断它是"汽车""行人"还是"自行车"会困难得多。
因此,现实中通常采用:
自监督学习大量通用视觉知识 + 少量人工标注学习类别和准确边界。
自监督学习主要解决"如何理解视觉结构",少量监督学习则负责把这些结构与人类定义的类别名称和检测框对应起来。