常用激活函数(Activation Function)

Sigmoid函数

Sigmoid函数定义如下:


这里写图片描述

其图形如下:


这里写图片描述

Sigmoid 函数优点很多:
1.作为 Activation Function,它是单调递增的,能够很好地描述被激活的程度;
2.Sigmoid 能将( ,+ )转换为(0,1),避免数据在传递过程中太过发散,同时输出还能被理解成某种概率;
3.Sigmoid 在定义域内处处可导,而且导数很好算。 f(x)=f(x)(1f(x)) ,图形如下,可以看出 f(x)<1


这里写图片描述

但是,Sigmoid 的导数也带来了一些问题。当 DNN 比较深的时,较前层的参数求出的梯度会非常小,几乎不会再更新,这种现象被称为梯度消失(Gradient Vanish)。

tanh函数

tanh函数是sigmoid函数的变形,tanh函数定义如下:


tanh(x)=2σ(2x)1

其图形如下:


这里写图片描述

在具体应用中,tanh函数相比于Sigmoid函数往往更具有优越性,这主要是因为Sigmoid函数在输入处于[-1,1]之间时,函数值变化敏感,一旦接近或者超出区间就失去敏感性,处于饱和状态,影响神经网络预测的精度值。而tanh函数的输出和输入能够保持非线性单调上升和下降关系,符合BP网络的梯度求解,容错性好,有界,渐进于0、1,符合人脑神经饱和的规律,但比sigmoid函数延迟了饱和期。

ReLU函数

为了缓解 Gradient Vanish 现象,现在大家都会使用 ReLU(Rectified Linear Unit),其定义如下:


这里写图片描述

对应的图形如下:


这里写图片描述

ReLU 除了具有 Sigmoid 函数大部分的优点外,还有

1.对某个神经元,当x>0时,其导数为1,因而缓解了 Gradient Vanish 现象;
2.对某个神经元,当x<0时,其输出也是0,也就是对后续的网络不起作用,可以看作从网络中被移除了。因此在整个训练过程结束后,整个网络会呈现出一种稀疏的状态,也就是会有很多的神经元由于在网络中不起作用,可以当成不存在。这种稀疏也表明 ReLU 对避免网络过拟合有一定作用。

同时,ReLU 也有自己的缺陷:

1.可以看出当x<0时,不仅输出为0,ReLU 的导数也为0。即对应的参数不再更新。因此这个神经元再也没有被激活的机会了,这种现象被称为dying ReLU;
2.第二个现象叫 Bias shift。在将数据输入 DNN 时我们一般会进行高斯归一,但是由于 ReLU 的输出恒大于0,会导致后续层输出的数据分布发生偏移。对于很深的网络,这可能会导致无法收敛。

其他
Activation Function针对不同的任务中有不同的选择,还有一些其它的 Activation Function 比如 Maxou、ELU 等。

参考文献:

  1. 当我们在谈论 Deep Learning:DNN 与它的参数们(壹)
  2. TensorFlow激活函数
  3. Keras激活函数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值