swish激活函数
激活函数提出论文:
swish
f(x)=x⋅sigmoid(βx)
β是个常数或可训练的参数.Swish 具备无上界有下界、平滑、非单调的特性。
Swish 在深层模型上的效果优于 ReLU。例如,仅仅使用 Swish 单元替换 ReLU 就能把 Mobile NASNetA 在 ImageNet 上的 top-1 分类准确率提高 0.9%,Inception-ResNet-v 的分类准确率提高 0.6%。
导数:
当β = 0时,Swish变为线性函数:
f(x)=x2f(x)=x2.
β → ∞,
σ(x)=(1+exp(−x))−1,
σ(x)=(1+exp(−x))−1为0或1.
Swish变为ReLU:
f(x)=2max(0,x)
所以Swish函数可以看做是介于线性函数与ReLU函数之间的平滑函数.
工程实现:
在TensorFlow框架中只需一行代码: x * tf.sigmoid(beta * x)或tf.nn.swish(x).
在Caffe中使用Scale+Sigmoid+EltWise(PROD)来实现或者合并成一个层.
来源:椒椒。