
《深入浅出多模态》中:多模态模型原理总结
CLIP采用双塔结构,其核心思想是通过海量的弱监督文本对,通过对比学习,将图片和文本通过各自的预训练模型获得编码向量,通过映射到统一空间计算特征相似度,通过对角线上的标签引导编码器对齐,加速模型收敛。CLIP是一种弱对齐,可应用于图文相似度计算和文本分类等任务。思想:图文特征对齐、指令微调、多任务结构:图像编码器Image Encoder±大语言模型LLM+对齐模块Loss设计:参考对比学习探索不
本篇内容首先将围绕不同多模态模型的对齐方法对经典多模态模型进行对比与总结,并挑选主流的多模态模型CLIP、BLIP、BLIP2等展开详细介绍,最后引入厂内多模态框架PaddleMIX进行多任务实战,帮助大家快速了解多模态技术。
一、 主流多模态模型介绍
本文首先从多模态模型的基本思想、模型结构、损失设计及训练数据集情况对经典模型进行整理,太长不看版总结如下:
(1)CLIP
论文:Learning Transferable Visual Models From Natural Language Supervision
模型介绍
CLIP采用双塔结构,其核心思想是通过海量的弱监督文本对,通过对比学习,将图片和文本通过各自的预训练模型获得编码向量,通过映射到统一空间计算特征相似度,通过对角线上的标签引导编码器对齐,加速模型收敛。CLIP是一种弱对齐,可应用于图文相似度计算和文本分类等任务。
模型结构
1.图像编码器:使用的是之前文章提到的ViT网络,而且是效果比较好的ViT-L/14@336px
-
ViT-L中的L指代large,表示使用的Transformer的层数级别
-
14表示每个子图像或者patch包含14*14 个像素点
-
336px表示输入图像的像素是336x336
-
所以最终图像被切分成 (336/14)_(336/14)=576个子图,如果维度D为1024,那么一张图像就可以转化成576_1024的序列 2.文本编码器:使用类似于 GPT-2 但更小的 Transformer 模型 3.投影:为了实现图像编码器和文本编码器输出的embedding向量在同一embedding空间中的一致性,使用了两个投影矩阵。这样,无论是图像还是文本编码器产生的向量,都将被投影到具有相同维度的空间中。
具体实现
在这里插入图片描述
-
CLIP将图像和文本先分别输入一个图像编码器image_encoder和一个文本编码器text_encoder,得到图像和文本的向量表示 I_f 和 T_f 。其中 Image Encoder是 ResNet 或 Vision Transformer,Text Encoder 为 GPT-2。
-
将图像和文本的向量表示映射到一个多模态空间(不同类型的数据整合到一个统一的空间),得到新的可直接进行比较的图像和文本的向量表示 I_e 和T_e 。
-
计算图像向量和文本向量之间的cosine相似度。上述得到n x n矩阵,对角线为正样本为 1,其他为负样本0。有了n个图像的特征和n 个文本的特征之后,计算 cosine similarity,得到的相似度用来做分类的logits。
-
对比学习的目标函数就是让正样本对的相似度较高,负样本对的相似度较低。logits 和 ground truth 的labels 计算交叉熵损失,loss_i,loss_t分别是 Image 和 Text 的 loss,最后求平均就得到loss。
(2)BLIP
-
论文地址:https://arxiv.org/pdf/2201.12086.pdf(统一视觉语言理解和生成的引导语言图像预训练)发表于:ICML2022
-
代码地址:https://github.com/salesforce/BLIP
-
动机:
-
从模型角度,vision-language pretraining 大多采用了encoder-base model或者 encoder-decoder based model。encoder-base model 无法实现文本生成,而encoder-decoder based model不能直接用于多模态检索。
-
从数据角度,无论是CLIP、ALBEF训练的image-text 都是从web收集的,其中包含很多noisy data,vision-language训练是次优解。总结:BLIP既可以做内容理解,还可以做文本生成,是一个大一统的多模态预训练框架。(理解+生成 )
模型结构
BLIP由四个模块组成,分别是image encoder、text encoder(和image encoder 统一称为unimodal encoder)、image-grounded text encoder、image-grounded text decoder。
-
image encoder:visual transformer,VIT
-
text encoder:BERT(双向自注意力机制+FFN),加一个 cls token放在text input前面总结整句话
-
image-grounded text encoder:将image encoder的输出一起输入的cross attention中,输入端加一个任务特定的encoder token,attention采用Bi self-attention,使得text全部可见。
-
image-grounded text decoder:将image encoder的输出一起输入的cross attention中,输入端加一个任务特定的decoder token,attention采用causal self-attention,使得text只能见到当前和历史的文本。
损失函数
BLIP由三个损失函数监督,前两个是理解任务基础,另一个是生成任务基础 。具体损失如下:
Image-Text Contrastive Loss (ITC)
ITC通过对比学习,鼓励正向的图像-文本对在特征空间内靠近,而与负向对相远离,对齐视觉和文本转换器的特征空间。研究表明,ITC有效地促进了视觉和语言理解的提升。为了强化这一过程,ITC引入了动态编码器以产生特征,并利用软标签作为训练目标,以识别负对中潜在的正对。
Image-Text Matching Loss (ITM)
ITM专注于学习精细的视觉-语言对齐多模态表示。作为一个二分类任务,ITM用于预测图像-文本对是否匹配,通过线性层(ITM头)和它们的多模态特征。采用硬负采样策略,选择批次中对比相似度较高的负对参与损失计算,以获得更信息丰富的负样本。与ITC不同,ITM直接处理图像输入,以更精确地判断图像与文本的一致性。
Language Modeling Loss (LM)
LM旨在基于给定图像生成文本描述。LM通过交叉熵损失优化,以自回归形式训练模型,最大化文本可能性。在计算损失时,采用了0.1的标签平滑策略。不同于VLP中广泛使用的Masked Language Modeling损失,LM赋予模型根据视觉信息生成连贯文本描述的泛化能力。
数据生产
在这里插入图片描述
-
BLIP的关键创新在于引入预训练部分的Filter和Captioner模块。尽管CLIP使用了超过4亿个未经筛选的网络数据进行训练,但由于数据中包含大量噪声,模型的准确性受到了影响。BLIP在此基础上引入了这两个模块:
-
Filter用于清除不匹配的文本信息(去除噪声图像-文本对),而Captioner用于生成高质量文本信息(生成给定web图像的标题),进而提升图像-文本对训练数据集质量。两种都是从相同的预训练MED 模型初始化的,并在COCO数据集上分别进行微调,调优是一个轻量级的过程。
具体来说,BLIP首先以从网络爬取的可能不匹配的数据和部分人工标注的匹配数据(如COCO数据集)组成的数据集D进行预训练。BLIP利用人工标注的数据和内部的ITC&ITM模块微调Filter,筛选出不匹配的图像-文本对。接着,使用同样的标注数据和BLIP的Decoder微调Captioner,使其能根据图像生成匹配的文本,这些新文本再通过Filter判断其与原图像的匹配程度。通过这种方法,BLIP能构建一个高质量的新数据集D。
(3)BLIP2
-
论文地址:Blip-2: Bootstrapping language-image pre-training with frozen image encoders and large language models (节约多模态训练成本:冻结预训练好的视觉语言模型参数 )发表于:ICML23
-
代码地址:github
动机:CLIP通过相似性计算,对图像和文本算是粗对齐(因为文本和图像只对最后的结果比较,打比方,装修房子,问两个装好的房子像不像,只能看到一些表面的,具体的材料是看不到的)。
总结: 为减少计算成本并避免灾难性遗忘的问题, BLIP-2 在预训练时冻结预训练图像模型和语言模型,在中间添加一个轻量级 查询 Transformer (Query Transformer, Q-Former) 来弥合视觉和语言模型之间的模态隔阂 (modality gap)。在整个模型中,Q-Former 是唯一的可训练模块,而图像编码器和语言模型始终保持冻结状态。
在这里插入图片描述
论文中作者提出了一种预训练框架,利用 预训练frozen冻结的图像编码器 + 可学习的Q-Former 和 预训练frozen冻结的LLM大规模语言模型 来进行图像和语言的联合预训练。
1)Image Encoder:负责从输入图片中提取视觉特征,本文试验CLIP 训练的 ViT-L/14和EVA-CLIP训练的 ViT-g/14两种网络结构。
2)Large Language Model:负责文本生成,本文试验decoder-based LLM and encoder-decoder-based LLM。
3) Q-Former :为BLIP2核心使用用两阶段预训练 Q-Former 来弥补模态差距,共分为表示学习阶段和生成学习两个阶段。
第一阶段:表征学习
- 表征学习阶段:Q-Former作为桥梁,来衔接图像编码器和LLM,并缩小两者表征上的GAP。Q-Former整体训练目标沿用BLIP,但在框架上更加精简,使用UniLM风格的统一自编码和自回归,使得由BERT随机初始化的32个Learned Queries将图像编码器的表示在语言空间中压缩对齐(其中,CA为每两层插入一次,用于融合图片视觉表征)。
第二阶段:从大规模语言模型学习视觉到语言生成
- 生成学习阶段:将 Q-Former连接到冻结的 LLM,以利用 LLM 的语言生成能力。这里使用全连接层(FC,可视为Q-Former到LLM的适配器)将输出的Query嵌入线性投影到与 LLM 的文本嵌入相同的维度,然后将投影的Query嵌入添加到输入文本嵌入前面,实现替换LLM的部分文本嵌入(即软提示)。
BLIP2在Decoder-only 和Encoder-Decoder 架构的模型上均进行了实验。
-
Decoder only:将Q-former学到token直接输入,得到文本输出,论文中采用facebook的opt模型进行训练,具体过程如下。
-
encoder-decoder:将Q-former学到token加上前缀词(如图中的a cat)一起输入,得到后续的文本输出,论文中采用FlanT5添加指令进行训练。
注:目前BLIP系列已经更新到BLIP3 :《xGen-MM (BLIP-3): A Family of Open Large Multimodal Models》,在各方面进行升级:
-
框架结构: xGen-MM (BLIP-3) 框架采用由 ViT、用于对图像嵌入进行下采样的视觉令牌采样器(感知器重采样器)、预采样器组成的架构j及训练有素的大型语言模型(phi3-mini)。
-
训练流程: 预训练、有监督微调、交叉多模态微调和后训练四个阶段来加强模型理解能力。
(4 )LLaVa系列
论文动机:通用LLM中指令遵循数据在Zero-shot场景下取得突破性进展,然而多模态领域探索的很少。
基本思想:LLaVA使用仅限语言的GPT-4生成多模态语言图像指令跟随数据,提出一种连接视觉编码器和LLM的端到端训练多模态大模型。
核心点:LLM基座采用更强的LLAMA模型,相比于BLIP-2 舍弃了Q-Former模块,直接将视觉编码器(CLIP)经过线性投影层作为LLM的软提示,再和指令数据一起让LLM生成对应任务回复。
-
将Clip作为图像的编码器,在Clip后面加入一个线性映射层;
-
将Clip编码后的图像特征Zv映射到语言模型特征空间中,得到视觉特征 Hv ;
-
将其和文本的编码(语言指令的编码)一起送入到Language Model中。
训练流程:
在这里插入图片描述
-
第一阶段–预训练阶段:只训练线性映射层(Projection W),目的是学习图像空间到语言模型词向量空间的映射,从CC3M 中过滤出595K图文对,并转换为单轮指令数据。
-
第二阶段–微调阶段:冻结住视觉编码器的参数,训练线性映射层和大语言模型的参数。在这一阶段使用的数据集为ScienceQA和基于GPT-4生成的数据集。
模型结构:
-
使用视觉编码器CLIP ViT-L/14+语言解码器LLaMA构成多模态大模型,然后使用生成的数据进行指令微调。
-
输入图片X经过与训练好的视觉编码器的到图片特征Z,图片特征Z经过一个映射矩阵W转化为视觉Token H,这样Vison Token H_v与Language Token H_q指令就都在同一个特征空间,拼接后一起输入大模型。
-
映射层W也可以替换为更复杂的网络来提升性能,比如Flamingo中用的gated cross-attentio,BLIP-2中用的Q-former。
注:目前LLaVa系列已更新LLaVa-1.5、LLaVa-1.6、LLaVa-NEXT多个版本,具体细节可参考链接:https://github.com/haotian-liu/LLaVA
(5 )Qwen-VL系列
Github:https://github.com/QwenLM/Qwen-VL 体验地址:https://tongyi.aliyun.com/qianwen/ Qwen-VL系列模型是大规模的视觉语言模型,包含两个版本:Qwen-VL和Qwen-VL-Chat。Qwen-VL是一个预训练模型,通过视觉编码器的连接,它扩展了Qwen-7B语言模型的视觉能力,支持更灵活的交互,如多图像输入、多轮对话和定位能力。
模型特点:
-
强大的性能:在相同规模模型下,它在多个评估基准测试(包括零样本字幕、VQA、DocVQA和定位)上明显优于现有的开源大型视觉语言模型
-
支持文本识别和定位的多语言:Qwen-VL自然支持英语、中文和多语言对话,并推动中文和英文双语文本及图像中的实例端到端识别和定位。
-
多图像交错对话:该功能允许输入和比较多个图像,以及指定与图像相关的问题并进行多图像讲故事能力。
-
细粒度识别和理解:与其他开源LVLM当前使用的224 x 224分辨率相比,448 x 448分辨率提升了细粒度文本识别、文档QA和边界框检测。
模型结构
Qwen-VL模型主要分为图像编码器为ViT、连接模块为单层的查询+交叉注意力,改变图像序列的长度及LLM基座为Qwen(7B)器为ViT,大语言型为Qwen连接块为单层的询+交叉注意,改变图像序列的长度
-
大型语言模型:Qwen-VL采用使用Qwen-7B的预训练权重进行初始化。
-
视觉编码器:
-
Qwen-VL的视觉编码器使用Vision Transformer(ViT)架构,使用Openclip的ViT-bigG(1.9B)的预训练权重进行初始化。
-
在训练和推理过程中,输入图像都调整为特定分辨率。其中ViT的视觉表征会经适配器转换为固定的256长度(前后追加和,与LLM的文本特征进行区分),论文认为位置对捕捉细粒度图像信息至关重要,二维绝对位置编码被引入适配器的query-key对中。视觉编码器通过步长为14对图像进行划分补丁,生成一组图像特征。
- 位置感知的视觉语言适配器(0.08B):为了缓解长图像特征序列带来的效率问题,Qwen-VL引入了一个压缩图像特征的视觉语言适配器。该适配器包含一个随机初始化的单层交叉注意力模块。
训练流程:
Qwen-VL系列作为目前国内主流多模态模型,其模型训练过程采用下图三个阶段进行训练,两个预训练阶段(预训练和多任务训练)和一个指令微调训练阶段。
Qwen-VL还通过将边界框到归一化为指定字符串格式并对定位框增加和,边界框对应描述增加<ref和加以区分,以此兼容区域描述问题和检测的数据形式,增强对细粒度视觉理解和定位的能力。
注:目前该系列已更新到Qwen2-VL,学习可参考链接:https://www.modelscope.cn/models/qwen/Qwen2-VL-2B-Instruct
三、多模态模型趋势总结
-
思想:图文特征对齐、指令微调、多任务
-
结构:图像编码器Image Encoder±大语言模型LLM+对齐模块
-
Loss设计:参考对比学习探索不同的图文特征对齐方式,同时增加指令微调能力
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
更多推荐
所有评论(0)