一、引言

MLA的知识请看上一篇详细介绍

你敢信吗?大模型里几万个参数的特征向量,居然能被压缩成 2 个数字存起来,用的时候还能原样 “复活”?

DeepSeek 的 MLA(还有 LoRA 这类技术)里藏着个狠活:$W_{down}$$W_{up}$这对 “压缩 - 还原 CP”,靠 “低秩分解” 把高维信息榨出 “精华”,显存直接省一半,计算还没变慢 —— 这波操作,到底是怎么让大模型又轻又聪明的?

在 DeepSeek 的 MLA(以及 LoRA 等技术)中,$W_{down}$(降维/压缩矩阵)$W_{up}$(升维/解压矩阵) 是一对形影不离的搭档。

它们的核心原理基于线性代数中的**“低秩分解 (Low-Rank Decomposition)”**。

二、原理:信息的“提炼”与“还原”

我们可以把这两个矩阵想象成一个**“压缩器”和一个“生成器”**。

  • $W_{down}$ (压缩器):

    • 原理: 输入的高维向量中往往包含大量冗余信息(比如“苹果”和“水果”在语义上有重叠)。$W_{down}$ 的作用是提取最核心的**“精华特征”**(Latent Vector),抛弃噪音和冗余。

    • 动作: 将高维向量 $x$ 映射到一个极小的维度$d_{latent}$

  • $W_{up}$ (生成器/还原器):

    • 原理: 虽然精华特征只有几个数字,但它蕴含了恢复全貌的“种子”信息。$W_{up}$ 负责把这些种子“发芽”,扩展回高维空间,以供多头注意力机制(Multi-Head)使用。

    • 动作: 将低维的 Latent Vector 映射回高维,生成 $K$$V$

核心假设: 大模型虽然参数很多,但在处理具体任务时,真正起作用的特征维度其实很低(即“低秩假设”)。

三、数值计算示例

为了演示,我们设定一个极简的场景:

  • 输入维度 ($d_{model}$): 4

  • 压缩维度 (Latent Dim): 2 (压缩了一半)

  • 目标输出维度 (比如 KV 的总维度): 4

设定输入向量 $x$
 $x = [1, 2, 3, 4]$

3.1 降维(Down-Projection)

3.2 升维 (Up-Projection)

四、MLA 中的“神来之笔”:矩阵吸收

五、两个矩阵如何初始化

这里需要区分 MLA (作为基础架构)LoRA (作为微调插件),虽然它们数学形式都是 $A \times B$,但初始化逻辑完全不同。

情况 A:DeepSeek MLA (从头预训练 Pre-training)

MLA 是 DeepSeek V2/V3 模型原本骨架的一部分,不是后来加进去的补丁。

  • 初始化策略: 标准初始化 (Standard Initialization)

    • 通常使用 Xavier (Glorot) 初始化Kaiming (He) 初始化

    • 也就是两个矩阵都初始化为均值为 0、方差较小的高斯分布 (Gaussian Distribution) 随机数。

  • 原因:

    • 模型是从一张白纸开始学的。我们需要让信号在网络中流动起来。

    • 如果把其中一个初始化为 0,那么输出就全为 0,梯度就断了 (Dead Neuron),模型一开始就学不到东西。

情况 B:LoRA (微调 Fine-tuning)

虽然 MLA 是架构,但面试常问的“低秩矩阵初始化”通常会关联到 LoRA。LoRA 的初始化非常有讲究。

  • 初始化策略:

    • $W_{down}$(矩阵 A): 高斯随机初始化 (Gaussian Initialization)。

    • $W_{up}$ (矩阵 B): 全零初始化 (Zero Initialization)。

六、总结

  • $W_{down}$是为了省显存(把数据压小存起来)。

  • $W_{up}$ 是为了保智商(保留了恢复高维特征的能力,让模型依然能理解复杂关系,虽然它平时是以压缩状态存在的)。

Logo

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

更多推荐