激活函数的作用:提供网络的非线性表达建模能力。 线性可分数据:可以通过机器学习(感知机、SVM)找到的线性方程来进行划分。非线性可分数据:找不到一种线性方程来划分数据,此时需要引入非线性函数。 什么样的激活函数是好的激活函数:有上界,无下界,连续,非单调,响应均值为0,无梯度消失和梯度爆炸,易于计算。 Sigmoid 图中,梯度软饱和表示区域零但是没有到0;输出均值不为0,则网络收敛较慢。 Hard-Sigmoid Tanh Hard-Tanh ReLU Leaky ReLU(a为人为设置)和PReLU(a为学习获得) ELU SELU ReLU6 Swish Hard-Swish Mish 总结 在深度不是特别深的CNN中,激活函数的影响一般不会太大。 网络输出层使用Sigmoid 网络中间层优先使用ReLU 深层网络使用Mish、Swish float16/int8时使用ReLU6 轻量级网络可以将Sigmoid换成Hard-Sigmoid,Swish换成Hard-Swish