Contrastive Learning
探索机器学习中的对比学习。了解它如何利用自监督数据,为 Ultralytics YOLO26 和计算机视觉构建稳健的 AI 特征。
对比学习是一种机器学习范式,通过比较相似和不相似的样本来教会模型理解数据。不同于高度依赖人工标注数据集的传统监督学习,对比学习通常用于自监督学习场景。其核心思想简单而强大:模型在向量空间中学习将相关项目的表示(正样本对)拉得更近,同时将不相关项目的表示(负样本对)推得更远。这一过程使算法能够从海量未标注数据中构建稳健且具有良好泛化能力的特征,这对于扩展人工智能 (AI)系统至关重要。
对比学习的机制#
对比学习的核心是通过比较进行学习这一概念。模型不是记住某张特定图像是“猫”,而是学习到猫的两张不同照片彼此之间比它们与狗的照片更相似。这通常通过数据增强来实现。一张输入图像通常被称为“锚点”,会使用裁剪、翻转或颜色抖动等技术转换为两个不同的版本。这两个版本构成一个正样本对。随后,模型经过训练,最小化它们之间的距离,同时最大化它们与批次中其他随机图像(负样本)之间的距离,从而学习其嵌入。
这种方法帮助神经网络关注高层语义特征,而不是低层像素细节。例如,无论汽车是红色还是蓝色、朝向左侧还是右侧,“汽车”这一底层概念都保持不变。通过忽略这些表面差异,模型能够更深入地理解视觉世界,从而显著助益于目标检测和分类等下游任务。
实际应用#
对比学习已成为许多最先进 AI 应用的基石,尤其适用于标注数据稀缺或获取成本高昂的场景。
-
零样本图像分类: CLIP(对比语言-图像预训练)等模型使用对比学习,在共享特征空间中对齐图像和文本。通过在数百万个图像-文本对上进行训练,模型学会将视觉概念与自然语言描述建立关联。这使得零样本学习成为可能:模型只需将图像与文本提示进行匹配,就能把图像分类到训练期间从未见过的类别中。
-
用于医学成像的稳健预训练: 在医疗领域,获取专家标注的医学扫描图像成本高、耗时长。研究人员使用对比学习,在大量未标注的 X 射线或 MRI 扫描数据库上对模型进行预训练。这种无监督预训练能够创建强大的骨干网络,只需使用少量标注样本进行微调,就能高准确率地检测肺炎或肿瘤等疾病。这项技术利用迁移学习来改进医疗保健中的 AI诊断工具。
区分相关概念#
要理解对比学习在机器学习 (ML)领域中的独特作用,区分它与类似技术会很有帮助。
- 与自编码器对比: 尽管两者都是无监督方法,自编码器的目标是逐像素重建输入数据,并将其压缩到瓶颈层中。另一方面,对比学习不尝试重新生成图像,而是专注于学习能够区分不同概念的判别性表示。
- 与生成对抗网络 (GANs) 对比: GANs包含一个生成器和一个判别器,前者创建伪造数据,后者尝试检测这些数据。对比学习关注的是表示学习而非数据生成,因此更适合搜索、检索和分类等任务。
- 与三元组损失对比: 传统三元组损失明确要求一个锚点样本、一个正样本和一个负样本。现代对比方法(如 SimCLR 或 MoCo)则通过在一个批次内同时将锚点与许多负样本进行比较来扩展这一思路,通常使用特定的损失函数,例如 InfoNCE。
使用嵌入的实际示例#
虽然从头开始训练对比模型需要大量资源,但你可以轻松使用预训练模型来提取特征。以下示例演示了如何使用 ultralytics 包加载模型并提取图像的特征向量(嵌入)。该嵌入表示通过类似对比预训练的技术学习到的语义内容。
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Run inference on an image to get the results
# The 'embed' argument can be used in advanced workflows to extract feature layers
results = model("https://ultralytics.com/images/bus.jpg")
# Access the top predicted class probability
# This prediction is based on the learned feature representations
print(f"Top class: {results[0].names[results[0].probs.top1]}")
print(f"Confidence: {results[0].probs.top1conf:.4f}")这种提取丰富且有意义特征的能力,使对比学习成为构建现代计算机视觉 (CV)系统的关键,并支持高效的图像搜索和高级分析。对于管理数据集以及训练受益于这些先进架构的自定义模型,Ultralytics Platform提供了一个用于部署和监控的简化环境。









