激活函数大汇总(十八)(ISRU附代码和详细公式)
更多激活函数见激活函数大汇总列表
一、引言
欢迎来到我们深入探索神经网络核心组成部分——激活函数的系列博客。在人工智能的世界里,激活函数扮演着不可或缺的角色,它们决定着神经元的输出,并且影响着网络的学习能力与表现力。鉴于激活函数的重要性和多样性,我们将通过几篇文章的形式,本篇详细介绍两种激活函数,旨在帮助读者深入了解各种激活函数的特点、应用场景及其对模型性能的影响。
在接下来的文章中,我们将逐一探讨各种激活函数,从经典到最新的研究成果。
限于笔者水平,对于本博客存在的纰漏和错误,欢迎大家留言指正,我将不断更新。
二、ISRU
ISRU(Inverse Square Root Linear Unit)激活函数是深度学习中的一个非线性激活函数,旨在解决传统激活函数(如ReLU和Sigmoid)的某些限制。它通过引入平滑的非线性性质,同时尝试保持较好的梯度传播特性。
1. 数学定义
ISRU激活函数的数学表达式定义为:
ISRU ( x ) = x 1 + α x 2 \operatorname{ISRU}(x)=\frac{x}{\sqrt{1+\alpha x^2}} ISRU(x)=1+αx2x
其中, x x x是输入信号, α \alpha α是激活函数的参数,控制曲线的形状。
2. 函数特性
- 平滑性和连续性:ISRU是一个平滑且连续的函数,这有助于优化算法如梯度下降在训练过程中更稳定地工作。
- 非饱和性:ISRU避免了Sigmoid和Tanh激活函数中的饱和问题,因为它的梯度不会随着输入值的增加而急剧减小到0,从而有助于缓解梯度消失问题。
- 参数可调:通过调整 α \alpha α参数,可以改变ISRU函数的曲线形状,为不同的任务提供灵活性。
3. 导数
ISRU函数的导数(梯度)可以表示为:
d d x ISRU ( x ) = 1 ( 1 + α x 2 ) 3 / 2 \frac{d}{d x} \operatorname{ISRU}(x)=\frac{1}{\left(1+\alpha x^2\right)^{3 / 2}} dxdISRU(x)=(1+αx2)3/21
这显示了ISRU激活函数相对于输入 x x x的变化率,导数值由 α \alpha α和 x x x的值共同决定,保持了较好的非饱和性质。
4. 使用场景与局限性
使用场景:
- 缓解梯度消失:在深层网络中,ISRU可以作为一种尝试来缓解梯度消失问题,特别适用于需要平滑激活函数的场景。
- 替代传统激活函数:在实验中探索激活函数对模型性能的影响时,ISRU可以作为ReLU、Sigmoid或Tanh的替代品。
局限性:
- 数值稳定性:尽管ISRU有助于缓解梯度消失问题,但当输入值很大时,其输出和梯度仍可能受到数值稳定性的挑战。
- 参数选择:ISRU激活函数的性能在很大程度上依赖于参数 α \alpha α的选择,需要通过实验来确定最佳值。
5.代码实现
def isru(x, alpha=1.0):return x / np.sqrt(1 + alpha * (x ** 2))
- 函数定义:
isru
函数接受两个参数:x
和alpha
。x
可以是一个数值、一维数组或多维数组,表示输入数据;alpha
是一个超参数,用于控制激活函数的曲率,具有默认值1.0
。 - 计算过程:函数体中,首先计算
1 + alpha * (x ** 2)
,这是对输入x
的每个元素进行平方、乘以alpha
、然后加1
的操作。接下来,将x
除以上述计算结果的平方根,得到ISRU激活函数的输出。
示例输入和输出
- 输入:
x = np.array([-3, -1, 0, 1, 3])
,这是一个包含负数、零和正数的数组。 - 输出:ISRU函数处理后,输出为
[-0.9486833, -0.70710678, 0, 0.70710678, 0.9486833]
。对于非零输入,输出值被压缩到(-1, 1)
的范围内,而0
的输入仍然映射到0
。
解读
- 非饱和性:ISRU函数为负数和正数输入提供了非线性映射,但它不会饱和,即不会达到硬饱和点(如
-1
或1
),这有助于梯度流动,减少梯度消失问题。 - 平滑性:ISRU是一个连续且平滑的函数,适用于梯度下降和反向传播算法。
- 控制参数
alpha
:通过调整alpha
参数,可以控制激活函数的非线性程度,以适应不同的数据分布和网络结构需求。
三、参考文献
- 原始论文:Brad Carlile, Guy Delamarter, Paul Kinney, Akiko Marti, and Brian Whitney. “Improving deep learning by inverse square root linear units (ISRLUs)”. arXiv preprint arXiv:1710.09967 (2017). 这篇预印本论文首次提出了ISRU激活函数,详细讨论了其数学属性和在不同网络结构中的应用效果。