关于神经网络中激活函数的看法

2018-03-08  本文已影响0人  cheng2pj

参考资料

激活函数

一个神经元就是计算输入的权重之和,增加bias,决定神经元是否被激活(这个就是激活函数干的)
考虑神经元有如下的表达式:


神经元表达式

Y的值可以从负无穷到正无穷,那么如何决定这个神经元是否被激活呢?这就需要我们用到激活函数。

step function

考虑到神经元的激活,最简单的方式就是设置一个阈值。当Y的值大于这个阈值的时候,这个神经元被激活;当Y的值小于这个阈值的时候,这个神经元就不被激活。


Step function

Linear function

A=cx
这个激活函数的输出是与输出成比例的。但是如果神经网络都是线性激活函数,那个整个网络都是线性,也就说无论多少层的神经网络都可以被一层的神经网络取代。这也不是我们希望看到的。

sigmoid函数

Sigmoid function Sigmoid function

从函数的图像看出来,在区间[-2,2]之间,函数变化非常快,这也就意味着一点细微的变化都会引起函数值发生很大的变化。这个实际上对于分类问题是一个非常好的性质。在函数末端的梯度变化是非常缓慢的,也就意味着会有“梯度消失”的问题出现。当梯度消失的时候,整个网络训练速度非常慢

Tanh function

tanh.png tanh tanh is a scaled sigmoid function

从函数图像看来,这个函数和Sigmoid函数非常相似。它能够保证非线性,tanh梯度下降速度高于sigmoid函数,同样tanh存在梯度下降的问题。对于循环神经网络来说,不存在梯度下降的问题,所以LSTM一般默认tanh为激活函数

ReLU

A(x)=max(0,x)


ReLU

ReLU函数有点类似于线性,实际上它是非线性的,以及ReLU函数组合也是非线性的(实际上这个函数是一个比较好的近似函数,任何函数都可以组合ReLU函数来近似)。

softmax

归一化指数函数,对向量进行归一化,凸显其中最大的值并抑制远低于最大值的其他分量,很好应用于基于概率的分类问题

上一篇下一篇

猜你喜欢

热点阅读