NeurIPS 2023 | 大模型时代自监督预训练的隐性长尾偏见

2023-11-01 13:42 216 阅读 ID:1573
将门
将门

本次文章主要尝试解决我做长尾问题期间的一个始终萦绕在我脑袋里的疑虑,我觉得长尾领域最大的坎在于明明在研究一个普世的问题,但是学术界把问题模型简化后做出来的算法却只能在精心设计的实验数据集上生效。这次和学弟合作的这篇工作得益于模型自监督预训练带来的优秀OOD效果和我们提出的GLA算法对预训练模型在下游任务上偏见的矫正,我们第一次基于长尾问题本身的特性设计出了一个通用的提点算法,不仅能在狭义的传统LT数据集上生效,也能用于其他非LT设定的任务,比如我们的算法可以提升模型在原始的ImageNet测试集的效果,还有一些few-shot等其他任务。

论文名称: 

Generalized Logit Adjustment: Calibrating Fine-tuned Models by Removing Label Bias in Foundation Models 

论文链接: 

https://arxiv.org/abs/2310.08106 

开源代码: 

https://github.com/BeierZhu/GLA

一、大模型时代的长尾分布研究该何去何从

在当下这个大模型群星闪耀的时代,想必过去两三年中关注长尾任务的同学都面临着何去何从的困惑。长尾问题固然普世,除了狭义的类间长尾还有广义长尾问题[1],但过去几年学术界中研究的主流长尾算法却并不同样普世。 以最常见的图像长尾分类任务为例,要想大多数长尾分类算法能够生效,首先训练过程中的长尾分布就必须是显性的,要通过统计具体的类别分布来实现去偏。而大模型成功的根基,却恰恰也给传统长尾算法关上了大门,因为大模型所依赖的自监督预训练无法为下游任务提供一个显性的长尾分布去矫正。

以大语言模型(如GPT等)和多模态模型(如CLIP等)为例,即便近来有一些论文尝试去研究大模型在下游任务微调时的下游数据偏见问题,但却并没有工作能够解决大模型预训练阶段本身的数据不均衡问题。但我们都知道在海量的预训练数据之下,数据的长尾分布是必然的。之所以鲜有人尝试去研究自监督预训练阶段本身的数据偏见,是因为要想在大模型的自监督预训练中研究长尾问题存在三大挑战:

其一,原始文本数据的歧义性导致无法精准的统计类别的分布。比如以CLIP为例,其预训练目标是将图片与文本配对,而下游的视觉端backbone可以用作图像分类任务,但此时如果下游是一个{human, non-human}的二分类,我们并不能直接用human关键词的出现与否作为预训练数据分布的统计标准,比如包含a worker的图片虽然没有human这个词但也应该被统计为human,因此文本天然的歧义和多意会给长尾分布研究带来极大的困难和偏差。

其二,预训练任务与下游任务的弱耦合导致无法明确数据分布的统计方式。 大模型的强大之处在于可以通过一个简单有效的预训练支撑花样百出的下游任务,然而这却大大增加了研究预训练数据偏见对下游任务影响的难度。比如GPT等大语言模型的预训练是预测下一个或是缺失的Token,虽然我们可以统计Token的词频,但如果我们的下游任务是对文本的语气进行三分类{positive, neutral, negative}。此时单纯统计positive,neutral和negative这三个词在预训练中的词频显然并不完全合适,因为这几个词出现的场景并非都是语气分类,要想精准统计不仅困难,其具体的下游任务更是无法在预训练阶段知晓的(下游任务太多了,模型提供者并不能知道模型被其他人拿到后会如何使用)。

最后,也是最重要的,预训练数据的保密性也是不得不考虑的问题,出于用户隐私和商业机密的考量,一个开源公司即便开放了大模型参数往往也不会开放预训练数据,这使得研究预训练数据的分布变得几乎不可能。这也是目前鲜有该方面研究的主要原因之一。

而在我们最新的工作中,我们不仅实现了在下游任务直接估计预训练的偏见,更是完全规避了对预训练数据本身的访问,使得我们可以在只有模型权重没有预训练数据的情况下实现对自监督预训练模型的去偏。

二、自监督预训练引入的数据偏见

          图一:自监督预训练阶段引入的长尾数据偏见(可从zero-shot分类效果看出其对模型效果的影响)

目前大多数预训练模型鲁棒性相关的研究中,他们往往会把自监督预训练模型本身当作是一个无偏的基准,而强调模型在下游任务上微调时会引入下游任务的偏见,因此需要对下游任务去偏的同时尽可能保留预训练模型的鲁棒性,其中代表作有利用zero-shot模型和微调模型Ensemble的WiSE-FT[2]和利用梯度约束的ProGrad[3]。但正如我上文说的,预训练数据的偏见同样无法忽视,这导致上述模型从理论上便不可能是最优的。

事实上早在两年前,长尾问题领域便有人尝试利用自监督学习来提取特征,并认为无需显性标注的自监督loss可以大大缓解模型的长尾偏见问题。于是在我们的工作开始前,我们首先便要推倒这个假设。自监督预训练并不是一味万能药。如图一所示,我们将CLIP-ViT/B16预训练模型在下游的ImageNet测试集上的分类效果按我们估计的类别分布(可视化中进行了平滑处理)进行排序,我们发现自监督预训练模型同样有着明显的长尾偏见(zero-shot结果),尾部类别的准确率会有明显的下滑。尤其是当我们将zero-shot结果和微调结果(fine-tune)对比时,我们就会看到他们的头部类别效果相当,而尾部类别zero-shot模型明显更差,也就是说自监督预训练模型的长尾问题其实很严重,模型在下游任务上微调时其实类似于在一个更均衡的数据集上微调去提升尾部效果。至于为什么之前的论文认为预训练模型鲁棒性更高,这就需要了解我之前一篇工作中提及的类间长尾和类内长尾两个概念的区别了,我认为预训练的鲁棒性更多的体现在类内分布的鲁棒性上,本文在这暂不展开,有兴趣的同学可以看我另一篇博客([百邪饭团:ECCV 2022]计算机视觉中的长尾分布问题还值得做吗[4])。

此时单纯zero-shot和fine-tune的Ensemble模型WiSE-FT更像一个Trade-off,用尾部的损失去提升头部性能。而我们提出的Generalized Logit Adjustment (GLA)通过在Ensemble之前先消除预训练zero-shot模型的长尾偏见来有效的实现了头尾全分布的同时提升。而我们之所以叫Generalized Logit Adjustment是为了致敬在经典的狭义长尾分布任务上的一个非常优雅且有效的算法Logit Adjustment[5]。之所以无法简单的套用到自监督预训练上,其实最重要的一个难点就是我上面说到的预训练分布估计了。而仅利用模型参数不获取预训练数据就能在下游任务上估计预训练阶段数据偏见的算法也是我们文章的主要贡献之一。

三、预训练数据中下游任务的类别分布估计

在本文中,我们主要以CLIP为引子,讨论以图文对比学习作为自监督预训练的多模态模型(主要是视觉端),不过本文提出的算法也可以推广至以文本自监督预训练为基础的大语言模型在下游文本分类任务上的偏见估计问题。

在给出本文提供的预训练阶段数据偏见估计算法之前,我们需要回顾一篇我非常推崇的Google的Logit Adjustment[5]长尾算法。在不考虑类内不均衡OOD样本的情况下,Logit Adjustment[5]研究已经从理论上提供了非常优雅的最优解:

           图二:以Logit Adjustment推导结果的理论最优解为前提,反向通过一个均衡子集去估计偏置项。

基于上述预训练偏见估计的算法,我们不仅不需要获取预训练数据,更不需要预训练过程是严格的传统分类loss,任意分类模型都可以仅仅通过权重本身在一个均衡子集上估算出其训练阶段积累的偏见。 为了更好的体现我们的去偏效果,我们也可视化了我们的去偏算法在CLIP zero-shot模型的去偏效果,详见图三。

                                       图三:模型在CLIP模型的zero-shot输出结果上的去偏效果。

四、通用Logit矫正算法(GLA)应用于任意下游数据分布

五、GLA算法的最终效果

值得注意的是,GLA算法据我所知是首个能“真正体现”长尾问题广泛性的算法,该算法以长尾问题为切入点,但最后得到的模型不仅在长尾分类任务上有提升,更在经典分类任务与数据上,在few-shot任务上等都有提升。是第一个做到利用长尾算法提升传统分类任务的工作。

经典分类场景(非Long-Tailed,Few-shot等细分场景):在传统分类设定上,我们利用CLIP ViT-B/32和ViT-B/16两个模型,在ImageNet,CIFAR100,Stanford Cars和SUN397上都取得了显著的提升:

GLA在ImageNet上提升的详细分析图表(根据估计分布将类别划分为Head, Med, Tail,注意这里不是强行设置的LT设定,而是真实数据据分布);GLA在多个基于ImageNet的鲁棒性测试子集上的效果,我们基本与WiSE-FT持平且互有胜负,证明我们的提升不是牺牲鲁棒性的过拟合。

GLA在CLIP的11个few-shot测试数据上的效果:

GLA在Few-shot设定中的分布鲁棒性,以16shot为例;对比单纯的Ensemble,我们可以发现GLA模型基本不会出现负提升的问题,这是因为我们对两个模型都进行了去偏,真正的做到了各取所长:

GLA在传统Long-Tail设定数据集上提升:

六、总结

研究长尾问题对各个任务的具体影响可以说是贯穿我的博士生涯,从我研究开始该领域内便有个共识就是长尾问题是普世的,是任何实际问题都绕不开的坎。但奈何长尾问题却又无比复杂,不仅有类间长尾还有类内属性长尾[4],因此学术界不得不对任务做了很多简化,但这也导致了长尾问题明明是个普世的问题,该领域的算法却只能在精心设计的实验室环境下生效。而如今大模型时代借助于预训练模型本身对于OOD的鲁棒性,以及我们提出的预训练偏见估计算法对于分布的矫正,我们终于拼上了最后一块拼图,第一次提出一个基于分布矫正和Ensemble的真正通用的长尾算法,可以在实际问题实际应用中提升各种任务的表现,而不仅限于精心设计的长尾数据集。我们也希望这个研究可以为大模型时代的研究者打开一扇研究预训练分布偏见的大门,而不用因为无法访问预训练数据在大模型偏见研究的门口束手无策。希望这篇文章没有浪费大家的时间,能给大家以启发。

参考资料

[1] https://arxiv.org/abs/2207.09504[2] https://arxiv.org/abs/2109.01903[3] https://arxiv.org/abs/2205.14865[4]https://zhuanlan.zhihu.com/p/548735583[5]https://arxiv.org/abs/2007.07314

作者:汤凯华

来源:知乎 

https://zhuanlan.zhihu.com/p/658123712

Illustration by IconScout From WOOBRO LTD

免责声明:作者保留权利,不代表本站立场。如想了解更多和作者有关的信息可以查看页面右侧作者信息卡片。
反馈
to-top--btn