Transformer兴起后,GELU激活函数流行起来,即便在CNN模型中,也常见GELU替代RELU。这篇文章从数学角度理解GELU是怎样来的。

从狄拉克函数始

狄拉克函数(Dirac delta function),

要求满足积分,

这个函数看起来及其诡异难理解,这怎么能行?我们可以从极限的思路来理解它,假设有分段函数,

于是有,

于是$\delta(x)$的分段式成立。

在量子力学中使用非常广,如Delta位势阱。在概率论上也有应用,例如有离散分布为,

其概率密度函数可以使用狄拉克函数紧凑地表示,

显然$\delta(x)$​是一个非常怪异的函数,在数值计算运用时,我们常常寻找其近似形式。

“钟形”曲线近似

狄拉克函数的逼近形式具有两个特点:

  • 关于$y$​​轴对称的偶函数,函数图形是“钟形”曲线
  • 在$\mathbb{R}$上的积分为$1$

这两点最容易让人想到的是概率密度函数,因为它的积分一定为$1$。注意到,正态分布概率密度函数逼近,

这是最容易想到的形式,因为概率密度全定义域积分为1,密度函数对称。取极限,

$\sigma$不同取值下的可视化,

相当于,

此外,还有逼近形式,只不过并不优雅,且存在不不可导点,

类似地,

还有,

如果对$\delta(x)$求积分,得到阶跃(Heaviside step)函数,

这里$\sigma$控制$\frac{1}{\sqrt{\pi \sigma^2}}e^{-(x/\sigma)^{2}}$逼近$\delta(x)$的程度,也就是相当于控制$\frac {1}{2}\left[1+\operatorname {erf} \left({\frac {x }{\sigma {\sqrt {2}}}}\right)\right]$逼近$H(x)$​​的程度,$\sigma$越小,逼近程度越好。

于是有近似,

类似于从$\delta(x)$​到$H(x)$​的思路,对$H(x)$​​再次求积分会如何呢?其实我们得到$\max { 0, x }$​,这个从几何直观容易理解,​

$\max { 0, x }$不就是$\operatorname{relu}(x)$激活函数!同时也注意到,$\max { 0, x } = x \times H(x)$。

回顾以上思路,我们似乎找到$\operatorname{gelu}(x)$激活函数的由来。​完整推导如下,

根据论文Gaussian Error Linear Units (GELUs)有结论$a = \sqrt{\frac{2}{\pi}}, b = \sqrt{\frac{2}{\pi}} \times 0.044715$。以上推导用到正态分布的累积分布函数$\Phi_{\sigma}(x) $与误差函数$\operatorname{erf}(x)$的关系,

类似的思路获得$\operatorname{relu}(x)$的其他逼近,

取$k=\frac{1}{2}$​​​​​,有$\operatorname{relu}(x) \approx \ln(1 + e^x)$​​,得Softplus函数。

总结

本文从狄拉克函数$\delta(x)$​的光滑近似出发,导出了Transformer中常用的激活函数$\operatorname{gelu}(x)$。

转载请包括本文地址:https://allenwind.github.io/blog/14721
更多文章请参考:https://allenwind.github.io/blog/archives/