关闭

sigmoid函数的数值稳定性

标签: 深度学习
82人阅读 评论(0) 收藏 举报
分类:

在深度学习中,我们常常选用sigmoid函数作为激活函数。sigmoid函数的具体形式如下:

f(x)=11+ex

曲线表示为:




再画大一点,取x区间更大一些,则为:

这里写图片描述

显然从图像上看,sigmoid函数是数值稳定的,即对于更大范围的x,y的取值是连续的,有效的。

从理论上看,

limx+f(x)=1;limxf(x)=0

且中间数值可以从数学上证明是稳定的。
但我们考虑1-f(x)呢?
1f(x)=ex1+ex

我们用matlab绘制其曲线:


这里写图片描述

我们发现这时,当x趋向负无穷,甚至仅仅x趋向-800,此时1-f(x)就不再稳定了,在matlab的值变成了NAN了

其实我们发现,对于 1- f(x),显然当x趋向正无穷时,还是稳定的,此时:
分子:ex0,而分母:1+ex1,

显然01,结果趋向0.

但是当x趋向负无穷时,此时,
分子: ex+,而分母:1+ex+,
此时:
ex1+ex就会变得不稳定,尽管理论上趋向1。
因此就出现了以上的图像。

那么如何解决这种不稳定问题的解呢?

其实有两种办法:

(一)先计算稳定的f(x),结果赋予y,再计算1-y .

乍看从数学上,好像完全一致,但是在数值解上不等价。 y=f(x)是稳定的,因此对于1-f(x)=1-y也变成了稳定的解。

我们从图像上证明:


这里写图片描述

此时就正确了,与理论解完全一致。

(二)直接从1-f(x)着手
这里我们从caffe的sigmoid_cross_entropy_loss_layer.cpp得到启发。

主要办法就是对于

1f(x)=ex1+ex

分别考虑正负x.

x0时,维持上式不变;
x<0时,分子分母同时乘以ex,则有:

ex1+ex=ex1+ex11+exx0x<0

此时绘制曲线为:


这里写图片描述

因此在实际coding中,我们需要考虑计算的稳定性。

0
0
查看评论

sigmoid

sigmoid 函数sigmoid函数是一个良好的阈值函数 特点: 连续,光滑 严格单调 关于(0,0.5)中心对称 对阈值函数有一个良好的近似 原函数:f(x) = 1/[1+e^(-x)] 其导数:f’(x)=f(x)*[1-f(x)] 选择使用Sigmoid的原因以下内容转自知...
  • lengzhao
  • lengzhao
  • 2016-04-11 21:14
  • 540

浅谈数值稳定性

今天谈论的重点是数值稳定性,在计算机编程中,有很多算法都需要考虑数值稳定性。比如在机器学习算法中我学过的Logistic回归的牛顿迭代解法,在牛顿迭代时需要解线性方程组,由于Hessian矩阵是对称正定的,用Cholesky矩阵分解不但可以大大减少运算量,而且还具有很好的数值稳定性。借此机会来更多地...
  • ACdreamers
  • ACdreamers
  • 2014-11-26 14:16
  • 4943

tensorflow cross_entropy 四种交叉熵计算函数

Tensorflow交叉熵函数:cross_entropy 以下交叉熵计算函数输入中的logits都不是softmax或sigmoid的输出,因为它在函数内部进行了sigmoid或softmax操作 tf.nn.sigmoid_cross_entropy_with_logits(_sentine...
  • QW_sunny
  • QW_sunny
  • 2017-04-03 15:36
  • 3524

sigmoid函数的用途

sigmoid函数是一个良好的阈值函数,连续,光滑严格单调关于(0,0.5)中心对称对阈值函数        _ 1, x > /deltaf(x)= /      / &#...
  • pennyliang
  • pennyliang
  • 2007-01-14 11:39
  • 21161

深度学习:Sigmoid函数与损失函数求导

1sigmoid函数 1 从指数函数到sigmoid 2 对数函数与sigmoid 2sigmoid函数求导 3神经网络损失函数求导 1、sigmoid函数​ sigmoid函数,也就是s型曲线函数,如下: 函数:f(z)=11+e−z 函数:f(z)=\frac{1}{1+e^{-z}} 导...
  • zhishengqianjun
  • zhishengqianjun
  • 2017-07-18 14:22
  • 7912

sigmoid函数求导的步骤补充

网上有不少关于sigmoid函数求导的文章(比如来自CSDN的博文sigmoid函数求导与自然指数),但是求导过程中对于怎么由(1/(1+exp(-x)))'一下推导至exp(-x)/(1+exp(-x))^2没有提及。虽然对于熟练函数求导的朋友们不难,但对于刚接触函数求导或者隔了若干年忘记...
  • csdn_zf
  • csdn_zf
  • 2017-06-07 11:51
  • 5460

sigmoid函数求导与自然指数

在神经网络里经常使用sigmoid做激活函数,它的导数是怎么样求解呢?因为要使用它的导数来计算梯度下降。这个过程如下:1. sigmoid函数:f(z) = 1 / (1 + exp( − z))导数:f(z)' = f(z)(1 − f(z))求导过程如下:下...
  • caimouse
  • caimouse
  • 2017-03-26 11:33
  • 15324

Sigmoid函数的理解

原文地址:http://computing.dcu.ie/~humphrys/Notes/Neural/sigmoid.html --- Continuous Output - The sigmoid function Given Summed Input: x ...
  • wusuopuBUPT
  • wusuopuBUPT
  • 2017-05-15 14:59
  • 900

Sigmoid函数总结

Sigmoid函数又叫Logistic函数,它在机器学习领域有极其重要的地位。以前一直不是很理解Sigmoid函数的重要性,查了很多资料,大体上屡了一下,不过数学功底太差,很多地方理解的不够透彻。这里简单记录一下。
  • zhangzi_xing
  • zhangzi_xing
  • 2017-07-05 16:17
  • 721

机器学习基础(七)——sigmoid 函数的性质

θ(s)=11+e−s \theta(s)=\frac1{1+e^{-s}}(1)通分 θ(x)=es1+es \theta(x)=\frac{e^s}{1+e^s}(2)”对称” 1−θ(s)=θ(−s) 1-\theta(s)=\theta(-s)(3)导数
  • lanchunhui
  • lanchunhui
  • 2016-03-24 13:02
  • 2496
    个人资料
    • 访问:309440次
    • 积分:4352
    • 等级:
    • 排名:第8257名
    • 原创:118篇
    • 转载:82篇
    • 译文:8篇
    • 评论:107条
    个人网站
    最新评论