AI高等数学
sigmoid函数
回复:0  浏览:649

sigmoid函数是机器学习中的一个比较常用的函数,与之类似的还有softplus和softmax等函数,这里也就不说,先来看看sigmoid函数的表达式的和图像,sigmoid函数表达式如下

这就是sigmoid函数的表达式,这个函数在伯努利分布上非常好用,现在看看他的图像就清楚


可以看到在趋于正无穷或负无穷时,函数趋近平滑状态,sigmoid函数因为输出范围(0,1),所以二分类的概率常常用这个函数,事实上logisti回归采用这个函数很多教程也说了以下几个优点

    1  值域在0和1之间

    2   函数具有非常好的对称性

    函数对输入超过一定范围就会不敏感

特点:
它能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1.
缺点:
sigmoid函数曾经被使用的很多,不过近年来,用它的人越来越少了。主要是因为它固有的一些 缺点。
缺点1:在深度神经网络中梯度反向传递时导致梯度爆炸和梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大。
缺点2:Sigmoid 的 output 不是0均值(即zero-centered)。这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。 产生的一个结果就是:如 x > 0 ,   f = w T x + b x>0, \ f= w^Tx+b x>0, f=wTx+b,那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。 当然了,如果按batch去训练,那么那个batch可能得到不同的信号,所以这个问题还是可以缓解一下的。因此,非0均值这个问题虽然会产生一些不好的影响,不过跟上面提到的梯度消失问题相比还是要好很多的。
缺点3:其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。