生物神经网络启发了人工神经网络的发展,在了解为什么神经网络需要非线性激活函数之前,理解生物神经网络的工作原理对我们是有帮助的。
一个典型的生物神经元的物理结构包括细胞体、树突、轴突。树突具有接受刺激并将冲动传入细胞体的功能,细胞体具有联络和整合输入信息并传出信息的作用,轴突的主要功能是将神经冲动由细胞体传至其他神经元。神经元通过树突接收来自其他神经元的信号,来自树突的信号在细胞体中积累,如果产生的信号强度超过一定的阈值,神经元就把信息传递给轴突。否则,信号会被神经元杀死,不再传播。
在人工神经网络中,激活函数决定是否需要传递信号。上图中第二层的神经单元可以看做是一个细胞体,它接收来自其它神经元的信号,然后整合信息。在人工神经网络中计算如下,b代表偏置项(在上图中代表一个实数),g代表激活函数。
如果神经网络中没有激活函数,或者说是线性激活函数,那么会发生什么呢?
假设有一个上图所示的两层的浅层神经网络(输入层不算),如果每个神经元都采用线性激活函数g(z)=z。
上面的神经网络正向传播的过程就可以表示如下:
中括号表示第几层,W是权重矩阵,
的维度是(3,3),和的维度是(3,1),的维度是(1,3),和的维度是(1,1),x是(3,1)的向量。可以看到第二层的输出值仍然是输入特征的线性组合,不难想象,如果在神经网络中使用线性激活函数或者没有激活函数,那么无论你的神经网络有多少层,一直在做的只是线性计算,最后的结果其实也只是一个线性方程,这就使得我们无法计算更复杂的函数。神经网络是用来实现复杂函数的,使用非线性激活函数使它能够逼近任意复杂函数。如果没有激活函数引入的非线性,多层神经网络相当于单层神经网络。
下面举个例子
这里有两个类别,x1和x2的取值只能是0或1,当x1=x2时,为X类别,否则就为⚪类别。直观上来看,上图中的数据点不是线性可分的,或者说我们无法使用一条直线来正确划分开两个类别,所以我们需要使用非线性的激活函数,使我们得到非线性的决策边界来分开它们。
再举一个例子,如果我们希望分开上图中的蓝色点和红色点,很明显无法使用一条直线来将它们分开,这就需要使用非线性激活函数的神经网络才能实现,下图为使用非线性激活函数神经网络的决策边界。
使用激活函数还有一个作用,它能将神经元的输出映射在在一定范围之内。如果单纯是像这样的线性组合
这个值可能会变得非常大,而这个数字如果不经过任何修改又传给下一层的神经元,那就可能变成更大的数字,这会使得过程变得难以计算。
来源:CSDN
作者:初雪与你
链接:https://blog.csdn.net/qq_41311604/article/details/103459675