更宽的隐藏层可以对同一输入计算多组响应,再将它们组合为紧凑输出。例如,分别保留正数和负数对应的响应,再进行组合,就能得到绝对值。这个简单构造足以解释升维的作用,无需先引入 Transformer。
扩张隐藏层为中间非线性变换提供更多坐标,同时保持规定的输入输出宽度。其作用取决于这些坐标如何被激活和重新组合,而不是仅取决于坐标数量增加。
1. MLP 中的升维与投影
对于列向量输入 x∈Rd,取中间宽度 m>d,两层多层感知机(MLP)可写为:
h=ReLU(Ax+a),y=Bh+b
其中:
A∈Rm×d,a∈Rm,B∈Rd×m,b∈Rd
ReLU 按坐标作用,定义为 ReLU(t)=max(0,t)。隐藏表示具有 m 个坐标,输出恢复为 d 个坐标。这里的“投影”指可学习的线性映射,不要求是正交投影。计入两组偏置后,参数量为 2dm+m+d。[1]
去掉激活函数后,整个函数变为 y=BAx+Ba+b,仍然只是一个仿射映射。因此,升维本身并不能证明非线性函数族扩大;在这里讨论的构造中,激活函数具有关键作用。
2. 二维、四维、二维的精确构造
取零偏置与矩阵:
A=1−100001−1,B=(10100101)
隐藏向量及输出为:
h=max(0,x1)max(0,−x1)max(0,x2)max(0,−x2),y=(∣x1∣∣x2∣)
对于每个输入坐标,一个隐藏单元保留其正部分,另一个保留其相反数的正部分,两者相加得到绝对值。取 x=(−2,3)⊤,计算为:
Ax=(−2,2,3,−3)⊤,h=(0,2,3,0)⊤,y=(2,3)⊤
该架构具有 16 个矩阵元素和六个偏置位置。上述显式构造将所有偏置设为零,并直接指定矩阵数值。
若移除 ReLU,则 BA=0,所有输入都会输出零。因此,非线性激活对函数的改变可以直接验证。
3. 表达能力与局部秩
单个仿射函数 at+c 不可能在整个实数域上表示 ∣t∣。零点和一点分别要求 c=0、a=1,而负一点又要求 a=−1,产生矛盾。
在 ReLU 激活符号固定的区域内,MLP 为仿射函数。避开激活前数值等于零的位置,其雅可比矩阵为:
Jy(x)=Bdiag(1[Ax+a>0])A
对角元素选择激活单元,跨过激活边界时,局部仿射映射可能改变。更大的 m 提供更多中间单元,供训练形成有用的激活模式。
雅可比矩阵的秩仍然不超过 d。从同一输入计算更多坐标,并不会产生新的独立观测。在上述构造中,x1=h1−h2、x2=h3−h4,因此隐藏表示保留原输入;最终求和则丢弃符号。信息保留取决于具体映射,不能仅根据“升维”或“投影”的名称判断。 [1]
4. 与 Transformer 前馈层的联系
原始 Transformer 的逐位置前馈网络采用“扩展、激活、投影”结构。同一个函数以共享参数分别作用于各序列位置;这与跨位置组合表示的注意力不同。[2]
对于原始配置 d=512、m=2048,计入偏置的参数量为:
2⋅512⋅2048+2048+512=2099712
这一统计只包含前馈层。原始的四倍宽度属于一种设计选择,其局部机制是扩展、非线性激活,再投影回所需输出宽度。
5. 计算成本与收益
增加 m 会提高隐藏激活值的存储需求,以及矩阵乘法的运算成本。相应地,模块可以构造并组合更多非线性的中间响应,同时让输出形状保持与周围层相容。
这种成本是否值得,需要结合任务、优化过程与留出评估判断。宽度或参数量本身都不能确定准确率。因此,先升维再投影应被理解为具有明确成本的结构化非线性计算,而不是增加或减少信息的通用规则。 [1]
参考文献