网站源码官网,房山做网站,谁能给我一个网站,北京到广州快递要几天在深度学习中#xff0c;我们常常选用sigmoid函数作为激活函数。sigmoid函数的具体形式如下#xff1a; f(x)11e−xf(x)=\frac{1}{1+e^{-x}}曲线表示为#xff1a; 再画大一点#xff0c;取x区间更大一些#xff0c;则为#xff1a; 显然从图像上看#xff0c;sigmoid函…在深度学习中我们常常选用sigmoid函数作为激活函数。sigmoid函数的具体形式如下
f(x)11e−x
f(x)=\frac{1}{1+e^{-x}}曲线表示为 再画大一点取x区间更大一些则为 显然从图像上看sigmoid函数是数值稳定的即对于更大范围的xy的取值是连续的有效的。从理论上看
limx→∞f(x)1;limx→−∞f(x)0{\lim}_{x\rightarrow +\infty}f(x)=1;\\
{\lim}_{x\rightarrow -\infty}f(x)=0且中间数值可以从数学上证明是稳定的。 但我们考虑1-f(x)呢 1−f(x)e−x1e−x
1- f(x)=\frac{e^{-x}}{1+e^{-x}} 我们用matlab绘制其曲线 我们发现这时当x趋向负无穷甚至仅仅x趋向-800此时1-f(x)就不再稳定了在matlab的值变成了NAN了。
其实我们发现对于 1- f(x)显然当x趋向正无穷时还是稳定的此时 分子e−x→0e^{-x}\rightarrow 0,而分母:1e−x→11+e^{-x} \rightarrow 1,
显然01\frac{0}{1}结果趋向0.
但是当x趋向负无穷时此时 分子 e−x→∞e^{-x}\rightarrow +\infty,而分母:1e−x→∞1+e^{-x} \rightarrow +\infty, 此时 e−x1e−x\frac{e^{-x}}{1+e^{-x}}就会变得不稳定,尽管理论上趋向1。 因此就出现了以上的图像。
那么如何解决这种不稳定问题的解呢
其实有两种办法
一先计算稳定的f(x),结果赋予y,再计算1-y .
乍看从数学上好像完全一致但是在数值解上不等价。 yf(x)是稳定的因此对于1-f(x)1-y也变成了稳定的解。
我们从图像上证明 此时就正确了与理论解完全一致。二直接从1-f(x)着手 这里我们从caffe的sigmoid_cross_entropy_loss_layer.cpp得到启发。
主要办法就是对于
1−f(x)e−x1e−x
1- f(x)=\frac{e^{-x}}{1+e^{-x}} 分别考虑正负x.当x≥0x\geq 0时维持上式不变 当x0x时分子分母同时乘以exe^x,则有
e−x1e−x⎧⎩⎨⎪⎪⎪⎪e−x1e−x11exx≥0x0\frac{e^{-x}}{1+e^{-x}}=\left\{\begin{matrix}
\frac{e^{-x}}{1+e^{-x}} 因此在实际coding中我们需要考虑计算的稳定性。