**函数Sigmoid

**函数Sigmoid


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

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

系列文章:

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