Contrastive Learning
探索机器学习中的对比学习。了解它如何利用自监督数据,为 Ultralytics YOLO26 和计算机视觉构建稳健的 AI 特征。
对比学习是一种机器学习范式,通过比较相似和不相似的样本来教会模型理解数据。与严重依赖人工标注数据集的传统监督学习不同,对比学习通常用于自监督学习场景。其核心思想简单却有效:模型学会在向量空间中拉近相关项目(正样本对)的表示,同时推远无关项目(负样本对)的表示。这一过程让算法能够从大量未标注数据中构建鲁棒且可泛化的特征,这对扩展人工智能 (AI)系统至关重要。
对比学习的机制#
对比学习的核心是通过比较来学习。模型不会只记住某张特定图像是“猫”,而是学会两张不同的猫的照片彼此之间比任意一张猫的照片与狗的照片更相似。这通常通过数据增强实现。输入图像通常称为“锚点”,通过裁剪、翻转或颜色抖动等技术将其转换为两个不同的版本。这两个版本构成一个正样本对。随后,模型经过训练,会缩小它们的嵌入之间的距离,同时扩大它们与批次中其他随机图像(负样本)之间的距离。
这种方法有助于神经网络关注高层语义特征,而不是低层像素细节。例如,无论汽车是红色还是蓝色、朝左还是朝右,“汽车”这一底层概念都保持不变。通过忽略这些表面差异,模型能更深入地理解视觉世界,从而显著提升目标检测和分类等下游任务的效果。
实际应用#
对比学习已成为许多先进 AI 应用的基石,尤其适用于带标签数据稀缺或获取成本高昂的场景。
-
零样本图像分类:CLIP(对比语言—图像预训练)等模型使用对比学习,在共享特征空间中对齐图像和文本。通过使用数百万个图文对进行训练,模型学会将视觉概念与自然语言描述关联起来。这使零样本学习成为可能:模型只需将图像与文本提示词进行匹配,就能将图像分类到训练期间从未见过的类别中。
-
医学影像的稳健预训练:在医疗领域,获取由专家标注的医学扫描图像既昂贵又耗时。研究人员使用对比学习,在大型未标注 X 光片或 MRI 扫描数据库上预训练模型。这种无监督预训练能构建强大的骨干网络,只需少量带标签样本进行微调,就能高精度地检测肺炎或肿瘤等疾病。这项技术利用迁移学习改进医疗 AI诊断工具。
区分相关概念#
要理解对比学习在机器学习 (ML)领域中的独特作用,将其与类似技术区分开来会很有帮助。
- 与自编码器的比较:两者都是无监督方法,但自编码器旨在逐像素重建输入数据,并将其压缩到瓶颈层中。相比之下,对比学习不会尝试重建图像,而是专注于学习能够区分不同概念的判别性表示。
- 与生成对抗网络 (GAN) 的比较:GAN由生成器创建虚假数据,再由判别器尝试检测这些数据。对比学习侧重于表示学习,而非数据生成,因此更适合搜索、检索和分类等任务。
- 与三元组损失的比较:传统三元组损失明确要求一个锚点、一个正样本和一个负样本。现代对比方法(例如 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 可提供简化的部署和监控环境。










