自监督学习与伪标签
公开知识笔记
自监督学习与伪标签(Self-Supervised Learning & Pseudo-Label)
一句话说人话
自监督学习就是「没有老师打分,就从数据本身想办法变出题目和答案,自己监督自己」;伪标签是其中一种具体办法——「把模型自己当前猜得最有把握的答案,当成标准答案反过来教自己」。
生活类比一:没有老师,自己给自己出题
想象你要备考,但没有老师、没有答案册(对应:聚类任务没有人工标注标签)。
有监督学习 = 有老师:每道题都有标准答案,做错老师会纠你。(对应:有标签的分类任务)
自监督学习 = 没老师,但你很聪明,想出一招:自己给自己出题。
- 比如你背单词,可以「遮住英文看中文默写英文」——题目是你自己造的,答案也是你自己知道的(词表就在那)。
- 你做数学题,可以用「上一章学过的公式」去检验「这一章的结果对不对」。
- 你写作文,可以拿「开头和结尾」猜「中间写了什么」。
关键洞察:数据本身藏着可以用来当「监督信号」的信息。基因表达数据里,spot 和 spot 之间的相似关系、空间邻居关系、表达分布规律……这些都不需要人工标注,本身就存在。自监督就是想办法从这些「自带信息」里构造题目和答案。
生活类比二:伪标签 = 学生自己改自己卷子
再看一个更具体的场景:
你是学生,做了一套卷子但没有答案。你灵机一动:先凭感觉自己判一遍,把最有把握的题目圈出来,认定这些题我肯定做对了,然后把这些「自认为肯定对」的题当成标准答案,反过来检查、纠正自己其他没把握的题。
这就是伪标签(pseudo-label)的核心思路:
- 模型先用当前状态对数据做一个预测(相当于「自己先猜一遍」);
- 把预测置信度最高的那批结果挑出来(相当于「圈出最有把握的题」);
- 把这些高置信预测当成「正确答案」(伪标签);
- 用这些伪标签反过来训练自己(相当于「拿自认为对的题反过来纠自己」)。
为什么这招管用?因为一个训练到一定程度的模型,虽然整体还没完全对,但它最自信的那部分预测往往已经比较靠谱了。用「靠谱的部分」去约束「不靠谱的部分」,模型就会一点点变好。这就是「自己拉自己一把」的过程。
三个关键组件(术语翻译)
1. 置信度过滤(Confidence Filtering)
「只信高置信的伪标签」。
类比:学生自己判卷子时,不能把没把握的题也当标准答案,否则等于用错误答案教自己,越教越歪。
论文做法:每个 spot 被 K-means 分到某个簇后,会有一个「离簇中心有多远」的距离 d_i。离中心越远,说明这个 spot 越「骑墙」、越没把握。论文设一个百分位阈值 τp,只保留离中心足够近(高置信)的那部分 spot 的伪标签,其他 spot 这一轮不参与伪标签训练。
2. K-means 聚类打标签
类比:学生判卷子之前,得先「凭感觉把题目分门别类」。K-means 就是那个「凭感觉分类」的动作——它把嵌入 H(见 注意力机制)里的 spot 自动分成 K 堆,每堆贴一个临时标签。
3. EMA 指数移动平均(Exponential Moving Average)
「让伪标签随时间平滑变化,别一夜之间大变脸」。
类比:你在减肥,每天称一次体重。如果哪天多吃一顿、体重突然涨了 1 斤,你不会立刻断定「我胖了」然后疯狂节食——你知道单日波动有噪声,你会看「最近几天的平均趋势」。
EMA 干的就是「看平均趋势」:它把历史伪标签和当前伪标签按比例混合:
平滑后的伪标签 ŷ(t) = γ · ŷ(t-1) + (1-γ) · y(t)
其中 γ 是「历史有多重要」的系数(论文里 γ 从 0.5 逐步升到 0.9,训练越往后越信历史、越稳定)。
好处:K-means 每一轮打的标签可能有噪声(有的 spot 这轮归 A、下轮归 B),直接信单轮结果会让训练目标剧烈抖动。EMA 把这种抖动「抹平」,让伪标签作为「目标」是稳定、渐进变化的——这就是论文说的「progressive(渐进)」约束。
落到这篇论文里:完整的动态伪标签自监督流程
论文把这套组合拳叫「动态伪标签自监督」(dynamic pseudo-label self-supervision),完整流程:
-
Warmup(热身期):训练刚开始时模型还很烂,先不打伪标签,老老实实靠 ZINB与负二项分布 的重建损失等把模型训练到「不至于瞎猜」的水平。(类比:学生得先学一段时间,才有资格自己判卷子。)
-
每 U 个 epoch(每隔几轮)跑一次 K-means:对当前嵌入 H 做聚类,给每个 spot 一个临时簇标签。(类比:每隔一段时间,学生停下来自己判一次卷子。)
-
置信度过滤:只保留离簇中心近(高置信)的 spot 的伪标签,骑墙的 spot 不参与。(类比:只圈最有把握的题。)
-
转成 one-hot 伪标签:把簇标签变成「这个 spot 属于 K 个簇里哪一个」的明确形式。
-
EMA 时序集成:把这一轮的伪标签和历史平滑版本混合,得到稳定的目标。(类比:看平均趋势,别被单日波动带偏。)
-
伪标签损失 Lpse:用平滑后的伪标签作为「标准答案」,让模型朝它靠拢,并把这个损失加进总损失里一起优化。
关键点(论文逻辑):伪标签只在训练过程中当「陪练」,不参与最终输出。最终给用户的聚类标签,是模型训练收敛后重新跑 K-means 得到的干净结果。
为什么论文需要它
-
空间域识别本质上没有标签可用。组织切片只有基因表达和空间坐标,没人提前告诉模型「这片是第 3 层、那片是白质」。没有标签,就需要 自监督学习与伪标签 这种「无中生有」的监督信号。
-
光靠重建(ZINB)不够锐利。ZINB 重建让模型「学会把表达还原出来」,但它不直接告诉模型「哪些 spot 是一伙的」。伪标签直接给模型「聚类边界」的压力,让它把簇分得干净利落。
-
边界是难啃的骨头。论文原文说伪标签自监督能「smooth noise interference and enhance recognition in spatial boundary regions」——即平滑噪声干扰、增强边界区域识别。边界处的 spot 最容易骑墙,置信度过滤 + EMA 恰好就是专门稳住这些「骑墙点」的。
一句话总结:没有人工标签时,模型靠「自己高置信的预测 + 平滑的历史记忆」给自己当老师,逐步把聚类边界磨清楚——这就是自监督 + 伪标签的精髓。
后续联动
| 相关概念 | 它和自监督/伪标签的关系 | 点此跳转 |
|---|---|---|
| 聚类评价指标 | 聚类是「没标签」的任务,评价它要另想办法——两篇互为表里 | 聚类评价指标 |
| 注意力机制 | 融合后的嵌入 H 是伪标签那套流程(K-means → 过滤 → EMA)的输入 | 注意力机制 |
| ZINB与负二项分布 | 伪标签是「无中生有」的监督,ZINB 重建是「还原数据本身」的监督,两者互补 | ZINB与负二项分布 |
| 多视图学习与多视图聚类 | 自监督是多视图聚类里常用的「无监督训练技巧」之一 | 多视图学习与多视图聚类 |
| 空间转录组与空间域 | 空间域识别正是那个「没有标签、只能自监督」的任务场景 | 空间转录组与空间域 |
| 图卷积网络GCN | 被打伪标签的那个嵌入 H,来自多视图 GCN 编码器 | 图卷积网络GCN |
被以下札记引用
2026-W35