2、深度学习入门级别 的 激活函数整理

激活函数的作用:

1、主要作用是改变之前数据的线性关系,使网络更加强大,增加网络的能力,使它可以学习复杂的事物,复杂的数据,以及表示输入输出之间非线性的复杂的任意函数映射;

2、另一个重要的作用是执行数据的归一化,将输入数据映射到某个范围内,再往下传递,这样做的好处是可以限制数据的扩张,防止数据过大导致的溢出风险。

一、sigmoid函数

公式:

 

图像:

特点:1、从图中可以看到,当输入大于5或小于-5时,函数输出结果趋于稳定,区分度低,通过几层神经网络传导便容易产生梯度饱和问题,也可以叫梯度弥散。

2sigmod函数要进行指数运算和除法运算,这个对于计算机来说是比较慢的。

3、函数输出不是以0为中心的,这样会使权重更新效率降低。即当我们的输入如果全是正数时,我们在反向传播时,下降的梯度也是正数;当我们输入全是负数时,我们反向传播时,下降的梯度也时负数。因此会导致梯度更新权重是按照z字型下降的。但是这个问题我们可以一次训练一个batch的数据,这样就可以避免输入全是正数或者负数的现象。

 

应用场景:在特征相差比较复杂或是相差不是特别大时,使用sigmoid效果比较好。用于隐层神经元输出。

二、 tanh函数

公式:

 

图形:

特点:tanh函数相比于sigmoid函数来说,它是关于原点对称的了。但是还是会存在着计算复杂,以及梯度消失的问题。 

 

应用场景tanh函数在特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果。

三、ReLu函数

公式:

图形:

特点:

1、单侧抑制:在输入大于0时,此时激活函数的导数恒等于1,因此不会出现饱和的现象。但是在输入小于0时,此时为硬饱和。

2、计算便捷:ReLu是线性的,它只用将神经元的输出与某个阈值做比较,如果大于阈值,则输出神经元的输出,否则输出为0。因此无论是在正向传播还是反向传播的计算中都十分便捷。

3ReLu在训练的过程中会造成神经元的死亡。为什么会造成这种情况呢?举个例子:当在反向传播时,如果此时流进网络的梯度很大,如果权重系数被更新成很大的负数后,此时很多输入经过该神经元输出都会是0。此时就落入了硬饱和区域了。而这个神经元的梯度将一直都是0。要解决这个问题就是要在设置学习率的时候,尽量不要设置太大的学习率,这样可以有效的避免神经元的失活。

应用场景:用于隐层神经元输出。建议先试用ReLu或Leaky-ReLU,不行再试sigmoid或tanh。

Leaky-ReLU:

 

Maxout

另:

 

参考:

https://blog.csdn.net/jacke121/article/details/80805488

https://blog.csdn.net/left_think/article/details/77664085

https://blog.csdn.net/leo_xu06/article/details/53708647

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值