深度学习激活函数Sigmoid、Tanh、ReLU和Softmax的区别

深度学习中,需要设置门限值激活神经元。神经元的激活状态有两种:1. 激活,2.不激活。

我们如何设置门限值呢?

如果采用固定值,低于某个值则不激活,高于某个值激活,这时的函数图像类似直角脉冲,


直角脉冲

最像直角脉冲的激活函数为Sigmoid,


Sigmoid
Sigmoid的公式

它的优点是值域在0,1之间,可反应输入x的变化。

缺点也比较明显,如果处于上方或下方的平坦区域,梯度很小,导致梯度和权重的乘积小于1,多层之后,值会越来越少,出现梯度消失问题(vanishing gradient problem). 如果一直处于剧烈变化的区域,导致梯度和权重的乘积大于1, 则多层之后,值会越来越大,出现梯度爆炸问题(exploding gradient problem)。

Tanh和Sigmoid的值域图像非常像,相当于Sigmoid的线性变换,但是值域扩大了,在[-1,+1]之间,具体的图像和公式如下:

Tanh函数图像


Tanh公式

Relu函数

Relu函数很简单,它的公式为:


Relu的公式

(想出这种函数有用的人是不是运气超好??)

Relu的函数图像为:


Relu图像

Relu把负值归为0,计算起来很简单。但会有一个问题?

输出为0的神经元无法在网络中发挥作用,相当于死掉了(dying ReLU),也不能激活。

如果网络中20%的神经元在训练中死亡,影响还是蛮大的。为了避免这种问题,人们提出了参数化的Relu,即Leaky ReLU 和 Parametric ReLU (PReLU) 激活函数,具体的公式和图像如下:


ReLU


ReLU的图像

最后我们来看看Softmax函数。

Softmax的值域在0,1之间,与sigmoid函数类似。Softmax的特点是用某个输出除以所有输出,其公式为:


softmax公式

这个公式所有的输出加起来正好等于1,相当于离散的概率分布函数,所以比较适合用来做分类。

你可能感兴趣的:(深度学习激活函数Sigmoid、Tanh、ReLU和Softmax的区别)