赞
踩
常见的激活函数包括sigmoid函数、ReLU函数、Leaky ReLU函数、ELU函数、tanh函数、softmax函数和 gelu函数等。下面对每种激活函数进行详细介绍。
Sigmoid函数是一种常用的激活函数,其原理是将输入的值映射到0到1之间,具体公式为:
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x) = \frac{1}{1+e^{-x}}
σ(x)=1+e−x1
Sigmoid函数的导数公式为:
d
σ
(
x
)
d
x
=
σ
(
x
)
(
1
−
σ
(
x
)
)
\frac{d\sigma(x)}{dx}=\sigma(x)(1-\sigma(x))
dxdσ(x)=σ(x)(1−σ(x))
Sigmoid函数的优点是它可以将任何实数值映射到0到1之间,因此在二分类问题中比较常用。它的缺点是在输入值比较大或比较小的情况下,函数的梯度会变得非常小,这种现象称为梯度消失,会导致网络训练缓慢。
ReLU函数是一种非常简单的激活函数,它的原理是将输入的值直接输出,如果输入小于0,则输出0。具体公式为:
ReLU ( x ) = max ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)
ReLU函数的导数公式为:
d
ReLU
(
x
)
d
x
=
{
1
if
x
>
0
0
if
x
≤
0
\frac{d\text{ReLU}(x)}{dx} =
ReLU函数的优点是它的计算速度非常快,同时在输入大于0时梯度为1,使得网络的训练速度非常快。它的缺点是在输入小于0时,梯度为0,称为“神经元死亡”现象,这会导致这个神经元再也无法被激活。
Leaky ReLU函数是对ReLU函数的改进,其原理是在输入小于0的情况下,输出一个小的正数而不是0,这样可以避免神经元死亡现象。具体公式为:
LeakyReLU
(
x
)
=
{
x
if
x
>
0
α
x
if
x
≤
0
\text{LeakyReLU}(x) =
其中 α \alpha α是一个小的正数,通常取0.01。Leaky ReLU函数的导数公式为:
d
LeakyReLU
(
x
)
d
x
=
{
1
if
x
>
0
α
if
x
≤
0
\frac{d\text{LeakyReLU}(x)}{dx} =
Leaky ReLU函数的优点是它避免了神经元死亡现象,同时在输入大于0时,梯度为1,训练速度快。它的缺点是在输入小于0时,梯度不是完全连续的,这可能会影响模型的性能。
ELU函数是对Leaky ReLU函数的改进,其原理是在输入小于0的情况下,输出一个接近于0的值,这样可以避免Leaky ReLU函数在输入小于0时梯度不连续的问题。具体公式为:
ELU
(
x
)
=
{
x
if
x
>
0
α
(
e
x
−
1
)
if
x
≤
0
\text{ELU}(x) =
其中 α \alpha α是一个小的正数,通常取1。ELU函数的导数公式为:
d
ELU
(
x
)
d
x
=
{
1
if
x
>
0
α
e
x
if
x
≤
0
\frac{d\text{ELU}(x)}{dx} =
ELU函数的优点是它避免了神经元死亡现象,同时在输入小于0时梯度连续,有利于训练。它的缺点是在输入大于0的情况下,计算速度相对较慢。
tanh函数是一种常用的激活函数,其原理是将输入的值映射到-1到1之间,具体公式为:
tanh
(
x
)
=
e
x
−
e
−
x
e
x
+
e
−
x
\text{tanh}(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}}
tanh(x)=ex+e−xex−e−x
tanh函数的导数公式为:
d
tanh
(
x
)
d
x
=
1
−
tanh
2
(
x
)
\frac{d\text{tanh}(x)}{dx} = 1-\text{tanh}^2(x)
dxdtanh(x)=1−tanh2(x)
tanh函数的优点是它可以将任何实数值映射到-1到1之间,因此在对称性要求较高的任务中比较常用。它的缺点与Sigmoid函数类似,在输入值比较大或比较小的情况下,函数的梯度会变得非常小,导致梯度消失。
softmax函数是一种常用的激活函数,主要用于多分类问题中,其原理是将输入的值映射到0到1之间,并且所有输出值之和为1,具体公式为:
softmax ( x i ) = e x i ∑ j = 1 K e x j \text{softmax}(x_i) = \frac{e^{x_i}}{\sum_{j=1}^K e^{x_j}} softmax(xi)=∑j=1Kexjexi
其中 K K K是输出的类别数。softmax函数的导数公式比较复杂,这里不再赘述。
softmax函数的优点是它可以将输出值映射到概率分布上,有利于多分类问题的处理。它的缺点是在输入值比较大或比较小的情况下,函数的梯度会变得非常小,导致梯度消失。此外,softmax函数也容易受到噪声数据的影响,需要进行一些技巧性的处理。
GELU(Gaussian Error Linear Units)是一种比较新的激活函数,其原理是将输入的值通过高斯误差函数进行变换,具体公式为:
GELU ( x ) = x Φ ( x ) \text{GELU}(x) = x\Phi(x) GELU(x)=xΦ(x)
其中 Φ ( x ) \Phi(x) Φ(x)是高斯分布的累积分布函数:
Φ ( x ) = 1 2 ( 1 + erf ( x 2 ) ) \Phi(x) = \frac{1}{2}(1+\text{erf}(\frac{x}{\sqrt{2}})) Φ(x)=21(1+erf(2 x))
其中erf(x)是误差函数:
erf
(
x
)
=
2
π
∫
0
x
e
−
t
2
d
t
\text{erf}(x) = \frac{2}{\sqrt{\pi}}\int_0^x e^{-t^2}dt
erf(x)=π
2∫0xe−t2dt
GELU函数的导数公式为:
d GELU ( x ) d x = Φ ( x ) + x ϕ ( x ) \frac{d\text{GELU}(x)}{dx} = \Phi(x)+x\phi(x) dxdGELU(x)=Φ(x)+xϕ(x)
其中 ϕ ( x ) \phi(x) ϕ(x)是高斯分布的概率密度函数:
ϕ ( x ) = 1 2 π e − x 2 2 \phi(x) = \frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}} ϕ(x)=2π 1e−2x2
GELU函数的优点是它在输入值比较大或比较小的情况下,梯度不会变得非常小,避免了梯度消失问题。同时,GELU函数在输入值为负数时,具有非零的导数,避免了神经元死亡问题。此外,GELU函数的计算速度较快。
GELU函数的缺点是它的计算复杂度较高,需要计算误差函数和高斯分布的概率密度函数。此外,GELU函数的性能与ReLU等常用的激活函数相比并没有明显的优势,因此在实际应用中需要根据具体情况进行选择。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。