前馈全连接层邪修理解

这是一个非常经典的**“还原论”**陷阱。

你觉得它只是“两个线性层(矩阵乘法)+ 激活函数”,这听起来像是在做简单的数学变换。但就像你把大脑切开只看到神经元和突触(只是电信号开关)一样,结构的简单性掩盖了功能的复杂性。

为了让你理解为什么这玩意能“存知识”,我们需要引入一个2020年由 Geva 等人提出的颠覆性视角

FFN 本质上是一个巨大的、可微分的 Key-Value 内存网络(Key-Value Memory Network)。

别把 $W_1$$W_2$ 当成矩阵,把它们当成两个巨大的字典


1. 拆解 FFN:它其实是在“查字典”

假设 FFN 的公式是:

 

$$Output = \text{ReLU}(x \cdot W_1) \cdot W_2$$

我们将 $W_1$$W_2$ 拆解开来看:

第一步:$W_1$ 是“识别器” (Keys)

  • 结构: $W_1$ 的形状是 $[d, 4d]$。这意味着它有 $4d$ 个列向量

  • 功能: 每一个列向量,都是一个**“探测器”**(Pattern Detector)。

  • 过程:

    • 当输入向量 $x$ 进来时,它会和这 $4d$ 个列向量分别做点积(计算相似度)。

    • 举例:

      • 第 5 号列向量可能是专门识别“法国文化”的探测器。

      • 第 100 号列向量可能是识别“代码报错”的探测器。

    • 如果 $x$ 里含有“巴黎”,第 5 号探测器的分数就会很高(被激活)。

第二步:Activation (ReLU/GELU) 是“过滤器”

  • 功能: 它的作用是 “非黑即白” 的筛选。

  • 过程:

    • 如果探测器的分数是负的(不相关),ReLU 直接把它变成 0(静音)。

    • 只有那些强烈相关的探测器(神经元),才能保留下来的数值。

    • 这造成了“稀疏性”:虽然有 14000 个神经元,但对某一个词,可能只有 50 个亮了。

第三步:$W_2$ 是“内容库” (Values)

  • 结构: $W_2$ 的形状是 $[4d, d]$。它有 $4d$ 个行向量

  • 功能: 每一个行向量,都对应着 $W_1$ 里那个探测器的**“联想内容”**。

  • 过程:

    • 刚才第 5 号探测器(法国文化)亮了。

    • 模型就会去 $W_2$ 里把第 5 号行向量取出来。

    • 这个向量里可能编码了:“埃菲尔铁塔”、“法棍”、“欧洲”等信息。

    • 这些信息被加到了最终输出里。


2. 举个具体的“人话”例子

假设我们输入一个词向量 $x = \text{"Newton"}$ (牛顿)

  1. 进入 $W_1$ (匹配 Key):

    • 神经元 A(专管水果):没反应。

    • 神经元 B(专管物理学家):激活! (分数 0.9)

    • 神经元 C (专管单位):激活! (分数 0.8)

    • 神经元 D (专管明星):没反应。

  2. 经过 ReLU:

    • 只保留 B 和 C,其他归零。

  3. 进入 $W_2$ (提取 Value):

    • 找到神经元 B 对应的 $W_2$ 向量 $\rightarrow$ 提取出特征:[重力, 苹果, 微积分]

    • 找到神经元 C 对应的 $W_2$ 向量 $\rightarrow$ 提取出特征:[力的单位, kg*m/s^2]

  4. 加权求和:

    • 输出向量 = $0.9 \times \text{特征B} + 0.8 \times \text{特征C}$

    • 结果:Input 是“牛顿”,Output 变成了带有“重力、微积分、力的单位”属性的混合向量。

你看,这不就是一次“知识检索”吗?


3. 为什么它能存下“海量”知识?

你可能会问:就两个矩阵,能存下人类百科全书?

答案在于:组合爆炸 (Combinatorial Generalization)。

FFN 的中间层(Hidden Dimension)通常很大(比如 Llama3 是 14336)。

这意味着它有 14,336 个基础概念探测器。

但是,知识不是存储在单个神经元里的,而是存储在神经元的组合里的(Distributed Representation)。

  • 概念“红苹果” = 神经元 1 + 神经元 5 同时亮。

  • 概念“青苹果” = 神经元 2 + 神经元 5 同时亮。

  • 概念“红跑车” = 神经元 1 + 神经元 9 同时亮。

$14336$ 个开关,能组合出多少种状态?是 $2^{14336}$。

这是一个比宇宙原子总数还大的数字。

虽然实际上受限于训练数据没那么多,但这个向量空间的容量足够把整个互联网的文本模式压缩进去了。


4. 总结

你觉得它简单,是因为你关注的是计算步骤(乘法、加法)。

但神经网络的奥秘不在于代码逻辑,而在于数据(权重)。

  • 代码逻辑 (Model Architecture): 确实就是两个线性层,很简单。它只是搭建了一个书架

  • 权重参数 (Weights): 这是训练出来的几十亿个参数。它们是填满书架的

前馈层 (FFN) 之所以能做推理,是因为通过海量数据的训练,$W_1$ 学会了“如何分类世间万物”,$W_2$ 学会了“这些分类对应的属性是什么”。

两个线性层,恰恰构成了最最高效的**“Hash Map”**(哈希表)结构。

发表评论