从定义上看,只要是连续可导的函数都可以作为激活函数,但最常见的是分段线性和呈指数形状的非线性函数。
特点:
– 输出范围为0-1,符合人的主观意识,即神经元也从不活跃(0)到完全激活(1)进行感知。
– 单调连续
-求导很容易,导数是$f(x)(1-f(x))$,可以自己表达自己的导数。
缺陷:
-具有软饱和(左软饱和表示x趋近负无穷大,导数趋近0,右饱和表示x趋近正无穷大,导数趋近0),输出值大时小,它 更新网络比较困难,因为BP算法比较梯度,也就是所谓的梯度消失问题。
– 输出不是以 0 为中心,而是以 0.5 为中心。 不过相比之前的缺陷,影响并没有那么大。
Tanh
特点:
-收敛速度比sigmoid函数快,因为tanh的输出均值比sigmoid更接近0,而SGD 将更接近自然梯度(二次优化技术),从而减少所需的迭代次数。
错误:
– 软饱和仍然存在。
ReLU
AlexNet当时提出的激活函数非常好,很长一段时间都是设计CNN网络的默认激活函数。
特点:
– 当输入为正数时,输出导数始终为1,缓解了梯度消失的问题。
– 为网络带来稀疏性。 当输入值小于 0 时,它将是稀疏的。 人脑的稀疏度高达95%。
-无论是正向计算还是导数计算,都很简单。
缺点:
– 左硬饱和,当输入小于零时,导数一直为0,会导致很多神经元无法更新,“神经元死亡” 会发生。
– relu 函数不输出负值。
-均值漂移,relu函数的输出均值总是大于0(从relu函数的输出范围可以看出)。
Leaky ReLU
公式:$f(x) = max(alpha*x,x)$
特征:
– 为了解决relu中“神经元死亡”的问题,leaky relu给输入一个小于零的非常小的梯度。
缺点:
– 公式中的$alpha$是一个很小的值,一般为0.01,首先这是一个超参数,有文献指出它的性能是 很差 稳定,有时比relu好,有时更差,可想而知不是很靠谱。
PReLU
公式和Leaky ReLU一样,只是它的$alpha$参数是可学习的。
特点:
-收敛速度比relu快。
– 输出均值更接近于0。
缺点:
– 目前还不清楚,只能说性能不稳定 够了,还不够“通用”,它的作者何凯明在他的ResNet中并没有使用它,而是使用了ReLU。
RReLU
和PReLU类似,只是这里的$alpha$参数是高斯分布上的随机值,在测试的时候是固定的。
ELU
特点:
– 高噪声鲁棒性。
– 输出均值在0左右。
缺点:
– 有指数运算,计算量大。
SELU
令人敬畏的是,在提出该方法的论文背后有长达 93 页的论证。
公式:$f(x)=lambda*ELU(x)$
特点:
-新参数$lambda$大于1, 所以在正半轴上,函数的导数大于1。
-激活函数有不动点。 网络加深后,每一层的输出都会向正态分布靠拢,称为自归一化。
缺点:
– selu证明的部分前提是权重服从正态分布,但这个假设在实践中不一定成立,比如钟形分布 ? (不太明白)
——很多实验发现效果并不比relu好。
CReLU
公式:$CReLU(x)=[ReLU(x),ReLU(-x)]$
作者发现在浅 网络层的卷积核更倾向于捕捉正负相位信息,而ReLU会将负相位信息归零,所以就有了CReLU操作。
特点:
– 输出通道数翻倍,相当于利用对称关系人为还原负相信息。
缺点:
– 到底用到哪几层,太依赖调试了。
Maxout
公式:$max(w_1^Tx b_1,w_2^Tx b_2,…,w_n^Tx b_n)$
是ReLU 的泛化,其中发生饱和的是一个零测量集事件(不明白那是什么意思……),具有参数k。
特点:
– maxout可以拟合任何凸函数。
——具有relu的所有优点。
– 没有发生神经元死亡。
缺点:
-([好解释](https://blog.csdn.net/hjimce/article/details/50414467))参数量巨大(by k倍增加),因为我们之前只需要每个神经元的一组权重和偏差,但现在不需要了,我们添加了冗余的k组权重和偏差,让输入经过这些权重和偏差计算,只保留激活 具有最大值的输出。
Swish
公式:$f(x) = x*sigmoid(beta*x)$,其中$beta$参数可以是常量或经过训练的。
特点:
– 无上界、下界、平滑、非单调。
– Swish函数可以看作是介于线性函数和ReLU函数之间的平滑函数。
– 论文中给出的实验,在各种数据集和各种网络上,比relu有更好的性能(在深度网络上有更大的优势)。
缺点:
– 只有实验证明,没有理论支持。
– 在浅层网络上,性能与relu相差不大。