【激活函数】
如果没有激活函数,那么神经网络模型就是一个线性模型;即便有再多的隐藏层,整个网络也只能等价于一个单层的神经网络。有了激活函数以后,神经网络就能建模非线性模型,能广泛处理复杂的问题。
- 阶跃函数:最早采用的激活函数是阶跃函数,但其光滑性不好,所以实际中用光滑性较好的函数替代。
- Sigmoid函数:Sigmoid函数具有可微性和单调性,输出值的范围是(0,1),在物理意义上最接近生物神经元。但Sigmoid函数也有缺点,例如:饱和性。根据sigmoid函数的定义不难看出,当x趋向于两侧时,sigmoid函数的导数逐渐趋向于0,在参数更新中,需要代价函数关于参数的偏导数信息,这些偏导数中都会含有一个因子——激活函数的导数,如果取sigmoid函数为激活函数,一旦输入值落入饱和区域,那么sigmoid函数的导数值就会很小,甚至接近于0,从而使得代价函数关于参数的偏导数很小,参数就无法更新,还有导致向下一层传递的梯度非常小,这种现象称为梯度消失,会使得整个网络的参数难以得到有效的训练。
- 双曲正切函数(Tanh函数)