CLIP对比学习损失,需要计算两次softmax标准化。同时,softmax的实现数值不稳定,通常在softmax计算之前减去最大输入,从而稳定化计算。与之不同,sigmoid损失属于对称的,只需要在图片-文本对上计算,不需要计算所有对的相似度用于标准化。若把该损失函数与CLIP相结合,那么模型被称为SigLIP。与LiT相结合,只需要利用4张TPUv4芯片,训练SigLiT模型两天可在ImageNet上实现84.5%的零样本准确率。同时,这种batch size与损失的解耦合,从而可使作者们研究正负样本比例的影响,即batch size对性能的影响。

对比学习

对于给定mini-batch的图片-文本对$\mathcal{B}=\{(I_1,T_1),(I_2,T_2),\ldots\}$,对比学习的目标是鼓励匹配对$(I_i,T_i)$彼此对齐,同时把不匹配的对$(I_i,T_{j\neq i})$的编码彼此远离。

语言图片预训练的Softmax损失

若利用softmax损失形式化该目标,那么视觉模型$f(\cdot)$和文本模型$g(\cdot)$的目标是最小化
$$
\begin{aligned}
-\frac{1}{2\vert\mathcal{B}\vert}\sum_{i=1}^{\vert\mathcal{B}\vert}\Biggl(\overbrace{log\frac{e^{t\mathbf{x}_i\cdot\mathbf{y}_i}}{\sum_{j=1}^{\vert\mathcal{B}\vert}e^{t\mathbf{x}_i\cdot\mathbf{y}_j}}}^{image\to text~softmax}+\overbrace{log\frac{e^{t\mathbf{x}_i\cdot\mathbf{y}_i}}{\sum_{j=1}^{\vert\mathcal{B}\vert}e^{t\mathbf{x}_j\cdot\mathbf{y}_i}}}^{text\to image~softmax}\Biggr)
\end{aligned}\tag{1}
$$
式(1)中$\mathbf{x}_i=\frac{f(I_i)}{\Vert f(I_i)\Vert_2}$和$\mathbf{y}_i=\frac{g(T_i)}{\Vert g(T_i)\Vert_2}$。由于softmax损失的非对称性,所以需要计算两次。

语言图片预训练的Sigmoid损失

基于Sigmoid的损失独立的处理每队图片-文本,高效的把学习问题转化为数据集中所有组合对的二分类问题。其中,正样本对为$(I_i,T_i)$和负样本对为$(I_i,T_{j\neq i})$。损失函数为
$$
\begin{aligned}
-\frac{1}{\mathcal{B}}\sum_{i=1}^{\vert\mathcal{B}\vert}\sum_{j=1}^{\vert\mathcal{B}\vert}\underbrace{log\frac{1}{1+e^{z_{ij}(-t\mathbf{x}_i\cdot \mathbf{y}_j+b)}}}_{\mathcal{L}_{ij}}
\end{aligned}\tag{2}
$$
式(2)中$z_{ij}$为图片-文本对标签,取值为$\{1,-1\}$。

由于在初始阶段,正负样本的极度不平衡,导致负样本占据大量的损失,从而导致初始优化步骤尝试修正该偏差。为了减轻这种现象,引入了可学习偏差项$b$,其作用与温度参数$t$相似。在初始化时,${t}'=log10$和$b=-10$,从而训练的初始阶段足够接近先验,减少大量的纠正。具体可见算法1.

高效"chunked"实现

由于sigmoid损失的计算与batch size解耦合,因此可改善对比损失的gather计算和内存复杂度的问题。若每个设备的batch size为$b=\frac{\vert\mathcal{B}\vert}{D}$,那么损失函数为
$$
\begin{aligned}
-\frac{1}{\vert\mathcal{B}\vert}\underbrace{\sum^{D}_{d_i=1}}_{\mathbf{A}:\forall device~d_i}\overbrace{\sum_{d_j=1}^D}^{\mathbf{B}:swap~negs~across~device}\overbrace{\underbrace{\sum_{i=bd_i}^{b(d_i+1)}}_{all~local~positives}\underbrace{\sum_{j=bd_j}^{b(d_j+1)}}_{negs~from~next~device}^{\mathbf{C}:per~device~loss}\mathcal{L}_{ij}}^{\mathbf{C}:per~device~loss}
\end{aligned}\tag{3}
$$
式(3)的原理可见图1所示。

图1 高效损失的实现

Batch-Size对性能的影响

通过研究发现,在batch-size小于16k时,sigmoid损失的性能优于softmax损失。同时,随着batch-size的增加,两者的性能差别逐渐消失,且性能趋于饱和。对于图片-语言预训练,batch-size为32k的性能最佳。

标签: none

版权: 本篇博文采用《CC BY-NC-ND 4.0》,转载必须注明作者和本文链接

添加新评论