常用的激活函数理解

常见的激活函数包括sigmoid函数、ReLU函数、Leaky ReLU函数、ELU函数、tanh函数、softmax函数和 gelu函数等。下面对每种激活函数进行详细介绍。

1. Sigmoid函数

Sigmoid函数是一种常用的激活函数,其原理是将输入的值映射到0到1之间,具体公式为:

σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+ex1
在这里插入图片描述

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之间,因此在二分类问题中比较常用。它的缺点是在输入值比较大或比较小的情况下,函数的梯度会变得非常小,这种现象称为梯度消失,会导致网络训练缓慢。

2. ReLU函数

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} = \begin{cases} 1 &\text{if } x > 0 \\ 0 &\text{if } x \leq 0 \end{cases} dxdReLU(x)={10if x>0if x0

ReLU函数的优点是它的计算速度非常快,同时在输入大于0时梯度为1,使得网络的训练速度非常快。它的缺点是在输入小于0时,梯度为0,称为“神经元死亡”现象,这会导致这个神经元再也无法被激活。

3. Leaky ReLU函数

Leaky ReLU函数是对ReLU函数的改进,其原理是在输入小于0的情况下,输出一个小的正数而不是0,这样可以避免神经元死亡现象。具体公式为:

LeakyReLU ( x ) = { x if  x > 0 α x if  x ≤ 0 \text{LeakyReLU}(x) = \begin{cases} x &\text{if } x > 0 \\ \alpha x &\text{if } x \leq 0 \end{cases} LeakyReLU(x)={xαxif x>0if x0

其中 α \alpha α是一个小的正数,通常取0.01。Leaky ReLU函数的导数公式为:

d LeakyReLU ( x ) d x = { 1 if  x > 0 α if  x ≤ 0 \frac{d\text{LeakyReLU}(x)}{dx} = \begin{cases} 1 &\text{if } x > 0 \\ \alpha &\text{if } x \leq 0 \end{cases} dxdLeakyReLU(x)={1αif x>0if x0

Leaky ReLU函数的优点是它避免了神经元死亡现象,同时在输入大于0时,梯度为1,训练速度快。它的缺点是在输入小于0时,梯度不是完全连续的,这可能会影响模型的性能。

4. ELU函数

ELU函数是对Leaky ReLU函数的改进,其原理是在输入小于0的情况下,输出一个接近于0的值,这样可以避免Leaky ReLU函数在输入小于0时梯度不连续的问题。具体公式为:

ELU ( x ) = { x if  x > 0 α ( e x − 1 ) if  x ≤ 0 \text{ELU}(x) = \begin{cases} x &\text{if } x > 0 \\ \alpha(e^x-1) &\text{if } x \leq 0 \end{cases} ELU(x)={xα(ex1)if x>0if x0

其中 α \alpha α是一个小的正数,通常取1。ELU函数的导数公式为:

d ELU ( x ) d x = { 1 if  x > 0 α e x if  x ≤ 0 \frac{d\text{ELU}(x)}{dx} = \begin{cases} 1 &\text{if } x > 0 \\ \alpha e^x &\text{if } x \leq 0 \end{cases} dxdELU(x)={1αexif x>0if x0

ELU函数的优点是它避免了神经元死亡现象,同时在输入小于0时梯度连续,有利于训练。它的缺点是在输入大于0的情况下,计算速度相对较慢。

5. tanh函数

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+exexex
在这里插入图片描述

tanh函数的导数公式为:

d tanh ( x ) d x = 1 − tanh 2 ( x ) \frac{d\text{tanh}(x)}{dx} = 1-\text{tanh}^2(x) dxdtanh(x)=1tanh2(x)
在这里插入图片描述

tanh函数的优点是它可以将任何实数值映射到-1到1之间,因此在对称性要求较高的任务中比较常用。它的缺点与Sigmoid函数类似,在输入值比较大或比较小的情况下,函数的梯度会变得非常小,导致梯度消失。

6. softmax函数

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函数也容易受到噪声数据的影响,需要进行一些技巧性的处理。

7. gelu函数

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)=π 20xet2dt

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π 1e2x2

GELU函数的优点是它在输入值比较大或比较小的情况下,梯度不会变得非常小,避免了梯度消失问题。同时,GELU函数在输入值为负数时,具有非零的导数,避免了神经元死亡问题。此外,GELU函数的计算速度较快。

GELU函数的缺点是它的计算复杂度较高,需要计算误差函数和高斯分布的概率密度函数。此外,GELU函数的性能与ReLU等常用的激活函数相比并没有明显的优势,因此在实际应用中需要根据具体情况进行选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hailey的算法学习笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值