常用激活函数sigmoid,Tanh,ReLU

什么是激励函数

激励函数一般用于神经网络的层与层之间,上一层的输出通过激励函数的转换之后输入到下一层中。神经网络模型非线性的,如果没有激励函数,那么每一层实际上就相等于矩阵乘法。而将过非线性的激励函数的作用,可以使神经网络拥有更过的表现力。

下面我们具体的描述这一问题

如下,加入x1,x2是神经网络输入层节点,net01是隐含层的一个节点,可以知道的是

neto1 = x1*w1+x2*w2+1*b1

而outo1将作为输入输入到下一层,在neto1和outo1之间需要做一步计算,即

outo1 = sigmoid(neto1)

 

不同激励函数及其公式和图形

1.Sigmoid函数

 

 

 

其函数图形如下:

我们可以观察到Sigmoid函数的输出值在(0,1)之间。

Sigmoid函数的倒数的公式如下

其导数图形如下:

Sigmoid存在的不足

在一些误差反向传播的场景下。首先会计算输出层的loss,然后将该loss以导数的形式不断向上一层神经网络传递,调整参数。使用Sigmoid函数的话,很容易导致loss导数变为0,从而失去优化参数的功能。 并且Sigmoid函数的导数最大值为0.25,该误差经过多层神经网络后,会快速衰减到0。 
除此之外,Sigmoid函数的导数恒大于零,因此下一层神将网路的输入恒大于零

 

2.Tanh函数

基于Sigmoid函数,Tanh函数进行了进一步的优化,克服了,Sigmoid恒大于零的缺点。

Tanh函数公式如下:

函数图像关于原点对称

Tanh函数的到函数如下


 

Tanh函数和Sigmoid函数的图像对比如下:

 

虽然Tanh函数解决了Sigmoid函数恒大于零的问题,但Sigmoid所存在的其他不足,Tanh仍然存在。

tanh函数与sigmoid函数共同的缺点: 当它们倾向于比较大或者比较小的数的时候,整个函数的变化比较平缓,会影响到网络的学习效率。所以在实际工作中用得更多的是ReLU函数

3.ReLU函数

ReLU的全称是Rectified Linear Units

函数公式如下:

也可以写成如下形式:

ReLU函数的函数图像为:,是后来才出现的激活函数。 可以看到,当x<0时,函数值为零ReLU硬饱和。而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。这让我们能够直接以监督的方式训练深度神经网络,而无需依赖无监督的逐层预训练。

 该函数在输入小于0时输出值恒为0,在输入大于0时,输出线性增长。

 ReLU函数没有Sigmoid函数及Tanh函数中的指数运算,并且也没有”kill” gradients的现象。 
  但是ReLU函数也有以下几个不足之处: 
(1)not zero-centered 
  这个与Sigmoid类似,从函数图形就可以看出。 
   
(2)dead relu 
  这里指的是某些神经元可能永远不会被激活,导致对应的参数永远不会被更新。 
  比如说一个非常大的Gradient流过ReLU神经元,可能会导致参数更新后该神经元再也不会被激活。 
  当学习率过大时,可能会导致大部分神经元出现dead状况。所以使用该激活函数时应该避免学习率设置的过大。另外一种比较少见的情况是,某些初始化参数也会导致一些神经元出现dead状况。

以上部分参考自:https://blog.csdn.net/dabokele/article/details/58713727

                                https://www.jianshu.com/p/bc40cf98aa80

                                https://blog.csdn.net/wyf826459/article/details/80660685

 

除以上三种激活函数外,还有Softplus函数,Softsign函数 等咱不做讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值