一步一步建立直观
先预测,再点“演示本步”核对右图。每一步都重设到指定情形,随后可以自由修改参数。
01把单元看成一条条件化的贡献
前馈层先把输入投到许多方向,经过非线性,再把各单元贡献合成输出。右图保留一个方向和一个 ReLU:激活强度说明这条方向上的证据有多强。实际向量输出还会乘以一个写出方向,所以一个单元可以理解为“读取一个方向,再写入另一个方向”。
02非线性让贡献具有选择性
当输入位于关闭一侧,当前单元不贡献输出;跨过边界后,贡献随距离线性增长。许多这样的边界可以组合出更复杂的分区。若去掉所有非线性,即便叠加很多仿射层,整体仍只是一个仿射变换,不会自动得到新的表达层次。
03关联解释需要结合整体网络
改变权重和偏置会移动读取方向与门槛,但某个神经元的激活不必对应单一、稳定、易命名的事实。多个特征可能共用方向,一个特征也可能分布在许多单元中。本图用于拆解计算结构;对真实模型的“知识存储位置”仍须做实证检验。
3.9.1 先检测,再写回¶
前馈层可以看成两阶段:第一组权重对输入做许多测量,非线性决定这些测量怎样激活,第二组权重把激活写回表示空间。一个简化单元先计算 ,再沿方向 输出相应强度,贡献为 。
取 ,检测值为四,写回向量是 。先看检测方向,再看写回方向,可以避免把同一神经元的输入权重和输出权重误认成同一种角色。
3.9.2 外积显示单个通道能做多大的事¶
把表达式重新加括号,是 。外积矩阵的每列都与 平行,所以秩至多一:单个线性通道只能沿一条输出方向写信息。多个通道相加能形成更丰富的作用,而非线性又使不同输入激活不同组合。
在 Transformer 中,前馈层通常逐位置处理表示,位置之间的通信主要由注意力承担;不过每个位置的表示此前已经包含上下文,所以“逐位置”不等于“完全不知上下文”。
把通道解释成某个特征或关联的检测器,是有用的构造性图景,却不是对真实模型的唯一解读。特征可能分散在多个单元,也可能在一个单元中叠加。练习时先精确核对外积的计算,再把“网络可以实现什么”与“训练后实际实现什么”分开。
与本图相连的定义与证明:3.5 · 严格激活区域中的权重梯度。本节的具体条件与形式化范围见下文。
数学表述 3.9.1¶
前馈层可以先检测输入中的某个方向,再沿另一个方向写回信息。这样能帮助理解关联的存储,但真实网络常使用分布式和叠加表示。
。忽略偏置并在激活处于线性区时,单神经元贡献为 ,等于秩至多为一的矩阵 作用于 。
例 3.9.1 把概念用于具体计算
,检测值为 ,写回向量为 。
练习 3.9.1¶
写出上例的 。
展开解答与检查
答案 ,行列式为零。
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.