lec3
feed forward netwok
为什么有 dw = 4 d
为什么 transformer 的 FFN 需要先升维再降维?
这个问题大部分人回答会说升维是为了投影到高维以增强信息的分离能力,再降维是回到原空间对齐下一步计算维度。而之所以选择 4 倍是经验性的,它在计算成本、参数规模、表达能力之间达到了较好的平衡。
但我不接受这样的解释,因为这个回答没有抓住事情的本质。我认为升维的根本原因是非线性激活函数,会导致 50%左右的信息丢失,而在使用激活函数前升维是为了补偿这个损失。
首先要明白激活函数本质是通过“丢失”某些信息,让数据的结构变得非线性,从随机信号处理的角度来看,50% 是一个自然的最优点:
• 如果丢失过少(< 50%),神经元的非线性表达能力不足;
• 如果丢失过多(> 50%),有效信息可能不足,模型训练可能变得不稳定。
详细来说是由于 FFN 结构是两层全连接网络:
-
第一层(升维):Wff 1 让维度从 d 变为 4 d;
-
经过 ReLU(或其他激活函数)大约一半的神经元会变为 0,信息丢失 1/2。
-
第二层(降维):Wff 2 将 4 d 维的结果降回 d 维。等效于有效信息又减少近 1/2;
• 最终有效信息流减少到 (1/2) * (1/2) = 1/4。
如果我们希望最终的有效信息保持与原始输入相同,必须提前升维补偿这个损失,所以自然地会选择升维 4 倍。
下表是常见激活函数的信息丢失比例: