函数表达式和导数:
函数图像:
特点:为了改善ReLU在 x<0 时梯度为 0造成Dead ReLU,提出了Leaky ReLU使得这一问题得到了缓解。例如在我们耳熟能详的YOLOV3网络中就使用了Leaky ReLU这一激活函数,一般 α取 0.25。另外PReLU就是将Leaky ReLU公式里面的 α当成可学习参数参与到网络训练中。
5. ReLU6函数表达式:
特点:ReLU6就是普通的ReLU但是限制最大输出值为6(对输出值做clip),这是为了在移动端设备float16的低精度的时候,也能有很好的数值分辨率,如果对ReLU的激活范围不加限制,输出范围为 0到正无穷,如果激活值非常大,分布在一个很大的范围内,则低精度的float16无法很好地精确描述如此大范围的数值,带来精度损失。
6. ELU函数表达式:
函数图像:
导数:当 x>0 时, f\'(x)=1 ,当 x<0 时, f\'(x)=αex 。
特点:融合了sigmoid和ReLU,左侧具有软饱和性,右侧无饱和性。右侧线性部分使得ELU能够缓解梯度消失,而左侧软饱能够让ELU对输入变化或噪声更鲁棒。ELU的输出均值接近于零,所以收敛速度更快。在 ImageNet上,不加Batch Normalization 30层以上的ReLU网络会无法收敛,PReLU网络在MSRA的Fan-in (caffe )初始化下会发散,而 ELU 网络在Fan-in/Fan-out下都能收敛。
7. SoftSign函数表达式:
函数图像:
导数:图中已经求出。
特点:Softsign是tanh激活函数的另一个替代选择,从图中可以看到它和tanh的曲线极其相似,不过相比于tanh,Softsign的曲线更平坦,导数下降的更慢一点,这个特性使得它可以缓解梯度消失问题,可以更高效的学习。
8. SoftPlus函数表达式:
函数图像:
函数导数:SoftPlus激活函数的导数恰好就是sigmoid激活函数,即 f\'(x)=sigmoid(x) 。
优点:SoftPlus可以作为ReLu的一个不错的替代选择,可以看到与ReLU不同的是,SoftPlus的导数是连续的、非零的、无处不在的,这一特性可以防止出现ReLU中的“神经元死亡”现象。
缺点:SoftPlus是不对称的,不以0为中心,存在偏移现象;而且,由于其导数常常小于1,也可能会出现梯度消失的问题。
9. SELU函数表达式: SELU(x)=λ*ELU(x) ,也即是:
特点:这个激活函数来自论文:https://arxiv.org/abs/1706.02515 。而这篇论文就是提出了这一激活函数,然后论文写了93页公式来证明只需要把激活函数换成SELU就能使得输入在经过一定层数之后变成固定的分布。。而这个函数实际上就是在ELU激活函数的基础上乘以了一个 λ ,但需要注意的是这个 λ是大于 1的。
更详细的讨论可以见这里:https://www.zhihu.com/question/60910412
10. Swish函数表达式: f(x) = x*sigmoid(x) ,其中 β 是个常数或可训练的参数.Swish 具备无上界有下界、平滑、非单调的特性。