为什么神经网络需要非线性激活函数

生物神经网络启发了人工神经网络的发展,在了解为什么神经网络需要非线性激活函数之前,理解生物神经网络的工作原理对我们是有帮助的。

一个典型的生物神经元的物理结构包括细胞体、树突、轴突。树突具有接受刺激并将冲动传入细胞体的功能,细胞体具有联络和整合输入信息并传出信息的作用,轴突的主要功能是将神经冲动由细胞体传至其他神经元。神经元通过树突接收来自其他神经元的信号,来自树突的信号在细胞体中积累,如果产生的信号强度超过一定的阈值,神经元就把信息传递给轴突。否则,信号会被神经元杀死,不再传播。

在人工神经网络中,激活函数决定是否需要传递信号。上图中第二层的神经单元可以看做是一个细胞体,它接收来自其它神经元的信号,然后整合信息。在人工神经网络中计算如下,b代表偏置项(在上图中代表一个实数),g代表激活函数。

如果神经网络中没有激活函数,或者说是线性激活函数,那么会发生什么呢?

假设有一个上图所示的两层的浅层神经网络(输入层不算),如果每个神经元都采用线性激活函数g(z)=z。

上面的神经网络正向传播的过程就可以表示如下:

中括号表示第几层,W是权重矩阵,W^{[1]}的维度是(3,3),b^{[1]}z^{[1]}的维度是(3,1),W^{[2]}的维度是(1,3),b^{[2]}z^{[2]}的维度是(1,1),x是(3,1)的向量。

可以看到第二层的输出值仍然是输入特征的线性组合,不难想象,如果在神经网络中使用线性激活函数或者没有激活函数,那么无论你的神经网络有多少层,一直在做的只是线性计算,最后的结果其实也只是一个线性方程,这就使得我们无法计算更复杂的函数。神经网络是用来实现复杂函数的,使用非线性激活函数使它能够逼近任意复杂函数。如果没有激活函数引入的非线性,多层神经网络相当于单层神经网络。

下面举个例子

这里有两个类别,x1和x2的取值只能是0或1,当x1=x2时,为X类别,否则就为类别。直观上来看,上图中的数据点不是线性可分的,或者说我们无法使用一条直线来正确划分开两个类别,所以我们需要使用非线性的激活函数,使我们得到非线性的决策边界来分开它们。

再举一个例子,如果我们希望分开上图中的蓝色点和红色点,很明显无法使用一条直线来将它们分开,这就需要使用非线性激活函数的神经网络才能实现,下图为使用非线性激活函数神经网络的决策边界。

使用激活函数还有一个作用,它能将神经元的输出映射在在一定范围之内。如果单纯是像这样的线性组合 b+\sum_{i=1}^{n}w_ix_i

这个值可能会变得非常大,而这个数字如果不经过任何修改又传给下一层的神经元,那就可能变成更大的数字,这会使得过程变得难以计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值