本文介绍的是斯坦福大学在ICLR 2022发表的一篇多模态模型分析文章。这篇文章研究的是一个多模态对比学习模型中常见的问题:为什么不同模态的embedding在表征空间中形成不同的簇,以及这种gap对最终预训练多模态模型在下游任务中效果的影响。文中分析的一些现象是我们在实验中经常遇到的,例如为什么深度学习模型输出的embedding对的cosine往往是大于0的数,并且做了很多有趣的实验进行了分析和验证。
文中将一些经典的多模态对比学习模型中两个模态的embedding,通过降维等方法映射到二维坐标系中。从下图可以看出,不论是哪种模型,两个模态的表征都会出现gap(形成独立的簇)。并且无论是预训练好的模型,还是随机初始化的模型,都存在这个问题。
那么为什么会出现这种现象呢?文中从两个角度进行了分析,一个是深度学习模型本身的cone effect会带来gap,另一个是对比学习损失倾向于保持这种gap。
1 Core Effect的影响
Core effect在文中的定义可以理解为,使用深度学习模型得到的embedding,会分布在一个狭小的锥形空间里,不论模型的参数是训练好的还是随机的。同时,不同的随机初始化最终产出的embedding会分布在不同的锥形区域。而多模态模型中,一般是两个模态的模型分别随机初始化,这就导致两个模态会随机生成两个锥形区域,从而导致不同模态之间的表示空间存在gap。下面详细介绍一下文中的分析过程。
文中通过模型产出的任意两个embedding的cosine相似度分布来验证这个问题。从模型中获取5000个embedding,然后计算两两embedding的cosine相似度,求出平均cosine和最小cosine。通过下图可以发现,各类模型的cosine值基本都是偏高的,并且很少有负数的cosine值。这表明,模型输出的embedding并不是散落在整个空间中的,而是形成一个从坐标远点向外扩展的狭小锥形中,才会出现cosine取值分布偏大的现象。
那么为什么深度学习模型会出现cone effect现象呢?文中对比了不同激活函数、不同网络层数的模型形成的cosine均值,发现层数越深cosine均值越高,并且当没有激活函数的时候就不会出现cosine均值大于0的情况(如下图所示)。这说明激活函数和网络层数的加深是cone effect现象形成的主要原因。
接下来,文中又对比了不同随机初始化对形成的锥形区域的影响。文中对多个模型进行了25次随机初始化,并绘制了每次随机初始化的embedding区域。可以看到每次随机初始化的锥形区域都是不同的,这说明不同的随机初始化会导致生成的embedding分布在不同的锥形区域。
结合以上的信息就可以推倒出多模态模型两个模态表征存在gap的原因:多模态对比学习一般是双塔结构,一个模态一个塔,每个塔进行随机参数初始化后,导致每个塔有一个自己的锥形区域,并且初始化的随机性导致两个塔的锥形区域不同。
2 对比学习loss的影响
第二个造成多模态表征存在gap的原因是对比学习loss。文中通过一些实验验证了对比学习loss会倾向于保持这种模态之间的gap。为了分析这个问题,文中设计了embedding shift实验和构造mismatch数据实验。
在embedding shift实验中,会在一个训练好的CLIP模型基础上,计算两个模态embedding质心之间的距离。并且不断的让两个模态的embedding进行靠近,再计算不同temperature参数下的对比学习loss。实验结果如下图,CLIP模型训练好后,两个模态embedding的距离为0.82,随着距离的拉近或远离,基本都会带来loss的上升。而当temperature=1时,最小loss则出现在两个模态embedding距离更近的位置,这表明对比学习损失对gap的影响是和temperature相关的。
在构造mismatch数据实验中,作者会构造一些mismatch数据(如下图中I0和T0是正样本,I1和T1是正样本,但是I0和T1更接近,I1和T0更接近),然后让文本表示逐渐向图像表示靠近。并绘制不同temperature下的loss曲线,可以看到和之前类似的效果,距离为0时loss最大,并且temperature为1时这种现象并不明显。同时,如果删除mismatch的数据,这个现象就消失了,这说明mismatch数据是导致对比学习loss倾向于保持多模态表征gap的关键因素。
3 Gap和模型效果
那么多模态表征的gap对模型效果有什么影响呢?首先作者对比了预训练CLIP在zero-shot任务的效果。下表表示的是如何通过增大或缩小多模态表征gap来提升模型的效果。从下表可以看出,在各类数据集下,通过增大或减小多模态表征的gap,是可以对下游任务产生比较显著的效果影响的。
4 总结
这篇文章从一个多模态表征存在gap的现象出发,详细分析了这个现象产生的原因,设计了丰富的实验进行分析和验证,并最终得到如何通过修改表征gap影响模型效果的方法。此外,文中的附录还有大量的补充实验,感兴趣的同学可以进一步深入阅读。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !