通俗理解神经网络之激励函数(Activation Function)

本文整理自博客、知乎上关于激励函数的博客和回答。部分图片引用自知乎,如有侵权,请联系作者。

关于神经网络激励函数的作用,常听到的解释是:不使用激励函数的话,神经网络的每层都只是做线性变换,多层输入叠加后也还是线性变换。因为线性模型的表达能力不够,激励函数可以引入非线性因素。 其实很多时候我们更想直观的了解激励函数的是如何引入非线性因素的。

我们使用神经网络来分割平面空间作为例子。

无激励函数的神经网络

神经网络最简单的结构就是单输出的单层感知机,单层感知机只有输入层和输出层,分别代表了神经感受器和神经中枢。下图是一个只有2个输入单元和1个输出单元的简单单层感知机。图中x1、w2代表神经网络的输入神经元受到的刺激,w1、w2代表输入神经元和输出神经元间连接的紧密程度,b代表输出神经元的兴奋阈值,y为输出神经元的输出。我们使用该单层感知机划出一条线将平面分割开,如图所示:
通俗理解神经网络之激励函数(Activation Function)_第1张图片

同理,我们也可以将多个感知机(注意,不是多层感知机)进行组合获得更强的平面分类能力,如图所示:
通俗理解神经网络之激励函数(Activation Function)_第2张图片

再看看包含一个隐层的多层感知机的情况,如图所示:
通俗理解神经网络之激励函数(Activation Function)_第3张图片

仔细看的话不难发现,上面三种没有激励函数的神经网络的输出是线性方程,其在用复杂的线性组合来逼近曲线。

有激励函数的神经网络

我们在神经网络每一层神经元做完线性变换以后,加上一个非线性激励函数对线性变换的结果进行转换,那么输出就是一个不折不扣的非线性函数了,如图所示:
通俗理解神经网络之激励函数(Activation Function)_第4张图片

拓展到多层神经网络的情况, 更刚刚一样的结构, 加上非线性激励函数之后, 输出就变成了一个复杂的非线性函数了,如图所示:
通俗理解神经网络之激励函数(Activation Function)_第5张图片

加入非线性激励函数后,神经网络就有可能学习到平滑的曲线来分割平面,而不是用复杂的线性组合逼近平滑曲线来分割平面。 这就是为什么我们要有非线性的激活函数的原因。如下图所示说明加入非线性激活函数后的差异,上图为用线性组合逼近平滑曲线来分割平面,下图为平滑的曲线来分割平面:
通俗理解神经网络之激励函数(Activation Function)_第6张图片

参考资料

《神经网络激励函数的作用是什么?有没有形象的解释? 》
《神经网络之激活函数(Activation Function)》
《为什么ReLU在深度神经网络中的作用好于传统的激活函数》

你可能感兴趣的:(Deep,Learning,神经网络,激励函数)