【激活函数】PReLU 激活函数

 1、介绍

       PReLU(Parametric Rectified Linear Unit)激活函数是ReLU(Rectified Linear Unit)激活函数的一种改进。它是由 He et al. 在 2015 年提出的,旨在解决ReLU激活函数的一些局限性。

# 定义 PReLU 激活函数
prelu_activation = torch.nn.PReLU(num_parameters=1, init=0.25, device=None, dtype=None)
  • num_parameters:可学习参数的数量。默认值为 1。对于每个输入通道,都会有一个可学习的参数。

  • init:可学习参数的初始值。默认值为 0.25。这个参数用于初始化可学习的 alpha 参数。

  • device:指定在哪个设备上创建参数。默认为 None,表示使用当前设备。

  • dtype:指定参数的数据类型。默认为 None,表示使用默认的数据类型。

2、公式

$\begin{array}{l}f(x)=\left\{\begin{array}{ll}\alpha x & \text { for } x<0 \\ x & \text { for } x \geq 0\end{array}\right. \\ f(x)=\operatorname{PReLU}(x)=\max (\alpha x, x)\end{array}$

其中,{x} 是输入值,\alpha 是一个可学习的参数,通常是一个小于1的常数。

        这个参数使得PReLU能够在输入值为负数时调整其输出,而不是像传统的ReLU那样直接输出0。 当 x \geq 0 时,PReLU的行为与标准的ReLU相同,即直接输出输入值。但当 x<0 时,PReLU输出的是 \alpha x。这种设计使得PReLU在处理负输入时比标准的ReLU更加灵活和有效。

3、图像

4、特点  

  • 改进梯度消失问题:PReLU通过为负输入值提供一个非零斜率(由参数 \alpha 控制),有助于缓解ReLU在负输入部分的梯度消失问题。

  • 参数化:参数 \alpha 是可学习的,这使得网络可以自适应地调整激活函数的形状,提高了模型的灵活性。当网络需要对激活函数的行为进行自适应调整时,PReLU是一个不错的选择。

  • 计算资源允许:虽然PReLU增加了一些计算负担(因为 \alpha 需要学习),但当计算资源充足时,这通常是可以接受的。

对比 PReLU 和 LeakyReLU 

PReLU(Parametric Rectified Linear Unit)激活函数和 Leaky ReLU 激活函数之间的主要区别在于参数化的方式和灵活性。

        PReLU 数学表达式:

$\begin{array}{l}f(x)=\left\{\begin{array}{ll}\alpha x & \text { for } x<0 \\ x & \text { for } x \geq 0\end{array}\right. \\ f(x)=\operatorname{PReLU}(x)=\max (\alpha x, x)\end{array}$

         Leaky ReLU 数学表达式:

$\begin{array}{l}f(x)=\left\{\begin{array}{ll}\alpha x & \text { for } x<0 \\ x & \text { for } x \geq 0\end{array}\right. \\ f(x)=\operatorname{LeakyReLU}(x)=\max (\alpha x, x)\end{array}$

        从数学表达式上可以看到,这两个激活函数计算方式非常相近,唯一不同的就是 PReLU 负输入部分的斜率(即 \alpha)是可学习的参数,而 Leaky ReLU 负输入部分的斜率(即 \alpha)是初始设定好的固定参数

  1. 参数化:

    • PReLU: 在PReLU中,负输入部分的斜率(即 \alpha)是可学习的参数。这意味着在训练过程中,\alpha 的值是根据数据自动调整的,从而允许网络根据训练数据自适应地调整其激活函数的形状。
    • Leaky ReLU: 在Leaky ReLU中,负输入部分的斜率也是非零的,但它是固定的,通常是一个非常小的常数(如0.01)。这意味着激活函数的形状在整个训练过程中保持不变。
  2. 灵活性和适应性:

    • 由于PReLU的 \alpha 是可学习的,它在理论上能提供更高的灵活性,使得激活函数可以更好地适应特定的数据集和任务。
    • Leaky ReLU由于其简单性,在实现上更直接,但它缺乏PReLU所提供的自适应性。
  3. 在实践中的应用:

    • PReLU通常在深层网络中更受欢迎,尤其是在任务对模型的灵活性有较高要求的场合,例如大规模的图像或语音识别任务。
    • Leaky ReLU由于其简单性,适用于需要快速实现和较少调参的场景。

        总结来说,PReLU通过引入可学习的参数为激活函数提供了更大的灵活性,而Leaky ReLU则提供了一个简单但效果稳定的非零斜率选项,用于处理ReLU激活函数在负输入部分的梯度消失问题。选择哪一个主要取决于特定任务的需求和计算资源的可用性。

对比ReLU和其他变体

PReLU是ReLU的多个变体之一。其他常见的变体包括:

  • ReLU:最简单的形式,输出是输入的正部分。
  • Leaky ReLU:固定一个小的非零斜率(例如0.01)用于负输入部分,与PReLU类似,但斜率不是可学习的。
  • ELU(Exponential Linear Unit):为负输入提供一个指数曲线,以平滑地逼近负无穷。

更多深度学习内容请翻阅本人主页,下列是快速链接:

【激活函数】深度学习中你必须了解的几种激活函数 Sigmoid、Tanh、ReLU、LeakyReLU 和 ELU 激活函数(2024最新整理)-CSDN博客

猜你喜欢

转载自blog.csdn.net/Next_SummerAgain/article/details/135424686
今日推荐