深度学习常见的两类激活函数
0, 激活函数
激活函数在神经元中非常重要的.为了增强网络的表示能力和学习 能力,激活函数需要具备以下几点性质:
(1) 连续并可导(允许少数点上不可导)的非线性函数.可导的激活函数 可以直接利用数值优化的方法来学习网络参数.
(2) 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率.
(3) 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太 小,否则会影响训练的效率和稳定性.
下面介绍几种在神经网络中常用的激活函数.
1, sigmoid 型函数
1.1, 注解
Sigmoid 型函数是指一类 S 型曲线函数,为两端饱和函数.常用的 Sigmoid 型函数有Logistic函数和Tanh函数.
由于Logistic 函数在大多数情况下都使用且效果很好,所以一般会将Logistic 函数称为 sigmoid 函数
1.2, Logistics 函数
logistic 函数定义为:
𝜎(𝑥) = 1 / 1 + exp(−𝑥).
Logistic 函数可以看成是一个“挤压”函数,把一个实数域的输入“挤压”到 (0, 1).当输入值在0附近时,Sigmoid型函数近似为线性函数;当输入值靠近两端 时,对输入进行抑制.输入越小,越接近于 0;输入越大,越接近于 1.
因为Logistic函数的性质,使得装备了Logistic激活函数的神经元具有以下 两点性质:
1)其输出直接可以看作概率分布,使得神经网络可以更好地和统计 学习模型进行结合.
2)其可以看作一个软性门(Soft Gate),用来控制其他神经 元输出信息的数量.
1.3, Tanh 函数
Tanh 函数也是一种Sigmoid型函数.其定义为 :
tanh(𝑥) = exp(𝑥) − exp(−𝑥) / exp(𝑥) + exp(−𝑥).
Tanh 函数可以看作放大并平移的Logistic函数,其值域是(−1, 1).
tanh(𝑥) = 2𝜎(2𝑥) − 1.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RkgjJxCG-1624798724083)(C:\Users\Carey_Ma\AppData\Roaming\Typora\typora-user-images\image-20210627204447711.png)]
2, ReLU 型函数
2.1, ReLU 函数
ReLU(Rectified Linear Unit,修正线性单元),也叫 Rectifier函数,是目前深度神经网络中经常使用的激活函数. ReLU实际上是一个斜坡(ramp)函数,定义为:
ReLU(𝑥) = max(0, 𝑥).
优点: 采用 ReLU 的神经元只需要进行加、乘和比较的操作,计算上更加高效.在优化方面,相比于Sigmoid型函数的两端饱和,ReLU函数为左饱和函数, 且在 𝑥 > 0 时导数为 1,在一定程度上缓解了神经网络的梯度消失问题,加速梯 度下降的收敛速度.
缺点: ReLU 函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移, 会影响梯度下降的效率. ReLU 神 经 元 指 采 用 ReLU作为激活函数的 神经元. 此外,ReLU 神经元在训练时比较容易“死亡”.在训 练时,如果参数在一次不恰当的更新后,第一个隐藏层中的某个 ReLU 神经元在 所有的训练数据上都不能被激活,那么这个神经元自身参数的梯度永远都会是 0,在以后的训练过程中永远不能被激活.这种现象称为死亡 ReLU 问题,并且也有可能会发生在其他隐藏层.
2.2 , LeakyReLU (带泄露的ReLU)
带泄露的ReLU(Leaky ReLU)在输入 𝑥 < 0时,保持一个很小的梯度𝛾.这 样当神经元非激活时也能有一个非零的梯度可以更新参数,避免永远不能被激 活. 带泄露的ReLU的定义如下:
LeakyReLU(𝑥) = = max(0, 𝑥) + 𝛾 min(0, 𝑥)
2.3, 带参数的 ReLU
带参数的 ReLU 引入一个可学习的参数,不 同神经元可以有不同的参数. 对于第 𝑖 个神经元,其 PReLU 的 定义为:
PReLU𝑖 (𝑥) = max(0, 𝑥) + 𝛾𝑖 min(0, 𝑥)