激活函数
一个神经元就是计算输入的权重之和,增加bias,决定神经元是否被激活(这个就是激活函数干的)
考虑神经元有如下的表达式:
![](https://img.haomeiwen.com/i1716465/cc6631f9e91c9634.png)
Y的值可以从负无穷到正无穷,那么如何决定这个神经元是否被激活呢?这就需要我们用到激活函数。
step function
考虑到神经元的激活,最简单的方式就是设置一个阈值。当Y的值大于这个阈值的时候,这个神经元被激活;当Y的值小于这个阈值的时候,这个神经元就不被激活。
![](https://img.haomeiwen.com/i1716465/fc9a65858198661a.png)
Linear function
A=cx
这个激活函数的输出是与输出成比例的。但是如果神经网络都是线性激活函数,那个整个网络都是线性,也就说无论多少层的神经网络都可以被一层的神经网络取代。这也不是我们希望看到的。
sigmoid函数
![](https://img.haomeiwen.com/i1716465/b9c9f373972619da.png)
![](https://img.haomeiwen.com/i1716465/1626ae758a60c876.png)
从函数的图像看出来,在区间[-2,2]之间,函数变化非常快,这也就意味着一点细微的变化都会引起函数值发生很大的变化。这个实际上对于分类问题是一个非常好的性质。在函数末端的梯度变化是非常缓慢的,也就意味着会有“梯度消失”的问题出现。当梯度消失的时候,整个网络训练速度非常慢
Tanh function
![](https://img.haomeiwen.com/i1716465/c22e1fdef061c1fb.png)
![](https://img.haomeiwen.com/i1716465/f034302d40e94c00.png)
![](https://img.haomeiwen.com/i1716465/3a37e1a746487c45.png)
从函数图像看来,这个函数和Sigmoid函数非常相似。它能够保证非线性,tanh梯度下降速度高于sigmoid函数,同样tanh存在梯度下降的问题。对于循环神经网络来说,不存在梯度下降的问题,所以LSTM一般默认tanh为激活函数
ReLU
A(x)=max(0,x)
![](https://img.haomeiwen.com/i1716465/9ad0b50a2b6e5337.png)
ReLU函数有点类似于线性,实际上它是非线性的,以及ReLU函数组合也是非线性的(实际上这个函数是一个比较好的近似函数,任何函数都可以组合ReLU函数来近似)。
softmax
归一化指数函数,对向量进行归一化,凸显其中最大的值并抑制远低于最大值的其他分量,很好应用于基于概率的分类问题
网友评论