论文链接:https://arxiv.org/abs/1606.08415
在神经网络的建模过程中,模型很重要的性质就是非线性,同时为了模型泛化能力,需要加入随机正则,例如dropout(随机置一些输出为0,其实也是一种变相的随机非线性激活), 而随机正则与非线性激活是分开的两个事情, 而其实模型的输入是由非线性激活与随机正则两者共同决定的。
正是在激活中引入了随机正则的思想,是一种对神经元输入的概率描述,直观上更符合自然的认识,同时实验效果要比与都要好。
其实是 、、的综合,对于输入乘以一个组成的,而该的生成则是依概率随机的依赖于输入。假设输入为为,则服从一个伯努利分布, 这么选择是因为神经元的输入趋向于正太分布,这么设定使得当输入减小的时候,输入会有一个更高的概率被掉,这样的激活变换就会随机依赖于输入了。
数学表达如下:
这里是正太分布的概率函数,可以简单采用正太分布, 要是觉得不刺激当然可以使用参数化的正太分布, 然后通过训练得到。
对于假设为标准正太分布的, 论文中提供了近似计算的数学公式,如下:
def gelu(input_tensor):
cdf = 0.5 * (1.0 + tf.erf(input_tensor / tf.sqrt(2.0)))
return input_tesnsor*cdf
GELU学习更快且更好: