深度学习中,需要设置门限值激活神经元。神经元的激活状态有两种: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,相当于离散的概率分布函数,所以比较适合用来做分类。