Clip
对比学习(Contrastive Learning):
核心思想:
- 对比学习通过比较数据点对(Pairs of Data Points)来学习数据的表示
- 正样本对(Positive Pairs):相似或相关的样本(如一张图像和它的增强版本)
- 负样本对(Negative Pairs):不相关或随机配对的样本
- 目标:拉近正样本对的距离,推开负样本对的距离
对比损失函数 contrastive Loss:
最常用的损失函数是InfoNCE Loss(Noise Contrastive Estimation)
L = − l o g e x p ( z i , z j ) / τ ∑ k = 1 N e x p ( s i m ( z i , z k ) / τ ) L = -log\frac{exp(z_i,z_j)/τ}{\sum_{k=1}^{N}exp(sim(z_i,z_k)/τ)} L=−log∑k=1Nexp(sim(zi,zk)/τ)exp(zi,zj)/τ
- z i , z j z_i,z_j zi,zj:正样本对的嵌入表示
- z k z_k zk:负样本的嵌入表示i
- s i m ( z i , z j ) sim(z_i,z_j) sim(zi,zj):相似度函数,通常使用余弦相似度
- τ τ τ:温度参数,控制对比的强度
- s i m ( z i , z j ) = z i , z j ∣ ∣ z i ∣ ∣ ∣ ∣ z j ∣ ∣ sim(z_i,z_j)=\frac{z_i,z_j}{||z_i||||z_j||} sim(zi,zj)=∣∣zi∣∣∣∣zj∣∣zi,zj
eg: 图像与文本对齐
假设有一组图像和对应的文本描述:
-
图像1:一只猫坐在沙发上
文本1:一只猫坐在沙发上
-
图像2:一只狗在草地上奔跑
文本2:一只狗在草地上奔跑
-
图像3:一辆红色的汽车停在路边
文本3:一辆红色的汽车停在路边
CLIP的目标是通过对比学习,将图像和文本的表示对齐到同一个嵌入空间(Embedding Space)
- 匹配的图像和文本(正样本对)在嵌入空间中靠近
- 不匹配的图像和文本(负样本对)在嵌入空间中远离
图像文本编码:
- 使用图像编码器(如ResNet或ViT)将每张图像转换为一个向量
- 图像1 → 向量 zimg1
- 图像2 → 向量 zimg2
- 图像3 → 向量 zimg3
- 使用文本编码器(如Transformer)将每个文本描述转换为一个向量
- 文本1 → 向量 ztxt1
- 文本2 → 向量 ztxt2
- 文本3 → 向量 ztxt3
计算相似度:
计算图像和文本嵌入之间的相似度(通常使用余弦相似度)eg:
- 图像1和文本1的相似度
- 图像1和文本2的相似度
- 图像1和文本3的相似度
对比学习优化:
- 正样本对:图像1和文本1是匹配的,它们的相似度应该尽可能高
- 负样本对:图像1和文本2、图像1和文本3是不匹配的,它们的相似度应该尽可能低
- 分析上述InfoNCE Loss 损失函数:
- 计算图像1与所有文本的相似度:
- sim(zimg1,ztxt1):图像1与文本1的相似度(正样本)
- sim(zimg1,ztxt2):图像1与文本2的相似度(负样本)
- sim(zimg1,ztxt3):图像1与文本3的相似度(负样本)
- 正样本,详细度会很高,如0.9;两个负样本会低,如0.2,0.1;
- 带入公式,当正样本带入时log…最大,-log…最小,所以正样本的损失函数最小
- 通过梯度下降优化编码器的参数,使得损失值最小化
- 调整编码器的参数,使得正样本对的相似度更高,负样本对的相似度更低
- 计算图像1与所有文本的相似度:
语义对齐:
- 通过拉近正样本对的距离,模型能够学习到图像和文本之间的语义关联(如“猫”和“沙发”)
- 通过推开负样本对的距离,模型能够区分不相关的图像和文本(如“猫”和“汽车”)
零样本学习 Zero-Shot Learning
零样本学习:模型可以在没有见过某些类别的情况下,通过类别之间的语义关系(如文本描述)来推断这些类别
- 多模态对齐:对比学习(如CLIP)通过将图像和文本映射到同一个嵌入空间,使得图像和文本的语义信息对齐
- 语义泛化:模型不仅学习了具体的图像-文本对,还学会了图像和文本之间的语义关系(如“猫”和“猫科动物”的关系)
eg:
- 模型通过对比学习,使用大量的图像-文本对进行训练
- 图像:一只猫坐在沙发上
- 文本:一只猫坐在沙发上
- 模型
学会将“猫”的图像和“猫”的文本
描述对齐到嵌入空间中的相近位置
- 给定一个新的类别(如“老虎”),模型没有见过“老虎”的图像,但可以通过文本描述推断
- 文本描述:“一种大型猫科动物”
- 模型将文本描述映射到嵌入空间,找到与“大型猫科动物”语义相近的图像区域
- 模型在训练时已经学会了
“猫”和“猫科动物”的语义关系
,因此可以推断出“老虎”的图像特征