利用神经网络拟合正弦函数 神经网络模拟任意函数_利用神经网络拟合正弦函数


结果表明神经网络拥有一种*普遍性*(universality)。不过拿过来什么函数,我们都确信存在一个神经网络可以计算它。

而且,这个普遍性定理甚至在我们限制了神经网络只在输入层和输出层存在一个中间层的情况下成立。所以即使是很简单的网络架构都极其强大。

这个定理在使用神经网络的人群中非常著名。但是它为何正确却不被广泛地理解。现有的大多数的解释都具有很强的技术性。例如,最原始的论文使用了 Hahn-Banach 定理、Riesz 表示定理和一些傅里叶分析证明了这个结果。如果你是数学家,这个证明应该不大难理解,但对于大多数人还是很困难的。这不得不算是一种遗憾,因为这个普遍性背后的原理其实是简单而美妙的。

在本章,我会给一个有关普遍性的简单且基本上可视化的解释。我们会一步步深入背后的思想。你会理解为何神经网络可以计算任何的函数。你会理解到一些关于结论的一些极限。并且你还会理解这些结论如何和深度神经网络关联的。

要跟随本章的内容,你不需要读过本书前面的章节。相反,本章其实可以当成字包含的文章阅读。如果已经对神经网络有了一定的熟悉,你应该能够弄清楚这些解释。然而,我偶尔也会给出一些联系到前面的章节的链接,帮助你填补一些知识结构的空白。

普遍性定理在计算机科学领域中常常会有,太多了以至于我们都忘了这些定理的特别之处。但值得提醒自己的是:计算任意函数的能力真是是太赞了。几乎你可以想象的任何过程都可以看做是函数的计算。考虑给一段音乐用短的音乐片段进行命名这个问题。这其实也能够看做是计算一个函数。或者考虑将中文文本翻译成英文。同样,这又可以看成是计算一个函数。{实际上可以看成是计算很多的函数,因为对于一个文本来说有很多种翻译。}又或者根据一个 mp4 视频文件生成视频的画面的描述和对表演质量的讨论。同样,这些也都可以看成是一种类型的函数计算。普遍性是指,在原理上,神经网络可以做所有这些事情,或者更多。

当然,仅仅因为我们知道存在一个可以将中文翻译成英文的神经网络,这并不意味着我们有了一种构造或者识别出这样的网络的很好的技术。这个极限同样可以应用在布尔电路上的传统的普遍性定理上。但是,如同我们在本书前面看到的那样,神经网络拥有强大的算法来学习函数。学习算法和普遍性的结合是一种有趣的混合。直到现在,本书一直是着重谈学习算法。到了本章,我们来看看普遍性,看看它究竟意味着什么。

## 两个提醒

在解释为何普遍性定理成立前,我想要说说关于不大形式化的表述“神经网络可以计算任何函数”的两个提醒。

f(x)f(x)。使用三个隐藏元仅仅能得到一个低质量的大多数函数近似。通过增加隐藏元的数量(比如说,设置为五个),我们能够明显地得到更好的近似:


利用神经网络拟合正弦函数 神经网络模拟任意函数_神经网络_02