一句话定义:对比学习(Contrastive Learning)是一种让模型通过“比较”来学习表示(representation)的方法:把本该相似的样本拉近,把不相似的样本推远,不需要人工类别标签。
展开讲清原理:传统监督学习需要给每张图打“猫/狗”标签。对比学习不问“这是什么”,而问“这两个像不像”。例如一张狗的图片,做两次随机裁剪、调色,得到两个视图,它们互为正例(positive pair);同一批里其他图片的视图就当作负例(negative pair)。模型的目标是让正例在向量空间里靠近,负例彼此远离。
打个比方:给一群人拍合照,要求每个人记住“我的双胞胎兄弟”和“不是我的人”。没有名字和职业标签,只靠“谁和谁应该像、谁和谁不应该像”的反馈,模型也能学会区分脸型、发型、衣着这些有用特征。这种“自己造标签”的方式属于AI 词典:自监督学习">自监督学习(self-supervised learning)。
技术上说,模型把样本映射成嵌入(embedding)向量,用余弦相似度衡量远近,再用类似 InfoNCE 的损失函数:正例相似度越高越好,负例相似度越低越好。关键在负例数量和质量:负例太少,模型可能学到“所有东西都差不多”的退化解。
和相邻概念的区别:
| 概念 | 训练信号 | 关注点 |
|---|---|---|
| 监督分类 | 人工类别标签 | “这是猫还是狗” |
| 对比学习 | 样本间相似/不相似 | “谁和谁应该靠近” |
| 聚类 | 无标签,事后分组 | 先把表示学好再分组 |
| 生成模型 | 重建像素或文本 | 生成内容,而非只学表示 |
实际意义:搜索、推荐、去重、人脸/商品匹配等场景,往往标签少,但“同一个人/同一件商品”的关系容易获得,对比学习能把这种关系变成训练信号。多模态里,图片和它配的文字可互为正例,其他图文为负例,从而学到跨模态表示(如 CLIP 的思路)。对从业者,先问“正负例怎么构造”,再问“负例够不够难”;对普通人,它解释了为什么平台没让你打标签,也能把相似内容推给你。具体实现与超参以官方文档和论文为准。
