神经网络之所以可以拟合任意函数,其中一个关键原因是,在神经元中使用了非线性的激活函数。下面我们用一个例子来说明这个问题。 设置一个三层神经网络,第1层是输入层,输入特征x1、x2和偏置1。第2层是隐藏层,包含A、B、C三个神经元。第3层是输出层,有一个神经元D。神经网络最终输出y。其中A、B、C、D的权重使用小写字母a、b、c、d来代表。 在神经网络中,如果激活函数是线性的,那么不管网络有多少层,都会等价于一个无隐藏层的线性模型。下面我们将激活函数设置为h(x)=x,来说明这一结论。 计算神经网络的输出y,它等于神经元D的权重d1、d2、d3分别乘以神经元A、B、C的输出,再累加到一起。其中A=a1x1+a2x2+a0,同理可以计算出B和C的值。 将A、B、C的输出带入到y的表达式中,然后将表达式展开,并进行调整。这时可以得到一个关于x1和x2的线性结果。这里x1、x2和偏置的系数都是常数,因此神经网络的输出y,依然是关于x1和x2的线性变换。很明显,该神经网络是无法解决非线性问题的。 总结来说,一个没有非线性激活函数的神经网络,无论堆叠多少层,该神经网络仍然只是一个线性变换。 那么到这里,为什么神经网络必须使用非线性的激活函数,就讲完了,感谢大家的观看,我们下节课再会。 |
|