Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

《神经网络和深度学习》系列文章三十二:神经网络可以计算任何函数的可视化证明

​出处: Michael Nielsen的《Neural Network and Deep Learning》。本节译者:朱小虎 、张广宇。


目录

1、使用神经网络识别手写数字

2、反向传播算法是如何工作的

3、改进神经网络的学习方法

4、神经网络可以计算任何函数的可视化证明

  • 两个预先声明
  • 一个输入和一个输出的普遍性
  • 多个输入变量
  • S型神经元的延伸
  • 修补阶跃函数
  • 结论

5、为什么深度神经网络的训练是困难的

6、深度学习


神经网络的一个最显著的事实就是它可以计算任何的函数。也就是说,假设某个人给你某种复杂而奇特的函数



不管这个函数是什么样的,总会确保有一个神经网络能够对任何可能的输入 ,其值  (或者某个足够准确的近似)是网络的输出,例如:



即使函数有很多输入和输出,,这个结果都是成立的。例如,这个网络计算一个具有  个输入和  个输出的函数:



结果表明神经网络拥有一种普遍性。不论我们想要计算什么样的函数,我们都确信存在一个神经网络可以计算它。


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


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


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


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


普遍性定理在计算机科学领域中常常会有,太多了以至于我们有时候都忘了这些定理的特别之处。但值得提醒自己的是:计算任意函数的能力真是太赞了。几乎你可以想象的任何过程都可以看做是函数的计算。考虑给一段音乐用短的音乐片段进行命名这个问题。这其实也能够看做是计算一个函数[2]。或者考虑将中文文本翻译成英文。同样,这又可以看成是计算一个函数[3]。普遍性是指,在原理上,神经网络可以做所有这些事情,或者更多。


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


两个预先声明

在解释为何普遍性定理成立前,我想要提下关于非正式的表述“神经网络可以计算任何函数”的两个预先声明。


第一点,这句话不是说一个网络可以被用来准确地计算任何函数。而是说,我们可以获得尽可能好的一个近似。通过增加隐藏元的数量,我们可以提升近似的精度。例如,前面我举例说明一个使用了三个隐藏元的网络来计算 。对于大多数函数使用三个隐藏元仅仅能得到一个低质量的近似。通过增加隐藏神经元的数量(比如说,五个),我们能够明显地得到更好的近似:



并且我们可以继续增加隐藏神经元的数目。


为了让这个表述更加准确,假设我们给定一个需要按照目标精度  的函数。通过使用足够多的隐藏神经元使得神经网络的输出  对所有的 ,满足 从而实现近似计算。换言之,近似对每个可能的输入都是限制在目标准确度范围内的。


第二点,就是可以按照上面的方式近似的函数类其实是连续函数。如果函数不是连续的,也就是会有突然、极陡的跳跃,那么一般来说无法使用一个神经网络进行近似。这并不意外,因为神经网络计算的就是输入的连续函数。然而,即使那些我们真的想要计算的函数是不连续的,一般来说连续的近似其实也足够的好了。如果这样的话,我们就可以用神经网络来近似了。实践中,这通常不是一个严重的限制。


总结一下,更加准确的关于普遍性定理的表述是包含一个隐藏层的神经网络可以被用来按照任意给定的精度来近似任何连续函数。本章,我们会使用了两个隐藏层的网络来证明这个结果的弱化版本。在问题中我将简要介绍如何通过一些微调把这个解释适应于只使用一个隐藏层的网络的证明。


[1]Approximation by superpositions of a sigmoidal function,作者为George Cybenko (1989)。其结论在当时非常流行,并且几个研究小组证明了密切相关的结果。Cybenko 的论文包含了很多关于那些成果非常有用的讨论。另⼀篇重要的早期论文是Multilayer feedforward networks are universal approximators,作者为Kurt Hornik,Maxwell Stinchcombe,和Halbert White (1989)。这篇论文采用了Stone-Weierstrass 定理来取得相似的结果。

[2]实际上可以看成是计算很多的函数,因为对于⼀段文本来说有很多种翻译。


[3]同上,关于翻译和有多种可能的函数的注释。


本文来源于哈工大SCIR

原文链接点击即可跳转


哈工大SCIR
哈工大SCIR

哈尔滨工业大学社会计算与信息检索研究中心

入门理论哈工大神经网络深度学习DNNMichael Nielsen
暂无评论
暂无评论~