使用逆平方根线性单元(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$ 时,饱和值减小,使得反向传播的误差信号中有更少的部分传递到下一层。这种特性使得网络能够输出稀疏激活,同时保留重新激活死亡神经元的能力。

ISRLUELU的曲线非常相似,但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中,常用的LSTMGRU单元通常使用tanhSigmoid作为激活函数,而ISRU可以作为一种更高效的替代方案。

3. 实验分析

实验使用了TensorFlow框架,在MNIST数据集上训练了多个卷积神经网络(CNN),分别使用ISRLU、ELUReLU作为激活函数。实验结果表明,ISRLU在训练过程中表现出更快的收敛速度和更低的交叉熵损失。

实验还对不同激活函数在CPU上的性能进行了评估。结果显示,ISRLUAVX2指令集上的性能优势显著。例如,ISRLU($\alpha = 1.0$)的计算速度是ELU的2.63倍,而其快速近似版本的计算速度与ReLU相当,仅相差1%。这表明ISRLU在保持学习性能的同时,能够显著减少计算时间。