摘要
我们提出了高斯误差线性单元(GELU),它一种高性能的神经网络激活函数。GELU的非线性是随机正则化器的预期变换,随机正则化器(防止过拟合)将等式或零映射随机应用于神经元的输入。GELU的非线性按其幅度输入,而不是按照ReLU中的符号进行门控输入。我们针对ReLU和ELU激活对GELU非线性进行了实验评估,并在所有考虑的计算机视觉,自然语言处理和语音任务中发现了性能改进。
1.介绍
早期人工神经元利用二元阈值单位(Hopfield,1982; McCulloch&Pitts,1943)。这些二元决策通过sigmoid激活进行平滑,使神经元具有“激活率(firing rate)”解释并用反向传播进行训练。但随着网络的层数变得越来越深,使用Sigmoid激活的训练证明不如非平滑,概率较小的ReLU(Nair&Hinton,2010)有效,后者根据输入的符号做出门控决策。尽管具有较少的统计动机,但ReLU仍然是一种竞争性的工程解决方案,通常能够实现比sigmoids更快,更好的收敛。在ReLU的成功基础上,最近一项名为ELU的修改(Clevert等,2016)允许类似ReLU的非线性输出负值,这有时会提高训练速度。总之,激活函数的选择仍然是神经网络的必要架构决策,以免网络成为深度线性分类器(deep linear classifier)。
深度非线性分类器(Deep nonlinear classifiers)可以很好地拟合任何的数据,从而使得网络设计人员经常面临包括随机正则化器的选择,例如向隐藏层添加噪声或应用dropout(Srivastava等,2014)来防止过拟合,并且这种选择仍然与激活函数分开。一些随机正则化器可以使网络表现得像网络集合,伪解码(Bachman等,2014),并且可以导致显着的准确度增加。例如,随机正则化器dropout通过零乘法随机改变一些激活决策来创建伪随机。因此,非线性和dropout一起决定了神经元的输出,但这两项创新仍然不同。 更多的是,它们都不彼此包含,因为流行的随机正则化器无论输入如何都会起作用,并且这些正则化器有助于非线性。
在这项工作中,我们引入了一种新的非线性,即高斯误差线性单元(GELU)。它与随机正则化器有关,因为它是对自适应Dropout的修改的期望(Ba&Frey,2013)。这表明神经元输出的概率更高的观点。我们发现这种新颖的非线性在计算机视觉,自然语言处理和自动语音识别等任务中匹配或超过具有ReLU或ELU的模型。
2.GELU公式
我们通过组合dropout,zoneout和ReLUs的属性来激励我们的激活函数。首先请注意,ReLU和Dropout都会产生一个神经元的输出,ReLU确定性地将输入乘以零或一,dropout随机乘以零。此外,一个名为zoneout的新RNN正则化器随机地将输入乘以1(Krueger等,2016)。我们通过将输入乘以零或一来合并此功能,但是这个0-1掩码的值是随机确定的,同时还取决于输入。具体来说,我们可以将神经元输入
x
x
x乘以
m
∼
B
e
r
n
o
u
l
l
i
(
Φ
(
x
)
)
m\sim Bernoulli(Φ(x))
m∼Bernoulli(Φ(x)),其中
Φ
(
x
)
=
P
(
X
≤
x
)
,
X
∼
N
(
0
,
1
)
Φ(x)= P(X≤x),X\sim N(0,1)
Φ(x)=P(X≤x),X∼N(0,1)是标准正态分布函数的累积分配。我们选择这种分布是因为神经元输入倾向于遵循正态分布,特别是对于Batch Normalization。在此设置中,随着x减小,输入具有更高的“丢弃”概率,因此应用于x的变换是随机的,又同时取决于输入。以这种方式屏蔽输入不仅保留了非确定性,而且同时又保持对输入值的依赖。随机选择的掩码相当于输入的随机零或同一性变换。这很像自适应Dropout(Ba&Frey,2013),但自适应Dropout与非线性一起使用,并使用logistic而非标准正态分布。我们发现只用这个随机正则化器就可以训练有竞争力的MNIST和TIMIT网络,所有这些都不使用任何非线性。
我们经常需要来自神经网络的确定性决策,这就产生了我们新的非线性。非线性是随机正则化器在输入x上的预期变换,其为
Φ
(
x
)
×
I
x
+
(
1
−
Φ
(
x
)
)
×
0
x
=
x
Φ
(
x
)
Φ(x)×Ix+(1-Φ(x))×0x=xΦ(x)
Φ(x)×Ix+(1−Φ(x))×0x=xΦ(x)。宽松地说,这个表达式表明我们通过
x
x
x相对于其他输入的较大程度来缩放
x
x
x。由于高斯的累积分布函数通常用误差函数计算,我们将高斯误差线性单位(GELU)定义为
G
E
L
U
(
x
)
=
x
P
(
X
≤
x
)
=
x
Φ
(
x
)
.
GELU(x) = xP(X ≤ x) = xΦ(x).
GELU(x)=xP(X≤x)=xΦ(x).
我们可以用GELU来近似
0.5
x
(
1
+
t
a
n
h
[
2
/
π
(
x
+
0.044715
x
3
)
]
)
0.5x(1 + tanh[\sqrt{2/π}(x + 0.044715x^3)])
0.5x(1+tanh[2/π(x+0.044715x3)])
或者
x
σ
(
1.702
x
)
.
xσ(1.702x).
xσ(1.702x).
我们可以使用
N
(
μ
,
σ
2
)
N(μ,σ2)
N(μ,σ2)的CDF并且μ和σ是可学习的超参数,但是在整个这项工作中我们简单地让
μ
=
0
μ=0
μ=0和
σ
=
1
σ=1
σ=1。因此,我们在以下实验中不引入任何新的超参数。在下一节中,我们将展示GELU在众多任务中超过ReLU和ELU的性能。