对激活函数的理解

在完成Z=X*W.T+b后,我们需要一个激活函数,把Z变成另外一个值,然后传到神经网络的下一层去

在神经网络的输出层,我们需要将最后的Z通过激活函数,转换成我们需要的答案

 

输出层需要激活函数很好理解,总不能把Z输出,搞得程序最后运行得出一个奇奇怪怪的东西吧

在隐藏层中,如果我们不需要激活函数,那我们先假设隐藏函数只有一层

x[1][1] = X[0]*W[1][1]+b[1][1]

x[1][2] = X[0]*W[1][2]+b[1][2]

x[1][3] = X[0]*W[1][3]+b[1][3]

Z= X[1]*W[2][1]+b[2][1]

化简得

Z = k1*x1+k2*x2+k3*x3+B

也就是说,过了一整个神经网络,我的训练效果差不多就是那一个节点的训练效果

emmmmmm

而如果有了激活函数

就可以把线性的东西变成非线性的,这到底有什么用呢?

现在我们来看看常用的激活函数

1.  sigmoid(z)

   f(z)=1/(1+e^(-z))

   

 

2.  tanh(Z)

   tanh(Z) = (e^x-e^(-x))/(e^x+e^(-x))

   

 

3.  max(Z,0)

   

 

4.  max(Z,0.01Z)

   

 

 

 对于二元分类(最后输出结果为1 or 0的神经网络)

我们一般用的是前两种激活函数,其中用的最多的是第二种

可以看到,这两种神经网络的倒数都有一个特点,就是在x足够大,或者足够小的时候导数接近于0,而x接近于0的时候,导数较大

因为我们输出0 or 1嘛,然后最后的输出又是由sigmoid函数输出的

所以我们要尽量让x远离0,已得到一个确切的,正确的结果。

也就是说,在x已经远离0且是正确的情况下,我们的W,b参数基本上是不用动的

而在x接近0的情况下,我们要让x往正确的方向,偏离尽可能的远,所以这个时候导数要尽量大

至于最后的两个,在特定的情况下,也有他们的优缺点。

 

对于特定的问题,我们可以试着调整激活函数,看能不能提高精度。

其实直觉告诉我,最优解在,函数越多越好,越少越好,每一层用的种类越多越好,每一层都相同,然后各层的激活函数不同之中

下个星期可以试试

 

转载于:https://www.cnblogs.com/shensobaolibin/p/7931906.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值