从直觉到证明3Blue1Brown 中文导学教材
3.9 前馈层如何表达特征与关联

3.9 前馈层如何表达特征与关联

区分检测方向与写回方向,用一个通道的外积理解两次线性作用。

例题练习Lean 对照原课

一步一步建立直观

先预测,再点“演示本步”核对右图。每一步都重设到指定情形,随后可以自由修改参数。

01把单元看成一条条件化的贡献

前馈层先把输入投到许多方向,经过非线性,再把各单元贡献合成输出。右图保留一个方向和一个 ReLU:激活强度说明这条方向上的证据有多强。实际向量输出还会乘以一个写出方向,所以一个单元可以理解为“读取一个方向,再写入另一个方向”。

02非线性让贡献具有选择性

当输入位于关闭一侧,当前单元不贡献输出;跨过边界后,贡献随距离线性增长。许多这样的边界可以组合出更复杂的分区。若去掉所有非线性,即便叠加很多仿射层,整体仍只是一个仿射变换,不会自动得到新的表达层次。

03关联解释需要结合整体网络

改变权重和偏置会移动读取方向与门槛,但某个神经元的激活不必对应单一、稳定、易命名的事实。多个特征可能共用方向,一个特征也可能分布在许多单元中。本图用于拆解计算结构;对真实模型的“知识存储位置”仍须做实证检验。

3.9.1 先检测,再写回

前馈层可以看成两阶段:第一组权重对输入做许多测量,非线性决定这些测量怎样激活,第二组权重把激活写回表示空间。一个简化单元先计算 kTxk^Tx,再沿方向 vv 输出相应强度,贡献为 v(kTx)v(k^Tx)。

取 k=(1,2),v=(3,−1),x=(2,1)k=(1,2),v=(3,-1),x=(2,1),检测值为四,写回向量是 (12,−4)(12,-4)。先看检测方向,再看写回方向,可以避免把同一神经元的输入权重和输出权重误认成同一种角色。

3.9.2 外积显示单个通道能做多大的事

把表达式重新加括号,是 (vkT)x(vk^T)x。外积矩阵的每列都与 vv 平行,所以秩至多一:单个线性通道只能沿一条输出方向写信息。多个通道相加能形成更丰富的作用,而非线性又使不同输入激活不同组合。

在 Transformer 中,前馈层通常逐位置处理表示,位置之间的通信主要由注意力承担;不过每个位置的表示此前已经包含上下文,所以“逐位置”不等于“完全不知上下文”。

把通道解释成某个特征或关联的检测器,是有用的构造性图景,却不是对真实模型的唯一解读。特征可能分散在多个单元,也可能在一个单元中叠加。练习时先精确核对外积的计算,再把“网络可以实现什么”与“训练后实际实现什么”分开。

数学表述 3.9.1

前馈层可以先检测输入中的某个方向,再沿另一个方向写回信息。这样能帮助理解关联的存储,但真实网络常使用分布式和叠加表示。

MLP(x)=W2σ(W1x+b1)+b2\operatorname{MLP}(x)=W_2\sigma(W_1x+b_1)+b_2。忽略偏置并在激活处于线性区时,单神经元贡献为 v(kTx)v(k^Tx),等于秩至多为一的矩阵 vkTvk^T 作用于 xx。

例 3.9.1 把概念用于具体计算

k=(1,2),v=(3,−1),x=(2,1)k=(1,2),v=(3,-1),x=(2,1),检测值为 44,写回向量为 (12,−4)(12,-4)。

练习 3.9.1

写出上例的 vkTvk^T。

展开解答与检查

答案 [36−1−2]\left[\begin{smallmatrix}3&6\\-1&-2\end{smallmatrix}\right],行列式为零。

Lean 对照 3.9.1 命题、证明与适用边界

验证二维检测后写回等于相应外积矩阵作用的坐标公式;不是对模型知识存储机制的经验证明。

NeuralNetworks.mlp_rank_one

theorem mlp_rank_one (a b c d x y : ℝ) :
    (c*(a*x+b*y), d*(a*x+b*y)) =
      ((c*a)*x+(c*b)*y, (d*a)*x+(d*b)*y) := by
  ext <;> ring

-- Algebra of the noising equation; this does not assert a generative model is correct.

查看完整定义与上下文 ↗ · 全书证明范围

原课对照 观课问题、视频与图示

区分检测方向与写回方向,用一个通道的外积理解两次线性作用。

官方课程与图示 ↗ · 原视频 ↗

点击后连接 YouTube;播放器不可用时可通过上方原链接观看。