使用逆平方根线性单元(ISRLU)改进深度学习.
0. TL; DR
本文介绍了一种新的激活函数——逆平方根线性单元(ISRLU),它在深度神经网络中表现出色,能够加速学习过程并提高性能。ISRLU与指数线性单元(ELU)具有相似的曲线特性,但计算复杂度更低,尤其在传统CPU和硬件实现上效率更高。实验表明,ISRLU在卷积神经网络(CNN)中的表现优于ReLU,并且其变体逆平方根单元(ISRU)在循环神经网络(RNN)中也具有潜在优势。
1. 背景介绍
在深度神经网络中,激活函数起着至关重要的作用,它决定了神经元的输出是否能够有效地传递信息并促进学习。
目前,常用的激活函数包括修正线性单元(ReLU)和指数线性单元(ELU)。ReLU因其简单高效而被广泛应用,但在某些情况下会导致梯度消失或神经元死亡的问题。ELU通过引入负值来解决这些问题,使得网络的均值激活更接近零,从而减少偏差偏移,加速学习过程。
然而,ELU的计算复杂度较高,尤其是在处理指数运算时。因此,研究者们一直在寻找一种既能保持ELU优点又能在计算效率上有所提升的激活函数。本文提出的ISRLU正是为了解决这一问题。
2. ISRLU与ISRU
2.1 ISRLU (inverse square root linear unit)
ISRLU的数学表达式如下:
\[f(x) = \begin{cases} x & \text{if } x \geq 0 \\ x \cdot \frac{1}{\sqrt{1 + \alpha x^2}} & \text{if } x < 0 \end{cases}\]其导数为:
\[f'(x) = \begin{cases} 1 & \text{if } x \geq 0 \\ \left(\frac{1}{\sqrt{1 + \alpha x^2}}\right)^3 & \text{if } x < 0 \end{cases}\]其中,超参数 $\alpha$ 控制了ISRLU在负输入时的饱和值。当 $\alpha = 1$ 时,ISRLU的饱和值接近 -1;当 $\alpha = 3$ 时,饱和值减小,使得反向传播的误差信号中有更少的部分传递到下一层。这种特性使得网络能够输出稀疏激活,同时保留重新激活死亡神经元的能力。
ISRLU与ELU的曲线非常相似,但ISRLU具有更平滑且连续的一阶和二阶导数,而ELU仅在第一导数上连续。此外,ISRLU的计算复杂度更低,因为它基于逆平方根运算,而逆平方根的计算速度通常比指数运算更快。
ISRLU的主要优势在于其计算效率。在现代CPU架构中,逆平方根的计算速度比指数运算快得多。例如,在Intel Xeon Platinum 8160(Skylake)上,逆平方根的计算速度是指数运算的2.2倍。这种计算优势使得ISRLU在大规模深度学习任务中能够显著减少训练时间。
此外,ISRLU的超参数 $\alpha$ 可以在训练过程中通过反向传播直接学习,类似于参数化ReLU(PReLU)。这为网络提供了一种自适应调整激活函数形状的能力,从而进一步提高性能。
2.2 ISRU (inverse square root unit)
ISRLU的变体——逆平方根单元(ISRU)被提出用于循环神经网络(RNN)。ISRU的定义如下:
\[f(x) = x \cdot \frac{1}{\sqrt{1 + \alpha x^2}}\]其导数为:
\[f'(x) = \left(\frac{1}{\sqrt{1 + \alpha x^2}}\right)^3\]ISRU的曲线与双曲正切函数(tanh)和Sigmoid函数相似,但计算复杂度更低。在RNN中,常用的LSTM和GRU单元通常使用tanh和Sigmoid作为激活函数,而ISRU可以作为一种更高效的替代方案。
3. 实验分析
实验使用了TensorFlow框架,在MNIST数据集上训练了多个卷积神经网络(CNN),分别使用ISRLU、ELU和ReLU作为激活函数。实验结果表明,ISRLU在训练过程中表现出更快的收敛速度和更低的交叉熵损失。
实验还对不同激活函数在CPU上的性能进行了评估。结果显示,ISRLU在AVX2指令集上的性能优势显著。例如,ISRLU($\alpha = 1.0$)的计算速度是ELU的2.63倍,而其快速近似版本的计算速度与ReLU相当,仅相差1%。这表明ISRLU在保持学习性能的同时,能够显著减少计算时间。