返回
Featured image of post 深度学习中常用激活函数

深度学习中常用激活函数

深度学习中常用激活函数的全面解析,包括数学原理、优缺点及应用场景

ReLU (Rectified Linear Unit)

简单的门限函数,负值置零 $$\text{ReLU}(x) = \max(0, x) = \begin{cases} x & \text{if } x > 0 \ 0 & \text{if } x \leq 0 \end{cases}$$

起源:2010年由Nair和Hinton在论文"Rectified Linear Units Improve Restricted Boltzmann Machines"中提出

优点:

  • 计算简单,训练快速(只需判断是否大于0)
  • 有效缓解梯度消失问题(正值区域梯度恒为1)
  • 产生稀疏性(负值被置为0,产生稀疏表示)
  • 生物学解释:单侧抑制,类似生物神经元的特性

缺点:

  • 死亡ReLU问题(某些神经元可能永远不会被激活)
    • 原因:如果学习率太大,权重更新后使神经元仅接收负值输入
    • 解决:使用Leaky ReLU或合适的学习率
  • 负值区域完全丢失信息
  • 输出不是零中心的

使用场景:

  • CNN中最常用的激活函数
  • 深度神经网络的默认选择
  • 特别适合于深层网络训练

GELU (Gaussian Error Linear Unit)

将输入值乘以来自标准正态分布的概率,是ReLU的平滑版本 $$\text{GELU}(x) = x \cdot \Phi(x) = x \cdot \frac{1}{2}\left[1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right)\right]$$ 其中 $\Phi(x)$ 是标准正态分布的累积分布函数,erf是误差函数

近似计算公式: $$\text{GELU}(x) \approx 0.5x\left(1 + \tanh\left[\sqrt{2/\pi}(x + 0.044715x^3)\right]\right)$$

起源:2016年论文"Gaussian Error Linear Units"提出

优点:

  • 在Transformer架构中表现优异
  • 平滑激活:在输入的正负区间内都具有平滑性
  • 概率解释:可以看作是对输入值的不确定性进行建模,输入值越大,通过的概率越高
  • 结合了Dropout的思想,基于概率的软丢弃
  • 在x很大时近似于ReLU,很小时近似于线性函数

使用场景:

  • Transformer架构的标配(BERT、GPT等都使用GELU)
  • 需要平滑非线性的深度学习模型
  • 特别适合自然语言处理任务

Sigmoid (Logistic Function)

将输入压缩到(0,1)区间,模拟神经元的开关状态 $$\sigma(x) = \frac{1}{1 + e^{-x}}$$

导数: $$\sigma’(x) = \sigma(x)(1-\sigma(x))$$

起源:最早的激活函数之一,源于生物神经元的激活特性

优点:

  • 输出范围固定在(0,1),适合二分类问题的输出层
  • 有明确的概率解释,输出可以表示概率
  • 处处可导,导数计算简单
  • 具有挤压特性,对异常值不敏感

缺点:

  • 存在梯度消失问题
    • 在输入值很大或很小时,梯度接近于0
    • 导数最大值仅为0.25
  • 输出不是零中心的,后续层的输入值始终为正
    • 会导致梯度更新的方向偏离最优方向
  • 计算复杂度较高,涉及指数运算
  • 训练深层网络时收敛较慢

使用场景:

  • 二分类问题的输出层
  • 门控机制,例如LSTM和GRU的门控单元
  • 概率预测任务
  • 浅层神经网络

Tanh (Hyperbolic Tangent)

将输入压缩到(-1,1)区间,是Sigmoid的缩放版本 $$\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} = 2\sigma(2x) - 1$$

导数: $$\tanh’(x) = 1 - \tanh^2(x)$$

起源:Sigmoid的改进版本,1990年代开始广泛使用

优点:

  • 输出是零中心的,均值接近0
    • 有助于下一层的学习
    • 使得每一层的输入更加规范化
  • 适合处理负值
  • 导数比Sigmoid大,训练收敛更快
  • 具有挤压特性,可以处理异常值

缺点:

  • 仍然存在梯度消失问题
    • 在输入值很大或很小时,梯度接近于0
  • 计算复杂度较高,涉及指数运算
  • 训练深层网络时仍可能出现收敛慢的问题

使用场景:

  • RNN的隐藏层
  • 需要零中心化输出的场景
  • 需要处理有界输出的场景
  • 浅层神经网络

Dice

结合PReLU的自适应特性和Batch Normalization的统计特性,专为稀疏特征设计的激活函数 $$\text{Dice}(x) = x \cdot \sigma(\alpha \cdot (x - \mu))$$ 其中:

  • $\sigma$ 是sigmoid函数
  • $\alpha$ 是可学习参数
  • $\mu$ 是特征的均值(在mini-batch或全局计算)

起源:2018年阿里巴巴在推荐系统中提出

优点:

  • 自适应调节
    • 通过引入输入值的均值$μ$和可学习参数$α$
    • 能根据输入数据分布动态调整激活函数形状
    • 在处理不同分布数据时表现更加鲁棒
  • 适合处理稀疏特征
    • 对零值或接近零值特征,激活值较小但不会完全置零
    • 保留了稀疏特征中的有用信息
  • 结合了归一化的思想
    • 减少了对数据预处理的依赖
  • 训练稳定性好
    • 自适应机制减少了过拟合风险

使用场景:

  • 推荐系统
  • 点击率预测任务
  • 处理高度稀疏特征的场景
  • CTR/CVR预估模型

Leaky ReLU

给负值区域一个小的斜率,避免完全置零 $$\text{LeakyReLU}(x) = \begin{cases} x & \text{if } x > 0 \ \alpha x & \text{if } x \leq 0 \end{cases}$$ 其中 $\alpha$ 通常是一个很小的正数(如0.01)

起源:2013年为解决ReLU的死亡神经元问题

优点:

  • 解决了死亡ReLU问题
    • 负值输入仍然有小的梯度
    • 神经元不会完全停止学习
  • 保持了ReLU的其他优点
    • 计算简单
    • 收敛快
  • 所有区间都有非零梯度
  • 输出均值更接近0

缺点:

  • 需要额外设置负值区域的斜率参数
  • 性能对斜率参数敏感
  • 在实践中效果并不总是优于ReLU

变体:

  • PReLU:参数化版本,斜率$\alpha$可学习
  • RandomReLU:训练时随机斜率

使用场景:

  • 可以作为ReLU的替代品
  • 训练不稳定时的首选
  • 需要保留负值信息的场景

Swish

Google Brain提出的自门控激活函数 $$f(x)=x\cdot\sigma(\beta x)$$ 其中:

  • $\sigma$ 是sigmoid函数
  • $\beta$ 是可训练参数或固定值

特性:

  • 当$\beta \to \infty$时,近似ReLU
  • 当$\beta = 0$时,变为线性函数

起源:2017年Google Brain通过神经架构搜索发现

优点:

  • 平滑且非单调
    • 有助于优化过程
    • 可能捕获更复杂的模式
  • 在深层网络中表现优于ReLU
  • 无需人工设置参数($\beta$可学习)
  • 计算效率高
  • 具有有界梯度

缺点:

  • 计算量比ReLU大
  • 需要存储额外的激活值
  • 在某些任务上提升不明显

使用场景:

  • 深层神经网络
  • 计算机视觉任务
  • 可作为ReLU的直接替代品

ELU (Exponential Linear Unit)

负值区域使用指数函数,使均值更接近零 $$\text{ELU}(x) = \begin{cases} x & \text{if } x > 0 \ \alpha(e^x - 1) & \text{if } x \leq 0 \end{cases}$$ 其中 $\alpha$ 是一个正常数(通常为1)

起源:2015年论文"Fast and Accurate Deep Network Learning by Exponential Linear Units"

优点:

  • 可以缓解偏移现象
    • 负值的均值接近0
    • 减少了偏置偏移
  • 对噪声更鲁棒
    • 负值区域的饱和性质有助于抑制噪声
  • 在零点附近有平滑的导数
  • 自归一化特性
  • 能产生负值输出,增加表达能力

缺点:

  • 计算复杂度比ReLU高
  • 需要额外的指数运算
  • $\alpha$参数需要预先设定

使用场景:

  • 需要处理噪声数据的深度学习任务
  • 对数据分布敏感的任务
  • 需要负值激活的场景

SELU (Scaled Exponential Linear Unit)

通过精心设计的缩放因子实现自归一化 $$\text{SELU}(x) = \lambda \begin{cases} x & \text{if } x > 0 \ \alpha(e^x - 1) & \text{if } x \leq 0 \end{cases}$$ 其中:

  • $\lambda \approx 1.0507$
  • $\alpha \approx 1.6733$

这两个参数是精心计算的固定值,用于保证自归一化性质

起源:2017年论文"Self-Normalizing Neural Networks"

优点:

  • 自归一化特性
    • 自动保持均值和方差稳定
    • 不需要额外的批归一化层
  • 训练更稳定
  • 更强的正则化效果
  • 适合深层网络

注意事项:

  • 需要特定的权重初始化(LeCun正态初始化)
  • 输入需要标准化
  • 不适合CNN等结构

使用场景:

  • 全连接网络
  • 需要自归一化的场景
  • 深层前馈网络

Mish

平滑的非单调激活函数 $$\text{Mish}(x) = x \cdot \tanh(\ln(1 + e^x))$$

导数: $$\text{Mish}’(x) = \frac{e^x(\omega + 1 + e^x\omega)}{(1 + e^x)^2}$$ 其中 $\omega = \tanh(\ln(1 + e^x))$

起源:2019年论文"Mish: A Self Regularized Non-Monotonic Neural Activation Function"

优点:

  • 无上界有下界
    • 上界无限制
    • 下界约为-0.31
  • 平滑度高
    • 所有阶导数连续
    • 有助于优化
  • 在多个基准测试中表现优异
  • 保留了更多梯度信息
  • 自正则化特性

缺点:

  • 计算开销大
  • 内存使用较多
  • 训练时间可能增加

使用场景:

  • 计算机视觉任务
  • 深度神经网络
  • 需要强大表达能力的模型
  • 可作为ReLU的替代品
© 2023 - 2025 壹壹贰捌· 0Days
共书写了258.6k字·共 93篇文章 京ICP备2023035941号-1