Clip多模态

Clip

对比学习(Contrastive Learning):

核心思想:

  1. 对比学习通过比较数据点对(Pairs of Data Points)来学习数据的表示
  2. 正样本对(Positive Pairs):相似或相关的样本(如一张图像和它的增强版本)
  3. 负样本对(Negative Pairs):不相关或随机配对的样本
  4. 目标:拉近正样本对的距离,推开负样本对的距离

对比损失函数 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=logk=1Nexp(sim(zi,zk)/τ)exp(zi,zj)/τ

  1. z i , z j z_i,z_j zi,zj:正样本对的嵌入表示
  2. z k z_k zk:负样本的嵌入表示i
  3. s i m ( z i , z j ) sim(z_i,z_j) sim(zi,zj):相似度函数,通常使用余弦相似度
  4. τ τ τ:温度参数,控制对比的强度
  5. 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:一只猫坐在沙发上

    文本1:一只猫坐在沙发上

  2. 图像2:一只狗在草地上奔跑

    文本2:一只狗在草地上奔跑

  3. 图像3:一辆红色的汽车停在路边

    文本3:一辆红色的汽车停在路边

CLIP的目标是通过对比学习,将图像和文本的表示对齐到同一个嵌入空间(Embedding Space)

  1. 匹配的图像和文本(正样本对)在嵌入空间中靠近
  2. 不匹配的图像和文本(负样本对)在嵌入空间中远离

图像文本编码:

  1. 使用图像编码器(如ResNet或ViT)将每张图像转换为一个向量
    1. 图像1 → 向量 zimg1
    2. 图像2 → 向量 zimg2
    3. 图像3 → 向量 zimg3
  2. 使用文本编码器(如Transformer)将每个文本描述转换为一个向量
    1. 文本1 → 向量 ztxt1
    2. 文本2 → 向量 ztxt2
    3. 文本3 → 向量 ztxt3

计算相似度:

计算图像和文本嵌入之间的相似度(通常使用余弦相似度)eg:

  1. 图像1和文本1的相似度
  2. 图像1和文本2的相似度
  3. 图像1和文本3的相似度

对比学习优化:

  1. 正样本对:图像1和文本1是匹配的,它们的相似度应该尽可能高
  2. 负样本对:图像1和文本2、图像1和文本3是不匹配的,它们的相似度应该尽可能低
  3. 分析上述InfoNCE Loss 损失函数:
    1. 计算图像1与所有文本的相似度:
      1. sim(zimg1,ztxt1):图像1与文本1的相似度(正样本)
      2. sim(zimg1,ztxt2):图像1与文本2的相似度(负样本)
      3. sim(zimg1,ztxt3):图像1与文本3的相似度(负样本)
    2. 正样本,详细度会很高,如0.9;两个负样本会低,如0.2,0.1;
    3. 带入公式,当正样本带入时log…最大,-log…最小,所以正样本的损失函数最小
    4. 通过梯度下降优化编码器的参数,使得损失值最小化
    5. 调整编码器的参数,使得正样本对的相似度更高,负样本对的相似度更低

语义对齐:

  1. 通过拉近正样本对的距离,模型能够学习到图像和文本之间的语义关联(如“猫”和“沙发”)
  2. 通过推开负样本对的距离,模型能够区分不相关的图像和文本(如“猫”和“汽车”)

零样本学习 Zero-Shot Learning

零样本学习:模型可以在没有见过某些类别的情况下,通过类别之间的语义关系(如文本描述)来推断这些类别

  1. 多模态对齐:对比学习(如CLIP)通过将图像和文本映射到同一个嵌入空间,使得图像和文本的语义信息对齐
  2. 语义泛化:模型不仅学习了具体的图像-文本对,还学会了图像和文本之间的语义关系(如“猫”和“猫科动物”的关系)

eg:

  1. 模型通过对比学习,使用大量的图像-文本对进行训练
    1. 图像:一只猫坐在沙发上
    2. 文本:一只猫坐在沙发上
    3. 模型学会将“猫”的图像和“猫”的文本描述对齐到嵌入空间中的相近位置
  2. 给定一个新的类别(如“老虎”),模型没有见过“老虎”的图像,但可以通过文本描述推断
    1. 文本描述:“一种大型猫科动物”
    2. 模型将文本描述映射到嵌入空间,找到与“大型猫科动物”语义相近的图像区域
    3. 模型在训练时已经学会了“猫”和“猫科动物”的语义关系,因此可以推断出“老虎”的图像特征