Software 2.0

Curated AI & engineering insights.

MLP与ReLU²激活函数的研究

MLP与ReLU²激活函数的研究

Transformer MLP层标准的norm()预处理步骤对激活函数行为有着深远的影响,我觉得这个现象足够有趣,值得记录下来。我经常看到人们在讨论激活函数时使用直线数轴f(x)的方式,这给出的直觉与激活函数接受单位球面作为输入时截然不同——而后者正是我们对输入进行归一化时发生的情况。 下面展示了单个神经元在输入经过均方根归一化后的Relu MLP中的行为。为简单起见,我将缩放因子除以root(d_model),使得输入位于单位球面上。 输入由蓝色点表示。这些输入首先被归一化为相同的长度。如果输入被初始化为正态分布,那么这些点均匀地分布在d_model维球面上(顺便说一下,这引发了一个问题:为什么在使用K和Q归一化的模型中,K和Q向量使用均匀初始化而不是正态初始化——似乎这会导致不均匀的初始化)。红色箭头代表神经元输入权重的方向。高对齐度(0,1)的蓝色点有高激活值,正交的蓝色点(1,0)激活值为零。黑线代表Relu(x) = 0的阈值。 神经元的行为是:对于阈值线以上的所有点,计算它们的距离。将蓝色点沿蓝色箭头方向移动this_distance*scalar的距离。在权重更新期间: MLP可以同时设置红色和蓝色向量。两个向量都固定在原点,因为模型在MLP中没有偏置项。输入只能沿单位球面移动。