【LLM】两篇多模态LLM综述MultiModal Large Language Models

note

(一)现有的 MM-LLM 的趋势:
(1)从专门强调 MM 理解对特定模态的生成的进展,并进一步演变为任何到任何模态的转换(例如,MiniGPT-4 → MiniGPT-5 → NExT-GPT);
(2) 从 MM PT 提升到 SFT,然后到 RLHF,训练管道进行连续细化,努力更好地与人类意图对齐并提高模型的会话交互能力(例如,BLIP-2 → InstructBLIP →DRESS);
(3) 实施多样化模态扩展(例如,BLIP-2 → X-LLM 和 InstructBLIP→X-InstructBLIP);
(4) 结合更高质量的训练数据集(例如,LLAVA → LlaVA1.5);
(5) 采用更有效的模型架构,从 BLIP-2 和 DLP 中的复杂 Q-Former 输入投影仪模块过渡到更简单但有效的 VILA。

(二)更高分辨率编码器能为LLM提供更多图像信息,但也带来更长的sequence token。如LLAVA-1.5 和 VILA 采用 336 × 336 的分辨率,而 Qwen-VL 和 MiniGPT-v2 利用 448 × 448。
(三)还是要使用高质量的SFT图文数据,如LLAVA-1.5和VILA-13B中加入ShareGPT4V数据证明了这一点。
(四)VILA揭示了几个关键发现:
(1)在LLM主干上执行PEFT促进了深度嵌入对齐,这对ICL至关重要;
(2)交错的图像-文本数据被证明是有益的,而单独的ImageText对是次优的;
(3)在SFT期间,将纯文本指令数据(如不自然的指令(Honovich et al., 2022))与图像文本数据重新混合-用于微调,不仅解决了纯文本任务的退化,而且提高了VL任务的准确性。

综述一:A Survey on Multimodal Large Language Models

论文链接:https://arxiv.org/pdf/2306.13549.pdf
项目链接:https://github.com/BradyFU/Awesome-Multimodal-Large-Language-Models
2024年4月1号更新的一篇paper。
在这里插入图片描述

一、多模态LLM的组成部分

常见的多模态LLM结构:
在这里插入图片描述

  • 对于多模态输入-文本输出的典型 MLLM,其架构一般包括编码器、连接器以及 LLM。
    • 如要支持更多模态的输出(如图片、音频、视频),一般需要额外接入生成器,如上图所示
    • 三者的参数量并不等同,以 Qwen-VL [1] 为例,LLM 作为“大脑”参数量为 7.7B,约占总参数量的 80.2%,视觉编码器次之(1.9B,约占 19.7%),而连接器参数量仅有 0.08B。

(1)模态编码器

  • 模态编码器:模态编码器负责将原始的信息(如图片)编码成特征,连接器则进一步将特征处理成 LLM 易于理解的形式,即视觉 Token。LLM 则作为“大脑”综合这些信息进行理解和推理,生成回答。
  • 视觉编码器:对于视觉编码器而言,增大输入图片的分辨率是提升性能的有效方法。
    • 一种方式是直接提升分辨率,这种情况下需要放开视觉编码器进行训练以适应更高的分辨率,如 Qwen-VL [1] 等。
    • 另一种方式是将大分辨率图片切分成多个子图,每个子图以低分辨率送入视觉编码器中,这样可以间接提升输入的分辨率,如 Monkey [2] 等工作。
  • 除了常用CLIP图像编码器,像MiniGPT-4使用了EVA-CLIP、ViT-G/14编码器。一些常用的图像编码器:

在这里插入图片描述

(2)语言模型

在这里插入图片描述

(3)连接器

在这里插入图片描述

  • 连接器:相对前两者来说,连接器的重要性略低。
    • 从上图中可以看出连接器有三种形式:projection-based、query-based、fusion-based connectors(第三种是使用MHA多头注意力)
    • 例如,MM1 [7] 通过实验发现,连接器的类型不如视觉 token 数量(决定之后 LLM 可用的视觉信息)及图片的分辨率(决定视觉编码器的输入信息量)重要。

在后面第二篇综述中也有介绍到连接器(叫Input projector更合适):
在这里插入图片描述

二、预训练

经常会使用image caption task图片字幕数据对进行预训练,冻结图像编码器和LLM,只更新learnable interface的参数。如果数据中脏数据较多,可以使用较低分辨率(如224)加速训练,如果数据还算干净,可以使用较高分辨率(如448)减少模型的幻觉。
在这里插入图片描述
比如cogvlm:预训练第一阶段:图像描述损失函数
在预训练的第一阶段中,模型训练的是图像描述损失函数(image captioning loss),即对文本部分进行下一个标记的预测。预训练的第一阶段使用了上述提及的15亿个图像文本对,共进行了12万次迭代,批量大小为8192。

常见的预训练语料:
在这里插入图片描述

三、SFT微调

多模态的SFT和LLM的SFT类似也是自回归预测:
在这里插入图片描述
多模态SFT数据需要让prompt多样化、任务覆盖全面。

常见prompt模版如下:
在这里插入图片描述
常见的多模态SFT指令微调语料:
在这里插入图片描述

四、RLHF对齐训练

(1)使用常见的PPO

RLHF(reinforcement learning from human feedback)
在这里插入图片描述

  • 分为三个步骤
    • step1 我做你看:有监督学习,从训练集中挑出一批prompt,人工对prompt写答案。其实就是构造sft数据集进行微调。
    • step2 你做我看:奖励模型训练,这次不人工写答案了,而是让GPT或其他大模型给出几个候选答案,人工对其质量排序,Reward model学习一个打分器;这个让机器学习人类偏好的过程就是【对齐】,但可能会导致胡说八道,可以通过KL Divergence等方法解决。
      • instructGPT中奖励模型的损失函数如下,其中 rθ(x,y) 是奖励模型对提示x和完成y的标量输出,具有参数θ, y w y_w yw y w y_w yw y l y_l yl中更受欢迎的补全,D是人类比较的数据集。 loss ⁡ ( θ ) = − 1 ( K 2 ) E ( x , y w , y l ) ∼ D [ log ⁡ ( σ ( r θ ( x , y w ) − r θ ( x , y l ) ) ) ] \operatorname{loss}(\theta)=-\frac{1}{\left(\begin{array}{c} K \\ 2 \end{array}\right)} E_{\left(x, y_w, y_l\right) \sim D}\left[\log \left(\sigma\left(r_\theta\left(x, y_w\right)-r_\theta\left(x, y_l\right)\right)\right)\right] loss(θ)=(K2)1E(x,yw,yl)D[log(σ(rθ(x,yw)rθ(x,yl)))]
      • 每个样本包括questionresponse_chosenresponse_rejected键值对,每对样本的loss定义: L ( ψ ) = log ⁡ σ ( r ( x , y w ) − r ( x , y l ) ) \mathcal{L}(\psi)=\log \sigma\left(r\left(x, y_w\right)-r\left(x, y_l\right)\right) L(ψ)=logσ(r(x,yw)r(x,yl))
        • 其中上面的符号: σ \sigma σ 是 sigmoid 函数, r r r 代表参数为 ψ \psi ψ 的奖励模型的值, r ( x , y ) r(x, y) r(x,y) 表示针对输入提示 x x x 和输出 y y y所预测出的单一标量奖励值。
        • 上面是instructGPT的ranking loss,但是llama2中增加一个离散函数 m ( r ) m(r) m(r)

在这里插入图片描述

  • step3 自学成才:PPO训练,利用第二阶段的奖励模型RM计算奖励分数,同时使用PPO(近端策略优化)更新第一步训练得到的sft模型,最大优化该目标函数:  objective  ( ϕ ) = E ( x , y ) ∼ D π ϕ R L [ r θ ( x , y ) − β log ⁡ ( π ϕ R L ( y ∣ x ) / π S F T ( y ∣ x ) ) ] + γ E x ∼ D pretrain  [ log ⁡ ( π ϕ R L ( x ) ) ] \begin{aligned} \text { objective }(\phi)= & E_{(x, y) \sim D_{\pi_\phi^{\mathrm{RL}}}}\left[r_\theta(x, y)-\beta \log \left(\pi_\phi^{\mathrm{RL}}(y \mid x) / \pi^{\mathrm{SFT}}(y \mid x)\right)\right]+ \\ & \gamma E_{x \sim D_{\text {pretrain }}}\left[\log \left(\pi_\phi^{\mathrm{RL}}(x)\right)\right] \end{aligned}  objective (ϕ)=E(x,y)DπϕRL[rθ(x,y)βlog(πϕRL(yx)/πSFT(yx))]+γExDpretrain [log(πϕRL(x))]
    • π φ R L π^{RL}_φ πφRL是学习到的RL策略,
    • π S F T π^{SFT} πSFT是监督训练模型,
    • D p r e t r a i n D_pretrain Dpretrain 是预训练分布。
    • KL奖励系数β和预训练损失系数γ分别控制KL惩罚和预训练梯度的强度。对于“PPO”模型,γ 设为 0。

在这里插入图片描述

(2)使用DPO直接偏好对齐

  • 论文:《Direct Preference Optimization: Your Language Model is Secretly a Reward Model 》
  • 论文地址:https://arxiv.org/abs/2305.18290
  • 背景:RLHF是一个复杂、不稳定、难训练的过程(用reward model进行ppo强化学习等),而DPO可以避开训练奖励模型这个步骤,直接对排序数据集进行直接偏好学习。将对奖励函数的损失转为对策略的损失,优化和RLHF相同的目标函数(KL散度限制下,最大化reward)。
    • 相关原理: 和RRHF相似,但带有一个sft模型约束(KL散度),保证不加sft Loss情况下训练不崩溃。原本基于RL的目标,现在通过BCE二元交叉熵来优化(不需要再训练期间明确学习奖励函数or从策略中采样)。
    • 有监督损失函数,DPO优化的目标函数: max ⁡ π θ E π θ ( y ∣ x ) [ r ϕ ( x , y ) − β log ⁡ ∑ y π r e f exp ⁡ ( 1 β r ϕ ( x , y ) ) ⏟ f ( r ϕ , π r e f , β ) − β log ⁡ π θ ( y ∣ x ) π r e f ( y ∣ x ) ⏟ K L ] \max _{\pi_\theta} \mathbb{E}_{\pi_\theta(y \mid x)}[\underbrace{r_\phi(x, y)-\beta \log \sum_y \pi_{\mathrm{ref}} \exp \left(\frac{1}{\beta} r_\phi(x, y)\right)}_{f\left(r_\phi, \pi_{\mathrm{ref}}, \beta\right)}-\underbrace{\beta \log \frac{\pi_\theta(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}}_{\mathrm{KL}}] πθmaxEπθ(yx)[f(rϕ,πref,β) rϕ(x,y)βlogyπrefexp(β1rϕ(x,y))KL βlogπref(yx)πθ(yx)]
    • DPO更新参数,目标函数: L D P O ( π θ ; π r e f ) = − E ( x , y w , y l ) ∼ D [ log ⁡ σ ( β log ⁡ π θ ( y w ∣ x ) π r e f ( y w ∣ x ) − β log ⁡ π θ ( y l ∣ x ) π r e f ( y l ∣ x ) ) ] \mathcal{L}_{\mathrm{DPO}}\left(\pi_\theta ; \pi_{\mathrm{ref}}\right)=-\mathbb{E}_{\left(x, y_w, y_l\right) \sim \mathcal{D}}\left[\log \sigma\left(\beta \log \frac{\pi_\theta\left(y_w \mid x\right)}{\pi_{\mathrm{ref}}\left(y_w \mid x\right)}-\beta \log \frac{\pi_\theta\left(y_l \mid x\right)}{\pi_{\mathrm{ref}}\left(y_l \mid x\right)}\right)\right] LDPO(πθ;πref)=E(x,yw,yl)D[logσ(βlogπref(ywx)πθ(ywx)βlogπref(ylx)πθ(ylx))]
      • 注意:奖励函数 r r r和策略 π π π的关系推倒出来后,就能把ranking loss中的奖励函数 r r r替换
      • 目标函数含义:如果是好答案,则尽可能增大被policy策略模型生成的概率
    • 对上面的目标函数的梯度: ∇ θ L D P O ( π θ ; π r e f ) = − β E ( x , y w , y l ) ∼ D [ σ ( r ^ θ ( x , y l ) − r ^ θ ( x , y w ) ) ⏟ higher weight when reward estimate is wrong  [ ∇ θ log ⁡ π ( y w ∣ x ) ⏟ increase likelihood of  y w − ∇ θ log ⁡ π ( y l ∣ x ) ⏟ decrease likelihood of  y l ] ] , \begin{aligned} & \nabla_\theta \mathcal{L}_{\mathrm{DPO}}\left(\pi_\theta ; \pi_{\mathrm{ref}}\right)= \\ & -\beta \mathbb{E}_{\left(x, y_w, y_l\right) \sim \mathcal{D}}[\underbrace{\sigma\left(\hat{r}_\theta\left(x, y_l\right)-\hat{r}_\theta\left(x, y_w\right)\right)}_{\text {higher weight when reward estimate is wrong }}[\underbrace{\nabla_\theta \log \pi\left(y_w \mid x\right)}_{\text {increase likelihood of } y_w}-\underbrace{\nabla_\theta \log \pi\left(y_l \mid x\right)}_{\text {decrease likelihood of } y_l}]], \end{aligned} θLDPO(πθ;πref)=βE(x,yw,yl)D[higher weight when reward estimate is wrong  σ(r^θ(x,yl)r^θ(x,yw))[increase likelihood of yw θlogπ(ywx)decrease likelihood of yl θlogπ(ylx)]],
# 数据样例
{"question": "我的女儿快两岁了好动是怎么回事,我的女儿快两岁了,还不会坐的时候,当大人抱着坐时(90度),她会把两条腿抬起来使劲,绷直腿和脚尖,累了就放下来歇一下,然后再绷,表情专注还会累得出汗,当时人们说是孩子长身体呢,没有在意。", 
"response_chosen": "你好,有的孩子可能会有些小问题,但是大多数孩子是无大碍的,因为这个年龄段正是孩子好动的年龄段,而且每个孩子的性格和秉性不一样,有的孩子天生就是活泼,但是也有极少数可能会有关,至于出汗多,晚上睡眠出汗多,那可能是缺乏钙或其它营养元素。可以给宝宝进行一下和缺钙有关的检查,微量元素和血铅镉化验也很重要。", 
"response_rejected": "这个现象可能是由于婴儿发育过程中的骨骼生长造成的。"}

结果:在 RLHF 用于拟合奖励模型的交叉熵损失也可用于直接微调 LLM。根据他们的基准测试,使用 DPO 的效率更高,而且在响应质量方面也通常优于 RLHF/PPO。

在这里插入图片描述

(3)常见用于对齐的偏序数据集

  • LLAVA-RLHF[112]。它包含从人类反馈中根据诚实和有用性收集的 10K 偏好对。该数据集主要用于减少模型响应中的幻觉
  • RLHF-V[114]。它有 5.7K 细粒度的人类反馈数据,由段级幻觉校正收集
  • VLFeedback[115]。它利用 AI 提供对模型响应的反馈。该数据集包含 GPT-4V 在有用性、忠实度和伦理问题方面得分超过 380K 比较对。
    在这里插入图片描述

综述二:MM-LLMs: Recent Advances in MultiModal Large Language Models

在这里插入图片描述
论文:MM-LLMs: Recent Advances in MultiModal Large Language Models
2024年5月28日发的一篇paper。

下文的一些符号标记如下:
(1)模态标记如下:
I:图像,V:视频,A/S:音频/语音,T:文本。ID:文档理解,IB:输出边界框,IM:输出分割掩码,IR:输出检索到的图像
(2)相关模型带有的符号:
@224表示图片的分辨率是224X224;/14表示一个patch的大小为14

一、主流的MM-LLMs分类

这里不只是图生文-多模态大模型,还包括其他模态的LLM,比如image+text -> image+text。
在这里插入图片描述
相关SOTA多模态大模型:
在这里插入图片描述

二、MM-LLM的不同模块

训练Pipeline如下。由于模型生成不一定只有文字,这里和其实比第一篇综述多了output projector和modality geneator模态生成器:

  • Output Projector:可以通过一个小型的Transformer或多层感知机(MLP)来实现
  • Modality geneator:常见的方法如下
    • 图片生成:Latent Diffusion Models (LDMs) (Song et al., 2021; Bao et al., 2022; Zhao et al., 2022), i.e., Stable Diffusion (Rombach et al., 2022) for image synthesis
    • 视频生成:Zeroscope (Cerspense, 2023) for video synthesis, and AudioLDM2 (Liu et al., 2023b,c) for audio synthesis.

在这里插入图片描述

三、主流MM LLM的效果

在18 VL benchmarks上的结果:
在这里插入图片描述

备注:大模型的训练少不了算力资源,博主和一些平台有合作~
高性价比4090算力租用,注册就送20元代金券,更有内容激励活动,点击
GPU云服务器租用,P40、4090、V100S多种显卡可选,点击

Reference

[1] 多模态大语言模型全面综述:架构,训练,数据,评估,扩展,应用,挑战,机遇
[2] 从技术报告揭秘 InternLM2 尚未开源的部分——RLHF(一)奖励模型理论篇

相关推荐

  1. LLM、AGI、AI 三:微调模型

    2024-06-06 19:48:04       64 阅读
  2. LLM、AGI、AI 二:Prompt编写技巧

    2024-06-06 19:48:04       69 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 19:48:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 19:48:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 19:48:04       82 阅读
  4. Python语言-面向对象

    2024-06-06 19:48:04       91 阅读

热门阅读

  1. 2024中国机器人开发大会

    2024-06-06 19:48:04       25 阅读
  2. 探索Sass:Web开发的强大工具

    2024-06-06 19:48:04       27 阅读
  3. Spark SQL内置函数

    2024-06-06 19:48:04       26 阅读
  4. 【Linux】批量恢复文件权限

    2024-06-06 19:48:04       30 阅读
  5. 在Spring Boot项目中使用Redisson实现延迟执行

    2024-06-06 19:48:04       31 阅读
  6. C语言经典例题-8

    2024-06-06 19:48:04       32 阅读
  7. 我入门AI的学习感想

    2024-06-06 19:48:04       28 阅读
  8. Linux 命令 `diff` 的深度解析

    2024-06-06 19:48:04       25 阅读