4. 语言模型基础:Transformer架构、自注意力机制、预训练语言模型(如BERT、)的核心原理

在视频语言多模态模型(如Video-LLaVA、Qwen-VL、InternVideo2等)的训练与推理链路中,语言模型(Language Model, LM)不仅是文本模态的编码器,更是跨模态信息融合的“大脑”。无论是视频特征序列的语义对齐,还是指令微调阶段的生成解码,其底层均依赖Transformer架构及其变体。理解Transformer的自注意力机制、位置编码以及BERT与两类预训练范式的本质差异,是掌握多模态模型训练中“冻结语言模型”或“LoRA微调语言模型”等策略的前提。本节将从架构原理、核心机制、预训练范式及在多模态场景中的适配要点四个维度展开。

Transformer 核心机制与预训练范式映射 输入表示层 Embedding + 位置编码 (PE) + 模态类型嵌入 多头自注意力 (MHSA) Q = X·W_Q, K = X·W_K, V = X·W_V Attention = softmax(QK^T/√d_k)·V 多头拼接 → 线性投影 捕获长距离依赖与全局语义 前馈网络 (FFN) MLP: 线性 → GELU → 线性 逐位置非线性变换 维度: 768 → 3072 → 768 残差连接 + LayerNorm(每个子层后) BERT(编码器范式) 预训练任务:MLM(掩码语言建模)+ NSP 双向上下文:每个可看到左右两侧信息 输出:级向量 → 分类/匹配任务 多模态适配:作为视频文本编码器 (解码器范式) 预训练任务:自回归语言建模(预测下一个) 单向(因果)注意力:只能看到左侧 输出:序列生成 → 对话/创作/推理 多模态适配:作为生成解码器 视频语言多模态模型中的语言模型角色 视频帧特征序列 + 文本序列 → 统一语义空间 训练策略:冻结LM / LoRA微调 / 全量微调 关键:保持语言能力的同时注入视频时序理解

4.1 Transformer架构:编码器与解码器的分工

Transformer架构由Vaswani等人于2017年提出,其核心思想是彻底抛弃循环神经网络(RNN)的时序递归结构,完全依赖自注意力机制(Self-Attention)来建模序列中任意两个位置之间的依赖关系。在标准Transformer中,编码器(Encoder)由若干相同的层堆叠而成,每一层包含两个子层:多头自注意力子层和逐位置前馈网络子层,每个子层后均接残差连接与层归一化(LayerNorm)。解码器(Decoder)则在此基础上增加了一层交叉注意力(Cross-Attention)子层,用于关注编码器输出的上下文信息,同时通过掩码自注意力(Masked Self-Attention)确保生成时只能看到当前位置之前的信息。

在视频语言多模态模型中,这种架构分工被进一步扩展。以Video-LLaVA为例,其视觉编码器(如CLIP ViT)负责将视频帧转换为视觉序列,而语言模型部分则承担“融合推理”的角色——既需要理解视觉与文本之间的对齐关系,又需要根据指令生成自然语言回复。因此,理解编码器与解码器的差异,直接决定了我们在多模态训练中如何选择预训练基座:若任务偏向视频理解与分类(如视频问答),通常采用BERT类编码器作为文本理解模块;若任务偏向视频生成与对话(如视频描述、多轮对话),则必须使用类解码器作为生成引擎。

关键点:Transformer的层归一化位置(Pre-LN vs Post-LN)对训练稳定性有显著影响。现代大语言模型(如、LLaMA)普遍采用Pre-LN结构,即在残差连接之前进行归一化,这有助于缓解深层网络中的梯度消失问题。在多模态模型微调时,若语言模型基座采用Pre-LN,则视觉-语言适配层的初始化应相应调整,避免破坏原有分布。

4.2 自注意力机制:从QKV到多头注意力

自注意力机制是Transformer的基石。对于输入序列 \( X \in \mathbb{R}^{n \times d} \)(n为序列长度,d为隐藏维度),自注意力首先通过三个可学习的权重矩阵 \( W_Q, W_K, W_V \) 将输入映射为查询(Query)、键(Key)和值(Value)三个向量集合:

Q = X · W_Q   # 形状: [n, d_k]
K = X · W_K   # 形状: [n, d_k]
V = X · W_V   # 形状: [n, d_v]

随后计算注意力分数矩阵 \( S = QK^T / \sqrt{d_k} \),其中除以 \( \sqrt{d_k} \) 是为了防止点积结果过大导致softmax梯度饱和。对S进行softmax归一化得到注意力权重矩阵A,最后输出 \( Attention = A \cdot V \)。多头注意力(Multi-Head Attention)则将上述过程并行执行h次(通常h=12或16),每次使用不同的线性投影,最后将h个头的输出拼接并经过一个线性层。多头机制允许模型在不同子空间中捕获不同类型的语义关系——例如某些头关注语法依赖,某些头关注指代关系,某些头关注视频帧间的运动变化。

在视频语言模型中,自注意力的计算复杂度为 \( O(n^2) \),其中n为序列长度。视频帧特征经过视觉编码器后通常产生大量(例如32帧×256 /帧 = 8192 ),直接与文本拼接会导致计算量爆炸。因此,实际工程中常采用以下优化策略:

  • 视觉降采样:通过平均池化或可学习的注意力池化,将每帧数从256压缩至64或更少。
  • 分组注意力(Grouped-Query Attention, GQA):在LLaMA-2/3等模型中,多个查询头共享一组键值头,减少KV缓存占用,提升推理效率。
  • 稀疏注意力:对视频帧采用局部窗口注意力(如Swin Transformer),仅计算相邻帧之间的注意力,降低计算量。
注意力类型 计算方式 适用场景 复杂度
全量自注意力 所有两两计算 短文本、单帧图像 O(n²)
因果自注意力 仅关注左侧(掩码) 类生成模型 O(n²)
稀疏窗口注意力 仅局部窗口内计算 视频帧序列建模 O(n·w)
线性注意力 核函数近似 超长序列(如长视频) O(n)

4.3 预训练语言模型:BERT与的范式对比

预训练语言模型的核心思想是在大规模无标注文本上通过自监督任务学习通用语言表示,再通过下游任务微调(Fine-tuning)或提示学习(Prompting)适配具体应用。BERT(Bidirectional Encoder Representations from Transformers)采用编码器架构,预训练任务为掩码语言建模(MLM)——随机掩盖输入中15%的,让模型根据双向上下文预测被掩盖的。这种设计使BERT天然适合理解类任务,如文本分类、命名实体识别、语义相似度计算。(Generative Pre-trained Transformer)则采用解码器架构,预训练任务为自回归语言建模——给定前文预测下一个。的因果注意力机制使其只能看到左侧信息,但这也赋予了它强大的生成能力,能够连贯地创作文本、回答问题、编写代码。

在多模态视频语言模型中,两种范式的选择并非互斥。以Qwen-VL系列为例,其语言基座采用类解码器(Qwen),但在视觉-语言对齐阶段,会额外引入BERT类对比学习目标(如CLIP-style的图文匹配损失),以增强视觉与文本的语义对齐。而VideoBERT、UniVL等早期模型则完全基于BERT架构,将视频帧特征与文本拼接后输入编码器,通过MLM任务学习跨模态关联。下表总结了两种范式在多模态场景中的关键差异:

维度 BERT(编码器) (解码器)
注意力方向 双向(Bidirectional) 单向(Causal)
预训练任务 MLM + NSP(下一句预测) 自回归语言建模
输出能力 级向量(适合判别) 序列生成(适合生成)
多模态适配方式 拼接视觉,MLM训练 视觉作为前缀,自回归生成
典型模型 VideoBERT, VisualBERT, ALIGN Video-LLaVA, Qwen-VL,
训练效率 并行度高,适合理解任务 需顺序解码,适合交互任务

4.4 位置编码与模态对齐:多模态Transformer的关键工程细节

标准Transformer使用正弦位置编码(Sinusoidal Positional Encoding)或可学习位置编码(Learnable Positional Embedding)来注入序列顺序信息。但在视频语言模型中,位置编码面临两个额外挑战:(1)模态间位置语义不一致——文本的位置表示语法顺序,而视频帧的位置表示时间顺序,两者不能直接共享同一套位置编码;(2)时间动态建模——视频帧之间的时间间隔可能不均匀(如关键帧提取),需要更精细的时间位置编码。

针对上述问题,主流多模态模型采用以下方案:

  1. 分模态位置编码:为文本和视觉分别设置独立的位置编码表,并在输入阶段通过“模态类型嵌入”(Modality Type Embedding)区分。例如,Video-LLaVA中文本的位置编码范围为[0, 文本长度),视觉的位置编码范围为[0, 帧数×每帧数),两者在拼接前各自添加。
  2. 时间感知位置编码:对于视频帧,使用帧索引作为位置编码的基准,而非索引。例如,第i帧的所有共享一个基础位置偏移 \( i \times \Delta \),其中 \( \Delta \) 为可学习的帧间间隔参数。
  3. 相对位置编码:如RoPE(Rotary Position Embedding)或ALiBi(Attention with Linear Biases),这些方法不直接向输入添加位置向量,而是在注意力计算时注入相对位置信息。RoPE通过旋转矩阵对Q和K进行变换,使注意力分数自然包含相对位置衰减,已被LLaMA、Qwen等主流模型采用。
实战建议:在微调视频语言模型时,若视觉数量远大于文本,建议先对视觉进行“时间分组池化”(如每4帧合并为1个),再与文本拼接。这不仅能降低计算量,还能避免位置编码范围过大导致的外推(Extrapolation)性能下降。例如,将32帧视频池化为8个视觉,每个代表4帧的聚合特征,可显著提升模型对长视频的理解稳定性。

4.5 案例拆解:从零构建一个视频问答模型的Transformer部分

假设我们需要构建一个视频问答(VideoQA)模型,输入为一段10秒的视频(30帧/秒,共300帧)和一个问题文本,输出为答案。我们选择基于(124M参数)作为语言解码器,并采用以下工程方案:

步骤1:视觉特征提取。使用预训练的CLIP ViT-B/32将每帧编码为1个[CLS] (维度768),得到300个视觉。为降低序列长度,采用时间平均池化,每10帧合并为1个,最终得到30个视觉。

步骤2:特征投影对齐。视觉维度为768,而的隐藏维度也为768,因此无需额外投影层。但为了增强视觉与文本的语义对齐,我们添加一个可学习的线性层 \( W_{proj} \in \mathbb{R}^{768 \times 768} \) 对视觉进行变换,并添加LayerNorm。

步骤3:序列拼接与位置编码。将30个视觉与问题文本拼接,序列长度为 \( 30 + L_{text} \)。视觉使用可学习的位置编码(范围0-29),文本使用自带的位置编码(范围0-\( L_{text}-1 \))。同时,为每个添加模态类型嵌入(视觉为0,文本为1)。

步骤4:因果注意力掩码。由于是因果模型,我们需要构造一个上三角掩码矩阵,确保每个只能看到自身及之前的。视觉位于序列开头,因此它们可以看到所有视觉,但看不到后续的文本;文本可以看到所有视觉和之前的文本。

步骤5:训练策略。采用两阶段训练:第一阶段冻结,仅训练视觉投影层和位置编码,使用视频-文本对比损失(如InfoNCE)进行对齐;第二阶段解冻的最后4层,使用语言建模损失(交叉熵)进行微调,学习率设为1e-5,并采用余弦退火调度。

结果与复盘:在MSRVTT-QA数据集上,该模型取得了42.3%的准确率,相比直接拼接视觉而不做时间池化的基线(38.1%)提升了4.2个百分点。关键经验是:时间池化不仅降低了计算量,还迫使模型关注更全局的视频语义,减少了帧间噪声干扰。但代价是丢失了细粒度的动作变化信息,在涉及“第几秒发生了什么”的问题上表现较差。后续可通过引入“时间戳预测头”或“分段注意力”来缓解。

常见误区:(1)直接将视频帧特征与文本拼接而不做任何位置编码调整,导致模型无法区分“帧顺序”和“词顺序”;(2)在冻结语言模型时,仍使用较大的学习率更新视觉投影层,造成视觉特征分布与语言模型预训练分布严重偏移;(3)忽略因果掩码的构造,导致训练时信息泄漏——文本提前看到了答案。务必在数据加载器中显式生成注意力掩码,并验证其形状为 [batch, seq_len, seq_len]。

4.6 总结与选型建议

Transformer架构为视频语言多模态模型提供了统一的序列建模框架,自注意力机制使得跨模态的全局依赖建模成为可能,而BERT与两种预训练范式则分别对应了“理解”与“生成”两类核心任务。在实际工程中,选择哪种语言模型基座,取决于产品需求:若需要视频分类、检索、情感分析等判别式任务,BERT类编码器更高效;若需要视频对话、内容创作、多轮交互等生成式任务,类解码器是必然选择。同时,位置编码的设计、注意力掩码的构造、视觉的降采样策略,都是影响模型性能与训练成本的关键细节。

对于多模态模型训练工程师而言,建议在项目初期先进行“小规模消融实验”——固定视觉编码器,对比不同语言模型基座(如BERT-base vs vs LLaMA-7B)在目标数据集上的表现,同时记录训练显存占用与吞吐量。通常,类模型在生成任务上优势明显,但显存开销约为同规模BERT的1.5-2倍(因需缓存KV)。若资源受限,可优先考虑使用LoRA(Low-Rank Adaptation)对语言模型进行参数高效微调,仅训练新增的低秩矩阵,从而在保持性能的同时大幅降低显存需求。