CLIP:连接图像与文本的 AI 核心工具

一、技术解读

1.1 研究背景

传统的计算机视觉系统通常需要在固定的、预设的物体类别上进行训练,这种监督形式限制了模型的通用性和灵活性。CLIP(Contrastive Language--Image Pre-training)的创新之处在于,它利用互联网上大量自然存在的图像-文本对作为监督信号,通过预测图像与文本的对应关系来学习视觉表示。这种方法的核心优势在于,自然语言能够表达极其广泛的视觉概念,从而为模型提供了更丰富的监督信息。

CLIP的基本思想是联合训练一个图像编码器和一个文本编码器,使配对的图像和文本在嵌入空间中具有高相似度,而非配对样本的相似度较低

1.2 CLIP方法详解

1.2.1 模型架构

  • 图像编码器 (2种主流架构):
    • 改进型ResNet:基于ResNet-50/101,引入ResNet-D改进、抗锯齿模糊池化,将全局平均池化替换为多头注意力池化(以全局平均池化结果为Query,对特征图加权,捕捉关键区域);
    • Vision Transformer(ViT):基础ViT架构做2处微调(Patch/位置嵌入拼接后加层归一化、优化初始化),计算效率比ResNet高约3倍,更适配大规模训练。

Vision Transformer (ViT):当Transformer遇见图像,CV的范式革命
深度学习:ResNet残差网络 -- 缓解梯度消失

  • 文本编码器 (轻量化Transformer):
    12层、512维度、8个注意力头的Transformer,输入为字节对编码(BPE)序列(词汇量49152),最大序列长度76;文本序列以[SOS]/[EOS]包裹,取Transformer最高层[EOS]位置的输出作为文本特征。

1.2.2 共享嵌入空间

图像/文本编码器输出维度不同(记为 d i d_i di/ d t d_t dt),通过线性投影映射到同一维度 d e d_e de的共享嵌入空间,并做L2归一化(确保余弦相似度等价于点积):

  • 图像特征: I f ∈ R n × d i I_f \in R^{n×d_i} If∈Rn×di 经投影矩阵 W i ∈ R d i × d e W_i \in R^{d_i×d_e} Wi∈Rdi×de 得到 I e = L2-Normalize ( I f ⋅ W i ) I_e = \text{L2-Normalize}(I_f \cdot W_i) Ie=L2-Normalize(If⋅Wi);
  • 文本特征: T f ∈ R n × d t T_f \in R^{n×d_t} Tf∈Rn×dt 经投影矩阵 W t ∈ R d t × d e W_t \in R^{d_t×d_e} Wt∈Rdt×de 得到 T e = L2-Normalize ( T f ⋅ W t ) T_e = \text{L2-Normalize}(T_f \cdot W_t) Te=L2-Normalize(Tf⋅Wt)。

1.2.3 训练目标

CLIP使用对比学习损失函数(基于InfoNCE损失),优化目标是最大化批次中真实配对图像-文本的余弦相似度,同时最小化非配对样本的相似度

  • 核心逻辑:以批次内n个(图像,文本)对构建n×n相似度矩阵,对角线为正样本(匹配对),非对角线为负样本;
  • 损失本质:对"图像→文本""文本→图像"两个方向计算交叉熵损失并取平均,是InfoNCE损失的对称版本,计算效率高,适配大规模预训练。
python 复制代码
# 给定批次大小为N的图像I和文本T
I_f = image_encoder(I)  # 图像特征
T_f = text_encoder(T)    # 文本特征
# 投影到共享空间并归一化
I_e = l2_normalize(dot(I_f, W_i))
T_e = l2_normalize(dot(T_f, W_t))
# 计算相似度矩阵
logits = dot(I_e, T_e.T) * exp(t)
# 对称交叉熵损失
loss = (cross_entropy(logits, labels) + cross_entropy(logits.T, labels)) / 2

1.3 数据集构建

CLIP预训练依赖大规模高质量图像-文本对数据集WIT(WebImageText),其核心构建逻辑如下:

  • 数据规模与来源:含4亿个图像-文本对,均源自互联网公开资源(网页图文、搜索引擎索引对),规模远超同期多模态模型训练数据。
  • 数据筛选与质量控制:针对原始数据噪声,通过三轮筛选提纯:过滤224×224以下低分辨率图像;保留描述性文本,剔除无意义文本;初筛图文匹配度,过滤明显不相关样本。
  • 采样策略:为平衡视觉概念覆盖,基于50万个跨领域查询词实施平衡采样,按长尾程度调整权重(提升低频概念采样占比、降低高频概念占比),保证概念分布均匀以增强泛化性。

1.4 CLIP 与零样本学习

1.4.1 什么是零样本学习?

想象一下,你教孩子认识了"马"、"老虎"和"熊猫",然后给他看一张"斑马"的图片,他从未见过斑马。但你告诉他:"斑马看起来像马,身上有像老虎一样的条纹,颜色像熊猫是黑白的。"他很可能就能认出斑马。

零样本学习(Zero-Shot Learning, ZSL) 正是让机器拥有这种"举一反三"的能力。它的核心目标是:让模型识别在训练阶段从未见过的类别

  • 传统监督学习:模型只能识别训练时见过的类别。训练集有猫、狗、汽车,模型就只会区分这三类。
  • 零样本学习 :模型通过训练(见过猫、狗、汽车),但最终要能识别训练时没见过的"新类别"(例如大象、斑马)。关键在于,这些新类别并非完全未知,而是通过辅助信息(如文本描述、属性)与已见类别建立了关联。

CLIP的突破在于,它将"辅助信息"从传统的人工定义属性(如"有条纹"),升级为更通用、更丰富的自然语言描述(如"一张有条纹的黑色相间的马的照片")。

1.4.2 CLIP如何实现零样本学习

CLIP实现零样本学习的核心在于:将图像分类任务,转化为一个图文匹配任务 。它不需要为下游任务进行任何额外的训练(微调),其流程完全基于预训练好的模型。

以下以预设分类类别为"斑马、猫、汽车" ,待分类图像为一辆红色轿车为例,将该流程简化为三个核心步骤:

  1. 第一阶段:提示与编码
    1. 提示工程 :将类别名称转化为自然描述。
      • "斑马" → "一张斑马的照片"
      • "猫" → "一张猫的照片"
      • "汽车" → "一张汽车的照片"
    2. 双路编码
      • 图像编码 :将红色轿车图片输入图像编码器,得到图像特征 I f I_f If。
      • 文本编码 :将三条文本描述输入文本编码器,得到文本特征 T f , 1 , T f , 2 , T f , 3 T_{f,1}, T_{f,2}, T_{f,3} Tf,1,Tf,2,Tf,3。
  2. 第二阶段:对齐与匹配
    1. 投影到共享空间 :将图像和文本特征映射到同一个预训练好的语义空间,并进行归一化,得到可比较的嵌入向量 I e , T e , 1 , T e , 2 , T e , 3 I_e, T_{e,1}, T_{e,2}, T_{e,3} Ie,Te,1,Te,2,Te,3。
    2. 计算匹配度 :计算图像嵌入与每个文本嵌入的余弦相似度。这衡量了图片与每条文本描述的匹配程度。
      • 与"汽车"描述的相似度 sim 3 \text{sim}_3 sim3 会非常高(例如0.95)。
      • 与"斑马"和"猫"描述的相似度 sim 1 , sim 2 \text{sim}_1, \text{sim}_2 sim1,sim2 会很低(例如0.32和0.15)。
  3. 第三阶段:决策
    1. 转换为概率 :将所有相似度分数通过Softmax函数转换为概率分布。由于 sim 3 \text{sim}_3 sim3 远高于其他,其对应的概率 p 3 p_3 p3 将接近1(例如0.998),而 p 1 p_1 p1 和 p 2 p_2 p2 接近0。
    2. 输出结果:选择概率最高的类别"汽车"作为最终预测。

核心 :CLIP并未直接学习"斑马、猫、汽车"的分类器。它只是将自己的预训练任务------判断图片和文字是否匹配------直接应用于分类列表。模型通过计算发现,红色轿车图片与"一张汽车的照片"这段文字描述最为匹配,因此给出预测:"汽车"。

1.4.3 CLIP为何能实现零样本学习

  1. 预训练实现了跨模态语义对齐

    在海量(4亿对)互联网图文数据上,CLIP通过对比学习 进行预训练。其目标简单而强大:让匹配的(图像,文本)对的特征在语义空间里靠近,不匹配的则推远。这个过程就像一个"多语言翻译器",为视觉和语言建立了一个共享的、对齐的语义空间。在这个空间里,"斑马"的图片和"一张斑马的照片"这句话的向量表示会非常接近。

  2. 自然语言作为动态分类器

    在传统模型中,分类头(一个全连接层)的权重是固定且需要针对特定类别进行训练的。CLIP的革命性在于,它用文本编码器实时生成的文本特征向量,替代了这个固定的分类头。 你可以通过自然语言任意定义新的类别(生成新的文本描述),文本编码器会即时为你生成对应的"分类器权重"。这实现了 "任务描述即模型" 的终极灵活性。

1.5 CLIP应用场景

应用领域 核心功能 典型案例
🖼️ 跨模态检索 用文字搜索图片,或用图片搜索文字/图片。 在海量图库中,用"戴眼镜的猫"快速找到目标图片。
🎨 图像生成引导 为 AI 生图模型提供精准的语义控制,让生成内容更符合文字描述。 作为 Stable Diffusion、DALL·E 等模型的核心组件,理解生成提示(Prompt)。
💬 多模态问答与对话 让 AI 模型能同时理解图片内容和与之相关的文字问题,并进行对话。 Visual ChatGPT、MiniGPT-4 等模型利用 CLIP 作为视觉感知模块。
⚙️ 工业与专业应用 将语义理解能力应用于特定专业领域,解决实际问题。 基于文本描述检索设计图纸(如"给排水管道设计图")。
🔍 智能推荐 根据用户的内容偏好,进行跨模态的个性化内容推荐。 根据用户喜欢的图片或视频,利用 CLIP 查找语义相近的其他内容。

下面代码我们构建了一个跨模态图片检索系统,实现"以文搜图"功能:用户输入自然语言描述(如"puppy"),CLIP模型会自动从网络下载候选图片,计算每张图片的语义嵌入向量与查询文本嵌入向量的余弦相似度,并展示结果。

python 复制代码
from io import BytesIO
import math
import torch

# 强制使用CUDA(确保大模型在GPU运行)
assert torch.cuda.is_available(), "ERROR: CUDA is not available! This script requires GPU to run large CLIP model."
device = "cuda"

import clip
import matplotlib
import matplotlib.pyplot as plt
import requests
from PIL import Image

# 设置Matplotlib为英文显示
matplotlib.rcParams['font.family'] = 'DejaVu Sans'
matplotlib.rcParams['axes.unicode_minus'] = False

# 加载CLIP超大模型(ViT-L/14)
model_name = "ViT-L/14"
print(f"Loading large CLIP model: {model_name} on {device}...")
model, preprocess = clip.load(model_name, device=device)
torch.backends.cudnn.benchmark = True  # 开启CUDA优化


def get_text_embedding(text_list):
    """Get CLIP text embeddings (L2 normalized)"""
    text = clip.tokenize(text_list).to(device)
    with torch.no_grad():
        text_features = model.encode_text(text)
        text_features /= text_features.norm(dim=-1, keepdim=True)
    return text_features


def get_image_embedding(image):
    """Get CLIP image embeddings (L2 normalized)"""
    image = preprocess(image).unsqueeze(0).to(device)
    with torch.no_grad():
        image_features = model.encode_image(image)
        image_features /= image_features.norm(dim=-1, keepdim=True)
    return image_features


def calculate_similarity_for_prompts(prompts, image_urls):
    """Calculate similarity between all images and multiple short English prompts"""
    print(f"Downloading and processing {len(image_urls)} images...")
    valid_images = []
    prompt_embeddings = [get_text_embedding([p]) for p in prompts]
    prompt_similarities = [[] for _ in prompts]

    for url in image_urls:
        try:
            headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
            }
            response = requests.get(url, timeout=15, headers=headers)
            response.raise_for_status()
            image = Image.open(BytesIO(response.content)).convert("RGB")
            valid_images.append((url, image))

            # 计算相似度(GPU加速)
            img_embedding = get_image_embedding(image)
            for idx, prompt_embed in enumerate(prompt_embeddings):
                sim = torch.cosine_similarity(prompt_embed, img_embedding).item()
                prompt_similarities[idx].append(sim)

        except Exception as e:
            print(f"  Skipping image {url}: {str(e)[:50]}...")
            continue

    if not valid_images:
        print("ERROR: No valid images were downloaded!")
        return None, None
    return valid_images, prompt_similarities


def display_and_save_similarity_grid(valid_images, prompt, similarities, save_path):
    """Plot and save similarity grid for short English prompt"""
    num_imgs = len(valid_images)
    cols = math.ceil(math.sqrt(num_imgs))
    rows = math.ceil(num_imgs / cols)

    fig, axes = plt.subplots(rows, cols, figsize=(cols * 4, rows * 4))
    fig.suptitle(f"Similarity: '{prompt}'", fontsize=18, fontweight='bold', y=1.02)

    axes = axes.flatten() if num_imgs > 1 else [axes]

    for idx, ax in enumerate(axes):
        if idx < num_imgs:
            _, img = valid_images[idx]
            sim = similarities[idx]
            ax.imshow(img)
            ax.set_title(f"Image {idx + 1}\nSimilarity: {sim:.3f}", fontsize=12)
        ax.axis('off')

    # 隐藏空的子图
    for idx in range(num_imgs, len(axes)):
        axes[idx].axis('off')

    # 保存高清图片
    plt.tight_layout()
    plt.savefig(save_path, dpi=300, bbox_inches='tight', facecolor='white')
    plt.show()
    print(f"  Similarity plot saved to: {save_path}")


# 主程序(精简版Prompt)
if __name__ == "__main__":
    # 精简后的英文Prompt(仅保留核心语义)
    prompts = [
        "Orange cat",  # 橘猫(简短版)
        "Puppy",  # 小狗(简短版)
        "Natural scenery"  # 风景(简短版)
    ]

    # 图片URL列表
    image_urls = [
        "https://images.unsplash.com/photo-1514888286974-6c03e2ca1dba",
        "https://images.unsplash.com/photo-1595433707802-6b2626ef1c91",
        "https://images.unsplash.com/photo-1561948955-570b270e7c36",
        "https://images.unsplash.com/photo-1552053831-71594a27632d",
        "https://images.unsplash.com/photo-1568572933382-74d440642117",
        "https://images.unsplash.com/photo-1501854140801-50d01698950b",
        "https://images.unsplash.com/photo-1506905925346-21bda4d32df4",
        "https://images.unsplash.com/photo-1449824913935-59a10b8d2000",
        "https://images.unsplash.com/photo-1519501025264-65ba15a82390",
    ]

    print("=" * 80)
    print("CLIP Cross-Modal Retrieval Demo (Large Model + CUDA + Short Prompts)")
    print(f"Model: {model_name} | Device: {device} | Prompts: {', '.join(prompts)}")
    print("=" * 80)

    # 计算相似度
    valid_images, prompt_similarities = calculate_similarity_for_prompts(prompts, image_urls)

    if valid_images:
        # 保存每张Prompt的相似度图(文件名简洁)
        prompt_names = ["orange_cat", "puppy", "natural_scenery"]
        for idx, (prompt, name) in enumerate(zip(prompts, prompt_names)):
            save_path = f"{name}_similarity.jpg"
            display_and_save_similarity_grid(valid_images, prompt, prompt_similarities[idx], save_path)
    else:
        print("Demo failed: No valid images to process!")

二、论文翻译:从自然语言监督中学习可迁移的视觉模型

0 摘要

最先进的计算机视觉系统被训练来预测一组固定的预定目标类别。这种受限的监督形式限制了它们的通用性和可用性,因为需要额外的标注数据来指定任何其他视觉概念。直接从关于图像的原始文本中学习是一种有前途的替代方案,它利用了更广泛的监督来源。我们证明,预测哪个标题与哪个图像相匹配这一简单的预训练任务,是一种从互联网上收集的4亿个(图像,文本)对的数据集中从头开始学习SOTA图像表示的高效且可扩展的方法。预训练后,自然语言被用来引用学习到的视觉概念(或描述新的概念),从而能够将模型零样本迁移到下游任务 。我们通过在30多个不同的现有计算机视觉数据集上进行基准测试来研究这种方法的性能,这些任务包括OCR、视频中的动作识别、地理定位以及许多类型的细粒度对象分类。该模型在大多数任务上都有不俗的迁移表现,并且通常与完全监督的基线模型相竞争,而无需任何数据集特定的训练。例如,我们在ImageNet上零样本匹配了原始ResNet-50的准确率,而无需使用其训练所依赖的128万个训练示例中的任何一个。我们在 https://github.com/OpenAI/CLIP 发布了我们的代码和预训练模型权重。

1 引言与动机工作

直接从原始文本学习的预训练方法在过去几年里彻底改变了自然语言处理领域任务无关的目标,如自回归和掩码语言建模,已经在计算、模型容量和数据规模上跨越了许多数量级,稳步提高了能力。"文本到文本"作为标准化输入输出接口的发展使得任务无关的架构能够零样本迁移到下游数据集,消除了对专门输出头或数据集特定定制的需求。像GPT-3(Brown et al, 2020)这样的旗舰系统现在在许多任务上与定制模型相比都具有竞争力,同时只需要很少甚至不需要数据集特定的训练数据。

这些结果表明,现代预训练方法在网页规模的文本集合中可获得的总体监督超过了高质量众包标记的NLP数据集中的监督。然而,在其他领域,如计算机视觉,仍然标准做法是在众包标记的数据集(如ImageNet(Deng et al, 2009))上预训练模型。直接从网络文本中学习的可扩展预训练方法会导致计算机视觉出现类似的突破吗?先前的工作是令人鼓舞的。

20多年前,Mori等人(1999)探索了通过训练模型预测与图像配对的文本文档中的名词和形容词来改进基于内容的图像检索。Quattoni等人(2007)证明,通过在用于预测与图像相关的标题中的词语的分类器的权重空间中进行流形学习,可以获得数据效率更高的图像表示。Srivastava& Salakhutdinov(2012)通过在多模态深度玻尔兹曼机中基于低级图像和文本标签特征进行深度表示学习进行了探索。Joulin等人(2016)将这一系列工作现代化,并证明训练CNN预测图像标题中的词语可以学习有用的图像表示。他们将YFCC100M数据集(Thomee et al, 2016)中图像的标题、描述和主题标签元数据转换为词袋多标签分类任务,并表明预训练AlexNet(Krizhevsky et al, 2012)来预测这些标签所学习的表示在迁移任务上的表现与基于ImageNet的预训练相似。Li等人(2017)随后将这种方法扩展到预测短语n-gram以及单个单词,并证明了他们的系统零样本迁移到其他图像分类数据集的能力,通过根据其学习到的视觉n-gram字典对目标类别进行评分并预测得分最高的类别。采用更近期的架构和预训练方法,VirTex(Desai& Johnson, 2020)、ICMLM(Bulent Sariyildiz et al, 2020)和ConVIRT(Zhang et al, 2020)最近展示了基于Transformer的语言建模、掩码语言建模和对比目标在从文本学习图像表示方面的潜力。

虽然作为概念验证令人兴奋,但使用自然语言监督进行图像表示学习仍然很少见。这可能是因为在常见基准测试中展示的性能远低于其他方法。例如,Li等人(2017)在零样本设置下在ImageNet上仅达到11.5%的准确率。这远低于当前最先进技术88.4%的准确率(Xie et al, 2020)。它甚至低于经典计算机视觉方法50%的准确率(Deng et al, 2012)。相反,范围更窄但目标明确的弱监督使用提高了性能。Mahajan等人(2018)表明,预测Instagram图像上与ImageNet相关的主题标签是一种有效的预训练任务。当对这些预训练模型进行ImageNet微调时,准确率提高了5%以上,并改善了当时的整体技术水平。Kolesnikov等人(2019)和Dosovitskiy等人(2020)也通过预训练模型来预测带有噪声标签的JFT-300M数据集的类别,在更广泛的迁移基准集上展示了巨大的收益。

这项工作代表了当前在从有限数量的监督"黄金标签"学习和从几乎无限量的原始文本学习之间的实用中间立场。然而,这并非没有妥协。这两项工作都精心设计并因此限制了它们的监督范围,分别只有1000和18291个类别。自然语言能够通过其通用性来表达并因此监督更广泛的视觉概念。这两种方法也都使用静态softmax分类器进行预测,缺乏动态输出机制。这严重削弱了它们的灵活性并限制了它们的"零样本"能力。

这些弱监督模型与最近直接从自然语言学习图像表示的探索之间的一个关键区别是规模。虽然Mahajan等人(2018)和Kolesnikov等人(2019)在数百万到数十亿张图像上训练了它们的模型数年(以加速器年计),但VirTex、ICMLM和ConVIRT在十万到二十万张图像上只训练了数天(以加速器天计)。在这项工作中,我们缩小了这一差距,并研究了大规模使用自然语言监督训练的图像分类器的行为。得益于互联网上大量公开的此类数据,我们创建了一个包含4亿个(图像,文本)对的新数据集,并证明从零开始训练的ConVIRT的简化版本(我们称之为CLIP,即对比性语言-图像预训练)是一种从自然语言监督中学习的有效方法。我们通过训练一系列跨越近2个数量级计算的八个模型来研究CLIP的可扩展性,并观察到迁移性能是计算量的平滑可预测函数(Hestness et al, 2017; Kaplan et al, 2020)。我们发现CLIP,与GPT家族类似,在预训练期间学习执行广泛的任务,包括OCR、地理定位、动作识别和许多其他任务。我们通过在30多个现有数据集上对CLIP的零样本迁移性能进行基准测试来衡量这一点,并发现它可以与先前的特定任务监督模型竞争。

我们还通过线性探测表示学习分析证实了这些发现,并表明CLIP优于最好的公开可用的ImageNet模型,同时计算效率更高。此外,我们发现零样本CLIP模型比同等准确率的监督ImageNet模型稳健得多,这表明任务无关模型的零样本评估更能代表模型的能力。这些结果具有重要的政策和伦理含义,我们将在第7节中讨论。

2 方法

2.1 自然语言监督

我们方法的核心是从自然语言中包含的监督中学习感知的想法。如引言所述,这完全不是一个新想法,然而,用于描述这方面工作的术语是多样的,甚至看似矛盾,并且陈述的动机也各不相同。Zhang等人(2020)、Gomez等人(2017)、Joulin等人(2016)和Desai& Johnson(2020)都介绍了从与图像配对的文本中学习视觉表示的方法,但分别将他们的方法描述为无监督、自监督、弱监督和监督。

我们强调,在这条工作线中共同的不是任何特定方法使用的细节,而是对自然语言作为训练信号的重视。所有这些方法都是从自然语言监督中学习。尽管早期工作在使用主题模型和n-gram表示时与自然语言的复杂性作斗争,但深度上下文表示学习的改进表明我们现在拥有有效利用这种丰富监督来源的工具(McCann et al, 2017)。

与其他训练方法相比,从自然语言学习有几个潜在的优点。与图像分类的标准众包标记相比,扩展自然语言监督要容易得多,因为它不需要注释是经典的"机器学习兼容格式",例如规范的1-of-N多数投票"黄金标签"。相反,处理自然语言的方法可以从互联网上大量文本中包含的监督中被动学习。从自然语言学习还有一个重要优势,即它不仅仅是学习一个表示,还将该表示与语言联系起来,从而实现了灵活的零样本迁移。在以下小节中,我们将详细介绍我们最终确定的特定方法。

2.2 创建足够大的数据集

现有工作主要使用了三个数据集:MS-COCO(Lin et al, 2014)、Visual Genome(Krishna et al, 2017)和YFCC100M(Thomee et al, 2016)。虽然MS-COCO和Visual Genome是高质量的众包标记数据集,但按现代标准来看它们很小,每个大约有10万张训练照片。相比之下,其他计算机视觉系统是在多达35亿张Instagram照片上训练的(Mahajan et al, 2018)。YFCC100M有1亿张照片,是一个可能的替代方案,但每个图像的元数据稀疏且质量参差不齐。许多图像使用自动生成的文件名(如20160716_113957.JPG)作为"标题",或者包含相机曝光设置的"描述"。在过滤只保留带有自然语言标题和/或英文描述的图像后,数据集缩小了6倍,只剩下1500万张照片。这大约与ImageNet的大小相同。

自然语言监督的一个主要动机是互联网上公开可用的大量此类数据。由于现有数据集没有充分反映这种可能性,仅基于它们的结果会低估这条研究线的潜力。为了解决这个问题,我们构建了一个新的包含4亿个(图像,文本)对的数据集,这些数据来自互联网上各种公开可用的来源。为了尝试覆盖尽可能广泛的视觉概念集,我们在构建过程中搜索(图像,文本)对,其文本包含一组50万个查询词之一。我们通过每个查询最多包含20,000个(图像,文本)对来大致平衡结果。最终的数据集的总词数与用于训练GPT-2的WebText数据集相似。我们将此数据集称为WIT(WebImageText)。

2.3 选择高效的预训练方法

最先进的计算机视觉系统使用非常大量的计算。Mahajan等人(2018)需要19个GPU年来训练他们的ResNeXt101-32x48d,Xie等人(2020)需要33个TPUv3核心年来训练他们的Noisy Student EfficientNet-L2。考虑到这两个系统都只训练用于预测1000个ImageNet类别,从自然语言学习开放视觉概念集的任务似乎令人生畏。在我们的努力过程中,我们发现训练效率是成功扩展自然语言监督的关键,我们根据这个指标选择了最终的预训练方法。

我们最初的方法类似于VirTex,联合训练一个图像CNN和文本Transformer从零开始预测图像的标题。然而,我们在有效扩展这种方法时遇到了困难。在图2中,我们显示了一个6300万参数的Transformer语言模型(其计算量已经是其ResNet-50图像编码器的两倍)学习识别ImageNet类别的速度比预测相同文本的词袋编码的简单基线慢三倍。

这两种方法都有一个关键相似点。它们试图预测每个图像伴随文本的确切词语。这是一项困难的任务,因为与图像共同出现的描述、评论和相关文本多种多样。最近图像对比表示学习的研究发现,对比目标可以比其等效的预测目标学习更好的表示(Tian et al, 2019)。其他研究发现,尽管图像的生成模型可以学习高质量的图像表示,但它们需要比具有相同性能的对比模型多一个数量级的计算(Chen et al, 2020a)。注意到这些发现,我们探索了训练一个系统来解决可能更简单的代理任务,即仅预测哪段文本作为一个整体与哪张图像配对,而不是该文本的确切词语。从相同的词袋编码基线开始,我们在图2中将预测目标换成了对比目标,并观察到零样本迁移到ImageNet的效率进一步提高了4倍。

python 复制代码
# 模型组件定义
# image_encoder - ResNet 或 Vision Transformer
# text_encoder - CBOW 或 Text Transformer
# I[n, h, w, c] - 对齐图像的minibatch
# T[n, l] - 对齐文本的minibatch
# W_i[d_i, d_e] - 学习到的图像到嵌入的投影矩阵
# W_t[d_t, d_e] - 学习到的文本到嵌入的投影矩阵
# t - 学习到的温度参数

# 提取每种模态的特征表示
I_f = image_encoder(I)  # 形状: [n, d_i]
T_f = text_encoder(T)    # 形状: [n, d_t]

# 联合多模态嵌入 [n, d_e] (投影后并归一化)
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)

# 缩放后的成对余弦相似度 [n, n]
logits = np.dot(I_e, T_e.T) * np.exp(t)

# 对称损失函数
labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0)  # 图像到文本的损失
loss_t = cross_entropy_loss(logits, labels, axis=1)  # 文本到图像的损失
loss = (loss_i + loss_t) / 2                         # 总损失

给定一批 N N N个(图像,文本)对,CLIP被训练来预测一批中 N × N N\times N N×N个可能的(图像,文本)配对中哪些实际发生了。为此,CLIP通过学习一个多模态嵌入空间,联合训练一个图像编码器和一个文本编码器,以最大化批次中 N N N个真实对的图像和文本嵌入的余弦相似度,同时最小化 N 2 − N N^2-N N2−N个不正确配对的嵌入的余弦相似度。我们基于这些相似度得分优化对称交叉熵损失。在图3中,我们包含了CLIP实现核心的伪代码。据我们所知,这种批处理构建技术和目标首次在深度度量学习领域被提出,称为多类N对损失(Sohn, 2016),随后被Oord等人(2018)作为InfoNCE损失推广用于对比表示学习,最近被Zhang等人(2020)应用于医学成像领域的对比(文本,图像)表示学习。

由于我们的预训练数据集规模很大,过拟合不是主要问题,因此训练CLIP的细节相比于Zhang等人(2020)的实现得到了简化。我们从零开始训练CLIP,没有使用ImageNet权重初始化图像编码器,也没有使用预训练权重初始化文本编码器。我们不使用表示和对比嵌入空间之间的非线性投影(这是由Bachman等人(2019)引入并由Chen等人(2020b)推广的更改)。我们只使用线性投影将每个编码器的表示映射到多模态嵌入空间。我们没有注意到两个版本在训练效率上的差异,并推测非线性投影可能与当前仅图像的自监督表示学习方法的细节共同适应。我们还从Zhang等人(2020)中移除了文本转换函数 t u t_{u} tu,该函数从文本中均匀采样单个句子,因为CLIP预训练数据集中的许多(图像,文本)对只是一个句子。我们还简化了图像转换函数 t v t_{v} tv。从调整大小后的图像中随机进行方形裁剪是训练期间使用的唯一数据增强。最后,控制softmax中logits范围的温度参数 τ \tau τ在训练期间直接作为对数参数化的乘法标量进行优化,以避免作为超参数进行调整。

2.4 选择与缩放模型

我们为图像编码器考虑了两种不同的架构。对于第一种,我们使用ResNet-50(He et al, 2016a)作为图像编码器的基础架构,因为它被广泛采用且性能经过验证。我们使用He等人(2019)的ResNet-D改进和Zhang(2019)的抗锯齿rect-2模糊池化对原始版本进行了一些修改。我们还将全局平均池化层替换为注意力池化机制。注意力池化被实现为单层"Transformer风格"的多头QKV注意力,其中查询以全局平均池化后的图像表示为条件。

对于第二种架构,我们尝试了最近引入的Vision Transformer(ViT)(Dosovitskiy et al, 2020)。我们紧密遵循他们的实现,只做了微小的修改,即在Transformer之前的组合patch和位置嵌入上添加了一个额外的层归一化,并使用了一个稍微不同的初始化方案。

文本编码器是一个Transformer(Vaswani et al, 2017),其架构修改如Radford等人(2019)所述。作为基础尺寸,我们使用一个6300万参数、12层、512宽、8个注意力头的模型。Transformer作用于文本的小写字节对编码(BPE)表示,词汇量为49,152(Sennrich et al, 2015)。为了计算效率,最大序列长度限制为76。文本序列用[SOS][EOS]标记括起来,Transformer最高层在[EOS]标记处的激活被视为文本的特征表示,该表示经过层归一化后线性投影到多模态嵌入空间。在文本编码器中使用了掩码自注意力,以保留使用预训练语言模型初始化或添加语言建模作为辅助目标的能力,尽管对此的探索留作未来工作。

虽然先前的计算机视觉研究通常通过单独增加宽度(Mahajan et al, 2018)或深度(He et al, 2016a)来扩展模型,但对于ResNet图像编码器,我们采用了Tan& Le(2019)的方法,该方法发现将额外的计算分配给宽度、深度和分辨率的所有维度,优于仅将其分配给模型的一个维度。虽然Tan& Le(2019)为他们的EfficientNet架构调整了分配给每个维度的计算比率,但我们使用一个简单的基线,将额外的计算平均分配给增加模型的宽度、深度和分辨率。对于文本编码器,我们只按比例缩放模型的宽度,使其与ResNet计算出的宽度增加成正比,根本不缩放深度,因为我们发现CLIP的性能对文本编码器的容量不太敏感。

2.5 训练

我们训练了一系列5个ResNet和3个Vision Transformer。对于ResNet,我们训练了一个ResNet-50、一个ResNet-101,然后另外3个遵循EfficientNet风格的模型缩放,使用大约ResNet-50的4倍、16倍和64倍计算。它们分别表示为RN50x4、RN50x16和RN50x64。对于Vision Transformer,我们训练了一个ViT-B/32、一个ViT-B/16和一个ViT-L/14。我们训练所有模型32个周期。我们使用Adam优化器(Kingma& Ba, 2014)和应用于所有权重(不包括增益和偏置)的解耦权重衰减正则化(Loshchilov& Hutter, 2017),并使用余弦调度(Loshchilov& Hutter, 2016)衰减学习率。初始超参数是使用网格搜索、随机搜索和在基线ResNet-50模型训练1个周期时的手动调优组合设置的。由于计算限制,超参数随后被启发式地调整用于更大的模型。可学习的温度参数 τ \tau τ初始化为相当于(Wu et al, 2018)中的0.07,并被裁剪以防止将logits缩放超过100倍,我们发现这对于防止训练不稳定是必要的。我们使用非常大的minibatch大小32,768。混合精度(Micikevicius et al, 2017)被用来加速训练和节省内存。为了节省额外的内存,使用了梯度检查点(Griewank& Walther, 2000; Chen et al, 2016)、半精度Adam统计量(Dhariwal et al, 2020)和半精度随机舍入的文本编码器权重。嵌入相似度的计算也被分片,单个GPU仅计算其本地嵌入批处理所需的成对相似度子集。最大的ResNet模型RN50x64在592个V100 GPU上训练了18天,而最大的Vision Transformer在256个V100 GPU上训练了12天。对于ViT-L/14,我们还在更高的336像素分辨率下预训练了一个额外的周期以提高性能,类似于FixRes(Touvron et al, 2019)。我们将此模型表示为ViT-L/14@336px。除非另有说明,本文中报告为"CLIP"的所有结果都使用这个我们发现性能最好的模型。

3 实验

3.1 零样本迁移

3.1.1 动机

在计算机视觉中,零样本学习通常指研究在图像分类中泛化到未见过的对象类别(Lampert et al, 2009)。我们则以更广泛的意义使用该术语,研究泛化到未见过的数据集。我们将其视为执行未见任务的代理,正如 Larochelle et al (2008) 的零数据学习论文中所期望的那样。虽然无监督学习领域的许多研究关注机器学习系统的表示学习能力,但我们主张研究零样本迁移,将其作为衡量机器学习系统任务学习能力的一种方式。在这种观点下,数据集评估的是在特定分布上执行某项任务的性能。然而,许多流行的计算机视觉数据集是由研究社区创建的,主要是作为指导通用图像分类方法开发的基准,而不是衡量特定任务的性能。虽然可以说 SVHN 数据集衡量的是在 Google 街景照片分布上的街道号码转录任务,但尚不清楚 CIFAR-10 数据集衡量的是什么"真实"任务。然而,CIFAR-10 取自哪个分布是清楚的------TinyImages (Torralba et al, 2008)。在这类数据集上,零样本迁移更像是对 CLIP 对分布偏移和领域泛化的稳健性的评估,而不是任务泛化。请参阅第 3.3 节以获取专注于此的分析。

据我们所知,Visual N-Grams (Li et al, 2017) 首次以上述方式研究了对现有图像分类数据集的零样本迁移。这也是我们所知的唯一其他工作,使用通用预训练模型研究了对标准图像分类数据集的零样本迁移,并作为背景化 CLIP 的最佳参考点。他们的方法学习了一个包含 142,806 个视觉 n-gram(涵盖 1 到 5 gram)的字典参数,并使用 Jelinek-Mercer 平滑的微分版本优化这些 n-gram,以最大化给定图像的所有文本 n-gram 的概率。为了执行零样本迁移,他们首先将数据集中每个类别名称的文本转换为其 n-gram 表示,然后根据其模型计算其概率,预测得分最高的那个。

我们专注于研究零样本迁移作为任务学习评估的动机,是受到 NLP 领域证明任务学习的工作的启发。据我们所知,Liu et al (2018) 首次将任务学习识别为一个"意外的副作用",当时一个训练用于生成维基百科文章的语言模型学会了在语言之间可靠地音译名称。虽然 GPT-1 (Radford et al, 2018) 专注于将预训练作为改进监督微调的迁移学习方法,但它也包含了一项消融研究,证明四种启发式零样本迁移方法的性能在预训练过程中稳步提高,无需任何监督适应。该分析为 GPT-2 (Radford et al, 2019) 奠定了基础,后者完全专注于通过零样本迁移研究语言模型的任务学习能力。

3.1.2 使用 CLIP 进行零样本迁移

CLIP 经过预训练,可以预测图像和文本片段是否在其数据集中配对。为了执行零样本分类,我们重用了此功能。对于每个数据集,我们使用数据集中所有类别的名称作为可能的文本配对集合,并根据 CLIP 预测最可能的(图像,文本)对。更详细地说,我们首先通过各自的编码器计算图像的特征嵌入和可能文本集合的特征嵌入。然后计算这些嵌入的余弦相似度,通过温度参数 τ \tau τ 缩放,并通过 softmax 归一化为概率分布。请注意,此预测层是一个多项式逻辑回归分类器,具有 L2 归一化输入、L2 归一化权重、无偏置和温度缩放。这样解释时,图像编码器是计算图像特征表示的计算机视觉骨干,而文本编码器是一个超网络(Ha et al, 2016),它根据指定类别所代表的视觉概念的文本生成线性分类器的权重。Lei Ba et al (2015) 首次引入了这种形式的零样本图像分类器,而从自然语言生成分类器的想法至少可以追溯到 Elhoseiny et al (2013)。继续这种解释,CLIP 预训练的每一步都可以看作是在优化一个随机创建的代理计算机视觉数据集的性能,该数据集每个类别包含 1 个示例,并通过自然语言描述定义了总共 32,768 个类别。对于零样本评估,一旦文本编码器计算出零样本分类器,我们就会缓存它,并为所有后续预测重用。这允许生成它的成本在数据集中的所有预测中分摊。

3.1.3 与 Visual N-Grams 的初步比较

在表 1 中,我们将 Visual N-Grams 与 CLIP 进行了比较。最好的 CLIP 模型将 ImageNet 上的准确率从概念验证的 11.5% 提高到 76.2%,并且与原始 ResNet-50 的性能相当,尽管没有使用该数据集可用的 128 万个众包标记训练示例中的任何一个。此外,CLIP 模型的 top-5 准确率明显高于其 top-1,该模型的 top-5 准确率达到 95%,与 Inception-V4 (Szegedy et al, 2016) 相当。在零样本设置下能够与强大的、完全监督的基线性能相匹配,表明 CLIP 朝着灵活和实用的零样本计算机视觉分类器迈出了重要一步。如上所述,与 Visual N-Grams 的比较是为了背景化 CLIP 的性能,不应解释为 CLIP 和 Visual N-Grams 之间的直接方法比较,因为两个系统之间许多与性能相关的差异并未得到控制。例如,我们在一个大了 10 倍的数据集上训练,使用一个每次预测计算量多近 100 倍的视觉模型,可能使用了超过 1000 倍于他们的训练计算量,并且使用了在 Visual N-Grams 发布时还不存在的基于 Transformer 的模型。作为更接近的比较,我们在 Visual N-Grams 训练的相同 YFCC100M 数据集上训练了一个 CLIP ResNet-50,发现它在 V100 GPU 日内就达到了他们报告的 ImageNet 性能。该基线也是从头开始训练的,而不是像 Visual N-Grams 那样从预训练的 ImageNet 权重初始化。

CLIP 在其他 2 个报告的数据集上也优于 Visual N-Grams。在 aYahoo 上,CLIP 将错误数量减少了 95%,在 SUN 上,CLIP 的准确率是 Visual N-Grams 的两倍多。为了进行更全面的分析和压力测试,我们实施了一个更庞大的评估套件,详情见附录 A。我们总共从 Visual N-Grams 报告的 3 个数据集扩展到包含超过 30 个数据集,并与超过 50 个现有的计算机视觉系统进行比较,以背景化结果。

3.1.4 提示工程与集成

大多数标准图像分类数据集将命名或描述类别的信息(支持基于自然语言的零样本迁移)视为事后想法。绝大多数数据集仅使用标签的数字 ID 来标注图像,并包含一个将这些 ID 映射回英文名称的文件。有些数据集,如 Flowers102 和 GTSRB,在其发布版本中似乎根本没有包含此映射,完全阻止了零样本迁移。对于许多数据集,我们观察到这些标签可能有些随意选择,并且没有预见到与依赖任务描述才能成功迁移的零样本迁移相关的问题。

一个常见的问题是歧义。当类别的名称是提供给 CLIP 文本编码器的唯一信息时,由于缺乏上下文,它无法区分是哪个词义。在某些情况下,同一个词的多个含义可能作为不同的类别包含在同一个数据集中!ImageNet 中就发生了这种情况,它既包含建筑起重机(construction cranes),也包含会飞的鹤(cranes)。另一个例子是在 Oxford-IIIT Pet 数据集的类别中,单词 boxer 从上下文来看显然指的是一个狗的品种,但对于缺乏上下文的文本编码器来说,很可能指的是一种运动员。

我们遇到的另一个问题是,在我们的预训练数据集中,与图像配对的文本仅仅是单个单词的情况相对罕见。通常文本是某种方式描述图像的完整句子。为了帮助弥合这种分布差距,我们发现使用提示模板"一张 {label} 的照片。"是一个很好的默认设置,有助于指定文本是关于图像内容的。这通常比仅使用标签文本的基线性能更好。例如,仅使用此提示可将 ImageNet 的准确率提高 1.3%。

与围绕 GPT-3 (Brown et al, 2020; Gao et al, 2020) 的"提示工程"讨论类似,我们也观察到通过为每个任务定制提示文本可以显著提高零样本性能。接下来是一些非穷尽性的例子。我们发现在几个细粒度图像分类数据集上,指定类别是有帮助的。例如,在 Oxford-IIIT Pets 上,使用"一张 {label} 的照片,一种宠物。"来提供上下文效果很好。同样,在 Food101 上指定一种食物类型,在 FGVC Aircraft 上指定一种飞机类型也有帮助。对于 OCR 数据集,我们发现将要识别的文本或数字用引号括起来可以提高性能。最后,我们发现在卫星图像分类数据集上,指定图像是这种形式是有帮助的,我们使用"一张 {label} 的卫星照片。"的变体。

我们还实验了在多个零样本分类器上进行集成,作为另一种提高性能的方法。这些分类器是通过使用不同的上下文提示来计算的,例如"一张大{label}的照片"和"一张小{label}的照片"。我们在嵌入空间上构建集成,而不是在概率空间上。这允许我们缓存一组平均的文本嵌入,以便在多次预测中分摊时,集成的计算成本与使用单个分类器相同。我们观察到跨多个生成的零样本分类器进行集成能够可靠地提高性能,并将其用于大多数数据集。在 ImageNet 上,我们集成了 80 个不同的上下文提示,这比上面讨论的单个默认提示的性能又提高了 3.5%。综合考虑,提示工程和集成将 ImageNet 的准确率提高了近 5%。在图 4 中,我们可视化了提示工程和集成如何改变一组 CLIP 模型的性能,与直接嵌入类别名称的无上下文基线方法(如 Li et al (2017) 中所做)进行比较。

3.1.5 零样本 CLIP 性能分析

由于任务无关的计算机视觉零样本分类器研究不足,CLIP 提供了一个有希望的机会来更好地理解这类模型。在本节中,我们对 CLIP 零样本分类器的各种特性进行了研究。作为第一个问题,我们简单地看零样本分类器的表现如何。为了背景化这一点,我们与一个简单的现成基线进行比较:在经典 ResNet-50 的特征上拟合一个完全监督的、正则化的逻辑回归分类器。在图 5 中,我们展示了跨 27 个数据集的比较。有关数据集和设置的详细信息,请参见附录 A。

零样本 CLIP 略多于半数情况下优于该基线,在 27 个数据集中的 16 个上获胜。查看单个数据集揭示了一些有趣的行为。在细粒度分类任务上,我们观察到性能差异很大。在其中两个数据集上,Stanford Cars 和 Food101,零样本 CLIP 比 ResNet-50 特征上的逻辑回归性能高出 20% 以上,而在另外两个数据集上,Flowers102 和 FGVCAircraft,零样本 CLIP 的性能低了 10% 以上。在 OxfordPets 和 Birdsnap 上,性能接近得多。我们怀疑这些差异主要是由于 WIT 和 ImageNet 之间每个任务的监督量不同。在"通用"对象分类数据集上,如 ImageNet、CIFAR10/100、STL10 和 PascalVOC2007,性能相对相似,零样本 CLIP 在所有情况下都略有优势。在 STL10 上,CLIP 达到了 99.3% 的总准确率,这似乎是一个新的最先进水平,尽管没有使用任何训练示例。零样本 CLIP 在两个测量视频中动作识别的数据集上显著优于 ResNet-50。在 Kinetics700 上,CLIP 比 ResNet-50 高出 14.5%。零样本 CLIP 在 UCF101 上也比 ResNet-50 的特征高出 7.7%。我们推测这是因为自然语言为涉及动词的视觉概念提供了更广泛的监督,而 ImageNet 中则以名词为中心的对象监督为主。

查看零样本 CLIP 明显表现不佳的地方,我们发现它在几个专门的、复杂的或抽象的任务上相当弱,例如卫星图像分类(EuroSAT 和 RESISC45)、淋巴结肿瘤检测(PatchCamelyon)、合成场景中的对象计数(CLEVRCounts)、与自动驾驶相关的任务,如德国交通标志识别(GTSRB)、识别到最近汽车的距离(KITTI Distance)。这些结果凸显了零样本 CLIP 在更复杂任务上的薄弱能力。相比之下,非专家人类可以稳健地执行其中几个任务,例如计数、卫星图像分类和交通标志识别,这表明有巨大的改进空间。然而,我们提醒,对于学习者没有先前经验的困难任务(例如对于几乎所有人类(可能还有 CLIP)的淋巴结肿瘤分类),衡量零样本迁移(而不是少样本迁移)是否是一种有意义的评估尚不清楚。

虽然将零样本性能与完全监督模型进行比较可以背景化 CLIP 的任务学习能力,但与少样本方法进行比较是更直接的比较,因为零样本是其极限。在图 6 中,我们可视化了零样本 CLIP 与在许多图像模型(包括最好的公开可用 ImageNet 模型、自监督学习方法和 CLIP 本身)特征上进行少样本逻辑回归的比较。虽然直观上期望零样本性能低于单样本,但我们发现零样本 CLIP 与相同特征空间上的 4 样本逻辑回归性能相当。这可能是由于零样本和少样本方法之间的一个重要区别。首先,CLIP 的零样本分类器是通过自然语言生成的,它允许直接指定("传达")视觉概念。相比之下,"正常"的监督学习必须从训练示例中间接推断概念。缺乏上下文的基于示例的学习有一个缺点,即许多不同的假设可能与数据一致,尤其是在单样本情况下。单个图像通常包含许多不同的视觉概念。尽管一个有能力的学习者能够利用视觉线索和启发式方法,例如假设所演示的概念是图像中的主要对象,但这并不能保证。

解决零样本和少样本性能之间差异的一个潜在方法是使用 CLIP 的零样本分类器作为少样本分类器权重的先验。虽然向生成的权重添加 L2 惩罚是实现此想法的直接方法,但我们发现超参数优化通常会选择如此大的正则化器值,以至于得到的少样本分类器"就是"零样本分类器。研究更好的方法将零样本迁移的优势与少样本学习的灵活性结合起来是未来工作的一个有希望的方向。

当将零样本 CLIP 与在其他模型特征上进行的少样本逻辑回归进行比较时,零样本 CLIP 大致匹配我们评估套件中性能最好的 16 样本分类器的性能,后者使用了在 ImageNet-21K 上训练的 BiT-M ResNet-152x2 的特征。我们确信在 JFT-300M 上训练的 BiT-L 模型表现会更好,但这些模型尚未公开发布。BiT-M ResNet-152x2 在 16 样本设置中表现最佳有些令人惊讶,因为如第 3.2 节分析,Noisy Student EfficientNet-L2 在完全监督设置下在 27 个数据集上的平均性能比它高出近 5%。

除了研究零样本 CLIP 和少样本逻辑回归的平均性能外,我们还检查了在单个数据集上的性能。在图 7 中,我们展示了在相同特征空间上,逻辑回归分类器需要每个类别多少标记示例才能匹配零样本 CLIP 的性能的估计值。由于零样本 CLIP 也是一个线性分类器,这估计了在此设置下零样本迁移的有效数据效率。为了避免训练数千个线性分类器,我们基于 1、2、4、8、16 样本(可能时)和完全监督线性分类器在每个数据集上性能的对数线性插值来估计有效数据效率。我们发现零样本迁移在每个数据集上的效率差异很大,从每个类别少于 1 个标记示例到 184 个。有两个数据集,Flowers102 和 EuroSAT,性能低于单样本模型。一半的数据集每个类别需要少于 5 个示例,中位数为 5.4。然而,平均估计数据效率为每个类别 20.8 个示例。这是因为有 20% 的数据集,监督分类器需要每个类别许多标记示例才能匹配性能。在 ImageNet 上,零样本 CLIP 与在相同特征空间上训练的 16 样本线性分类器的性能相当。

如果我们假设评估数据集足够大,以至于在其上训练的线性分类器的参数得到良好估计,那么,由于 CLIP 的零样本分类器也是一个线性分类器,完全监督分类器的性能大致设定了零样本迁移可以达到的上限。在图 8 中,我们比较了 CLIP 的零样本性能与跨数据集的完全监督线性分类器。虚线 y=x 代表一个"最优"的零样本分类器,其性能与其完全监督的等效分类器相匹配。对于大多数数据集,零样本分类器的性能仍然低于完全监督分类器 10% 到 25%,这表明在改进 CLIP 的任务学习和零样本迁移能力方面仍有很大的空间。

零样本性能与完全监督性能之间存在 0.82 的正相关(p 值 < 10 − 6 <10^{-6} <10−6),这表明 CLIP 在将底层表示和任务学习连接到零样本迁移方面相对一致。然而,零样本 CLIP 仅在 5 个数据集上接近完全监督性能:STL10、CIFAR10、Food101、OxfordPets 和 Caltech101。在这 5 个数据集上,零样本准确率和完全监督准确率都超过 90%。这表明 CLIP 可能在其底层表示质量也很高的任务上更有效地进行零样本迁移。一个线性回归模型预测零样本性能作为完全监督性能的函数的斜率估计,完全监督性能每提高 1%,零样本性能提高 1.28%。然而,95% 的置信区间仍然包含小于 1 的值(0.93-1.79)。

在过去的几年里,深度学习系统的实证研究已经证明,性能可以作为训练计算量和数据集大小等重要量的函数进行预测(Hestness et al, 2017; Kaplan et al, 2020)。GPT 系列模型迄今为止在训练计算量增加 1000 倍的过程中,展示了零样本性能的持续改进。在图 9 中,我们检查 CLIP 的零样本性能是否遵循类似的缩放模式。我们绘制了 5 个 ResNet CLIP 模型在 36 个不同数据集上的 39 次评估的平均错误率,并发现类似的 log-log 线性缩放趋势适用于 CLIP,模型计算量增加了 44 倍。虽然总体趋势是平滑的,但我们发现单个评估的性能可能波动更大。我们不确定这是由于子任务上单个训练运行之间的高方差(如 D'Amour et al (2020) 中所记录)掩盖了稳步改进的趋势,还是由于在某些任务上性能实际上作为计算量的函数是非单调的。

3.1.5. 零样本CLIP性能分析

由于与任务无关的计算机视觉零样本分类器研究不足,CLIP 为更好地理解此类模型提供了一个有希望的机会。在本节中,我们对 CLIP 零样本分类器的各种特性进行了研究。作为第一个问题,我们简单地看零样本分类器的表现如何。为了背景化这一点,我们与一个简单的现成基线进行比较:在经典 ResNet-50 的特征上拟合一个完全监督的、正则化的逻辑回归分类器。在图 5 中,我们展示了跨 27 个数据集的比较。有关数据集和设置的详细信息,请参见附录 A。

零样本 CLIP 在略多于半数的情况下优于该基线,在 27 个数据集中的 16 个上获胜。查看单个数据集揭示了一些有趣的行为。在细粒度分类任务上,我们观察到性能差异很大。在其中两个数据集上,Stanford Cars 和 Food101,零样本 CLIP 比 ResNet-50 特征上的逻辑回归性能高出 20% 以上,而在另外两个数据集上,Flowers102 和 FGVC Aircraft,零样本 CLIP 的性能低了 10% 以上。在 OxfordPets 和 Birdsnap 上,性能接近得多。我们怀疑这些差异主要是由于 WIT 和 ImageNet 之间每个任务的监督量不同。在"通用"对象分类数据集上,如 ImageNet、CIFAR10/100、STL10 和 PascalVOC2007,性能相对相似,零样本 CLIP 在所有情况下都略有优势。在 STL10 上,CLIP 达到了 99.3% 的总准确率,这似乎是一个新的最先进水平,尽管没有使用任何训练示例。零样本 CLIP 在两个测量视频中动作识别的数据集上显著优于 ResNet-50。在 Kinetics700 上,CLIP 比 ResNet-50 高出 14.5%。零样本 CLIP 在 UCF101 上也比 ResNet-50 的特征高出 7.7%。我们推测这是因为自然语言为涉及动词的视觉概念提供了更广泛的监督,而 ImageNet 中则以名词为中心的对象监督为主。

查看零样本 CLIP 明显表现不佳的地方,我们发现它在几个专门的、复杂的或抽象的任务上相当弱,例如卫星图像分类(EuroSAT 和 RESISC45)、淋巴结肿瘤检测(PatchCamelyon)、合成场景中的对象计数(CLEVRCounts)、与自动驾驶相关的任务,如德国交通标志识别(GTSRB)、识别到最近汽车的距离(KITTI Distance)。这些结果凸显了零样本 CLIP 在更复杂任务上的薄弱能力。相比之下,非专家人类可以稳健地执行其中几个任务,例如计数、卫星图像分类和交通标志识别,这表明有巨大的改进空间。然而,我们提醒,对于学习者没有先前经验的困难任务(例如对于几乎所有人类(可能还有 CLIP)的淋巴结肿瘤分类),衡量零样本迁移(而不是少样本迁移)是否是一种有意义的评估尚不清楚。

虽然将零样本性能与完全监督模型进行比较可以背景化 CLIP 的任务学习能力,但与少样本方法进行比较是更直接的比较,因为零样本是其极限。在图 6 中,我们可视化了零样本 CLIP 与在许多图像模型(包括最好的公开可用 ImageNet 模型、自监督学习方法和 CLIP 本身)特征上进行少样本逻辑回归的比较。虽然直观上期望零样本性能低于单样本,但我们发现零样本 CLIP 与相同特征空间上的 4 样本逻辑回归性能相当。这可能是由于零样本和少样本方法之间的一个重要区别。首先,CLIP 的零样本分类器是通过自然语言生成的,它允许直接指定("传达")视觉概念。相比之下,"正常"的监督学习必须从训练示例中间接推断概念。缺乏上下文的基于示例的学习有一个缺点,即许多不同的假设可能与数据一致,尤其是在单样本情况下。单个图像通常包含许多不同的视觉概念。尽管一个有能力的学习者能够利用视觉线索和启发式方法,例如假设所演示的概念是图像中的主要对象,但这并不能保证。

解决零样本和少样本性能之间差异的一个潜在方法是使用 CLIP 的零样本分类器作为少样本分类器权重的先验。虽然向生成的权重添加 L2 惩罚是实现此想法的直接方法,但我们发现超参数优化通常会选择如此大的正则化器值,以至于得到的少样本分类器"就是"零样本分类器。研究更好的方法将零样本迁移的优势与少样本学习的灵活性结合起来是未来工作的一个有希望的方向。

当将零样本 CLIP 与在其他模型特征上进行的少样本逻辑回归进行比较时,零样本 CLIP 大致匹配我们评估套件中性能最好的 16 样本分类器的性能,后者使用了在 ImageNet-21K 上训练的 BiT-M ResNet-152x2 的特征。我们确信在 JFT-300M 上训练的 BiT-L 模型表现会更好,但这些模型尚未公开发布。BiT-M ResNet-152x2 在 16 样本设置中表现最佳有些令人惊讶,因为如第 3.2 节分析,Noisy Student EfficientNet-L2 在完全监督设置下在 27 个数据集上的平均性能比它高出近 5%。

除了研究零样本 CLIP 和少样本逻辑回归的平均性能外,我们还检查了在单个数据集上的性能。在图 7 中,我们展示了在相同特征空间上,逻辑回归分类器需要每个类别多少标记示例才能匹配零样本 CLIP 的性能的估计值。由于零样本 CLIP 也是一个线性分类器,这估计了在此设置下零样本迁移的有效数据效率。为了避免训练数千个线性分类器,我们基于 1、2、4、8、16 样本(可能时)和完全监督线性分类器在每个数据集上性能的对数线性插值来估计有效数据效率。我们发现零样本迁移在每个数据集上的效率差异很大,从每个类别少于 1 个标记示例到 184 个。有两个数据集,Flowers102 和 EuroSAT,性能低于单样本模型。一半的数据集每个类别需要少于 5 个示例,中位数为 5.4。然而,平均估计数据效率为每个类别 20.8 个示例。这是因为有 20% 的数据集,监督分类器需要每个类别许多标记示例才能匹配性能。在 ImageNet 上,零样本 CLIP 与在相同特征空间上训练的 16 样本线性分类器的性能相当。

如果我们假设评估数据集足够大,以至于在其上训练的线性分类器的参数得到良好估计,那么,由于 CLIP 的零样本分类器也是一个线性分类器,完全监督分类器的性能大致设定了零样本迁移可以达到的上限。在图 8 中,我们比较了 CLIP 的零样本性能与跨数据集的完全监督线性分类器。虚线 y=x 代表一个"最优"的零样本分类器,其性能与其完全监督的等效分类器相匹配。对于大多数数据集,零样本分类器的性能仍然低于完全监督分类器 10% 到 25%,这表明在改进 CLIP 的任务学习和零样本迁移能力方面仍有很大的空间。

零样本性能与完全监督性能之间存在 0.82 的正相关(p 值 < 10 − 6 <10^{-6} <10−6),这表明 CLIP 在将底层表示和任务学习连接到零样本迁移方面相对一致。然而,零样本 CLIP 仅在 5 个数据集上接近完全监督性能:STL10、CIFAR10、Food101、OxfordPets 和 Caltech101。在这 5 个数据集上,零样本准确率和完全监督准确率都超过 90%。这表明 CLIP 可能在其底层表示质量也很高的任务上更有效地进行零样本迁移。一个线性回归模型预测零样本性能作为完全监督性能的函数的斜率估计,完全监督性能每提高 1%,零样本性能提高 1.28%。然而,95% 的置信区间仍然包含小于 1 的值(0.93-1.79)。

在过去的几年里,深度学习系统的实证研究已经证明,性能可以作为训练计算量和数据集大小等重要量的函数进行预测(Hestness et al, 2017; Kaplan et al, 2020)。GPT 系列模型迄今为止在训练计算量增加 1000 倍的过程中,展示了零样本性能的持续改进。在图 9 中,我们检查 CLIP 的零样本性能是否遵循类似的缩放模式。我们绘制了 5 个 ResNet CLIP 模型在 36 个不同数据集上的 39 次评估的平均错误率,并发现类似的 log-log 线性缩放趋势适用于 CLIP,模型计算量增加了 44 倍。虽然总体趋势是平滑的,但我们发现单个评估的性能可能波动更大。我们不确定这是由于子任务上单个训练运行之间的高方差(如 D'Amour et al (2020) 中所记录)掩盖了稳步改进的趋势,还是由于在某些任务上性能实际上作为计算量的函数是非单调的。

3.2. 表示学习

虽然我们在上一节中通过零样本迁移广泛分析了 CLIP 的任务学习能力,但更常见的是研究模型的表示学习能力。存在许多评估表示质量的方法,以及关于"理想"表示应具有什么属性的分歧(Locatello et al, 2020)。在模型提取的表示上拟合线性分类器并测量其在各种数据集上的性能是一种常见方法。另一种方法是测量模型端到端微调的性能。这增加了灵活性,并且先前的工作已经令人信服地证明,微调在大多数图像分类数据集上的表现优于线性分类(Kornblith et al, 2019; Zhai et al, 2019)。虽然微调的高性能出于实际原因激发了对其研究,但我们仍然选择基于线性分类器的评估,原因如下。我们的工作重点是开发高性能的任务和数据集无关的预训练方法。微调,因为它在微调阶段使表示适应每个数据集,可以补偿并可能掩盖预训练阶段学习通用和鲁棒表示的失败。线性分类器,由于其有限的灵活性,反而突出了这些失败,并在开发过程中提供了清晰的反馈。对于 CLIP,训练监督线性分类器有一个额外的好处,即与其零样本分类器使用的方法非常相似,这能够在第 3.1 节中进行广泛的比较和分析。最后,我们的目标是在许多任务上与一套全面的现有模型进行比较。研究 66 个不同模型在 27 个不同数据集上的表现需要调整 1782 个不同的评估。微调开启了一个更大的设计和超参数空间,这使得公平评估变得困难,并且在计算上昂贵,难以比较多样化的技术集,如其他大规模实证研究中所讨论的(Lucic et al, 2018; Choi et al, 2019)。相比之下,线性分类器需要最少的超参数调整,并且具有标准化的实现和评估程序。有关评估的更多详细信息,请参见附录 A。

图 10 总结了我们的发现。为了最小化可能引起确认或报告偏差担忧的选择效应,我们首先研究 Kornblith et al (2019) 的 12 个数据集评估套件上的性能。虽然小型 CLIP 模型(如 ResNet-50 和 ResNet-101)在迁移任务上的表现优于其他在 ImageNet-1K 上训练的 ResNet(BiT-S 和原始版本),但它们表现不如在 ImageNet-21K 上训练的 ResNet(BiT-M)。这些小型 CLIP 模型在具有相似计算要求的 EfficientNet 系列模型中也表现不佳。然而,使用 CLIP 训练的模型扩展性非常好,我们训练的最大模型(ResNet-50x64)在总体得分和计算效率上都略微优于性能最好的现有模型(Noisy Student EfficientNet-L2)。我们还发现 CLIP 视觉变换器的计算效率比 CLIP ResNet 高约 3 倍,这使我们能够在计算预算内达到更高的整体性能。这些结果定性地复制了 Dosovitskiy et al (2020) 的发现,该发现报告视觉变换器在足够大的数据集上训练时比卷积网络更计算高效。我们最好的整体模型是 ViT-L/14,它在我们的数据集上以 336 像素的更高分辨率微调了 1 个额外周期。该模型在此评估套件上的平均性能比现有最佳模型高出 2.6%。

如图 21 定性地显示,CLIP 模型学习的任务范围比先前在从随机初始化端到端训练的单个计算机视觉模型中所展示的更广泛。这些任务包括地理定位、光学字符识别、面部表情识别和动作识别。这些任务都没有在 Kornblith et al (2019) 的评估套件中测量。这可以认为是 Kornblith et al (2019) 研究中对与 ImageNet 重叠的任务存在一种选择偏差。为了解决这个问题,我们还在更广泛的 27 个数据集评估套件上测量了性能。该评估套件,在附录 A 中有详细说明,包含了代表上述任务的数据集,German Traffic Signs Recognition Benchmark (Stallkamp et al, 2011),以及几个从 VTAB (Zhai et al, 2019) 改编的数据集。

在此更广泛的评估套件上,CLIP 的优势更加明显。所有 CLIP 模型,无论规模大小,在计算效率方面都优于所有评估的系统。最佳模型的平均得分相对于先前系统的改进从 2.6% 增加到 5%。我们还发现自监督系统在我们更广泛的评估套件上表现明显更好。例如,虽然 SimCLRv2 在 Kornblith et al (2019) 的 12 个数据集上的平均性能仍然低于 BiT-M,但 SimCLRv2 在我们 27 个数据集评估套件上优于 BiT-M。这些发现表明需要继续扩展任务的多样性和覆盖范围,以便更好地理解系统的"通用"性能。我们怀疑沿着 VTAB 路线进行额外的评估工作是有价值的。

除了上述的总体分析,我们在图 11 中可视化了最佳 CLIP 模型与我们评估套件中最佳模型在全部 27 个数据集上每个数据集的性能差异。CLIP 在 27 个数据集中的 21 个上优于 Noisy Student EfficientNet-L2。CLIP 在需要 OCR(SST2 和 HatefulMemes)、地理定位和场景识别(Country211, SUN397)以及视频中的活动识别(Kinetics700 和 UCF101)的任务上改进最大。此外,CLIP 在细粒度汽车和交通标志识别(Stanford Cars 和 GTSRB)上也做得更好。这可能反映了 ImageNet 中监督范围过窄的问题。诸如 GTSRB 上 14.7% 的改进这样的结果可能表明 ImageNet-1K 存在问题,它只有一个标签代表所有交通和街道标志。这可能会鼓励监督表示压缩类内细节,从而损害细粒度下游任务的准确性。如前所述,CLIP 在几个数据集上仍然表现不如 EfficientNet。不出所料,EfficientNet 相对于 CLIP 表现最好的数据集是它被训练的数据集:ImageNet。EfficientNet 在低分辨率数据集(如 CIFAR10 和 CIFAR100)上也略微优于 CLIP。我们怀疑这至少部分是由于 CLIP 中缺乏基于尺度的数据增强。EfficientNet 在 PatchCamelyon 和 CLEVRCounts 上也略好一些,这些数据集的整体性能对于两种方法来说仍然很低。

3.3. 对自然分布偏移的鲁棒性

2015 年,有宣布称深度学习模型在 ImageNet 测试集上超过了人类性能(He et al, 2015)。然而,随后几年的研究反复发现,这些模型仍然会犯许多简单的错误(Dodge& Karam, 2017; Geirhos et al, 2018; Alcorn et al, 2019),并且测试这些系统的新基准通常发现其性能远低于其 ImageNet 准确率和人类准确率(Recht et al, 2019; Barbu et al, 2019)。如何解释这种差异?各种想法已被提出和研究(Ilyas et al, 2019; Geirhos et al, 2020)。所提出解释的一个共同主题是,深度学习模型非常擅长发现在其训练数据集中存在的相关性和模式,从而提高了分布内性能。然而,这些相关性和模式中有许多实际上是虚假的,并不适用于其他分布,并导致在其他数据集上的性能大幅下降。

我们提醒,迄今为止,大多数这些研究将其评估限制在 ImageNet 上训练的模型。回顾讨论的主题,从这些初步发现中过度概括可能是一个错误。这些失败在多大程度上可归因于深度学习、ImageNet 或两者的某种组合?CLIP 模型通过自然语言监督在非常大的数据集上训练,并且能够实现高零样本性能,这为从不同角度研究这个问题提供了机会。

Taori et al (2020) 是最近一项全面的研究,致力于量化和理解 ImageNet 模型的这些行为。Taori et al (2020) 研究了 ImageNet 模型在自然分布偏移下评估时性能如何变化。他们测量了一组 7 个分布偏移上的性能:ImageNetV2 (Recht et al, 2019)、ImageNet Sketch (Wang et al, 2019)、Youtube-BB 和 ImageNet-Vid (Shankar et al, 2019)、ObjectNet (Barbu et al, 2019)、ImageNet Adversarial (Hendrycks et al, 2019) 和 ImageNet Rendition (Hendrycks et al, 2020a)。他们将由来自各种来源收集的新图像组成的这些数据集,与通过对现有图像进行各种扰动创建的合成分布偏移(如 ImageNet-C (Hendrycks& Dietterich, 2019)、Stylized ImageNet (Geirhos et al, 2018) 或对抗性攻击 (Goodfellow et al, 2014))区分开来。他们提出这种区分部分是因为他们发现,虽然已有几种技术被证明可以改善合成分布偏移上的性能,但它们往往无法在自然分布上产生一致的改进。 3 ^{3} 3

3 ^{3} 3 我们请读者参考 Hendrycks et al (2020a) 获取关于此主张的额外实验和讨论。

在这些收集的数据集上,ImageNet 模型的准确率远低于 ImageNet 验证集所设定的期望。为了下面的总结讨论,我们报告所有 7 个自然分布偏移数据集的平均准确率,以及 ImageNet 相应类别子集的平均准确率,除非另有说明。此外,对于具有两种不同评估设置的 Youtube-BB 和 ImageNet-Vid,我们使用 pm-0 和 pm-10 准确率的平均值。

ResNet-101 在这些自然分布偏移上评估时犯的错误比在 ImageNet 验证集上多 5 倍。然而,令人鼓舞的是,Taori et al (2020) 发现分布偏移下的准确率随 ImageNet 准确率可预测地增加,并且可以很好地建模为对数几率转换准确率的线性函数。Taori et al (2020) 利用这一发现提出,鲁棒性分析应区分有效鲁棒性和相对鲁棒性。有效鲁棒性衡量的是分布偏移下准确率的提高,超出已记录的分布内和分布外准确率之间关系所预测的水平。相对鲁棒性捕获任何分布外准确率的改进。Taori et al (2020) 认为鲁棒性技术应旨在提高有效鲁棒性和相对鲁棒性。

Taori et al (2020) 中研究的大多数模型都是在 ImageNet 数据集上训练或微调的。回到本节引言中的讨论------训练或适应 ImageNet 数据集分布是否是观察到的鲁棒性差距的原因?直观上,零样本模型不应该能够利用仅在特定分布上成立的虚假相关性或模式,因为它没有在该分布上训练。 4 ^{4} 4 因此,可以合理预期零样本模型具有更高的有效鲁棒性。在图 13 中,我们比较了零样本 CLIP 与现有 ImageNet 模型在自然分布偏移上的性能。所有零样本 CLIP 模型都大幅提高了有效鲁棒性,并将 ImageNet 准确率与分布偏移下准确率之间的差距缩小了 up to 75%。

4 ^{4} 4 我们提醒,零样本模型仍然可以利用预训练和评估分布之间共享的虚假相关性。

虽然这些结果表明零样本模型可以更加鲁棒,但它们并不一定意味着在 ImageNet 上的监督学习会导致鲁棒性差距。CLIP 的其他细节,例如其庞大且多样化的预训练数据集或自然语言监督的使用,也可能导致更鲁棒的模型,无论它们是零样本还是微调的。作为可能开始缩小范围的初步实验,我们还测量了 CLIP 模型通过 L2 正则化逻辑回归分类器适应 ImageNet 分布后性能如何变化。我们在图 14 中可视化了从零样本分类器开始性能的变化。尽管将 CLIP 适应 ImageNet 分布使其 ImageNet 准确率总体提高了 9.2% 达到 85.4%,并与 Mahajan et al (2018) 2018 年的 SOTA 准确率持平,但分布偏移下的平均准确率略有下降。

准确率提高 9.2%(这大致相当于 SOTA 3 年的进步)未能转化为分布偏移下平均性能的任何改善,这令人惊讶。我们还在图 14 中按数据集细分了零样本准确率和线性分类器准确率之间的差异,并发现在一个数据集 ImageNetV2 上性能仍然显著提高。ImageNetV2 紧密遵循原始 ImageNet 数据集的创建过程,这表明来自监督适应的准确率增益紧密集中在 ImageNet 分布周围。在 ImageNet-R 上性能下降 4.7%,在 ObjectNet 上下降 3.8%,在 ImageNet Sketch 上下降 2.8%,在 ImageNet-A 上下降 1.9%。在另外两个数据集 Youtube-BB 和 ImageNet Vid 上,准确率的变化不显著。

ImageNet 数据集的准确率提高 9.2%,而分布偏移下的准确率几乎没有增加,这怎么可能?增益主要来自"利用虚假相关性"吗?这种行为是 CLIP、ImageNet 数据集和所研究的分布偏移的某种组合所独有的,还是更普遍的现象?它是否也适用于端到端微调以及线性分类器?我们目前对这些问题的答案没有把握。先前的工作也在 ImageNet 以外的分布上预训练模型,但通常只在它们被微调到 ImageNet 之后才研究和发布模型。作为理解预训练零样本模型是否始终比微调模型具有更高有效鲁棒性的一步,我们鼓励 Mahajan et al (2018)、Kolesnikov et al (2019) 和 Dosovitskiy et al (2020) 的作者如果可能的话,也在他们的模型上研究这些问题。

我们还研究了由灵活的基于自然语言的零样本图像分类器实现的另一种鲁棒性干预措施。7 个迁移数据集中的目标类别并不总是与 ImageNet 的类别完美对齐。两个数据集 Youtube-BB 和 ImageNet-Vid 由 ImageNet 的父类组成。当尝试使用 ImageNet 模型的固定 1000 路分类器进行预测时,这会产生问题。Taori et al (2020) 通过根据 ImageNet 类层次结构在所有子类上最大池化预测来处理这个问题。有时这种映射远非完美。对于 Youtube-BB 中的 person 类,预测是通过池化 ImageNet 中 baseball player、bridegroom 和 scuba diver 的类别来进行的。使用 CLIP,我们可以直接基于其类别名称为每个数据集生成定制的零样本分类器。在图 14 中,我们看到这将平均有效鲁棒性提高了 5%,但仅集中在少数几个数据集上的巨大改进。奇怪的是,ObjectNet 的准确率也提高了 2.3%。尽管该数据集被设计为与 ImageNet 类别紧密重叠,但使用 ObjectNet 创建者提供的每个类别的名称,与使用 ImageNet 类别名称并在必要时池化预测相比,仍然有少量帮助。

虽然零样本 CLIP 提高了有效鲁棒性,但图 14 显示,在完全监督设置下,这种优势几乎完全消失。为了更好地理解这种差异,我们研究了有效鲁棒性在从零样本到完全监督的连续区间上的变化。在图 15 中,我们可视化了在最佳 CLIP 模型特征上训练的 0-shot、1-shot、2-shot、4-shot、...、128-shot 和完全监督逻辑回归分类器的性能。我们看到,虽然少样本模型也显示出比现有模型更高的有效鲁棒性,但随着分布内性能随着更多训练数据而提高,这种优势会减弱,并且在完全监督模型上大部分(尽管不是完全)消失。此外,零样本 CLIP 明显比具有同等 ImageNet 性能的少样本模型更鲁棒。


4 与人类性能比较

CLIP 与人类性能以及人类学习相比如何?为了更好地理解人类在与 CLIP 类似的评估设置下的表现,我们在其中一项任务上对人类进行了评估。我们想了解人类在这些任务上的零样本性能有多强,以及如果向他们展示一两个图像样本,人类性能会提高多少。这可以帮助我们比较 CLIP 和人类的任务难度,并识别它们之间的相关性和差异。

我们让五个不同的人查看 Oxford IIT Pets 数据集(Parkhi et al, 2012)测试集中 3669 张图像中的每一张,并选择 37 个猫或狗品种中哪个与图像最匹配(或者如果他们完全不确定,选择"我不知道")。在零样本情况下,人类没有获得任何品种的示例,并被要求在不进行互联网搜索的情况下尽力标记它们。在单样本实验中,人类获得了每个品种的一个样本图像,在双样本实验中,他们获得了每个品种的两个样本图像。 5 ^{5} 5

5 ^{5} 5 人类的少样本任务与模型的少样本性能之间没有完美的对应关系,因为模型无法像人类那样参考样本图像。

一个可能的担忧是,人类工作者在零样本任务中动力不足。人类在 STL-10 数据集(Coates et al, 2011)上 94% 的高准确率以及对注意力检查图像子集 97-100% 的准确率增加了我们对人类工作者的信任。

有趣的是,人类从平均 54% 的性能提高到 76%,每个类别仅需一个训练示例,而来自额外训练示例的边际收益微乎其微。从零样本到单样本的准确率增益几乎完全集中在人类不确定的图像上。这表明人类"知道他们不知道什么",并且能够根据单个示例更新他们最不确定的图像上的先验。鉴于这一点,似乎虽然 CLIP 对于零样本性能来说是一种有前途的训练策略(图 5),并且在自然分布偏移测试中表现良好(图 13),但人类从少量示例中学习的方式与本文中的少样本方法之间存在巨大差异。

这表明,正如 Lake et al (2016) 等人所指出的,在缩小机器和人类样本效率之间的差距方面,仍然有算法改进的空间。由于 CLIP 的这些少样本评估没有有效利用先验知识,而人类做到了,我们推测找到一种将先验知识正确整合到少样本学习中的方法是 CLIP 算法改进的重要一步。据我们所知,在高质量预训练模型的特征之上使用线性分类器接近于少样本学习的最先进水平(Tian et al, 2020),这表明最好的少样本机器学习方法与人类少样本学习之间存在差距。

如果我们绘制人类准确率与 CLIP 的零样本准确率的关系图(图 16),我们会发现对 CLIP 来说最难的问题对人类来说也难。在错误一致的情况下,我们的假设是这至少是由于两个因素造成的:数据集中的噪声(包括错误标记的图像)以及分布外图像对人类和模型来说都很难。

5 数据重叠分析

在非常大的互联网数据集上进行预训练的一个担忧是与下游评估数据的意外重叠。这一点很重要,因为在最坏的情况下,评估数据集的完整副本可能会泄漏到预训练数据集中,从而使评估作为有意义的泛化测试无效。防止这种情况的一种选择是在训练模型之前识别并删除所有重复项。虽然这保证了报告真正的保留性能,但它需要事先了解模型可能评估的所有可能数据。这样做的缺点是限制了基准测试和分析的范围。添加新的评估将需要昂贵的重新训练,或者面临因重叠而报告未量化的收益的风险。

相反,我们记录了发生重叠的程度以及这些重叠导致的性能变化。为此,我们使用以下过程:

  1. 对于每个评估数据集,我们对其示例运行重复检测器(见附录 C)。然后我们手动检查找到的最近邻,并为每个数据集设置一个阈值,以保持高精度,同时最大化召回率。使用此阈值,我们然后创建两个新的子集:Overlap(包含与训练示例相似度高于阈值的所有示例)和 Clean(包含相似度低于此阈值的所有示例)。我们将未更改的完整数据集表示为 All 以供参考。我们首先将数据污染程度记录为 Overlap 中的示例数量与 All 的大小的比率。
  2. 然后我们计算 CLIP RN50x64 在三个分割上的零样本准确率,并报告 All - Clean 作为我们的主要指标。这是由于污染导致的准确率差异。当为正时,这是我们估计数据集上报告的整体准确率因对重叠数据的过拟合而膨胀的程度。
  3. 重叠量通常很小,因此我们还运行二项式显著性检验,其中我们使用 Clean 上的准确率作为零假设,并计算 Overlap 子集的单侧(greater)p 值。我们还计算了 Dirty 上 99.5% 的 Clopper-Pearson 置信区间作为另一项检查。

该分析的摘要呈现在图 17 中。在所研究的 35 个数据集中,有 9 个数据集完全没有检测到重叠。这些数据集大多数是合成或专门的,使得它们不太可能作为正常图像发布在互联网上(例如 MNIST、CLEVR 和 GTSRB),或者由于包含在我们数据集创建日期之后的新数据而保证没有重叠(例如 ObjectNet 和 Hateful Memes)。这证明了我们的检测器具有较低的误报率,这一点很重要,因为误报会低估我们分析中污染的影响。重叠的中位数为 2.2%,平均重叠为 3.2%。由于重叠量小,整体准确率很少移动超过 0.1%,只有 7 个数据集高于此阈值。其中,只有 2 个在 Bonferroni 校正后具有统计显著性。检测到的最大改进仅在 Birdsnap 上为 0.6%,该数据集的重叠率为 12.1%,是第二大重叠。最大的重叠是 Country211,为 21.5%。这是因为它是由 YFCC100M 构建的,而我们的预训练数据集包含其过滤后的子集。尽管存在这种大的重叠,但 Country211 上的准确率仅提高了 0.2%。这可能是因为伴随示例的训练文本通常与下游评估所测量的特定任务无关。Country211 测量地理定位能力,但检查这些重复项的训练文本显示,它们通常不提及图像的位置。

我们意识到我们的分析存在两个潜在的担忧。首先,我们的检测器并不完美。虽然它在其代理训练任务上达到了接近 100% 的准确率,并且手动检查+阈值调整在找到的最近邻中实现了高精度和良好的召回率,但我们无法在 4 亿个示例中切实检查其召回率。我们分析的另一个潜在混淆因素是,底层数据分布在 Overlap 和 Clean 子集之间可能会发生变化。例如,在 Kinetics-700 上,许多"重叠"实际上是全黑的过渡帧。这解释了为什么 Kinetics-700 在 Overlap 上表现出明显的 20% 准确率下降。我们怀疑可能存在更细微的分布变化。我们在 CIFAR-100 上注意到的一种可能性是,由于其图像分辨率非常低,许多重复项是小型对象(如鸟类或飞机)的误报。准确率的变化可能反而是由于重复项的类别分布或难度的变化所致。不幸的是,这些分布和难度的变化也可能掩盖过拟合的影响。

然而,这些结果与先前关于大规模预训练工作的类似重复分析结果密切吻合。Mahajan et al (2018) 和 Kolesnikov et al (2019) 检测到类似的重叠率,并发现整体性能变化最小。重要的是,Kolesnikov et al (2019) 还将本节引言中讨论的替代去重策略与我们最终采用的方法进行了比较,并观察到两种方法之间差异很小。

6 局限性

CLIP 仍然存在许多局限性。虽然其中几个问题作为各部分分析的一部分进行了讨论,但我们在此进行总结和汇总。

在有训练分割的数据集上,零样本 CLIP 的性能平均上与在 ResNet-50 特征上拟合简单监督线性分类器的基线具有竞争力。在大多数这些数据集上,该基线的性能现在远低于整体技术水平。在改进 CLIP 的任务学习和迁移能力方面仍需要大量工作。虽然扩展到目前为止稳步提高了性能,并指出了持续改进的途径,但我们估计需要大约 1000 倍的计算量增加,零样本 CLIP 才能达到整体最先进的性能。用当前的硬件训练这是不可行的。有必要进一步研究提高 CLIP 的计算和数据效率。

第 3.1 节的分析发现,CLIP 的零样本性能在几种任务上仍然相当弱。与特定任务模型相比,CLIP 在几种细粒度分类任务上表现不佳,例如区分汽车型号、花卉种类和飞机变体。CLIP 在处理更抽象和系统化的任务时也很吃力,例如计算图像中的对象数量。最后,对于不太可能包含在 CLIP 预训练数据集中的新任务,例如对照片中最近汽车的距离进行分类,CLIP 的性能可能接近随机。我们确信,仍然存在许多许多任务,CLIP 的零样本性能接近随机水平。

虽然零样本 CLIP 能够很好地泛化到许多自然图像分布,如第 3.3 节所研究,但我们观察到零样本 CLIP 对真正超出其分布的数据仍然泛化得很差。一个说明性的例子发生在 OCR 任务中,如附录 E 所报告。CLIP 学习了高质量的语义 OCR 表示,在其预训练数据集中常见的数字渲染文本上表现良好,这在 Rendered SST2 上的性能中得到了证明。然而,CLIP 在 MNIST 的手写数字上仅达到 88% 的准确率。一个极其简单的基于原始像素的逻辑回归基线就优于零样本 CLIP。语义和近重复最近邻检索都证实,在我们的预训练数据集中几乎没有像 MNIST 数字的图像。这表明 CLIP 在解决深度学习模型脆弱的泛化这一根本问题方面作用甚微。相反,CLIP 试图规避这个问题,并希望通过在如此庞大和多样化的数据集上进行训练,所有数据都能有效地处于分布内。这是一个天真的假设,正如 MNIST 所证明的那样,很容易被违反。

尽管 CLIP 可以灵活地为各种任务和数据集生成零样本分类器,但 CLIP 仍然仅限于从给定零样本分类器中的那些概念中进行选择。与像图像描述生成这样真正灵活的方法(可以生成新颖输出)相比,这是一个显著的限制。不幸的是,如第 2.3 节所述,我们发现我们尝试的图像描述基线的计算效率远低于 CLIP。一个值得尝试的简单想法是联合训练对比目标和生成目标,希望将 CLIP 的效率与描述模型的灵活性结合起来。作为另一种选择,可以在推理时对给定图像的多种自然语言解释进行搜索,类似于 Learning with Latent Language Andreas et al (2017) 中提出的方法。

CLIP 也没有解决深度学习数据效率差的问题。相反,CLIP 通过使用可以扩展到数亿训练示例的监督源来补偿。如果 CLIP 模型训练期间看到的每张图像都以每秒一张的速度呈现,那么迭代 32 个训练周期中看到的 128 亿张图像将需要 405 年。将 CLIP 与自监督(Henaff, 2020; Chen et al, 2020c)和自训练(Lee; Xie et al, 2020)方法相结合是一个有前途的方向,因为它们已证明能够提高标准监督学习的数据效率。

我们的方法有几个显著的局限性。尽管我们专注于零样本迁移,但我们反复查询完整验证集上的性能以指导 CLIP 的开发。这些验证集通常有数千个示例,这对于真正的零样本场景来说是不现实的。半监督学习领域也提出了类似的担忧(Oliver et al, 2018)。另一个潜在问题是我们对评估数据集的选择。虽然我们报告了 Kornblith et al (2019) 的 12 个数据集评估套件作为标准化集合的结果,但我们的主要结果使用了有些随意组装的 27 个数据集集合,这些数据集无可否认地与 CLIP 的开发和能力共同适应。创建一个新的任务基准,明确设计用于评估广泛的零样本迁移能力,而不是重新使用现有的监督数据集,将有助于解决这些问题。

CLIP 是在互联网上与图像配对的文本上训练的。这些图像-文本对未经筛选和整理,导致 CLIP 模型学习到许多社会偏见。这在之前的图像描述模型中已经得到证明(Bhargava& Forsyth, 2019)。我们请读者参阅第 7 节,详细了解 CLIP 的这些行为的分析和量化,以及潜在的缓解策略讨论。

虽然我们在整个工作中一直强调通过自然语言指定图像分类器是一种灵活且通用的接口,但它也有其自身的局限性。许多复杂的任务和视觉概念可能难以仅通过文本来指定。实际的训练示例无疑是有用的,但 CLIP 并没有直接针对少样本性能进行优化。在我们的工作中,我们退而在 CLIP 的特征之上拟合线性分类器。这导致从零样本设置过渡到少样本设置时,性能出现反直觉的下降。如第 4 节所述,这与人类表现显著不同,后者从零样本到单样本设置显示出巨大的增长。未来的工作需要开发将 CLIP 强大的零样本性能与高效的少样本学习相结合的方法。

7 更广泛的影响

CLIP 具有广泛的能力,因为它能够执行任意的图像分类任务。可以给它猫和狗的图片,要求它对猫进行分类,或者给它百货公司拍摄的图像,要求它对商店扒手进行分类------这是一项具有重大社会意义且人工智能可能不适合的任务。与任何图像分类系统一样,需要评估 CLIP 的性能和对目的的适用性,并在具体情境中分析其更广泛的影响。CLIP 还引入了一种能力,将放大和改变此类问题:CLIP 使得可以轻松创建自己的分类类别("滚动自己的分类器"),而无需重新训练。这种能力引入了与描述其他大规模生成模型(如 GPT-3(Brown et al, 2020))所面临的类似挑战;表现出非平凡零样本(或少样本)泛化的模型可能具有广泛的能力,其中许多只有在经过测试后才能明确。

我们对 CLIP 在零样本设置下的研究表明,该模型在广泛适用的任务(如图像检索或搜索)方面显示出巨大的潜力。例如,它可以根据文本在数据库中找到相关图像,或根据图像找到相关文本。此外,以很少或无需额外数据或训练即可将 CLIP 转向定制应用的相对便利性,可能会释放出我们今天难以想象的各种新颖应用,正如过去几年大型语言模型所发生的情况。

除了本文前面部分研究的 30 多个数据集之外,我们还在 FairFace 基准上评估了 CLIP 的性能,并进行了探索性的偏见探测。然后,我们描述了模型在下游任务(监控)中的性能,并讨论了其与其他可用系统相比的有用性。CLIP 的许多能力本质上是全用途的(例如,OCR 可用于使扫描文档可搜索、支持屏幕阅读技术或读取车牌)。所测量的几种能力,从动作识别、对象分类和地理定位,到面部情绪识别,都可用于监控。考虑到其社会影响,我们在"监控"部分专门讨论了这一使用领域。

我们还试图描述模型固有的社会偏见。我们的偏见测试代表了我们初步尝试探索模型在不同场景下如何反应的各个方面,并且本质上范围有限。CLIP 及类似模型需要根据其具体部署进行分析,以了解偏见如何体现并确定潜在的干预措施。需要进一步的社区探索来开发更广泛、更情境化、更健壮的测试方案,以便 AI 开发人员能够更好地描述通用计算机视觉模型中的偏见。

7.1 偏见

算法决策、训练数据以及关于类别如何定义和分类(我们非正式地称之为"类别设计")的选择,都可能促成并放大因使用 AI 系统而导致的社会偏见和不平等(Noble, 2018; Bechmann& Bowker, 2019; Bowker& Star, 2000)。类别设计对于像 CLIP 这样的模型尤其相关,因为任何开发人员都可以定义一个类别,模型都会提供某种结果。

在本节中,我们对 CLIP 中的一些偏见进行了初步分析,使用的偏见探测方法灵感来源于 Buolamwini& Gebru (2018) 和 Karkkainen& Joo (2019) 中概述的方法。我们还进行了探索性的偏见研究,旨在发现模型中偏见的具体例子,类似于 Solaiman et al (2019) 所进行的研究。

我们首先将零样本 CLIP 在人脸图像数据集 FairFace (Karkkainen& Joo, 2019) 6 ^{6} 6 上的性能作为初步的偏见探测进行分析,然后进一步探测模型以揭示额外的偏见和偏见来源,包括类别设计。

6 ^{6} 6 FairFace 是一个旨在平衡年龄、性别和种族的人脸图像数据集,以减少先前人脸数据集中常见的不对称性。它将性别分为 2 组:女性和男性,将种族分为 7 组:白人、黑人、印度人、东亚人、东南亚人、中东人和拉丁裔。种族和性别分类存在固有的问题,正如 Bowker& Star (2000) 和 Keyes (2018) 所表明的那样。虽然 FairFace 的数据集减少了白人人脸的比例,但它仍然缺乏对整个大型人口群体的代表性,实际上抹去了这些类别。我们在许多实验中使用 FairFace 数据集中定义的 2 个性别类别和 7 个种族类别,并非为了强化或认可使用此类简化类别,而是为了使我们能够与先前的工作进行比较。

我们在 FairFace 数据集上评估了 CLIP 的两个版本:零样本 CLIP 模型("ZS CLIP")和在 CLIP 特征之上针对 FairFace 数据集拟合的逻辑回归分类器("LR CLIP")。我们发现,在我们运行的大多数分类测试中,LR CLIP 在 FairFace 数据集上的准确率高于 ResNext-10132x48d Instagram 模型("Linear Probe Instagram")(Mahajan et al, 2018)和 FairFace 自己的模型 7 ^{7} 7。ZS CLIP 的性能因类别而异,在少数类别上比 FairFace 的模型差,在其他类别上更好。(参见表 3 和表 4)。

7 ^{7} 7 这种比较的一个挑战是 FairFace 模型对种族使用二元类别("白人"和"非白人"),而不是将种族细分为更精细的子组。

此外,我们还测试了 LR CLIP 和 ZS CLIP 模型在 FairFace 数据集中定义的交叉种族和性别类别上的性能。我们发现,在所有种族类别中,性别分类的模型性能均高于 95%。表 5 总结了这些结果。

虽然 LR CLIP 在 FairFace 基准数据集上对交叉类别的性别、种族和年龄图像分类的准确率高于 Linear Probe Instagram 模型,但正如 Raji et al (2020) 所表明的,基准测试的准确率仅提供了算法公平性的一种近似,并且通常无法作为现实环境中公平性的有意义的衡量标准。即使一个模型在不同子组上具有更高的准确率和更低的性能差异,这并不意味着其影响差异会更低(Scheuerman et al, 2019)。例如,对代表性不足的群体表现更好可能会被公司用来证明他们使用面部识别的合理性,然后以影响人口群体不成比例的方式部署它。我们使用面部分类基准来探测偏见,并非意在暗示面部分类是一项无问题的任务,也非认可在部署环境中使用种族、年龄或性别分类。

我们还使用具有高潜力造成表征伤害的分类术语来探测模型,特别关注贬损伤害(Crawford, 2017)。我们进行了一项实验,要求 ZS CLIP 模型对来自 FairFace 数据集的 10,000 张图像进行分类。除了 FairFace 的类别外,我们还添加了以下类别:'animal'、'gorilla'、'chimpanzee'、'orangutan'、'thief'、'criminal' 和 'suspicious person'。本实验的目的是检查贬损伤害是否不成比例地影响某些人口亚组。

我们发现 4.9%(置信区间在 4.6% 到 5.4% 之间)的图像被误分类到我们探测中使用的非人类类别之一('animal'、'chimpanzee'、'gorilla'、'orangutan')。其中,"黑人"图像的误分类率最高(约 14%;置信区间在 [12.6% 和 16.4%] 之间),而所有其他种族的误分类率低于 8%。0-20 岁的人被分类到该类别的比例最高,为 14%。

我们还发现 16.5% 的男性图像被误分类到与犯罪相关的类别('thief'、'suspicious person' 和 'criminal'),而女性图像的这一比例为 9.8%。有趣的是,我们发现 0-20 岁的人比不同年龄范围的人更可能被归入这些与犯罪相关的类别(0-20 岁约 18%,20-60 岁约 12%,70 岁以上 0%)。我们发现不同种族在犯罪相关术语的分类上存在显著差异,如表 6 所示。

鉴于我们观察到 20 岁以下的人最有可能被分类到犯罪相关和非人类动物类别中,我们使用相同的类别但对图像进行了分类,并添加了一个额外的类别 'child'。我们这里的目的是观察这个类别是否会显著改变模型的行为,并改变贬损伤害按年龄分布的方式。我们发现这大大减少了被分类到犯罪相关类别或非人类动物类别的 20 岁以下图像的数量(表 7)。这表明类别设计是决定模型性能以及模型可能表现出的不良偏见或行为的关键因素,同时也对使用人脸图像自动对人进行此类分类提出了 overarching 问题(y Arcas et al, 2017)。

这些探测的结果会因选择的类别类别以及用于描述每个类别的具体语言而改变。糟糕的类别设计可能导致糟糕的现实世界性能;这种担忧对于像 CLIP 这样的模型尤其相关,因为开发人员可以如此轻松地设计自己的类别。

我们还进行了类似于 Schwemmer et al (2020) 概述的实验,使用国会议员图像测试 CLIP 如何区别对待男性和女性的图像。作为这些实验的一部分,我们研究了某些额外的设计决策(例如决定标签的阈值)如何影响 CLIP 输出的标签以及偏见如何体现。

我们进行了三个实验------我们测试了性别分类的准确性,并测试了标签在两个不同标签集上的分布差异。对于我们的第一个标签集,我们使用了包含 300 个职业的标签集,对于第二个标签集,我们使用了 Google Cloud Vision、Amazon Rekognition 和 Microsoft Azure Computer Vision 为所有图像返回的组合标签集。

我们首先简单地查看了模型在国会议员图像上的性别预测性能,以检查模型是否能在给定一个处于官方环境/权力地位的人像时,正确识别男性为男性,女性为女性。我们发现模型在图像上的准确率达到 100%。这略优于模型在 FairFace 数据集上的性能。我们假设原因之一是国会议员数据集中的所有图像都是高质量且清晰的,人物清晰居中,与 FairFace 数据集中的图像不同。

为了研究返回标签中的偏见如何依赖于为标签概率设置的阈值,我们进行了一项实验,将阈值设置为 0.5% 和 4.0%。我们发现较低的阈值导致标签质量较低。然而,即使在这种阈值下标签的不同分布也可能包含偏见的信号。例如,我们发现在 0.5% 的阈值下,诸如'nanny'和'housekeeper'之类的标签开始出现在女性中,而诸如'prisoner'和'mobster'之类的标签开始出现在男性中。这指出了与先前在职业中发现的类似的性别关联(Schwemmer et al, 2020)(Nosek et al, 2002)(Bolukbasi et al, 2016)。

在较高的 4% 阈值下,跨性别概率最高的标签包括"lawmaker"、"legislator"和"congressman"。然而,这些偏见在低概率标签中的存在仍然提出了关于部署此类系统时"足够"安全的行为可能是什么样子的更大问题。

当给出 Google Cloud Vision (GCV)、Amazon Rekognition 和 Microsoft 为所有图像返回的组合标签集时,与 Schwemmer et al (2020) 在 GCV 系统中发现的偏见类似,我们发现我们的系统也不成比例地将与头发和外观总体相关的标签附加到女性多于男性。例如,'brown hair'、'blonde'和'blond'等标签在女性中出现的频率显著更高。此外,CLIP 将一些描述高地位职业的标签不成比例地更频繁地附加给男性,例如'executive'和'doctor'。在仅有的四个更常附加给女性的职业中,三个是'newscaster'、'television presenter'和'newsreader',第四个是'Judge'。这又与 GCV 中发现的偏见相似,并指向历史上的性别差异(Schwemmer et al, 2020)。

有趣的是,当我们将这组标签的阈值降低到 0.5% 时,我们发现不成比例描述男性的标签也转向了外观导向的词汇,如'suit'、'tie'和'necktie'(图 18)。许多以职业为导向的词汇,如'military person'和'executive'------在较高的 4% 阈值下未用于描述女性图像------在较低的 0.5% 阈值下用于男性和女性,这可能导致男性标签的变化。反之则不然。用于描述女性的描述性词汇在男性中仍然不常见。

模型构建每个阶段的设计决策都会影响偏见的体现方式,这对于 CLIP 来说尤其如此,因为它提供了灵活性。除了关于训练数据和模型架构的选择之外,关于类别设计和阈值设置等事项的决策可以改变模型输出的标签,从而加剧或减轻某些类型的伤害,例如 Crawford (2017) 所描述的伤害。设计和开发模型及 AI 系统的人员拥有相当大的权力。关于类别设计等事项的决策不仅是模型性能的关键决定因素,也是模型偏见如何及在何种情境下体现的关键决定因素。

这些实验并非全面性的。它们说明了由类别设计和其他偏见来源引起的潜在问题,旨在引发探究。

7.2 监控

我们接下来试图描述模型在与一项具有重大社会敏感性的下游任务相关的性能:监控。我们的分析旨在更好地体现上述描述的表征方法,并帮助研究界关注日益通用的计算机视觉模型的潜在未来影响,并协助制定围绕此类系统的规范和检查。

我们对监控的包含并非意在表示对该领域的热情------相反,我们认为监控是一个重要的领域,需要尝试进行预测,因为其具有社会影响(Zuboff, 2015; Browne, 2015)。

我们测量了模型在监控摄像头(例如 CCTV 摄像头)拍摄的图像分类和零样本名人识别上的性能。我们首先测试了模型在从监控摄像头捕获的低分辨率图像上的性能。我们使用了 VIRAT 数据集(Oh et al, 2011)和 Varadarajan& Odobez (2009) 捕获的数据,两者都包含真实世界的户外场景和非演员。

鉴于 CLIP 灵活的类别构建能力,我们在 12 个不同视频序列捕获的 515 张监控图像上测试了自构建的粗粒度和细粒度分类通用类别。粗粒度分类要求模型正确识别图像的主体(即监控图像中捕获的 12 个不同视频序列上的自构建通用类别,用于粗粒度和细粒度分类。粗粒度分类要求确定模型是否能够识别图像中较小特征的存在/不存在,例如站在角落的人。

对于粗粒度分类,我们通过手动为图像添加标题来描述图像内容来构建类别,并且模型总是至少有 6 个选项可供选择。此外,我们进行了一项"压力测试",其中类别集至少包含一个与图像"接近"的额外标题(例如,"带白色汽车的停车场"与"带红色汽车的停车场")。我们发现,在初始评估中,模型在 CCTV 图像上的 top-1 准确率为 91.8%。在第二次评估中,准确率显著下降至 51.1%,模型错误选择"接近"答案的比例为 40.7%。

对于细粒度检测,零样本模型表现不佳,结果接近随机。请注意,此实验仅针对检测图像序列中小物体的存在或缺失。

我们还使用 CelebA 数据集 8 ^{8} 8 测试了 CLIP 在"野外"身份识别的零样本性能。我们这样做是为了评估模型仅使用其预训练时可用的公开数据进行身份检测的性能。我们还测试了 CLIP 在"野外"身份识别的零样本性能,假设互联网上的图像数量更多,我们假设模型将人脸与姓名关联起来所需的预训练数据中的图像数量将随着模型变得更强大而不断减少(参见表 8),这具有重大的社会影响(Garvie, 2019)。这反映了自然语言处理的最新发展,其中在互联网数据上训练的大型语言模型通常表现出为相对次要的公众人物提供相关信息的能力(Brown et al, 2020)。

8 ^{8} 8 注意:CelebA 数据集更能代表肤色较浅的人脸。由于数据集的特性,我们无法控制种族、性别、年龄等。

我们发现,在 100 个可能类别中,模型对"野外" 8k 名人图像的 top-1 准确率为 59.2%。然而,当我们将类别大小增加到 1k 名人姓名时,此性能下降到 43.3%。与生产级模型(如 Google 的名人识别(Google))相比,此性能并不具有竞争力。然而,这些结果值得注意的原因是,该分析仅使用基于从预训练数据推断出的名称的零样本识别能力完成------我们没有使用任何额外的特定任务数据集,因此(相对)强劲的结果进一步表明,在部署多模态模型之前,人们需要仔细研究它们在给定上下文和领域中的行为。

CLIP 因其零样本能力而对其数据相对较少的任务具有显著优势。然而,对于许多有需求的监控任务(如人脸识别),存在大型数据集和高性能的监督模型。因此,CLIP 在此类用途中的相对吸引力较低。此外,CLIP 并非为常见的与监控相关的任务(如目标检测和语义分割)而设计。这意味着当专门为此类用途设计的模型(如 Detectron2(Wu et al, 2019))广泛可用时,CLIP 对某些监控任务的用途有限。

然而,CLIP 确实在可用性方面解锁了某些方面,因为它消除了对训练数据的需求。因此,CLIP 和类似模型可以启用定制化的、利基的监控用例,对于这些用例不存在精心定制的模型或数据集,并且可以降低构建此类应用的技能要求。正如我们的实验所示,ZS CLIP 目前在少数几个监控相关任务上表现出非平凡但并非卓越的性能。

7.3 未来工作

这项初步分析旨在说明通用计算机视觉模型带来的一些挑战,并让我们一窥其偏见和影响。

我们希望这项工作能激励未来研究对此类模型的能力、缺点和偏见进行表征,并且我们很高兴就此类问题与研究界互动。

我们相信向前迈出的一步是社区探索,以进一步表征 CLIP 等模型的能力,并且关键的是,确定它们有良好性能的应用领域以及它们可能性能降低的领域 9 ^{9} 9。这种表征过程可以通过以下方式帮助研究人员增加模型被有益使用的可能性:

9 ^{9} 9 模型可能因性能不足或 AI 在应用领域本身的使用不适当而不适合使用。

  • 在研究过程早期识别模型潜在的有益下游用途,使其他研究人员能够思考应用。
  • 找出具有显著敏感性和大量社会利益相关者的任务,这些任务可能需要政策制定者干预。
  • 更好地描述模型中的偏见,提醒其他研究人员关注关注领域和干预领域。
  • 创建测试套件来评估 CLIP 等系统,以便我们能够在开发周期早期更好地表征模型能力。
  • 识别潜在的失败模式和需要进一步工作的领域。

我们计划为这项工作做出贡献,并希望此分析为后续研究提供一些激励性的例子。

8 相关工作

任何利用书面、口头、手语或任何其他形式的人类语言作为其训练信号一部分的模型,都可以说是使用自然语言作为监督来源。这是一个公认的极其广泛的领域,涵盖了分布语义学领域的大部分工作,包括主题模型(Blei et al, 2003)、词、句和段落向量(Mikolov et al, 2013; Kiros et al, 2015; Le& Mikolov, 2014)以及语言模型(Bengio et al, 2003)。它还包括更广泛的 NLP 领域,该领域以某种方式处理预测或建模自然语言序列。在 NLP 中有意利用自然语言监督(以解释、反馈、指令和建议的形式)用于分类等任务(与通常将监督表示为一组任意编码的离散类别标签相反)的工作已经以许多创造性和先进的方式进行了探索。基于对话的学习(Weston, 2016; Li et al, 2016; Hancock et al, 2019)开发了从对话中的交互式自然语言反馈中学习的技术。几篇论文利用语义解析将自然语言解释转换为特征(Srivastava et al, 2017)或额外的训练标签(Hancock et al, 2018)。最近,ExpBERT(Murty et al, 2020)使用通过条件化深度上下文语言模型于自然语言解释和关系描述产生的特征表示来改进关系提取任务的性能。

CLIP 是使用自然语言作为学习语言以外领域知识的训练信号的一个例子。在这种背景下,我们所知的"自然语言监督"一词的最早使用是 Ramanathan et al (2013) 的工作,该工作表明自然语言描述可以与其他监督源一起使用来提高视频事件理解任务的性能。然而,如引言和方法部分所述,在计算机视觉中利用自然语言描述的方法远早于这个特定术语的使用,尤其是在图像检索(Mori et al, 1999)和对象分类(Wang et al, 2009)方面。其他早期工作利用与图像关联的标签(但不是自然语言)进行语义分割任务(Barnard et al, 2003)。最近,He& Peng (2017) 和 Liang et al (2020) 证明了使用自然语言描述和解释来改进鸟类的细粒度视觉分类。其他人研究了如何利用接地语言来改进 ShapeWorld 数据集上的视觉表示和分类器(Kuhnle& Copestake, 2017; Andreas et al, 2017; Mu et al, 2019)。最后,将自然语言与强化学习环境相结合的技术(Narasimhan et al, 2015)已经展示了令人兴奋的涌现行为,例如系统地完成零样本任务(Hill et al, 2019)。

CLIP 的预训练任务优化了文本-图像检索。这个研究领域可以追溯到 90 年代中期,前面提到的 Mori et al (1999) 是早期工作的代表。虽然最初的努力主要关注预测目标,但随着时间的推移,研究转向学习联合多模态嵌入空间,采用核典型相关分析和各种排序目标等技术(Weston et al, 2010; Socher& Fei-Fei, 2010; Hodosh et al, 2013)。随着时间的推移,工作探索了训练目标、迁移和更具表达力的模型的多种组合,并稳步提高了性能(Frome et al, 2013; Socher et al, 2014; Karpathy et al, 2014; Kiros et al, 2014; Faghri et al, 2017)。

其他工作已经将自然语言监督用于图像以外的领域。Stroud et al (2020) 通过训练一个系统将描述性文本与视频(而不是图像)配对来探索大规模表示学习。几项工作探索了对视频使用密集的口头自然语言监督(Miech et al, 2019; 2020b)。当与 CLIP 一起考虑时,这些工作表明大规模自然语言监督是一种有前途的方法,可以为许多领域学习高质量感知系统。Alayrac et al (2020) 通过添加原始音频作为额外的监督源扩展了这项工作,并证明了结合所有三个监督源的好处。

作为我们 CLIP 工作的一部分,我们还构建了一个新的图像-文本对数据集。现代的图像-文本检索工作依赖于一组众包的句子级图像描述评估数据集,如 Pascal1K(Rashtchian et al, 2010)、Flickr8K(Hodosh et al, 2013)和 Flickr30K(Young et al, 2014)。然而,这些数据集仍然相对较小,限制了可实现的性能。已经提出了几种方法来自动创建更大的数据集,Ordonez et al (2011) 是一个著名的早期例子。在深度学习时代,Mithun et al (2018) 证明了从互联网收集的额外(图像,文本)对可以提高检索性能,并且已经创建了几个新的自动构建的数据集,如 Conceptual Captions(Sharma et al, 2018)、LAIT(Qi et al, 2020)和 OCR-CC(Yang et al, 2020)。然而,这些数据集仍然使用更积极的过滤,或者是为特定任务(如 OCR)设计的,因此仍然比 WIT 小得多,只有 1 到 1000 万个训练示例。

一个与 CLIP 相关的想法是网络监督学习。这项工作查询图像搜索引擎,通过查询术语来构建图像数据集,并使用查询作为返回图像的标签(Fergus et al, 2005)。在这些大型但噪声标签的数据集上训练的分类器可以与在较小的精心标记的数据集上训练的分类器竞争。这些图像-查询对也经常被用作额外训练数据来提高标准数据集的性能(Chen& Gupta, 2015)。CLIP 在其数据集创建过程中也使用搜索查询。然而,CLIP 只使用与图像共现的完整文本序列作为监督,而不仅仅是查询,查询通常只是单个单词或短 n-gram。我们还将 CLIP 中的此步骤限制为仅文本查询子字符串匹配,而大多数网络监督工作使用标准的图像搜索引擎,这些引擎具有自己复杂的检索和过滤管道,通常涉及计算机视觉系统。在这项工作中,Learning Everything about Anything: Webly-Supervised Visual Concept Learning (Divvala et al, 2014) 的雄心壮志和目标与 CLIP 有着显著的相似性。

最后,CLIP 与最近在学习和识和语言的联合模型方面的一系列活动相关(Lu et al, 2019; Tan& Bansal, 2019; Chen et al, 2019; Li et al, 2020b; Yu et al, 2020)。这项工作侧重于密集连接视觉和语言,以解决复杂的下游任务,如视觉问答、视觉常识推理或多模态蕴含。这些方法利用了令人印象深刻的工程模型,这些模型结合了 3 个(或更多)预训练子系统,通常是一个图像特征模型、一个区域提议/目标检测模型和一个预训练的掩码语言模型(如 BERT)。然后通过各种训练目标在图像-文本对上联合微调这些系统,并应用于上述任务,取得了令人印象深刻的结果。相反,CLIP 专注于通过自然语言监督从头开始学习视觉模型,并且没有通过联合注意力模型密集连接两个领域。CLIP 模型中图像和文本领域之间唯一的交互是在学习的联合嵌入空间中的单个点积。我们很高兴看到 CLIP 与这项工作线杂交。

9 结论

我们研究了是否有可能将 NLP 中与任务无关的网络规模预训练的成功迁移到另一个领域。我们发现,采用此公式会导致计算机视觉领域出现类似的行为,并讨论了这项研究的社会影响。为了优化其训练目标,CLIP 模型在预训练期间学习执行广泛的任务。然后,可以通过自然语言提示利用此任务学习,实现对许多现有数据集的零样本迁移。在足够规模下,这种方法的性能可以与特定任务的监督模型竞争,尽管仍有很大的改进空间。

相关推荐
悟纤2 小时前
什么是音乐旋律?——AI 音乐创作的完整指南 | Suno高级篇 | 第25篇
人工智能·suno·suno ai·suno api·ai music
sali-tec2 小时前
C# 基于OpenCv的视觉工作流-章13-边缘提取
人工智能·opencv·算法·计算机视觉
小真zzz2 小时前
2025-2026年度AIPPT工具综合排行榜
人工智能·ai·powerpoint·ppt
萤丰信息2 小时前
智慧园区新基建:“云-管-端”架构的破局之路与数智革命
大数据·人工智能·科技·安全·架构·智慧城市·智慧园区
kaikaile19952 小时前
基于MATLAB的PSO-ELM(粒子群优化极限学习机)算法实现
深度学习·算法·matlab
YuTaoShao2 小时前
【LeetCode 每日一题】1895. 最大的幻方——(解法二)前缀和优化
linux·算法·leetcode
a程序小傲2 小时前
中国邮政Java面试被问:边缘计算的数据同步和计算卸载
java·服务器·开发语言·算法·面试·职场和发展·边缘计算
自己的九又四分之三站台2 小时前
5:微软AI库Microsoft.Extensions.AI的使用与流式响应
人工智能·microsoft
biyezuopinvip2 小时前
基于深度学习的新闻文本分类系统的研究与设计(源码)
人工智能·深度学习·分类·源码·代码·基于深度学习的·新闻文本分类系统的研究与设计