CLIP论文阅读

作者:LioneWang
链接:https://zhuanlan.zhihu.com/p/1996842714956841421
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

标题

  • Learning transferable visual models from natural language supervision
  • Clip定义是constrastive language-image pre-training
  • 无监督的训练范式
    通过正类和负类样本的比较,看到正类就拉近,看到负类就拉远

目的

从自然语言的监督信号学习迁移性能好的模型 目的是学一个泛化性能好的特征,从而在各种数据集和任务,不需要训练,直接推理就可以获得好的效果
框架

  • 对比学习预训练
  • 创建label分类器,用prompt engineering的方式将文本变成句子
  • 使用zero-shot进行推理
    摘要
  • 之前的数据集有固定的类,但是如果推理任务需要一个其他的类,这个类难道要新训练一个模型吗? 该方法可以通过zero-shot,可以通过对语义信息(而不依赖预训练的图片信息)的摘取,从而识别新出现的image,在任何新的类上进行下游任务的推理 采用的是对比学习的方法,采样了400million的pair

引入

  • 自回归和MLM的训练方式都是自监督的预训练,目标函数和下游任务无关,只是通过预训练得到一个泛化性能好的特征
  • 模型架构也和下游任务无关
  • 之前的工作,有的数据集不够大,有的模型不够好
    这篇文章的数据集使用400million的图像文本对,模型使用8个models进行对比,在30个CV的数据集上进行测试
    线性探测
  • 区分微调:线性探测完全冻结预训练参数,只是增加分类的线性头部
    使用线性探测(linear probe)的方式,发现对ImageNet的固定的1000个label,效果依然比SOTA的resnet等模型效果要好

方法

自然语言监督

优势

  • 只需要收集<图片,文本>对这种无监督的数据,无需标注
  • 监督信号是文本, 不需要学习imagenet的1-N这种gold label,输出自由度大
  • 学到的特征不是单单视觉特征,而是多模态特征,很容易做zero-shot学习
    创建大规模数据集
    现有工作
  • instagram数据集的图片,hashtag对,很多都是无效语义信息,并且数量不够,只有15million
    构建数据集
  • 自己构造400million的数据集,叫WebImageText数据集
    预训练的任务方式
    预测型任务
  • 如果给定一张图片,可以解释的语言就太多了
    对比学习
  • 只需要判断图片和文本是否配对


随着约束不断放宽,从预测到对比学习,性能提升4倍

伪代码

  • 损失函数的label是一个单位矩阵
  • loss每一行算一次,每一列算一次

细节

  • 图像和文本的encoder没有使用预训练的,而是从头训练
  • 展示层没有使用非线性层,而是线性层
  • 数据增强只使用了裁剪
  • 没有设置超参数temperature作用于softmax,而是把它作为一个可学习参数
    训练
  • 视觉模型选择resnet变体和ViT
  • 优化器Adam
  • 使用权重衰退抑制过拟合,提高泛化能力
  • 32个epochs
  • 3w个minibatch
  • 混合精度训练
    实验

Zero-shot

prompt-engineering

  • 目的是模拟预训练的文本格式,将lavel转换成句子
  • 实验结果


Prompt Engineering and Ensembling
现有问题
Polysemy(多意性)

  • 只用一个单词label来匹配图片,会有语义多意性
    Distribution Gap(分布偏差)
  • 预训练采用的文本通常是句子,因此微调为了模拟这种方式
    解决办法
    Prompt Engineering
  • 使用不同的提示词和句子
    研究发现对于OCR任务,如果对于想要识别的物体用双引号扩起来,往往效果更好
    Prompt Ensembling

  • 使用多次推理
  • 将结果综合起来考虑
    Few-shot
    LinearProbe-Clip
  • 冻住image的encoder,添加有标签的线性分类头

局限

  • 不擅长处理抽象任务:异常,数数,安全
  • 对某些特定数据集效果不好,例如MNIst,由于原始数据中不存在人工合成的数字照片,导致出现了distribution shift的情况
  • 不适合图生文的生成任务
  • 数据量太大,解决办法是可以用数据增强,self-supervision或者self-training的方式
  • 爬虫数据带有一些性别,肤色的偏见,公平性问题有待处理

优点

  • 打破固定标签范式,不需要做固定label类,而是用无监督的方式 > 收集数据更方便,训练更方便,推理更方便
  • 可以做zero-shot推理,泛化性能好
  • 应用范围广,多模态支持

Read more

DAMODEL丹摩|丹摩平台:AI时代的开发者福音

DAMODEL丹摩|丹摩平台:AI时代的开发者福音

本文仅对丹摩平台进行介绍,非广告。 文章目录 * 1. 丹摩平台简介 * 2. 平台特性 * 2. 1 超友好的用户体验 * 2. 2 资源丰富的GPU覆盖 * 2. 3 强大的性能 * 2. 4 超实惠的价格 * 2. 5 不同目的推荐的配置 * 2. 6 启动环境 * 3. 快速上手丹摩平台 * 3. 1 创建项目与资源实例 * 3. 2 储存选项 * 3. 3 数据上传与管理 * 3. 4 数据可视化 * 3. 5 模型构建与训练 * 3. 6 模型训练与评估 * 3. 7 技术支持与社区服务 * 4. 结语

AI可解释性:LIME解释

AI可解释性:LIME解释

AI可解释性:LIME解释 📝 本章学习目标:本章聚焦性能优化,帮助读者提升模型效率。通过本章学习,你将全面掌握"AI可解释性:LIME解释"这一核心主题。 一、引言:为什么这个话题如此重要 在人工智能快速发展的今天,AI可解释性:LIME解释已经成为每个AI从业者必须掌握的核心技能。Python作为AI开发的主流语言,其丰富的生态系统和简洁的语法使其成为机器学习和深度学习的首选工具。 1.1 背景与意义 💡 核心认知:Python在AI领域的统治地位并非偶然。其简洁的语法、丰富的库生态、活跃的社区支持,使其成为AI开发的不二之选。掌握Python AI技术栈,是进入AI行业的必经之路。 从NumPy的高效数组运算,到TensorFlow和PyTorch的深度学习框架,Python已经构建了完整的AI开发生态。据统计,超过90%的AI项目使用Python作为主要开发语言,AI岗位的招聘要求中Python几乎是标配。 1.2 本章结构概览 为了帮助读者系统性地掌握本章内容,我将从以下几个维度展开: 📊 概念解析 → 原理推导 → 代码实现 → 实战案例 → 最佳

【AI】open claw框架说明

“Open Claw框架”(业内常指代 AI Agent Execution Framework / Coding Agent架构)是连接大模型与实际系统操作的执行层框架。它不是单一产品,而是一类让AI从"对话"进化到"动手执行"的技术架构统称(涵盖OpenAI Codex CLI、Claude Code、Kimi Agent SDK等)。 以下是该框架的完整技术剖析: 一、框架定位:从LLM到Action的桥梁 传统LLM调用: Open Claw框架: 用户提问 → 模型回答 用户目标 → 理解 → 规划 → 执行 → 验证 → 迭代 ↑________↓ ↑________________________↓ 纯文本交互 物理世界/代码/系统操作 核心使命:将模型的认知能力转化为系统级操作能力(文件读写、

人工智能:预训练语言模型与BERT实战应用

人工智能:预训练语言模型与BERT实战应用

人工智能:预训练语言模型与BERT实战应用 1.1 本章学习目标与重点 💡 学习目标:掌握预训练语言模型的核心思想、BERT模型的架构原理,以及基于BERT的文本分类任务实战流程。 💡 学习重点:理解BERT的双向注意力机制与掩码语言模型预训练任务,学会使用Hugging Face Transformers库调用BERT模型并完成微调。 1.2 预训练语言模型的发展历程与核心思想 1.2.1 为什么需要预训练语言模型 💡 传统的自然语言处理模型(如LSTM+词嵌入)存在两个核心痛点:一是需要大量标注数据才能训练出高性能模型,二是模型对语言上下文的理解能力有限。 预训练语言模型的出现解决了这些问题。它的核心思路是先在大规模无标注文本语料上进行预训练,学习通用的语言知识和语义表示,再针对特定任务进行微调。这种“预训练+微调”的范式,极大降低了对标注数据的依赖,同时显著提升了模型在各类NLP任务上的性能。 预训练语言模型的发展可以分为三个阶段: 1. 单向语言模型阶段:以ELMo为代表,通过双向LSTM分别学习正向和反向的语言表示,再拼接得到词向量。但ELMo本质还