Swish激活函数来自论文. Swish定义为:
Swish(x)=xσ(βx)
其中的σ是sigmoid
函数σ(z)=(1+exp(−z))−1. β即可以是指定的一个常数, 也可以是一个可训练的参数(训练方法参考PReLU激活函数). 不同β下函数和导数如下图:
事实上, 如果β=0, Swish将退化成线性函数f(x)=2x, 如果β→∞, Swich十分接近于ReLU函数. 因此, 可以说Swich函数根据β的不同, 是线性函数和ReLU函数之间的非线性差值.
Swish的导数为:
f′(x)=σ(βx)+βx⋅σ(βx)(1−σ(βx))=σ(βx)+βx⋅σ(βx)−βx⋅σ(βx)2=βx⋅σ(x)+σ(βx)(1−βx⋅σ(βx))=βf(x)+σ(βx)(1−βf(x)) 从导数图中可以看出, 参数β控制了一阶导数从0到1变化的速度.
在实践中, 通常选择β=1.
Swish的特点
缺点: