解释神经网络为什么能学习(几乎)任何东西
背景
在我之前的文章中,我们介绍了多层感知器(MLP),它只是一组堆叠的相互连接的感知器。如果你对感知器和MLP不熟悉,我强烈推荐你查看我之前的文章,因为我们在本文中将会经常提到它们:
简介、感知器和架构:神经网络101
神经网络及其构建模块的介绍
levelup.gitconnected.com
下面是一个具有两个隐藏层的示例MLP:
然而,MLP的问题在于它只能拟合一个线性分类器。这是因为单个感知器的激活函数是线性的阶跃函数:
因此,尽管堆叠感知器看起来像现代神经网络,但它仍然是一个线性分类器,并且与普通线性回归并没有太大区别!
另一个问题是它在整个定义域范围内并不完全可微。
那我们应该怎么处理呢?
使用非线性激活函数!
为什么我们需要非线性?
什么是线性?
让我们简单地声明线性的含义以建立一些上下文。从数学上讲,如果一个函数满足以下条件,就被认为是线性的:
还有另一个条件:
但是,对于本演示,我们将使用之前的等式。
举一个非常简单的例子: