激活函数Sigmoid
上一节激活函数中已经讨论了激活函数的重要性,和大致发展路径。本文直接讨论SIgmoid激活函数,这是比较早的激活函数了,使用也非常广泛,这个函数又叫Logistic函数,因为这个激活函数和逻辑回归的关系式非常之密切的。
函数的形式是 f ( x ) = 1 1 + e − x f(x)=\frac{1}{1+e^{-x}} f(x)=1+e−x1,对函数的值域做个分析就知道函数的值域 f ( x ) ∈ [ 0 , 1 ] f(x)\in[0,1] f(x)∈[0,1],函数的输出被积压到了 [ 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)=(1+e−x1)′=(1+e−x)2e−x,可以很容易的对这个导函数两边向无穷大取极限,得到
f
′
(
x
)
=
0
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 )
f′(x)=f(x)(1−f(x)),根据这个公式可以很快速的计算出反向传播的导数值。但是这个函数的计算本身就有点不容易,要计算指数还要计算除法。
还有一点不足之处就是,这个函数由于具有软饱和性,训练的时候,对于绝对值较大的数,计算出来的梯度非常小,如果多层的梯度相乘,导致计算出来的最终梯度非常小,使得参数几乎无法更新,训练无法正常进行下去,这就是所谓的梯度消失问题。
我们可以从函数图像很直观的看到,sigmoid函数是不以0为中心的,对所有的参数求导后,发现值是同正同负的,使得所有的参数更新时,只能朝一个方向,这样梯度下降的时候,下降的不够自由,就只能Z字形下降,会减慢收敛速度,具体的细节请大家自行研究。
系列文章:
神经网络中的激活函数总述
sigmoid激活函数
tanh激活函数
ReLU系列激活函数
maxout激活函数
Swish激活函数
激活函数发展的新里程——EvoNorms