`

sigmoid 函数

阅读更多
神经网络里常常见到sigmoid函数(又称logistic函数),也会提到进入饱和区后该函数的导数很小,不利于训练。
那么,精确值是多少呢,今天,就画个图来看看:



下面是一些点上的具体值,可以看到, x=4时,函数值已经到0.98以上了,而导数已经降到峰值的 十分之一以下了。
训练的时候不能太进入饱和区,但是如果完全在线性区,多层神经网络是没有意义的(多层线性网络还是线性的。。。);
根据这些值,可以为网络权重的初始值设置给个大致的参考吧~

x=-8,	函数值为:0.00034,	导数为:0.00034
x=-6,	函数值为:0.00247,	导数为:0.00247
x=-4,	函数值为:0.01799,	导数为:0.01766
x=-2,	函数值为:0.11920,	导数为:0.10499
x= 0,	函数值为:0.50000,	导数为:0.25000
x= 2,	函数值为:0.88080,	导数为:0.10499
x= 4,	函数值为:0.98201,	导数为:0.01766
x= 6,	函数值为:0.99753,	导数为:0.00247
x= 8,	函数值为:0.99966,	导数为:0.00034


代码如下:
close all
fsigmoid=@(x) 1./(1+exp(-x));
x=-8:.1:8;
y=fsigmoid(x);


fdy_dz=@(y) y.*(1-y);


dsig=fdy_dz(y);

fontSize=20;
subplot(121);
plot(x,y);
title('sigmoid函数','FontSize',fontSize)
xlabel('x','FontSize',fontSize)
ylabel('sigmoid(x)','FontSize',fontSize)
grid on
% axis equal

subplot(122);
plot(x,dsig);
title('sigmoid函数的导数','FontSize',fontSize)
xlabel('x','FontSize',fontSize)
ylabel('d sigmoid(x) /dx','FontSize',fontSize)
grid on

idx=find(mod(x,2)==0)
for i=1:length(idx)
    fprintf('x=%2d,\t函数值为:%2.5f,\t导数为:%2.5f\n',x(idx(i)),y(idx(i)),dsig(idx(i)))
end
  • 大小: 67 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics