对比学习是大多数嵌入模型的训练方式——驱动语义搜索、RAG和推荐的模型。它也是CLIP背后的训练方法,连接了语言和视觉。每当你使用嵌入来衡量相似性时,对比学习很可能就是这些嵌入的创建方式。
InfoNCE损失(被CLIP和许多嵌入模型使用):给定一批N个正样本对,将批次中的N−1个不匹配项作为负样本。损失推动正样本对嵌入更接近,负样本对嵌入更远离。关键洞察:你不需要明确标注的负样本——批次中的其他项免费充当负样本,使该方法高度可扩展。
在视觉中,对比学习通过数据增强创建正样本对:同一图像的两个随机裁剪构成正样本对(它们从不同视角展示相同内容)。不同图像构成负样本对。模型学习到增强视图应有相似嵌入,而不同图像应有不同嵌入。这在没有任何标签的情况下学习有用的视觉表示——纯自监督。
并非所有负样本对学习同样有用。"困难负样本"——相似但不匹配的项——提供最多的学习信号。对于关于"Python Web框架"的查询,困难负样本可能是关于"Python数据科学"的文档(相似主题,错误答案),而非关于"烹饪食谱"的文档(明显无关)。挖掘困难负样本是训练高质量嵌入模型的关键技术。