激活函数
在神经网络中,激活函数的存在使得网络加入了非线性因素,从而弥补了线性模型处理非线性问题时的局限性,使神经网络能够更好地解决语音、图像等非线性问题。激活函数的输入是一个数字,然后对该输入进行某种数学运算或操作。
1.sigmoid()函数
在之前的一段时间内,sigmoid()函数是非常常用的,因为它对神经元的激活有很好的解释,且它本身为单调连续,非常适合作为输出层。但它的缺陷也是非常明显的。第一,当输入稍微远离了坐标原点,函数的梯度就变得很小了,几乎为0,这会导致在反向传播过程中,梯度很小的时候接近0,神经网络无法更新参数,这个问题称为梯度饱和,也可以称为梯度弥散。第二,sigmoid()函数的输出不是零中心的,这会影响梯度下降的运作。
2.tanh()函数
tanh()函数的数学公式为,tanh()函数图像如图所示。
tanh()函数图像
tanh()函数的定义域是,值域是(-1,1)。其输入如果是很大的负数,其值就会无限接近于-1;输入如果是很大的正数,其值就会无限接近于1。和sigmoid()函数一样,tanh()也存在梯度饱和问题,但是tanh()的输出是零中心的,所以实际使用更多一些。