激活函数在神经元之间作为信息传递的隐射函数,是为了将我们神经元这样的线性模型进行非线性转换的重要存在,使得我们最终的神经网络模型才能够表达出强大的非线性数据拟合能力。

这里简单几种常见的激活函数。

一、Sigmoid函数

表达式为:

激活函数 softmax 激活函数sigmoid表达式_机器学习

激活函数 softmax 激活函数sigmoid表达式_机器学习_02


导函数为:

激活函数 softmax 激活函数sigmoid表达式_机器学习_03

sigmoid是神经网络中很入门的一种激活函数,在以前得到了广泛使用,但是随着后来的学习发展,发现sigmoid的收敛速度很慢,而且因为本身的表达式不能很好的将神经元之间的信息进行非线性隐射,所以在深层神经网络的隐层的各层神经元之间逐渐被ReLU取代,但是即便到现在Sigmoid在输出层依然被广泛使用,因为人们总希望神经网络的输出是一个在0-1之间的数值,这样可以很好的表示每种类别存在的概率。

二、tanh双曲正切函数

表达式为:

激活函数 softmax 激活函数sigmoid表达式_神经网络_04


激活函数 softmax 激活函数sigmoid表达式_神经网络_05


导函数为:

激活函数 softmax 激活函数sigmoid表达式_机器学习_06

双曲正切函数可以说是对sigmoid针对某些任务下的改进,将原来sigmoid隐射范围的[0,1]改成了[-1,1],根据实验者的表述,在大部分情况下,神经网络隐层中采用tanh函数效果比sigmoid函数效果教好。

但是同样tanh和sigmoid函数一样都存在的问题是收敛太慢,模型训练时间太久,并且非线性映射能力不是足够的强。

三、ReLU函数

表达式为:

激活函数 softmax 激活函数sigmoid表达式_人工智能_07


激活函数 softmax 激活函数sigmoid表达式_人工智能_08


导函数为:

激活函数 softmax 激活函数sigmoid表达式_神经网络_09

ReLU函数可谓是可爱可亲,因为即便神经网络发展了这么久,很多强大的框架模型也被提出,可你始终能随时在这些模型的隐层中看见ReLU的身影,ReLU又叫修正线性单元,是一种非常好的能够将神经元之间传递的信息进行非线性隐射的激活函数,其次因为函数简单,收敛非常快,模型训练效果相比使用sigmoid会快很多,而且训练后的模型表达的效果也很好,所以是目前最常被使用的激活函数。

四、Leaky ReLU函数

表达式为:

激活函数 softmax 激活函数sigmoid表达式_机器学习_10


激活函数 softmax 激活函数sigmoid表达式_激活函数 softmax_11


导函数为:

激活函数 softmax 激活函数sigmoid表达式_神经网络_12

Leaky ReLU函数又可以理解为对ReLU的一种改进,据说效果是比ReLU要稍微好一些,但没有具体进行实验操作,目前看到使用的相对还是ReLU多一些,感兴趣的同学可以使用实验一下。