AI学习者 · 2021年12月31日

激活函数 | Squareplus性能比肩Softplus激活函数速度快6倍(附Pytorch实现)

image.png

本文提出了Squareplus激活函数,这是一个类似softplus的激活函数,但只需要通过简单的代数运算来实现:加法、乘法和平方根。由于Squareplus在CPU上的计算速度比softplus快约6倍。

1 Squareplus

激活函数是深度学习体系结构的核心组成部分。特定的非线性应用于神经网络的每一层,影响训练的动态和测试时间的准确性,是一个关键的工具,当设计体系结构的输出必须在一定范围内。当限制一个层的输出为非负时,一个普遍的做法是应用ReLU激活:
image.png
虽然ReLU保证了非负输出,但它有两个潜在的缺点:

  • 当x≤0时,它的梯度为零
  • 在x = 0时,它是不连续的

如果需要平滑或非零梯度,通常使用Softplus代替ReLU:
image.png
Softplus是ReLU的上界,当|x|较大时接近ReLU,但与ReLU不同的是,它是连续的

虽然Softplus是一个有效的工具,但它也有一些潜在的缺点:

  1. 高效计算并不简单,因为它需要求两个transcendental 函数的值
  2. 当x很大时,Softplus的简单实现在数值上是不稳定的(当x远大于0时,返回x作为Softplus(x)的输出,可以直接改善这个问题)

在这里,提供了一个Softplus的替代方案,它没有上诉的缺点,这里称之为“Squareplus”:
image.png
Squareplus由超参数b>0定义,它决定了x=0附近弯曲区域的大小。
image.png
图1显示了不同b值的Squareplus(以及它的一阶和二阶导数),以及Softplus。Squareplus与Softplus有很多相同的特性:

  • 它的输出是非负的
  • 它是ReLU的一个上界函数,会随着|x|的增长而接近ReLU
  • 它是连续的

然而,Squareplus只使用代数运算进行计算,这使得它非常适合计算资源或指令集有限的情况。此外,当x较大时,Squareplus无需特别考虑确保数值稳定性。Squareplus的一阶导数和二阶导数为:
image.png
image.png

超参数b的特定值产生某些性质。当b=0时,Squareplus简化为ReLU:
image.png
这也是b的最小值,在这里Squareplus的输出总是保证大于Softplus的输出:
image.png
设置b = 4使Squareplus的二阶导数近似于Softplus的原点附近,并给出的输出为1在原点(用户可能会觉得很直观):
image.png
对于b的所有有效值,Squareplus的一阶导数在原点处为0.5,就像Softplus一样:
image.png
b超参数可以被认为是一个尺度参数,类似于Charbonnier/pseudoHuber损失中的偏移如何被参数化为一个尺度参数。同样,缩放x(不缩放激活输出)或改变b也可以产生相同的激活:
image.png
虽然Squareplus表面上类似于Softplus,但当|x|增长较大时,Squareplus接近ReLU的速度明显慢于Softplus。
image.png
如图2所示绘制了Squareplus/Softplus和ReLU之间的区别。这张图也显示了在大输入上Softplus的数值不稳定性,这就是为什么大多数Softplus实现在x >0。类似于函数本身的缓慢渐近行为,当x<0时,Squareplus的梯度接近零比Softplus的梯度更慢。这个属性在实践中可能是有用的,因为“死亡”梯度通常是不受欢迎的,但这可能是依赖于任务的。
image.png
如表1所示,在CPU上Squareplus要比Softplus快约6倍,与ReLU相当。在GPU上,Squareplus只比Softplus快10%,可能是因为所有整流器都受到内存带宽的限制,而不是在这种设置下的计算能力。这表明Squareplus可能只是在计算资源有限或无法使用Softplus的情况下(可能是因为硬件平台不支持exp和log)的理想替代方案。

Pytorch实现如下:

class Squareplus(nn.Module):
    def __init__(self, b=0.2):
        super(Squareplus, self).__init__()
        self.b = b

    def forward(self, x):
        x = 0.5 * (x + torch.sqrt(x+self.b))
        return x

这里也提供了自适应参数版本,已经上传【集智书童知识星球

星球主要内容包括:经典论文分享、可落地方法复现、模型部署、Transformer部署与改进、电子资源分享等内容。

以下是星球的部分内容,持续更新中......
image.png
扫描下方二维码,我们一起学习吧!!!
image.png
2参考
[1].Squareplus: A Softplus-Like Algebraic Rectifier.

原文:集智书童
作者:ChaucerG

推荐阅读

更多嵌入式AI技术相关内容请关注嵌入式AI专栏。
推荐阅读
关注数
17743
内容数
1241
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息