目录

一、前言

二、KOSMOS-1

1.输入表示

2.MLLMs

为什么MAGNETO在Transformer的每个子层(即MHA和FFN)中都引入一个额外的LayerNorm?为什么这样设计?

MAGNETO采用了理论上推导出的初始化方法的工作原理是什么?为什么这样设计?

总结 KOSMOS-1 采用 XPOS 的核心动机

KOSMOS-1 在处理长序列时,XPOS 相对位置编码的具体数学形式是怎样的,它又是如何与注意力机制中的 QK 乘积相结合的?

【补充】:RoPE基础知识详解

在 KOSMOS-1 中的应用

三、训练设置

使用"full-sentence"格式预处理数据对模型训练的好处是什么?

1.保持语义完整性 (Semantic Coherence)

2.提升语言模型性能 (Improved Language Model Performance)

3.优化训练效率 (Optimized Training Efficiency)

4.有利于下游任务 (Beneficial for Downstream Tasks)

总结

四、说明


一、前言

今天我们要精读的论文是2023年来自微软的一篇论文,微软的这篇论文中提出多模态LLM,支持感知、生成与推理。从文章题目中”Language is not all you need“,让人不禁联想到Transformer的开山之作《Attention is all you need》,那么这篇论文在多模态大模型领域是否也能如Transformer在LLM领域的影响力一样,让我们拭目以待!

论文原文在Language Is Not All You Need: Aligning Perception with Language Models,本博客虽很详尽,但配合原文共同食用,效果更好!

咱们闲言少叙,让我们快速进入今天的论文精读时间吧!

二、KOSMOS-1

如图所示,KOSMOS-1是一种多模态语言模型,可以感知一般模态,遵循指令,在上下文中学习并生成输出。给定先前的上下文,该模型学习以自回归方式生成文本。具体而言,KOSMOS-1的主干是基于Transformer的因果语言模型。除了文本之外,其他模态被嵌入并馈送到语言模型中。Transformer解码器充当多模态输入的通用接口。作者在多模态语料库上训练KOSMOS-1,包括单模态数据、跨模态配对数据和交错多模态数据。一旦模型经过训练,就可以在语言任务和多模态任务中,直接在零样本和小样本设置下评估模型。

1.输入表示

Transformer解码器以统一的方式感知通用模态。对于输入格式,我们将输入展平为一个用特殊token装饰的序列。具体来说,我们使用<s>和</s>来表示序列的开始和结束。特殊token<image>和</image>表示编码图像嵌入的开始和结束。例如,“<s> document </s>”是文本输入,而“<s> paragraph <image> 图像嵌入 </image> paragraph </s>”是交错的图像-文本输入。

嵌入模块用于将文本标记和其他输入模态编码成向量。然后,这些嵌入被馈送到解码器中。对于输入标记,我们使用查找表将它们映射到嵌入中。对于连续信号的模态(例如,图像和音频),将输入表示为离散代码,然后将其视为“外语”也是可行的。

本文采用视觉编码器作为输入图像的嵌入模块,此外,Resampler被用作一种注意力池化机制,以减少图像嵌入的数量。

2.MLLMs

在获得输入序列的嵌入后,我们将其馈送到基于Transformer的解码器中。从左到右的因果模型以自回归方式处理序列,通过对过去时间步的条件作用来生成下一个token。因果掩码用于屏蔽未来的信息。Transformer上的softmax分类器用于生成词汇表中的token。

多模态大型语言模型(MLLM)作为通用接口,可以执行与自然语言和多模态输入的交互。该框架具有处理各种数据类型的灵活性,只要我们可以将输入表示为向量。多模态大型语言模型(MLLM)结合了两者的优点。首先,语言模型自然地继承了上下文学习和指令遵循的能力。其次,通过在多模态语料库上进行训练,感知与语言模型对齐

MAGNETO 我们使用 MAGNETO,一种 Transformer 变体,作为主干架构。MAGNETO 具有更好的训练稳定性和在各种模态上的卓越性能。它为每个子层(即MHA和FFN)引入了一个额外的 LayerNorm。该方法具有理论上推导出的初始化方法,从根本上改进了优化,这使我们能够有效地扩展模型而没有困难。

为什么MAGNETO在Transformer的每个子层(即MHA和FFN)中都引入一个额外的LayerNorm?为什么这样设计?

  • 传统 Transformer 中的 LayerNorm: 在标准的 Transformer 架构中,LayerNorm 通常应用于每个子层的输入和/或输出。它的主要作用是规范化层的输入,使其均值为 0,方差为 1,从而稳定训练过程并加速收敛

  • MAGNETO 的额外 LayerNorm: MAGNETO 在每个子层内部增加了额外的 LayerNorm。这意味着,在多头自注意力层内部以及前馈网络内部,都会有额外的规范化步骤

  • 带来的改进:

    • 提升训练稳定性: 额外的 LayerNorm 进一步规范化了子层内部的激活值,这有助于防止在深度网络中可能出现的梯度消失或梯度爆炸问题,尤其是在训练大规模模型时。更稳定的激活分布使得优化器能够更有效地更新模型参数。

    • 改善跨模态性能: 论文指出,MAGNETO 在“各种模态上具有卓越性能”。这额外的规范化可能有助于模型更好地处理不同模态(如文本和图像)之间内在的统计差异使得各模态的特征在融合时更加协调,从而提升了多模态任务的性能

MAGNETO采用了理论上推导出的初始化方法的工作原理是什么?为什么这样设计?

  • 传统模型初始化: 大多数深度学习模型,包括 Transformer,都依赖于精心设计的权重初始化策略(如 Xavier 或 Kaiming 初始化),以确保训练开始时网络中的激活值和梯度保持在一个合理的范围内。不当的初始化可能导致训练不稳定,甚至无法收敛。

  • MAGNETO 的理论推导初始化: 这种方法不是基于启发式规则,而是基于数学理论推导,旨在从根本上优化模型的初始状态。这意味着初始权重和偏置的设置,是根据模型的架构特性和优化目标进行精确计算的。

  • 带来的改进:

    • 从根本上改进优化: 理论推导的初始化能够确保模型在训练开始时就处于一个“更优”的状态,使得梯度流更加稳定和有效。这减少了优化器在训练初期需要克服的“不良”初始条件。

    • 实现大规模模型高效扩展: 论文明确指出,这种初始化“从根本上改进了优化,这使我们能够有效地扩展模型而没有困难”。对于拥有数十亿甚至数万亿参数的超大规模模型,训练稳定性是至关重要的。一个经过理论验证的良好初始化能够显著降低训练失败的风险,并提高训练效率,从而使得模型能够“无痛”地扩展到更大的规模。

XPOS 我们采用 XPOS [SDP+22] 相对位置编码,以实现更好的长上下文建模。该方法可以更好地泛化到不同的长度,即在短序列上训练,同时在更长的序列上测试。此外,XPOS 优化了注意力分辨率,从而可以更精确地捕获位置信息。XPOS 方法在插值和外推设置中均高效且有效。

KOSMOS-1 模型通过集成 XPOS 相对位置编码,旨在解决传统位置编码在处理长序列时遇到的泛化性和效率问题。XPOS 的核心优势在于它能够:

  1. 更好地泛化到不同长度的序列(Better Generalization to Different Lengths):

    1. 问题背景: 传统的绝对位置编码(如正弦位置编码)或某些相对位置编码在训练时会为每个位置分配一个固定的编码。当模型在较短的序列上训练,然后需要处理比训练时更长的序列(即外推)时,这些编码可能无法很好地泛化,因为模型从未见过这些“新”的位置

    2. XPOS 的解决方案: XPOS 旨在克服这一限制。它允许模型在短序列上进行训练,同时在更长的序列上进行测试而不会显著降低性能。这对于 MLLM 来说至关重要,因为多模态输入(例如,图像嵌入和文本序列的组合)可能导致非常长的输入序列。

    3. 具体实现推测(基于常见相对位置编码机制): 相对位置编码通常通过计算不同 token 之间距离的函数来工作,而不是为每个 token 分配一个固定位置。XPOS 可能通过某种方式将这种相对距离信息整合到注意力机制中,使得模型关注的是 token 之间的相对关系,而不是它们的绝对位置。这种设计 inherently 使得模型在面对训练时未见的长度时,仍然能基于已学习的相对距离信息进行推断。

  2. 优化注意力分辨率(Optimizes Attention Resolution):

    1. 问题背景: 在 Transformer 的注意力机制中,位置信息如何被编码和利用,直接影响模型对序列中不同 token 相对重要性的理解。如果位置信息不够精确或高效,模型可能难以区分距离相近或距离较远的 token。

    2. XPOS 的解决方案: XPOS 优化了注意力机制中“分辨率”的概念,以更精确地捕获位置信息。这可能意味着:

      • 更细粒度的距离编码: XPOS 能够更细致地编码 token 之间的距离,使得模型能够区分例如“相隔一个 token”和“相隔两个 token”的微妙差异。

      • 信息编码效率 它可能设计了一种更有效的方式,将位置信息注入到 Q(Query)和 K(Key)向量中,使得注意力分数在计算时能够更准确地反映位置关系。例如,它可能通过修改 QK 乘积项,或通过门控机制来控制位置信息的影响。

  3. 在插值和外推设置中均高效且有效(Efficient and Effective in both Interpolation and Extrapolation Settings):

    1. 插值 (Interpolation): 指模型在训练时间的长度范围内处理序列。例如,如果模型在长度为 10 到 100 的序列上训练,然后在长度为 50 的序列上测试,这属于插值。XPOS 在这种情况下依然表现出色,意味着它能够准确地利用已学习的位置关系。

    2. 外推 (Extrapolation): 指模型处理比训练时见过的最长序列还要长的序列。这是许多位置编码方法面临的巨大挑战。XPOS 的有效性表明它能够成功地将从较短序列中学到的位置模式泛化到更长的、未见过的序列中。

    3. “高效”的含义: 这不仅指性能好,也可能指计算效率高。XPOS 在处理长序列时,可能不会像某些其他方法那样导致计算成本的显著增加,或者它能够以更少的计算资源达到相同或更好的效果。这对于 KOSMOS-1 这样的大规模模型至关重要,因为计算效率直接影响训练和推理的成本。

总结 KOSMOS-1 采用 XPOS 的核心动机

KOSMOS-1 集成 XPOS 相对位置编码,是为了赋予其 Transformer 主干架构在处理多模态长序列时更强大的能力:

  • 处理可变长度输入: KOSMOS-1 作为 MLLM,需要处理文本、图像等多种模态输入,这些输入组合起来可能形成长度差异很大的序列。XPOS 确保模型能够稳定地处理这些不同长度的输入。

  • 精确理解上下文: 通过优化注意力分辨率,XPOS 帮助模型更精确地捕获序列中元素之间的相对位置关系,这对于理解复杂的语言结构和图像-文本交互至关重要。

  • 提高泛化能力: XPOS 使得 KOSMOS-1 能够更好地将从训练数据中学到的知识泛化到未见的、更长的上下文,提升了模型的鲁棒性和适用性。

总而言之,XPOS 为 KOSMOS-1 提供了一个高效、泛化能力强且精确的位置编码机制,使其能够更好地应对多模态领域中长上下文建模的挑战。

KOSMOS-1 在处理长序列时,XPOS 相对位置编码的具体数学形式是怎样的,它又是如何与注意力机制中的 QK 乘积相结合的?

XPOS (eXtrapolatable Position Operator for Self-attention) 的核心思想是,通过一种旋转式的(Rotary)位置编码,将相对位置信息直接融入到 Query (Q) 和 Key (K) 向量中,而不需要额外的偏置项或复杂的修改。这使得它具有良好的外推性。

1.旋转位置编码 (Rotary Position Embeddings, RoPE) 的基础

XPOS 是在 RoPE 的基础上进一步发展而来。RoPE 通过以下方式将位置信息编码到 Q 和 K 向量中:

对于一个向量 x 在位置mx_m 的 RoPE 编码定义为: RoPE(x_m,m) = R_mx_m 其中R_m 是一个旋转矩阵,它将位置 m 的信息编码为旋转角度。 具体地,对于向量 x_m = [x_0,x_1,...,x_{d-1}],RoPE 通常将其分成 d/2 对,并对每对应用一个二维旋转: RoPE(x_m,m)_j = \left\{\begin{matrix} x_jcos(m\theta_k) - x_{j + 1} sin(m\theta_k) & if j = 2k \\ x_jcos(m\theta_k)+x_{j-1}sin(\theta_k) & if j = 2k+1 \end{matrix}\right.

其中,\theta_k = 10000^{-2k/d}

RoPE 的关键性质是,两个位置 m 和 n 的编码向量 Qm 和 Kn 的点积可以分解为: RoPE(Q_m,m)^TRoPE(K_n,n) = (R_mQ_m)^T(R_nK_n) = Q_m^TR_m^TR_nK_n = Q_m^TR_{n-m}K_n 这意味着,注意力分数 Q_m^TK_n 实际上变成了 Q_mK_n 经过一个与相对距离 n−m 相关的旋转矩阵 R_{n-m} 作用后的点积。这样,相对位置信息就被自然地融入到注意力计算中,并且这种形式本身就具有很好的外推性,因为旋转矩阵 R_k 可以为任意 k 定义。

【补充】:RoPE基础知识详解

2.XPOS 如何在此基础上引入指数衰减 (Exponential Decay)

XPOS 在 RoPE 的基础上引入了一个指数衰减因子以更好地建模 token 之间随距离增加而减弱的依赖关系

对于 Query 向量 Q 和 Key 向量 K 的第 i 个维度,在位置 m 和 n 的 XPOS 编码形式为:

\hat{Q}_{m}^{(i)}=Q_{m}^{(i)}\cdot\exp (\alpha\cdot m/d)

\hat{K}_{n}^{(i)}=K_{n}^{(i)}\cdot\exp (-\alpha\cdot n/d)

其中:

  • Q_m^{(i)}K_n^{(i)} 是原始的 Query 和 Key 向量在应用 RoPE 之前的第 i 个维度。

  • m 和 n 是当前 token 的绝对位置。

  • d 是模型的隐藏维度。

  • \alpha 是一个可学习的参数或超参数,控制衰减的速度

然后,将 RoPE 编码应用于\hat{Q}_m\hat{K}_n

XPOS 将这个指数衰减因子与 RoPE 结合起来。最终的 Q 和 K 向量,在应用 RoPE 之后,可以看作是:

\begin{array}{l} \tilde{Q}_{m}=\operatorname{RoPE}\left(\hat{Q}_{m}, m\right)=\operatorname{RoPE}\left(Q_{m}\cdot\exp (\alpha\cdot\right. m /d),m)\\ \tilde{K}_{n}=\operatorname{RoPE}\left(\hat{K}_{n}, n\right)=\operatorname{RoPE}\left(K_{n}\cdot\exp (-\alpha\cdot\right. n /d),n) \end{array}

3.XPOS 与注意力机制中的 QK 乘积相结合

现在我们来看 Q~m 和 K~n 在注意力机制中的点积:

\text{AttentionScore}(m,n) = \tilde{Q}_{m}^{T} \tilde{K}_{n}

由于 RoPE 的性质,以及 XPOS 引入的指数衰减因子,这个点积可以被分解为:

\begin{array}{l} \tilde{Q}_{m}^{T}\tilde{K}_{n}=\left(\operatorname{RoPE}\left(Q_{m}\cdot\exp (\alpha\cdot m/d),m\right)\right)^{T}\cdot \left(\operatorname{RoPE}\left(K_{n}\cdot\exp (-\alpha\cdot n/d),n\right)\right) \\ =\left(Q_{m}\cdot\exp (\alpha\cdot m/d)\right)^{T}\cdot R_{n-m}\cdot\left(K_{n}\cdot\exp (-\alpha\cdot\right. \left. n/d)\right) =Q_{m}^{T} R_{n-m}K_{n}\cdot\exp (\alpha\cdot(m-n) /d) \end{array}

这里是关键:

  • Q_m^TR_{n-m}K_n 这一部分是 RoPE 带来的相对位置信息,它只依赖于相对距离 n−m。

  • exp⁡(α⋅(m−n)/d) 这一部分是 XPOS 引入的指数衰减因子

    • 当 m≈n (即 token 距离很近) 时,m−n≈0,衰减因子接近 exp⁡(0)=1,位置信息影响较小。

    • 当 m 和 n 的距离 ∣m−n∣ 增大时,衰减因子会指数级地减小(如果 α>0)。这意味着,距离较远的 token 之间的注意力分数会自然地被一个衰减项所乘,从而降低它们之间的相关性。

这种结合方式带来的优势:

  1. 更好的外推性: RoPE 本身就具有外推性,XPOS 进一步强化了这一点,因为它不依赖于绝对位置索引的范围,而是依赖于相对距离。

  2. 建模距离衰减 显式地引入指数衰减项,使得模型能够先验地知道距离远的 token 之间的相关性通常较低,这对于长序列建模至关重要。它提供了一种归纳偏置,有助于注意力机制更好地聚焦于局部或相关联的上下文。

  3. 效率: XPOS 避免了复杂的偏置矩阵或额外的位置编码层,直接在 QK 向量上进行操作,保持了 Transformer 的计算效率。

在 KOSMOS-1 中的应用

KOSMOS-1 采用 XPOS 意味着其 Transformer 主干网络(Magneto 架构)的自注意力层,在计算 Query 和 Key 的点积时,会隐式地包含这种带有指数衰减的相对位置信息。

  • “更好地泛化到不同长度”: KOSMOS-1 训练时使用了海量的多模态数据,包括任意交错的文本和图像,这使得输入序列长度高度可变。XPOS 确保模型在处理这些不同长度的序列时(无论训练时见过与否),都能保持鲁棒的性能。

  • “优化注意力分辨率,更精确地捕获位置信息”: 指数衰减因子使得模型能够更精细地控制不同距离 token 的注意力权重,从而在长序列中更有效地聚焦于关键信息,避免不必要的远距离干扰。

通过 XPOS,KOSMOS-1 能够更有效地处理多模态输入带来的长序列挑战,提升其在各种语言和多模态任务上的性能。

三、训练设置

MLLM组件有24层,隐藏维度为2,048,FFN中间大小为8,192,注意力头数为32,总计约1.3B参数。使用Magneto的初始化方法以保证优化稳定性。为了加快收敛速度,图像表示从预训练的CLIP ViT-L/14模型获得,该模型具有1,024个特征维度。在训练期间,图像被预处理为224×224分辨率。在训练期间,我们冻结CLIP模型的参数,除了最后一层。KOSMOS-1的总参数量约为1.6B。

使用120万个token的批次大小(来自文本语料库的50万个token,来自图像-标题对的50万个token,以及来自交错数据的20万个token),并训练KOSMOS-1共30万步,相当于约3600亿个token。采用AdamW优化器,其中β = (0.9, 0.98)。将权重衰减设置为0.01,dropout率设置为0.1。学习率在前375个预热步骤中增加到2e-4,并在剩余的训练步骤中线性衰减到0。使用SentencePiece对文本进行token化。以“full-sentence”格式预处理数据,该格式将每个输入序列与从一个或多个文档中连续采样的完整句子打包在一起。

使用"full-sentence"格式预处理数据对模型训练的好处是什么?

1.保持语义完整性 (Semantic Coherence)

  • 避免截断关键信息: 在传统的固定长度分段中,句子可能会在中间被截断。这种截断会导致句子语义不完整,模型难以理解其含义,从而影响语言模型对上下文的理解和生成质量。将完整句子打包,确保了每个处理单元都是语义连贯的。

  • 保留局部上下文: 连续采样的完整句子自然地保留了文档的局部上下文关系。语言模型在处理这些序列时,能够更好地捕捉句子与句子之间的逻辑关联和信息流,这对于理解复杂的论证、叙述或对话至关重要。

2.提升语言模型性能 (Improved Language Model Performance)

  • 更准确的预测: 语言模型的训练目标通常是预测下一个词。当输入是完整且连贯的句子序列时,模型能够学习到更自然的语言模式、句法结构和语义依赖,从而在预测下一个词时做出更准确的判断。

  • 更好的上下文理解: 语言模型对上下文的理解能力直接影响其在下游任务中的表现。这种预处理方式提供了高质量的、语义丰富的上下文,使得模型能够构建更鲁棒的语言表示。

  • 降低噪声: 相比于随机截取文本段落,完整句子的打包减少了因不完整句造成的“噪声”信息,使得训练数据更加“纯净”和有指导性。

3.优化训练效率 (Optimized Training Efficiency)

  • 高效利用计算资源: Transformer 模型通常有最大输入长度限制。通过将连续的完整句子打包,可以在不浪费填充(padding)的情况下,最大化每个输入序列的信息密度,从而更有效地利用 GPU/TPU 等计算资源。

  • 减少不必要的学习负担: 如果模型经常遇到被截断的句子,它可能需要额外的学习来处理这些不自然的输入。而“full-sentence”格式则减轻了这种不必要的学习负担,让模型更专注于学习核心的语言规律。

4.有利于下游任务 (Beneficial for Downstream Tasks)

  • 零样本/少样本能力: 像 KOSMOS-1 这样的模型,其零样本(zero-shot)和少样本(few-shot)学习能力非常依赖于其强大的语言理解和泛化能力。高质量的预训练数据,尤其是保持语义完整性的数据,有助于模型在不经过特定任务微调的情况下,更好地理解和执行新任务。

  • 多模态对齐的基础: 对于 KOSMOS-1 这样的多模态模型,语言理解是其核心能力之一。当它需要将视觉信息与语言信息对齐时,强大的、基于语义完整的语言表示将提供一个坚实的基础,使得多模态任务(如视觉问答、图像描述)能够更准确地进行。

总结

“full-sentence”格式预处理的核心价值在于保证了输入序列的语义完整性和连贯性。这使得语言模型能够在一个更自然、更接近真实语言使用的环境中进行学习,从而提升其对语言的理解能力、预测准确性,并最终增强其在各种语言和多模态任务上的泛化表现。

四、说明

本文仅仅是本人在读这篇Paper时的一点理解以及对我的一些疑惑解答后的整理总结,希望能够帮助大家真正深刻的理解Kosmos-1,帮助大家找到好的idea。如果大家觉得有所帮助的话,欢迎大家一键三连;如果觉得哪里有什么问题,欢迎评论区交流一下!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐