? ? ? ?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
,表示使用默认的数据类型。
其中,?是输入值, 是一个可学习的参数,通常是一个小于1的常数。
????????这个参数使得PReLU能够在输入值为负数时调整其输出,而不是像传统的ReLU那样直接输出0。 当 ?时,PReLU的行为与标准的ReLU相同,即直接输出输入值。但当 ?时,PReLU输出的是 。这种设计使得PReLU在处理负输入时比标准的ReLU更加灵活和有效。
改进梯度消失问题:PReLU通过为负输入值提供一个非零斜率(由参数??控制),有助于缓解ReLU在负输入部分的梯度消失问题。
参数化:参数??是可学习的,这使得网络可以自适应地调整激活函数的形状,提高了模型的灵活性。当网络需要对激活函数的行为进行自适应调整时,PReLU是一个不错的选择。
计算资源允许:虽然PReLU增加了一些计算负担(因为 ?需要学习),但当计算资源充足时,这通常是可以接受的。
PReLU(Parametric Rectified Linear Unit)激活函数和 Leaky ReLU 激活函数之间的主要区别在于参数化的方式和灵活性。
????????PReLU 数学表达式:
?????????Leaky ReLU 数学表达式:
????????从数学表达式上可以看到,这两个激活函数计算方式非常相近,唯一不同的就是?PReLU?负输入部分的斜率(即?)是可学习的参数,而?Leaky ReLU?负输入部分的斜率(即?)是初始设定好的固定参数。
参数化:
灵活性和适应性:
在实践中的应用:
????????总结来说,PReLU通过引入可学习的参数为激活函数提供了更大的灵活性,而Leaky ReLU则提供了一个简单但效果稳定的非零斜率选项,用于处理ReLU激活函数在负输入部分的梯度消失问题。选择哪一个主要取决于特定任务的需求和计算资源的可用性。
PReLU是ReLU的多个变体之一。其他常见的变体包括:
更多深度学习内容请翻阅本人主页,下列是快速链接:
【激活函数】深度学习中你必须了解的几种激活函数 Sigmoid、Tanh、ReLU、LeakyReLU 和 ELU 激活函数(2024最新整理)-CSDN博客