电脑基础 · 2023年3月23日

GELU激活函数

GELU激活函数

论文:GAUSSIAN ERROR LINEAR UNITS (GELUS)

年份:2016

ReLU激活函数的公式可以理解为:

R
e
L
U
(
x
)
=
x

{
1
,
x

,
x
<
ReLU(x) = x\cdot \begin{cases} 1,&x\ge 0\\ 0,&x<0 \end{cases}
ReLU(x)=x{1,0,x0x<0

ReLU、Dropout等机制都希望将\textbf{不重要}的激活信息规整为零。也就是对于输入的值,根据它需要的情况乘以1或0,需要乘以谁不像ReLU人工定义,而是根输入有关。更为数学的描述,对于一个输入
x

N
(
,
1
)
x\sim N(0, 1)
xN(0,1)
,即
x
x
x
服从标准正态分布,而输入
x
x
x
还要乘上一个伯努利分布
B
e
r
n
o
u
l
l
i
(
Φ
(
x
)
)
Bernoulli(\Phi(x))
Bernoulli(Φ(x))

随着
x
x
x
的降低,输出值被归为0的概率就会升高。对于ReLU,这个界限就是0,输入小于0时,输出就归为0。
则怎么判断这个伯努利试验到底失败还是成功呢?则在引入
Φ
(
x
)
\Phi(x)
Φ(x)
来控制伯努利试验成功的概率即:

Φ
(
x
)

I
x
+
(
1

Φ
(
x
)
)

x
=
x

Φ
(
x
)
\Phi(x)\cdot Ix + (1-\Phi(x))\cdot 0x=x\cdot \Phi(x)
Φ(x)Ix+(1Φ(x))0x=xΦ(x)

这个表达式表示根据
x
x
x
比其它输入大多少来缩放它。由于高斯分布的累积分布函数通常用误差函数来计算,因此将高斯误差线性单元)(GELU)定义为:

G
E
L
U
(
x
)
=
x
Φ
(
x
)
=
x

1
2
(
1
+
e
r
f
(
x
/
2
)
)
GELU(x) = x\Phi(x) = x\cdot \frac{1}{2}(1+erf(x/\sqrt{2}))
GELU(x)=xΦ(x)=x21(1+erf(x/2))

近似于

G
E
L
U
(
x
)

0.5
x
(
1
+
t
a
n
h
(
2
/
π
(
x
+
0.044715
x
3
)
)
)

x

s
i
g
m
o
i
d
(
1.702
x
)
GELU(x) \approx 0.5x(1+tanh(\sqrt{2/\pi}(x+0.044715x^3)))\approx x\cdot sigmoid(1.702x)
GELU(x)0.5x(1+tanh(2/π(x+0.044715x3)))xsigmoid(1.702x)


μ
=
,
σ
=
1
\mu = 0,\sigma=1
μ=0,σ=1
时,将GELU称为Sigmoid Linear Unit(SiLU)激活函数。

GELU激活函数的曲线和导数曲线如下图所示。
GELU激活函数

  • GELU为非单调激活函数,有助于保持小的负值,从而稳定网络梯度流;
  • GELU在0附近接近与恒等函数
    x
    x
    x
  • GELU的最小值为-0.21,值域为
    [

    0.21
    ,
    +

    ]
    [-0.21, +\infty]
    [0.21,+]
    。上界是任何激活函数都需要的特征,因为这样可以避免导致训练速度急剧下降的梯度饱和,因此加快训练过程。无下界有助于实现强正则化效果;
  • GELU的梯度不容易造成梯度爆炸和梯度消失。
  • 光滑性:光滑的激活函数有较好的泛化能力和稳定的优化能力,可以提高模型的性能