目录

1.激活稀疏性原理

2.由ReLU引起的激活稀疏性

3.激活稀疏性在神经网络稀疏化设计构架中的应用


       激活函数是人工神经元细胞体中对所有输入信号进行加权和之后的非线性映射,它能够极大地增强网络的学习能力和表达能力,是神经元中非常重要的组成部分。在常用的激活函数中,ReLU通过将所有为负值的输入信号加权和设置为零,来模拟生物神经的开关阈值状态,因此其输出都非常稀疏。

1.激活稀疏性原理

       在神经网络中,神经元接收多个输入信号,这些信号经过加权求和后进入激活函数进行处理。以常用的ReLU(Rectified Linear Unit,修正线性单元)激活函数为例 ,其函数表达式为:

从表达式可以看出,当加权求和后的输入信号x为负值时,ReLU 激活函数会将其输出设置为0。在实际的神经网络训练和推理过程中,大量神经元的加权和结果会是负值,经过ReLU激活函数处理后就产生了大量的0输出 。

从生物学角度来理解,生物神经元在大多数时间处于静息状态,只有在接收到足够强的刺激时才会被激活产生电信号。ReLU激活函数模拟了生物神经的这种开关阈值状态,使得神经网络中的神经元也呈现出类似的 “大部分时间不活跃,只有部分被激活” 的特性,进而导致了激活输出的稀疏性。

在不同的深度神经网络结构(如LeNet、AlexNet、GoogLeNet等)中,经过对ReLU激活函数输出的统计发现,大多数层ReLU后的稀疏度都超过了0.7,某些层甚至达到了0.95 。这意味着在这些层的输出中,有超过70%甚至95%的数据值为0,充分体现了激活稀疏性这一特性。

2.由ReLU引起的激活稀疏性

网络名称 测试网络层 C Hin​×Win​ K R×S P T 稀疏度
LeNet Conv2 20 11×11 64 5×5 1 2 0.95
AlexNetC Conv3 32 6×6 64 5×5 2 1 0.9
AlexNetI Conv2 96 26×26 256 5×5 2 2 0.6
AlexNetI Conv3 256 5×5 384 3×3 1 1 0.7
AlexNetI Conv4 384 5×5 384 3×3 1 1 0.9
AlexNetI Conv5 384 5×5 256 3×3 1 1 0.8
GoogLeNet Inception4a.1 480 14×14 192 1×1 0 1 0.9
GoogLeNet Inception4a.2 192 7×7 96 1×1 0 1 0.9
GoogLeNet Inception4e.3 160 7×7 320 3×3 1 1 0.9
GoogLeNet Inception5a.1 832 7×7 256 1×1 0 1 0.95
GoogLeNet Inception5a.2 256 7×7 160 1×1 0 1 0.9
GoogLeNet Inception5b.3 192 7×7 384 3×3 1 1 0.95
GoogLeNet Inception5b.5 48 7×7 128 5×5 2 1 0.95

       人工智能芯片计算架构的构建可以利用 ReLU 输出的稀疏性,通过数据压缩来降低芯片面积和减少片外通信带宽。

3.激活稀疏性在神经网络稀疏化设计构架中的应用

数据压缩与通信带宽优化:利用激活稀疏性,通过数据压缩算法(如游程编码)可以减少数据传输量,降低芯片面积和减少片外通信带宽。在整个神经网络计算中,将激活数据压缩后传输,能够显著减少通信带宽的占用,如将整个网络计算的通信带宽减少1/3 。

功耗降低与性能提升:硬件可以识别激活输出中的0值,直接跳过与0值相关的MAC操作,减少不必要的计算,从而降低功耗。像Eyeriss基于此在以AlexNet为基准测试集的计算中获得了45%的 PE(Processing Element,处理单元)功耗节省 。同时,跳过0值操作还能提升计算性能,Shi等在几种经典网络上基于此方法获得了最高8.11倍、最低1.39倍、平均3.49倍的性能提升 。

进一步修剪优化:除了利用ReLU激活产生的自然稀疏性,还可以对绝对值较小的激活值进行修剪,进一步提升激活输出的稀疏度。例如Minerva通过小激活值剪枝的方法,在MNIST、Forest、Reuters、WebKB和20NG这五个数据集上获得了平均 50% 的功耗节省,进一步优化了神经网络的性能和功耗表现。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐