首先,关于为什么需要激活函数,我看到一个公众号讲的很好,见参考1,简单地说就是线性函数不论怎么组合都是线性的,而单纯的线性函数做不到适应各种分类,所以引入激活函数,将线性函数变为非线性函数。
激活函数的分类我看到有两种说法,稍微有点出入
一类是把Logistic函数和Tanh函数归为一类,都是Sigmoid型函数,如最近比较新的邱锡鹏的《神经网络与深度学习》上就是这样分的
另一类的全部单独区分开,sigmoid函数单独为一类,公式等同于上一类的Logistic函数,Tanh函数自成一类
除了这俩,还有一个在深度学习中非常常用的函数,ReLU函数,当然没什么是十全十美的,ReLU也有缺点,为了弥补它的缺点还产生了很多变种,例如Leaky ReLU、PReLU、ELU等,上述的这些函数在keras中都支持,调用还是挺方便的,具体使用可以参考官方文档。
在我的cnn模型中分别使用三种不同的激活函数对比,可以看出Logistic函数的效果明显差很多,不过很意外的是Tanh和ReLU的差别并不大,我之前以为会差很多,可能和模型也有关系。
参考
1.机器学习算法与自然语言处理 理解激活函数作用,看这篇文章就够了!
2.邱锡鹏.神经网络与深度学习. https://nndl.github.io/
3.Keras官方文档,激活函数部分 激活函数 Activations - Keras 中文文档