激活函数Sigmoid

激活函数Sigmoid


   上一节激活函数中已经讨论了激活函数的重要性,和大致发展路径。本文直接讨论SIgmoid激活函数,这是比较早的激活函数了,使用也非常广泛,这个函数又叫Logistic函数,因为这个激活函数和逻辑回归的关系式非常之密切的。
  函数的形式是 f ( x ) = 1 1 e x f(x)=\frac{1}{1-e^{-x}} ,对函数的值域做个分析就知道函数的值域 f ( x ) [ 0 , 1 ] f(x)\in[0,1] ,函数的输出被积压到了 [ 0 , 1 ] [0,1] 之间,所以又叫挤压函数。函数的图像如下。

图片来自网上
  直观上来看,该激活函数在两边无穷大处的收敛了,导函数应该也是收敛于0的。我们来证实一下。
f ( x ) = ( 1 1 e x ) = e x ( 1 e x ) 2 f'(x)= \left ( \frac{1}{1-e^{-x}} \right )'= \frac{e^{-x}}{(1-e^{-x})^2} ,可以很容易的对这个导函数两边向无穷大取极限,得到 f ( x ) = 0 f'(x)=0 ,所以两边都是饱和的。同时也可以证明该函数是单调递增函数,单调有界必收敛,收敛也可以说明导函数为0。
  Sigmoid的特点就是将输出映射到[0,1]之内,可以和概率轻易对应起来,很容易用来反映二分类结果的概率。事实上逻辑回归就是使用sigmoid函数作为输出概率的,后面可能会整理逻辑回归,同时谈一谈sigmoid和softmax的关系。但是显然sigmoid可以和类别概率对应起来,但是也仅仅能和二分类概率对应起来,对于多分类问题无能为力。
  另一个特点就是反向传播的计算比较简单,因为这个函数有一个特性, f ( x ) = f ( x ) ( 1 f ( x ) ) f'(x)= f(x)\left( 1-f(x) \right ) ,根据这个公式可以很快速的计算出反向传播的导数值。但是这个函数的计算本身就有点不容易,要计算指数还要计算除法。
  还有一点不足之处就是,这个函数由于具有软饱和性,训练的时候,对于绝对值较大的数,计算出来的梯度非常小,如果多层的梯度相乘,导致计算出来的最终梯度非常小,使得参数几乎无法更新,训练无法正常进行下去,这就是所谓的梯度消失问题
  我们可以从函数图像很直观的看到,sigmoid函数是不以0为中心的,对所有的参数求导后,发现值是同正同负的,使得所有的参数更新时,只能朝一个方向,这样梯度下降的时候,下降的不够自由,就只能Z字形下降,会减慢收敛速度,具体的细节请大家自行研究。

系列文章:

神经网络中的激活函数总述
sigmoid激活函数
tanh激活函数
ReLU系列激活函数
maxout激活函数