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任务的准确性。
文章目录
- note
- 综述一:A Survey on Multimodal Large Language Models
- 一、多模态LLM的组成部分
- (1)模态编码器
- (2)语言模型
- (3)连接器
- 二、预训练
- 三、SFT微调
- 四、RLHF对齐训练
- (1)使用常见的PPO
- (2)使用DPO直接偏好对齐
- (3)常见用于对齐的偏序数据集
- 综述二:MM-LLMs: Recent Advances in MultiModal Large Language Models
- 一、主流的MM-LLMs分类
- 二、MM-LLM的不同模块
- 三、主流MM LLM的效果
- Reference
综述一: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)))]
- 每个样本包括
question
、response_chosen
、response_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(y∣x)/πSFT(y∣x))]+γEx∼Dpretrain [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πθ(y∣x)[f(rϕ,πref,β) rϕ(x,y)−βlogy∑πrefexp(β1rϕ(x,y))−KL βlogπref(y∣x)πθ(y∣x)]
- 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(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]
- 注意:奖励函数 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π(yw∣x)−decrease likelihood of yl ∇θlogπ(yl∣x)]],
# 数据样例
{"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(一)奖励模型理论篇