这篇文章给大家介绍一下阿里发表的多模态大模型工作mPLUG-Owl,共2篇文章,建立在前序图像表征对齐预训练大语言模型的思路,提出了不同的参数训练方式、多模态解耦映射等优化方法,在多项任务取得了SOTA效果。
相关论文:
mPLUG-Owl Language Models with Multimodality
mPLUG-Owl2: Revolutionizing Multi-modal Large Language Model with Modality Collaboration
核心思路
多模态大模型希望构建一个能同时处理文本、图像等不同模态信息的数据,解决复杂的图文推理等多模态任务。在NLP中的大语言模型逐渐兴起后,多模态模型的一个主要构建思路为: 以预训练的大语言模型LLM为基座,通过ViT等Vision Encoder将图像映射成表征,和文本token embedding拼接到一起输入大模型,结合预训练、Instruction Tuning等方法进行训练 。
这种多模态大模型的建模方法,经过2年的研究,逐渐完善起来。阿里的mPLUG-Owl工作,就建立在这个思路基础之上。
基础模型结构
第一版本的mPLUG-Owl核心结构如下图,主要包括 一个预训练的LLM、一个图像编码器、一个视觉抽象器 3个部分。
其中的核心是,如何将图像信息进行比较好的处理,和LLM的表征空间对齐。对于图像信息,对图像分patch后,采用预训练ViT进行处理,生成每个patch的embedding。由于图像中包含背景等噪声信息,且维度较高,直接将原始图像信息输入语言模型难以学习且复杂度高。因此, 文中引入了Visual Abstractor模块 ,对基础的图像特征进行抽象。
Visual Abstractor由cross attention构成,使用一些可学习的token embedding和原始图像的patch embedding进行cross attention计算,token的数量远小于patch的数量,选择性的将patch embedding的重要信息汇聚到可学习token上。
Visual Abstractor输出多个视觉token embedding,和文本的token embedding拼接到一起,输入到预训练的LLM中。
训练方式
视觉特征对齐语言模型的多模态大模型,一般采用两个阶段进行训练。 在第一个阶段,使用基础的图文数据构建生成式任务,第二阶段利用Instruction Tuning的方式让模型进一步提升复杂多模态理解能力 。
在之前的很多工作中,都采用这种两阶段的训练,但是更新的参数不同。比如MiniGPT4只更新图像表征到LLM输入的MLP映射网络,其他方法也对Visual Encoder进行了冻结。为了提升多模态的联合学习能力,本文在预训练阶段, 打开Visual Encoder的参数更新,强化模型的多模态训练过程 。在第二阶段,冻结Visual Encoder参数,finetune语言模型参数。
V2版本优化
在近期阿里发布的mPLUG-Owl2工作中,主要对多模态的对齐进行了优化。
这里的核心优化点是对语言模型的self-attention机制进行了优化,对于两个模态的表征,分别使用独立layer normalization缩放到相同scale后,使用两组不同的MLP网络分别进行两个模态表征到同空间的映射。
相比之前共享MLP的映射方法, 这种独立映射的方法保留了两个模态个性化的信息,又能映射到相同空间 。在attention后再分别接各自模态的layer normalization生成最终预测结果。
在知识星球中,也为大家整理了这种视觉对齐LLM的多模态大模型历史工作,感兴趣的同学可以加入学习。
实验效果
文中对比了mPLUG-Owl在各项任务上和MiniGPT、BLIP、LLaVA等多模态大模型的效果,均取得了SOTA效果,验证了mPLUG-Owl的多模态理解能力。
本文转载自,作者: