[论文精读]BLIP-多任务结构统一与数据筛选策略

2022年多模态领域的一篇很棒的工作,由ALBEF原班人马打造,结合了ALBEF和VLMO的共同优点,提出了统一结构的多阶段多模态模型,此外提出了一套可行的基于caption-filter的数据筛选self-training策略,值得一读。

论文链接:https://arxiv.org/abs/2201.12086

主要参考b站:多模态论文串讲·下【论文精读·49】

BLIP的贡献值主要有两个

  1. 模型层面,提出了encoder-decder的多模态结构,弥补了encoder-based的结构,例如CLIP这种做不了生成任务,Fusion-encoder模型结构例如ALBEF、VLMo没办法直接用来做retrieval的问题;
  2. 数据层面,提出了基于image-caption和image-text-filter策略的数据过滤方法,该操作显著提升了模型的性能,这种方式可以当做一个通用的数据筛选策略。

模型

在ALBEF,CLIP这种encoder-only的多模结构,能很好的用在IR任务上,但是没办法用来做生成任务;对于encoder-decoder结构,可以用来做生成任务,但是模型又太大,再者结合VLMO提出来的MHA共享参数FFN做MMOE的观点,结合ALBEF,VLMO,和encoder-decoder结构,做一个统一的模型是可行的。

从模型结构可以看出

  1. 整个模型中相同颜色的模块共享参数,这里明显借鉴了VLMo的思路,可以看到,相比encoder-only的模型只多了一个casual-self-attention模块;
  2. 蓝色框内可以看成和ALBEF是一样的结构,在交互之前使用ITC任务进行align,在交互之后使用ITM任务进行多模交互;
  3. 整个模型包含3个encoder和1个decoder
  4. 为了适配生成任务,将使用的是LM任务,给定前面的词,预测后面的词,和GPT的做法一致。

数据

预训练的数据一般是图文对的形式,并且基本是从网上爬取来的,这个数据就有很大的噪声,在ALBEF中,使用的基于动量蒸馏的方式进行标签修正,在BLIP中,除了延续ALBEF中的策略外,又离线做了一个数据筛选策略。简单来说训练过程是这样的。

  1. 使用离线抓取的数据和ALBEF的训练trick来训练blip模型,得到了几个encoder模型

  2. 生成caption和filter模型

    • 使用预训练之后的image-grounded text encoder在coco数据上进行finetune,得到具有图文匹配判别能力的filter模型

    • 使用预训练之后的image-grounded text decoder在coco数据上进行finetune,得到具有图片描述生成能力的caption模型

    • caption和filter模型的初始参数一致,finetune是单独进行的

  3. 数据处理流程

    • 对于有caption的数据,使用filter模型判断caption与图片是否match,不match的删掉,数据删除的过程;
    • 对于没有caption的数据,使用caption模型生成caption信息,然后再用filter模型判断,不满足的删掉,满足的留下,数据增加的过程;
  4. 经过数据筛选,得到数量更多,质量更好的图文对数据

  5. 将新的数据重新拿去训练BLIP模型,self-training的思路

数据处理流程是独立的,离线的,这个方法完全可以移到其他领域中,用来数据筛选。

在论文中,作者给出了caption的效果,从例子中能看出来效果出乎意料的好,生产出来的caption有时候比原始的caption信息更好,通常来讲更高质量的数据对应着更好的性能。

数据策略是否有效呢?从论文中给出来的指标看

  1. Caption-filter策略一共能带来两个点左右的提升
  2. Caption策略相比filter策略带来的提升更多一些,这个是符合直觉的,一定程度的noisy是不影响模型性能的,而caption提升了训练数据量,并且提高了数据的多样性。

赏杯咖啡!