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

一天一个开源项目(第3篇):Superpowers - 让 AI 编程助手拥有超能力的工作流框架

一天一个开源项目(第3篇):Superpowers - 让 AI 编程助手拥有超能力的工作流框架

引言 “如果 AI 编程助手不只是写代码,而是能够思考、规划、执行、审查,那该多好?” 这是"一天一个开源项目"系列的第3篇文章。今天带你了解的项目是 Superpowers(GitHub)。 想象一下,当你告诉 AI 助手"我想做一个待办事项应用"时,它不会立即开始写代码,而是先停下来问:"你真正想要解决什么问题?"然后通过对话提炼需求、设计架构、制定计划,最后自主执行整个开发流程。这就是 Superpowers 带来的革命性体验。 为什么选择这个项目? * 🧠 智能工作流:从需求分析到代码实现的完整自动化流程 * 🎯 强制最佳实践:内置 TDD、YAGNI、DRY 等开发原则 * 🔧 技能系统:可组合的技能库,自动触发相应工作流 * 🌟 社区认可:

AskGo:免费使用顶级AI的宝藏网站(Gemini 3、GPT 5.1、DeepSeek)

AskGo:免费使用顶级AI的宝藏网站(Gemini 3、GPT 5.1、DeepSeek)

这几年,AI大模型可谓是极速迭代,在激烈的竞争下,国内的AI大模型能力也有了质的飞跃,如通义千问、豆包、GLM、Kimi等。 但其实国外的AI大模型目前依然呈领先趋势,只是很多人在国内无法使用。 那么今天给大家推荐一个能够同时使用国内外顶级AI的网站——AskGo! AskGo集成了ChatGPT、DeepSeek、Gemini、Claude、Grok等数十个顶尖大模型,覆盖聊天、搜索、深度阅读、创意写作、程序开发、专业翻译、图像生成及视频生成等全场景。无需再做选择题,你可以随时利用最前沿的AI技术解决复杂问题。 AskGo为您提供「一站式AI」综合解决方案: ✅ 国内直接使用数十款顶级AI。包含GPT 5.1、Gemini 3 pro、Claude 4.5、Grok 4.1、DeepSeek满血版、Nano Banana Pro、GPT-4o绘图、Sora2、Veo3.1等顶级模型。

让 clawdbot(openclaw) 变身超强米家管家:一套通用的 AI Agent 智能家居控制方案

【开源】让 clawdbot(openclaw) 变身超强米家管家:一套通用的 AI Agent 智能家居控制方案 💡 引言 还在用传统的手机 APP 一个个点选开关?或者受限于小爱同学相对固定的指令集?随着 AI Agent(人工智能代理)时代的到来,我们完全可以用更自然、更像“真人”的方式来掌管我们的智能家居。 最近我开发并整理了一套米家控制通用 AI 代理技能包,实测在 Claude (Agent Skills)、GitHub Copilot 以及 Cursor 等 AI 助理中运行非常完美。今天就把这套方案分享给大家。 🔥 核心亮点 1. 真正的自然语言理解:不用死记硬背指令,对 AI 说“我要睡觉了”,它会自动帮你关灯、拉窗帘、开启空气净化器睡眠模式。 2.

【CLI-Anything 】让所有软件都能被AI Agent原生调用

CLI-Anything 一、项目概述 CLI-Anything 是由香港大学数据科学实验室(HKUDS)开发的开源项目,核心目标是让所有软件都能被AI Agent原生调用。项目口号:“Today’s Software Serves Humans 👨‍💻. Tomorrow’s Users will be Agents 🤖” 项目指标数值Stars1.1kForks110Watchers7主要语言Python (99.7%)测试通过率100% (1,436 tests) 二、核心问题与解决方案 2.1 现有痛点 痛点具体表现AI无法使用真实工具现有方案要么是脆弱的UI自动化,要么是功能阉割的重新实现UI自动化不可靠截图、点击、RPA等方式容易崩溃Agent需要结构化数据缺乏标准化的输出格式定制集成成本高每个软件都需要单独开发接口原型与生产差距大缺乏真实软件验证 2.2 CLI-Anything的解决思路 核心洞察:CLI(命令行界面)是人类和AI Agent的通用接口 * ✅ 结构化且可组合 — 文本命令匹配LLM格式,可链式组合复杂工作流