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

参考资料

激活函数

一个神经元就是计算输入的权重之和,增加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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容