【吴恩达深度学习】【神经网络和深度学习】 第三章 第七节 我们为什么需要非线性**函数?
一、为什么不能用非线性函数
假如我们的神经网络的所有**函数都是线性的函数,我们不妨想这么一个问题
既然两个线性的函数是可以复合的,所以一个只由线性函数构成的神经网络的所有函数能不能复合成一个函数呢?
显然是可以的,线性函数直接是可以自己复合成一个新的线性函数的,因此,我们如果只采用线性函数,就会发现一个有趣的结论:
一个神经网络可以退化成一个独立的神经元
这个结论来源于线性函数的复合。
基于这个有趣的结论,我们为了保证我们神经网络的功能,我们不能采用线性函数,否则我们最终做出来的东西其实是退化的。
二、线性函数的好处
首先,基于上文我们可知,非线性的**函数可以有效的避免上文所提出的相关问题
其次,在之前的blog中我们曾提到过,神经网络本质上其实是对生物神经系统在计算机中的一种模拟。而非线性的**函数就模拟了神经冲动传导中的一些机制。
这种机制可以使得整个系统的非线性增加,使得最终跑出来的模型准确率更高。
三、如何直观的理解非线性**函数的好处
我们不如假设一个最简单的问题
我们有一个神经网络,我们要跑一个二维函数的拟合。
我们采用的是ReLU**函数。
在这个问题中,我们建立一个浅层神经网络。
如果我们如果把输出层那唯一一个神经元的加权求和作为最终拟合出来的函数的话,我们发现ReLu所实现的功能就是确定一个隐藏层在某个x值的右边才能发挥作用。
而根据我们之前的经验,这明显是吧最终的函数变成了一个分段函数。而多段直线可以近似拟合一个曲线,这是我们从圆周率割圆法时代就知道的事情,而直线越多拟合出来的结果越好也跟之前我们的那个结论遥相呼应——神经网络中神经元数量越多,跑出来的模型效果越好。
这里举的是一个具体的例子,一个容易理解的例子,在实际情况中可能更为复杂,甚至无法理解么个神经元的作用,不过我们还是应该有一个大致的理解映象,这对于我们后面的学习是很有好处的。