神经网络中,激活函数有哪些种类

神经网络中,激活函数有哪些种类

在神经网络中,激活函数通过引入非线性变换,使模型能够学习复杂的数据模式。以下是常见的激活函数分类及其详细说明,包括公式、特性、应用场景和优缺点:

一、基础激活函数

1. Sigmoid(Logistic)

公式:σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}

σ(x)=1+e−x1​

输出范围:(0, 1)

特性:

连续、光滑、可微。

将输入压缩到0到1之间,适合表示概率(如二分类输出层)。

缺点:

梯度消失:当输入绝对值较大时,梯度接近0,导致深层网络训练困难。

输出非零中心:可能引发梯度更新方向不稳定(如所有输出为正时,梯度更新偏向同一方向)。

应用:

二分类问题的输出层(如逻辑回归)。

早期神经网络(现多被ReLU替代)。

2. Tanh(双曲正切)

公式:tanh⁡(x)=ex−e−xex+e−x=2σ(2x)−1\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} = 2\sigma(2x) - 1

tanh(x)=ex+e−xex−e−x​=2σ(2x)−1

输出范围:(-1, 1)

特性:

类似Sigmoid,但输出零中心,梯度消失问题仍存在(但比Sigmoid轻)。

应用:

隐藏层(比Sigmoid更常用,因零中心性更好)。

3. ReLU(Rectified Linear Unit)

公式:ReLU(x)=max⁡(0,x)\text{ReLU}(x) = \max(0, x)

ReLU(x)=max(0,x)

输出范围:[0, +∞)

特性:

计算高效:仅需比较和阈值操作。

缓解梯度消失:正区间梯度恒为1,加速收敛。

缺点:

神经元死亡:当输入始终为负时,梯度为0,神经元无法更新(权重永久失效)。

应用:

隐藏层的默认选择(如CNN、MLP)。

二、改进型激活函数(解决ReLU问题)

1. Leaky ReLU

公式:LeakyReLU(x)={xif x≥0αxif x<0(α∈(0,1),如0.01)\text{LeakyReLU}(x) =

\begin{cases}

x & \text{if } x \geq 0 \\

\alpha x & \text{if } x < 0 \quad (\alpha \in (0, 1), \text{如0.01})

\end{cases}

LeakyReLU(x)={xαx​if x≥0if x<0(α∈(0,1),如0.01)​

特性:

为负输入引入小斜率(如0.01),避免神经元死亡。

应用:

图像分类(如ResNet中常用)。

2. Parametric ReLU (PReLU)

公式:PReLU(x)={xif x≥0αxif x<0(α为可学习参数)\text{PReLU}(x) =

\begin{cases}

x & \text{if } x \geq 0 \\

\alpha x & \text{if } x < 0 \quad (\alpha \text{为可学习参数})

\end{cases}

PReLU(x)={xαx​if x≥0if x<0(α为可学习参数)​

特性:

通过反向传播自动学习负区间的斜率,比Leaky ReLU更灵活。

应用:

需精细调参的任务(如某些计算机视觉任务)。

3. Exponential Linear Unit (ELU)

公式:ELU(x)={xif x≥0α(ex−1)if x<0(α>0)\text{ELU}(x) =

\begin{cases}

x & \text{if } x \geq 0 \\

\alpha (e^x - 1) & \text{if } x < 0 \quad (\alpha > 0)

\end{cases}

ELU(x)={xα(ex−1)​if x≥0if x<0(α>0)​

特性:

负区间平滑(指数函数),输出均值接近零,缓解梯度消失。

计算成本略高于ReLU。

应用:

需稳定训练的深层网络(如某些RNN变体)。

4. Swish

公式:Swish(x)=x⋅σ(βx)(β可学习或固定为1)\text{Swish}(x) = x \cdot \sigma(\beta x) \quad (\beta \text{可学习或固定为1})

Swish(x)=x⋅σ(βx)(β可学习或固定为1)

特性:

自门控机制(类似LSTM中的门控),平滑且非单调。

在深度网络中表现优于ReLU(如Google的MobileNetV3)。

缺点:

计算成本较高(需Sigmoid和乘法操作)。

应用:

计算机视觉和自然语言处理(如BERT的变体)。

三、特殊场景激活函数

1. Softmax

公式:Softmax(xi)=exi∑j=1Kexj(对K维向量操作)\text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j=1}^K e^{x_j}} \quad \text{(对K维向量操作)}

Softmax(xi​)=∑j=1K​exj​exi​​(对K维向量操作)

输出范围:(0, 1),且所有输出之和为1。

特性:

将向量转换为概率分布,适合多分类输出层。

应用:

多分类任务的输出层(如图像分类、语言模型)。

2. GELU(Gaussian Error Linear Unit)

公式:GELU(x)=x⋅Φ(x)(Φ(x)为标准正态分布的CDF)\text{GELU}(x) = x \cdot \Phi(x) \quad (\Phi(x) \text{为标准正态分布的CDF})

GELU(x)=x⋅Φ(x)(Φ(x)为标准正态分布的CDF)

近似形式:GELU(x)≈0.5x(1+tanh⁡(2/π(x+0.044715x3)))\text{GELU}(x) \approx 0.5x(1 + \tanh(\sqrt{2/\pi}(x + 0.044715x^3)))

GELU(x)≈0.5x(1+tanh(2/π​(x+0.044715x3)))

特性:

结合ReLU的稀疏激活和ELU的平滑性,在Transformer中表现优异。

应用:

BERT、GPT等Transformer模型。

3. Mish

公式:Mish(x)=x⋅tanh⁡(softplus(x))=x⋅tanh⁡(ln⁡(1+ex))\text{Mish}(x) = x \cdot \tanh(\text{softplus}(x)) = x \cdot \tanh(\ln(1 + e^x))

Mish(x)=x⋅tanh(softplus(x))=x⋅tanh(ln(1+ex))

特性:

平滑、非单调、自正则化,在深层网络中表现稳定。

应用:

计算机视觉(如YOLOv4)。

四、激活函数对比与选择建议

激活函数

输出范围

梯度特性

计算成本

适用场景

Sigmoid

(0, 1)

梯度消失

二分类输出层

Tanh

(-1, 1)

梯度消失

隐藏层(早期)

ReLU

[0, +∞)

梯度恒定(正)

极低

隐藏层默认选择

Leaky ReLU

(-∞, +∞)

梯度恒定(全区间)

避免神经元死亡

Swish

(-∞, +∞)

自适应门控

深度CNN/Transformer

Softmax

(0, 1)

概率归一化

多分类输出层

选择建议:

默认选择:隐藏层用ReLU或Leaky ReLU(简单高效)。

深层网络:尝试Swish、GELU或Mish(需权衡计算成本)。

输出层:二分类用Sigmoid,多分类用Softmax。

RNN/LSTM:Tanh或ReLU变体(如Gated ReLU)。

五、代码示例(PyTorch实现)

import torch

import torch.nn as nn

import torch.nn.functional as F

# 定义激活函数

activations = {

"Sigmoid": nn.Sigmoid(),

"Tanh": nn.Tanh(),

"ReLU": nn.ReLU(),

"LeakyReLU": nn.LeakyReLU(0.1),

"Swish": lambda x: x * torch.sigmoid(x), # 近似Swish

"Softmax": nn.Softmax(dim=1)

}

# 测试输入

x = torch.tensor([-1.0, 0.0, 1.0])

# 打印各激活函数输出

for name, func in activations.items():

if name == "Softmax":

output = func(x.unsqueeze(0)) # Softmax需2D输入

else:

output = func(x)

print(f"{name:10}: {output.numpy()}")

输出示例:

Sigmoid : [0.26894143 0.5 0.7310586 ]

Tanh : [-0.7615942 0. 0.7615942]

ReLU : [0. 0. 1.]

LeakyReLU : [-0.1 0. 1. ]

Swish : [-0.2689414 0. 0.7310586]

Softmax : [[0.09003057 0.24472848 0.6652409 ]]

通过理解不同激活函数的特性,可以更灵活地设计神经网络结构,提升模型性能。

相关手记

beat365手机版客户端ios perfma公司怎么样

perfma公司怎么样

07-20 👁️ 9525
365APP 制作动感影集的软件哪个好?动感影集制作软件免费版
菠菜365定位 卫子夫·高能速看版热度 7前往原创热度风云榜>
菠菜365定位 50种最美菊花,祝你花开富贵,喜气自来
菠菜365定位 《lol》鳄鱼皮肤手感排行一览
beat365手机版客户端ios 12强赛分组抽签出炉!中国Vs日本、澳大利亚、沙特、阿曼、越南