激活函数

激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

Sigmoid

也成为S形函数,取值范围为(0,1)。Sigmoid将一个实数映射到(0,1)的区间,可以用来做二分类。Sigmoid在特征相差比较复杂或是相差不是特别大时效果比较好。

sigmoid缺点:

  • 激活函数计算量大(指数运算),反向传播求误差梯度时,求导涉及除法
  • 对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失),从而无法完成深层网络的训练

Tanh

也称为双切正切函数,取值范围为[-1,1]。tanh在特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果。

Softmax

softmax函数将K维的实数向量压缩(映射)成另一个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间。常用于多分类问题。

Softmax is a generalization of the logistic function that “squashes” a K-dimensional vector z of arbitrary real values to a K-dimensional vector sigma(z) of real values in the range (0, 1) that add up to 1.

ReLU

为什么采用ReLU:

  • sigmoid等激活函数(指数运算)计算量大,并且在深层网络上容易出现梯度消失问题
  • ReLU计算量小(不涉及除法),一部分神经元的输出为0造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生

对于偏置值,如果用 ReLU 的话,最好的办法就是把它们都初始化成小的正值,这样神经元一开始就会工作在 ReLU 的非零区域内。

ReLU缺点:强制的稀疏处理会减少模型的有效容量(即特征屏蔽太多,导致模型无法学习到有效特征)。