基础学习(16) CLIP 和 SigLIP

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

CLIP 和 SigLIP 都是由 Google、OpenAI 等顶级团队提出的多模态预训练模型,它们的核心任务都是将图像和文本映射到同一个向量空间,从而实现“看图识字”或“用文字搜图”。
CLIP是OpenAI 在 2021 年发表的论文《Learning Transferable Visual Models From Natural Language Supervision》(从自然语言监督中学习可迁移的视觉模型)是多模态深度学习领域的开山之作 。它所提出的 CLIP(Contrastive Language-Image Pre-training) 模型,彻底改变了计算机视觉(CV)的研究范式 。

虽然它们的目的相同,但背后的损失函数(Loss Function)有本质区别,这也让 SigLIP 在效率和性能上更胜一筹。


1 CLIP

1.1 CLIP 想解决什么问题?

1.1.1 传统视觉模型的问题: 类别是固定的

CLIP 开篇就说, 当前SOTA 的 书觉熊通常训练成预测一组固定的, 预先定义好的类别. 这种监督形式会限制模型的通用行, 因为如果要识别新的 数据概念 ,那么 就要额外标注数据.

举个例子:
传统 ImageNet 分类器大概是:image → ResNet / ViT → 1000 类 softmax
它只能在固定类别里选:dog / cat / car / airplane / cup / …

如果你想让它识别:a robot gripper holding a red block
传统分类器没有这个类别,就很难直接做。

1.1.2 CLIP 的核心想法:用自然语言监督视觉模型

所以CLIP就用了一个朴素的想法: 直接从图像相关的原始文本中学习, 是一种更广泛的监督来源. CLIP 提出的预训练任务是: 预测哪段 caption 和 哪张image 匹配. 这个 任务在 4亿个互联网 image-text pairs 上训练.
所以 CLIP 任务不是识别 : 图片属于某个固定的类别,
而是: 判断image 和 ext 是否匹配
比如图片:
在这里插入图片描述
对应的 text 就是: text: “一只边境牧羊犬”

1.2 CLIP的数据空间: WIT(4 亿对)

CLIP的工作中 构建了一个新的数据集,包含 400 million image-text pairs,来自互联网公开来源;为了覆盖尽可能广的视觉概念,构建过程中使用了 50 万个 query,并且每个 query 最多包含约 20,000 个 image-text pairs;论文把这个数据集称为 WIT / WebImageText。

再强调下:CLIP 不是靠人工标注的固定类别训练,而是靠互联网上图片旁边自然存在的文本训练。
举个例子:
ImageNet: 人规定类别 → 图片对应类别 id
CLIP: 互联网上的图文对 → 图片和自然语言描述对齐
所以CLIP 庚容易学到下面这种更开放的词汇

red cup
wooden table
a dog running on grass
a person holding a phone
a robot arm

1.3 CLIP的 模型结构: 两个 encoder

在这里插入图片描述
这张图很经典: 左边(1) 是训练 (2) + (3) 组成了 推理
结构很清晰, 其中要注意的是(1)的 这个矩阵

1.3.1 对照训练

假设一个 batch 有 N 对图文:
(image_1, text_1)
(image_2, text_2)

(image_N, text_N)
在这里插入图片描述
图片encoder 和 text encoder 后 会将将 一把 batch 内的 图像做两两 相似度, 就得到下面这张表

text_1text_2text_3text_N
image_1
image_1
image_1
image_N

对角线是正样本:image_i ↔ text_i
非对角线是负样本:image_i ↔ text_j, j ≠ i

论文明确说,给定一个 batch,里面有 N 对真实的 image-text pair。CLIP 会把这 N 张图和 N 段文本两两组合,得到 N × N 个候选配对。其中只有对角线上的 N 个配对是真实配对,其余 N² − N 个都是错误配对。
训练时,CLIP 希望真实配对的图文 embedding 余弦相似度更高,错误配对的相似度更低。
最后,在这个 N × N 相似度矩阵上优化一个双向的 cross-entropy loss,也就是论文说的 symmetric cross entropy loss。

这种双塔流程图作者也给出了为代码
在这里插入图片描述
内容很简单,不赘述

1.3.2 symmetric cross entropy loss

有个细节作者解释了 info NCE 和 cross entropy, 其实我认为是一回事, 不必在意细节称呼. 在文中, 它专门用于自监督学习(如 SimCLR 变体、CLIP),且 其对称性是为了消除单向对比带来的表征偏置(Bias)
在这里插入图片描述
图找文本的 loss (axis = 0 )

L I → T = − 1 N ∑ i = 0 N − 1 log ⁡ exp ⁡ ( Logits i , i ) ∑ j = 0 N − 1 exp ⁡ ( Logits i , j ) {L}_{I \to T} = -\frac{1}{N} \sum_{i=0}^{N-1} \log \frac{\exp(\text{Logits}_{i,i})}{\sum_{j=0}^{N-1} \exp(\text{Logits}_{i,j})} LIT=N1i=0N1logj=0N1exp(Logitsi,j)exp(Logitsi,i)

文本找图的 loss (axis = 1 )
L T → I = − 1 N ∑ j = 0 N − 1 log ⁡ exp ⁡ ( Logits j , j ) ∑ i = 0 N − 1 exp ⁡ ( Logits i , j ) {L}_{T \to I} = -\frac{1}{N} \sum_{j=0}^{N-1} \log \frac{\exp(\text{Logits}_{j,j})}{\sum_{i=0}^{N-1} \exp(\text{Logits}_{i,j})} LTI=N1j=0N1logi=0N1exp(Logitsi,j)exp(Logitsj,j)

最终总 Loss 取两者算术平均: L CLIP = L I → T + L T → I 2 \mathcal{L}_{\text{CLIP}} = \frac{\mathcal{L}_{I \to T} + \mathcal{L}_{T \to I}}{2} LCLIP=2LIT+LTI

1.3.3 推理

在这里插入图片描述
CLIP 预训练时就是判断 image 和 text snippet 是否配对;
做 zero-shot classification 时,直接复用这个能力:对每个数据集,使用所有类别名作为潜在 text pairings,然后预测最可能的 image-text pair。
具体做法是:
(1) 先计算 image embedding 和所有候选文本的 text embeddings,
(2) 再计算 cosine similarity,乘以 temperature,并通过 softmax 得到类别概率。

论文还指出,这个 prediction layer 可以看作一个 multinomial logistic regression classifier:输入和权重都 L2-normalized,无 bias,有 temperature scaling

用流程图举例:
在这里插入图片描述

1.3.4 prompt engineering 为什么重要

(1) 论文指出,如果只把类别名提供给 text encoder,模型无法区分词义。例如 ImageNet 里有 construction crane 和会飞的 craneOxford-IIIT Pet 里 boxer 是狗的品种,但没有上下文时也可能被理解为拳击运动员`。
所以直接用:“boxer”
不如用:“a photo of a boxer, a type of pet”

(2) 论文说补充: 预训练数据中图片配套文本很少只是一个单词,通常是描述图片的完整句子。为了缩小这种训练-测试分布差异,论文发现默认使用:“A photo of a {label}.”
通常比只用 label text 更好;在 ImageNet 上,仅这个 prompt 就提升了 1.3% accuracy。

(3) 论文还实验了用多个 prompt 组成 ensemble,例如:
“A photo of a big {label}.”
“A photo of a small {label}.”
它们不是在概率空间 ensemble,而是在 embedding 空间平均,因此对大规模预测来说计算成本可以被摊销。论文报告,在 ImageNet 上 ensemble 80 个 context prompts 比单个默认 prompt 又提升 3.5%;prompt engineering + ensembling 总体大约提升 5 个点。

2 SigLIP

2.1 SigLIP 首先不是推翻 CLIP

SigLIP 依然是双向交叉熵, 依然是 image encoder + text encoder + 图文 embedding 对齐
但是 CLIP 需要 通过下面的矩阵 在 x 方向(image-> text) 和 y 方向(text->image) 做 softmax

text_1text_2text_3text_N
image_1
image_1
image_1
image_N

2.2 CLIP softmax 的痛点

CLIP 的 loss 不是单样本独立的,而是 batch 内图文两两对比。
假设 global batch 里有 N 对 image-text pair:
(image_1, text_1)
(image_2, text_2)

(image_N, text_N)

CLIP 要构造一个:
N × N similarity matrix
所有 image embedding × 所有 text embedding如果 global batch = 32768,那么相似度矩阵就是:32768 × 32768这非常大。(一个 device上也许就 几十个 batch , 可能 几百个类别)

CLIP 的 forward 可以分开算:
GPU 0 算自己的 image/text embedding
GPU 1 算自己的 image/text embedding

GPU N 算自己的 image/text embedding
但是算 loss 的时候,每张图需要和 global batch 里的所有文本 比较。
论文中的分图a(下面图的 (a)) 就说的很明确

在这里插入图片描述
也就是说
CLIP 的 forward 可以分开算:
GPU 0 算自己的 image/text embedding
GPU 1 算自己的 image/text embedding

但是算 loss 的时候,每张图需要和 global batch 里的所有文本 比较。

2.3 SigLIP 的改进

作者的思路:
SigLIP 把 CLIP 的 softmax 多分类问题 改成了 pairwise binary classification 问题。
也就是说,CLIP 问的是:
给 image_i,在 N 个 text 中哪个是正确的?

SigLIP 问的是:
这个 image-text pair 匹配吗?回答 ‘是’ 或者 ‘不是’

因此就有: 对于每一个 pair:(image_i, text_j)
SigLIP 都给一个二分类标签:
如果 i == j:正样本,label = +1
如果 i != j:负样本,label = -1

SigLIP 论文明确说,sigmoid-based loss(对于分类问题, 就可以用 sigmoid) 把问题转成所有 pair combinations 上的标准 binary classification:匹配 pair 是正样本,不匹配 pair 是负样本。

作者的算法
(其实作者的思路很简单, 就是踏马的数学公式很玄呼)
在这里插入图片描述
trick 点: labels = 2 * eye(n) - ones(n) — 构建对角阵, +1 让 正样本logits 越大越好, -1 让副样本 logits 越小越好

作者的优化
SigLIP 比 CLIP 多了一个很重要的 learnable bias:b
logits 是:similarity * temperature + bias

论文解释原因是:一个 batch 里负样本数量远多于正样本。对于 batch size N有:
正样本数量:N
负样本数量:N² - N

比如 N = 16k 时,正样本是 16k,但负样本是大约 268M。论文说,在初始化时,这种大量负样本带来的不平衡会主导 loss,导致优化初期出现很大的 correction;因此它引入 learnable bias term b,并把 b 初始化为 -10,temperature 初始化为 log 10。

这个点很关键:
SigLIP 不是简单地把 softmax 换成 sigmoid 就完了;
它还加了 bias 来处理正负样本极度不平衡的问题。

在这里插入图片描述
作者的这个图就说明了所有 分类的 loss 怎么算完的(作者 以3个 device 举例): 一个 device只能计算 4 * 4 /(12 * 12) 的数据量
( b ) 第一次了可能对角分块的, 那么就是 3 ∗ ( 4 ∗ 4 / ( 12 ∗ 12 ) ) 3 * (4 * 4 /(12 * 12)) 3(44/(1212))
( c ) 进行了 一次swap后, 没计算的 有了一次计算(但还没计算完), 此时 每个 有算了剩下的
( d ) 再进行了 一次 swap 后, 把剩余的也算了, 好,现在 可以得到 全局的 分类结果, 而不是 要取每个 设备的上的 softmax 结果.

PS:
主要是因为它训练效率高、图文对齐效果强、公开模型性能好。
动作生成仍然要靠 OpenVLA、π0、ACT、Diffusion Policy 这类 policy / action decoder。

2.4 改成 sigmoid之后各种好处

(1) 肉眼可见到的就是不需要全局通信, 就是 那个soft max 的全局归一化不要了
(2) 更大 batch : 论文给了一个具体例子:在 4 个 TPU-v4 chips 上,Base SigLIP 可以放 batch size 4096,而对应的 CLIP model 只能放 2048

(3)在 SigLiT 设置下,当 batch size 小于 16k 时,sigmoid loss 比 softmax loss 好很多;batch size 增大后,softmax 会追上来。

(4)论文 Figure 7 的结论是:随着 corruption 增强,sigmoid loss 训练的模型比 softmax baseline 更能保持优势


总结

1 双向交叉熵
2 CLIP 基本思路
3 SigLIP 的思路 和 优点

重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!
重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!
内容概要:本文研究基于模型预测算法的混合储能微电网双层能量管理系统,提出一种结合优化调度与实时控制的能量管理策略。通过构建上层长期优化与下层实时调整相结合的双层协同架构,采用模型预测控制(MPC)算法对微电网中的可再生能源出力、储能系统充放电行为及负荷需求进行多时间尺度的协同优化,有效提升系统运行的经济性、稳定性能源利用效率。研究详细阐述了系统建模方法、运行约束条件设定、多目标优化函数设计以及Matlab仿真代码的具体实现流程,通过仿真验证了该方法在降低综合运行成本、平抑功率波动、增强系统灵活性应对不确定性方面的优越性能; 适合人群:具备电力系统、自动化、电气工程或能源系统等相关专业背景,熟悉Matlab/Simulink仿真环境,从事微电网、综合能源系统、智能电网优化调度等方向研究的研究生、科研人员及工程技术人员; 使用场景及目标:①用于微电网能量管理系统的设计与教学仿真;②为含多种储能形式的综合能源系统提供优化调度方案的技术参考;③支撑科研课题、学术论文撰写及工程项目中的算法验证与性能评估; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点理解双层架构的设计逻辑、MPC滚动优化机制及约束处理技巧,可进一步拓展应用于含电动汽车、氢能储能或多元负荷的复杂微网系统中进行二次开发与创新研究。
内容概要:本文围绕三相逆变器模型仿真及软开关技术展开研究,基于Simulink平台构建了完整的系统仿真模型,深入分析了三相逆变器的拓扑结构、工作原理与动态响应特性。研究重点聚焦于软开关技术(如零电压开关ZVS、零电流开关ZCS)在逆变器中的应用,通过仿真验证其在降低开关损耗、提高转换效率、减小电磁干扰等方面的显著优势。文章详细阐述了软开关的实现条件与控制策略设计,结合LCL滤波器优化与PWM调制技术,提升了系统整体性能。通过对电压、电流波形及功率因数等关键指标的仿真分析,验证了所提出方案的有效性与可行性,为高性能逆变器的设计与优化提供了理论依据技术支撑。; 适合人群:具备电力电子、电气工程及其自动化等相关专业背景,熟悉Simulink仿真环境,从事新能源发电、电力变换器设计、微电网控制或电能质量治理等领域研究的科研人员、工程技术人员及研究生。; 使用场景及目标:①用于高校电力电子课程教学与实验,辅助学生理解逆变器工作机理及软开关技术原理;②为工业界高效率逆变电源、光伏并网逆变器、储能变流器等产品的研发提供技术参考;③支持相关领域科研人员开展新型拓扑与先进控制算法的仿真验证与学术论文撰写。; 阅读建议:建议读者结合文中所述Simulink模型进行动手实践,重点关注软开关触发时序、谐振参数设计与系统稳定性之间的关系,同时可延伸学习死区效应补偿、锁相环控制、孤岛检测等相关技术以构建完整的逆变系统知识体系。
内容概要:本文提出了一种基于粒子群优化算法(PSO)优化长短期记忆网络(LSTM)的电力负荷预测方法,并配套提供了完整的Python代码实现。该方法通过PSO算法自动搜索LSTM模型的关键超参数(如隐层节点数、学习率、迭代次数等),以克服传统手动调参效率低、易陷入局部最优的问题,从而提升模型在电力负荷预测任务中的预测精度与泛化能力。文中系统阐述了PSO-LSTM混合模型的架构设计、数据预处理流程、参数优化机制、模型训练与评估方法,重点解决了电力负荷数据所具有的强时序性、非线性及周期性波动等挑战,适用于短期与中期负荷预测场景。; 适合人群:具备一定Python编程基础机器学习理论知识,从事电力系统分析、能源管理、智能电网或相关领域研究的研发人员、工程技术人员及高校研究生。; 使用场景及目标:①应用于电网调度、电力市场运营等环节,提升负荷预测准确性,保障供电可靠性与经济性;②为综合能源系统、需求侧响应、储能优化配置等提供高精度的负荷输入数据;③作为深度学习与智能优化算法融合的典型案例,为解决其他复杂时序预测问题(如风电、光伏出力预测)提供技术参考与实现范式。; 阅读建议:建议读者结合所提供的代码进行动手实践,深入理解PSO算法如何引导LSTM超参数寻优的全过程,重点关注适应度函数设计、参数编码方式与模型集成逻辑,并可在不同地区、不同时间粒度的负荷数据集上进行迁移验证,以全面掌握该混合模型的调优策略与适用边界。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值