激活函数Activation Function

目录

 

激活函数

常见的激活函数

Sigmoid

Tanh

ReLU

Leaky ReLU

Softmax

结论


激活函数

神经网络从信息处理角度对人脑神经元进行抽象,是一种运算模型,由大量的节点(神经元)之间相互连接构成。下图是一个神经元的实例图,对一个神经元来说,对输入向量x进行加权求和,权重为W,偏置量为b,得到线性输出为,然后将求和结果z作为一个激活函数f的输入,激活函数的输出为该神经元的结果,此结果作为下一层神经元的输入。前一步的加权求和是线性变换,后一步的激活函数是非线性的。激活函数在神经网络中加入非线性使得神经网络能够更好地解决较为复杂的问题,如果缺少激活函数,一个神经网络仅仅只是一个线性的回归模型,而对于复杂的问题,神经网络将不再具有高效的学习力。

常见的激活函数

激活函数的种类很多,在这里仅仅介绍一下常见的几种激活函数。

Sigmoid

Sigmoid激活函数的函数形式为,它为S型曲线,取值区间为(0,1),当x越小时,值越趋近于0,x越大的时候,值就越趋近于1,现在sigmoid激活函数很少使用,一般作为输出层的激活函数和用于二分类问题。

sigmoid激活函数的导数表达式为。下图是sigmoid原函数和其导数函数的图形。如图所示,当x>4和x<-4的时候,导数函数的取值趋近于0,使得当参数W迭代更改时,W几乎不变,使得网络很难得到有效的训练,这就是梯度消失。

sigmoid激活函数需要进行指数运算,计算量大,而且反向传播求误差梯度时,很容易出现梯度消失的问题,使得不能完成深层网络的训练,除此外,sigmoid激活函数不是关于原点中心对称的。吴恩达大大在深度学习课程中说tanh激活函数几乎在任何场合的性能都优于sigmoid激活函数,除了输出层和二分类,使用sigmoid会更好点。

Tanh

tanh激活函数的数学公式为,为双曲正切函数,关于原点对称,输出区间在[-1,1]之间,使得激活函数的平均值接近于0(有类似数据中心化的效果,使得数据的平均值接近于0,能够让下一层的学习更加方便)。

tanh函数图

tanh与sigmoid类似,可看做是由sigmoid激活函数平移得到,所以仍然存在梯度消失的问题,不过tanh的收敛速度要快于sigmoid函数。

ReLU

ReLU激活函数是Rectified linear unit的简称,是如今使用率最高的激活函数,它的数学形式为。在输入为正数的时候,输出等同于输入,在输入为负数的时候,输出为0,为分段线性函数。

当输入为正数时,其导数恒为1,不衰减,从而缓解梯度消失问题。当输入为负数时,其导数为0。

relu函数图

 由于ReLU的导数没有接近于0时减慢收敛速度的效应,所以ReLU激活函数在训练过程中会比sigmoid和tanh收敛的更快。虽然ReLU有一半的导数为0,但是在实践中,有足够多的神经元使得z大于0。

Leaky ReLU

leaky ReLU就是为了解决ReLU激活函数当x为负数时,导数为0的情况,使得当x为负数时,导数不为0,而是有一个很平缓的斜率,如下图所示。LReLU效果通常要比ReLU要好,不过实际使用的频率却没有那么高。还是ReLU更常用些。

prelu函数图

Softmax

softmax激活函数的数学形式为,用于多分类问题 ,输出每一个类别的概率大小,所有类别的概率总和为1,概率最大的类别就是输入所属的类别。

结论

  1. sigmoid激活函数更适用于输出层,tanh几乎在所有场合都优于sigmoid,但是目前最常用的默认激活函数是ReLU
  2. softmax更多地用于多分类问题

在建立神经网络时有很多选择,很难确定一个准则确定什么参数才更适合,所以需要在测试集或者验证集上试试各种选择,然后选择最好的。

猜你喜欢

转载自blog.csdn.net/weixin_42111770/article/details/81186441
今日推荐