在机器学习和深度学习的领域中,神经网络被用于执行众多任务。这引发了一个问题:为什么它们如此强大?本文提出一种解释——通用逼近定理。让从定义开始。简而言之,通用逼近定理表明神经网络可以逼近任何函数。这意味着任何可以被视为函数计算的任务,都可以由神经网络执行或计算。几乎神经网络今天所做的任何任务都是函数计算——无论是语言翻译、标题生成、语音转文本等。如果有人问,对于任何函数计算需要多少层?答案是只需要1层。
在本文中,将尝试理解为什么这个定理是正确的。
有两个重要的事实需要注意:
让继续理解这个非常重要的定理。在跳转到视觉证明之前,让看一下感知器——神经网络的基本计算单元。
感知器可以被理解为神经网络的基本计算单元。在上述图表中,输入x_i
通过x_n
乘以它们各自的权重w_i
通过w_n
。这形成了加权输入,然后这些输入被求和(Σ w_i x_i
)。接下来,这个和通过一个阈值/激活函数,该函数充当开/关开关。如果和的值大于某个阈值,它允许神经元发射,否则输入被抑制。这是构成输出的最终值。激活函数也是非线性的神奇成分,没有它,感知器最终将是输入的线性组合。将使用激活函数sigmoid来理解基础。
打算对大于阈值的输入输出1,对小于阈值的输入输出0。sigmoid函数正是这样做的。但是,sigmoid函数的斜率存在问题。在输出层,打算将隐藏层神经元的输出相加。直接加整数比加sigmoid函数的实数输出要容易。因此,需要一个步进函数。结果表明,当应用足够的权重时,sigmoid函数可以被调整以表现得就像一个步进函数。所以,为了让工作更容易,将这样做。
让开始使用单个感知器在隐藏层(隐藏层是除了输入和输出层之外的层)计算函数。来绘制一个布尔AND函数(这与证明无关)。这个函数的域和范围都是布尔值{0,1}。在输出(更大的圆)中,输入正在相加。这个神经元只有在接收到的两个输入都是1时才会发射,否则不会。发射意味着输出是1,不发射意味着输出是0。
这个证明紧密跟随Michael Nilson在他的神经网络教科书中提供的视觉证明,链接在参考资料部分提供。如果想要绘制一个函数,其中只有在输入值位于T1和T2之间时输出1,而在所有其他情况下输出0,怎么办?为此,需要两个感知器接受相同的输入,但具有不同的阈值。2个感知器的网络形成一个MLP——多层感知器。注意,输出层具有加性激活。
这个图表看起来像一个矩形。面对连续函数,可以组合许多这样的矩形,以适应函数的边界。在架构方面,可以堆叠多个感知器来实现这个函数。
这是讨论的函数的近似。但是,等等,直到现在所看到的只是加权输入的组合。从未将其通过最终神经元的sigmoid函数(在上面的图像中,更大的圆具有加法作为其函数,并且从未跟随sigmoid)。所以呢?这很容易。假设最终输出神经元的偏置为0,需要这个隐藏层计算σ^-1的原始函数。函数的逆给出了函数给出输出的原始值。换句话说,逆的重要属性是:
f(g(x)) = g(f(x)) = x
其中f(x)
是g(x)
的逆(也记作g^-1(x)
)。
因此,σ^-1(σ(y)) = σ(σ^-1(y)) = y其中y是打算计算的原始函数。所以隐藏层计算逆函数,最终激活将其反转回原始函数。逆函数仍然是一个函数,可以使用上述矩形的概念进行近似。