深度学习中的激活函数及优化

激活函数:

神经网络神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function。

为什么要使用激活函数?

神经网络中激活函数的主要作用是提供网络的非线性建模能力,如不特别说明,激活函数一般而言是非线性函数。假设一个示例神经网络中仅包含线性卷积和全连接运算,那么该网络仅能够表达线性映射,即便增加网络的深度也依旧还是线性映射,难以有效建模实际环境中非线性分布的数据。加入(非线性)激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。

常用的激活函数详解:

1.sigmoid函数/Logistic 函数

sigmoid函数图像
在这里插入图片描述

在这里插入图片描述

sigmoid 在定义域内处处可导,且两侧导数逐渐趋近于0。将具有这类性质的激活函数定义为软饱和激活函数。如果Z的值很大或者很小的时候,那么函数的梯度(函数的斜率)会非常小,在反向传播的过程中,导致了向底层传递的梯度也变得非常小。此时,网络参数很难得到有效训练。这种现象被称为梯度消失。一般来说, sigmoid 网络在 5 层之内就会产生梯度消失现象。

sigmoid函数一般只用于二分类的输出层。

2.tanh函数(双曲正切函数)
在这里插入图片描述

在这里插入图片描述

anh也是一种非常常见的激活函数。与sigmoid相比,它的输出均值是0,有类似于数据中心化的效果,使得其收敛速度要比sigmoid快,减少迭代次数。然而,从途中可以看出,tanh一样具有软饱和性,从而造成梯度消失。

使用时可在隐层使用tanh函数,在输出层使用sigmoid函数。

3.ReLU函数(修正线性单元)

在这里插入图片描述
在这里插入图片描述

ReLU的全称是Rectified Linear Units,是一种后来才出现的激活函数,也是目前最常用的默认选择激活函数。 可以看到,当x<0时,ReLU硬饱和,而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。这让我们能够直接以监督的方式训练深度神经网络,而无需依赖无监督的逐层预训练。

然而,随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。这种现象被称为“神经元死亡”。与sigmoid类似,ReLU的输出均值也大于0,偏移现象和 神经元死亡会共同影响网络的收敛性。

针对在x<0的硬饱和问题,我们对ReLU做出相应的改进,使得
在这里插入图片描述

这就是Leaky-ReLU,
在这里插入图片描述

α也可以作为一个参数来学习,原文献建议初始化a为0.25,不采用正则。

作者:你要好好学习呀
链接:https://www.jianshu.com/p/d39944eeafe2

猜你喜欢

转载自blog.csdn.net/jiachun199/article/details/108110369