本文介绍深度学习的功臣 ReLU 及其变种,它们在神经网络中的广泛应用,对于提高网络的性能和加速训练具有重要意义

ReLU 函数

定义

ReLU(Rectified Linear Unit,修正线性单元)激活函数是现代深度学习中最常用的激活函数之一。它的数学表达式为:

关键性质

  1. 非线性:尽管 ReLU 函数在正区间是线性的,但它引入了非线性特性,使得神经网络能够学习复杂的模式
  2. 稀疏激活:ReLU 函数会将输入的负值部分变为零,这意味着在实际应用中,神经元的激活是稀疏的(即只有部分神经元在激活),这有助于减少计算量和防止过拟合,提高模型的效率和性能
  3. 计算简单:ReLU 函数计算简单,只需比较输入值和零的大小,计算量很小,有助于加快训练速度
  4. 缓解梯度消失问题:相比于 Sigmoid 或 Tanh 函数,ReLU 在正区间的梯度恒定为 1,这有助于缓解梯度消失问题,使得深层网络的训练变得更加可行

提出时间

2010 年,由 Vinod Nair 和 Geoffrey Hinton 在他们的论文《Rectified Linear Units Improve Restricted Boltzmann Machines》中展示了 ReLU 在深度神经网络中的有效性。自此,ReLU 成为了深度学习中最流行的激活函数之一

优缺点

优点

  1. 计算效率高:ReLU 计算简单,能够显著加快神经网络的训练速度
  2. 梯度消失问题较少:相比于 Sigmoid 和 Tanh 函数,ReLU 在正区间的梯度为常数 1,有助于缓解梯度消失问题,使得深层网络更容易训练

缺点

  1. Dying ReLU 问题:在训练过程中,某些神经元可能永远不会被激活(即输入始终为负值),导致这些神经元在整个训练过程中都没有贡献。为了解决这个问题,研究人员提出了 Leaky ReLU 和 Parametric ReLU 等变体
  2. 不对称性:ReLU 在负区间的输出始终为零,可能导致模型在某些情况下性能下降

示例

以下是一个简单的 Python 示例,展示如何计算 ReLU 函数:

import numpy as np
 
def relu(x):
    """ReLU 激活函数
 
    参数:
    x -- 输入值
 
    返回:
    ReLU 激活后的值
    """
    return np.maximum(0, x)

Leaky ReLU 函数

Leaky ReLU(Leaky Rectified Linear Unit,带泄漏的修正线性单元)是 ReLU 激活函数的一种变体,它旨在解决 ReLU 的“Dying ReLU”问题

数学定义

Leaky ReLU 的数学表达式为:

其中, 是一个小的正数,通常取值在 0.01 左右

关键性质

  1. 非线性:与 ReLU 一样,Leaky ReLU 引入了非线性特性,使得神经网络能够学习复杂的模式
  2. 稀疏激活:尽管 Leaky ReLU 在负区间不会完全变为零,但它仍然保留了一定的稀疏性,有助于提高模型的效率和性能
  3. 计算简单:Leaky ReLU 的计算也很简单,只需在负区间乘以一个小的常数
  4. 避免 Dying ReLU 问题:通过在负区间引入一个小的斜率 ,Leaky ReLU 确保了所有神经元都有梯度,从而避免了 Dying ReLU 问题

提出时间

2013 年,Leaky ReLU 首次出现在论文《Rectifier Nonlinearities Improve Neural Network Acoustic Models》中,该论文由 Andrew L. Maas、Awni Y. Hannun 和 Andrew Y. Ng 撰写

PReLU 函数

PReLU(Parametric Rectified Linear Unit,参数化修正线性单元)是 ReLU 激活函数的另一种变体,它通过引入一个可学习的参数来控制负区间的斜率。PReLU 旨在进一步改进 ReLU 及其变体(如 Leaky ReLU)的性能

数学定义

PReLU 的数学表达式为:

其中, 是一个可学习的参数,而不是一个固定的常数

关键性质

  1. 非线性:与 ReLU 和 Leaky ReLU 一样,PReLU 引入了非线性特性,使得神经网络能够学习复杂的模式
  2. 稀疏激活:尽管 PReLU 在负区间不会完全变为零,但它仍然保留了一定的稀疏性,有助于提高模型的效率和性能
  3. 可学习参数:PReLU 的最大特点是负区间的斜率 是可学习的,这意味着模型可以根据数据自动调整这一参数,从而在训练过程中找到最优的负区间斜率
  4. 避免 Dying ReLU 问题:通过引入可学习的斜率参数 ,PReLU 确保了所有神经元都有梯度,从而有效地避免了 Dying ReLU 问题

提出时间

PReLU 是由何凯明(Kaiming He)、张翔(Xiangyu Zhang)、任少卿(Shaoqing Ren)和孙剑(Jian Sun)在 2015 年的论文《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》中提出的