[深度学习]神经网络的激活函数

为什么要引入非线性激活函数

如果不使用非线性激活函数,激活函数本质上相当于f(x)=ax+b。在这种情况下,神经网络每一层的输出都是上层输入的线性函数。此时,不管神经网络有多少层,输出与输入都是线性关系,与没有隐层是一样的。也就相当于最原始的感知机,连最基本的异或问题都无法解决,更别说其他更复杂的非线性问题。

 

常见的激活函数

sigmoid函数

sigmoid函数的数学形式为,导数为f(x)(1-f(x))。

作为激活函数,其缺点如下:

(1)当输入很大或很小,饱和的神经元会带来梯度消失(Gradient Vanishing);

(2)函数的输出不是以0为对称的(zero-centered)(解释);

(3)使用指数函数,计算代价有点高。

 

tanh函数

tanh函数的数学形式为,导数为1-f(x)^2。

与sigmoid函数相比,其解决了zero-centered的问题。但是,梯度消失与指数函数计算代价高的问题,仍然存在。

 

relu函数

relu函数的全称是,rectified linear unit(修正线性单元函数),其数学形式为f(x) = max(0,x)。

优点:

(1)在输入空间的一半都不存在饱和问题;

(2)收敛速度快;

缺点:

(1)输出不是以0为中心;

(2)Dead Relu Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不会被更新(参数初始化问题或者参数更新太大);

(3)在输入空间的另一半会存在梯度消失的问题。

 

其他方法

Leaky Relu : f(x) = max(0.1x, x)

maxout:f(x) = (w1x+b, w2x+b)

elu: f(x) = x, x>=0; f(x) = a(e^x-1), x<= 0

 

使用

1.最常使用Relu,需要小心地调节学习速率

2.偶尔可考虑Relu的变种,如上面的其他方法中提到的那些

3.一般不使用sigmoid

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值