在理解通用近似定理之前,你可能都不会理解神经网络

标签: 理解 通用 近似 | 发表时间:2021-09-07 14:31 | 作者:机器之心
出处:https://www.jiqizhixin.com/
此前,图灵奖得主、深度学习先驱 Yann LeCun 的一条推文引来众多网友的讨论。

在该推文中,LeCun 表示:「深度学习并不像你想象的那么令人印象深刻,因为它仅仅是通过曲线拟合产生的插值结果。但在高维空间中,不存在插值这样的情况。在高维空间中,一切都是外推。」

而 LeCun 转发的内容来自哈佛认知科学家 Steven Pinker 的一条推文,Pinker 表示:「 通用近似定理很好地解释了为什么神经网络能工作以及为什么它们经常不起作用。只有理解了 Andre Ye 的通用近似定理,你才能理解神经网络。」

Pinker 所提到的 Andre Ye,正是接下来要介绍《You Don’t Understand Neural Networks Until You Understand the Universal Approximation Theorem》文章的作者。虽然该文章是去年的,但在理解神经网络方面起到非常重要的作用。

在人工神经网络的数学理论中, 通用近似定理(或称万能近似定理)指出人工神经网络近似任意函数的能力。通常此定理所指的神经网络为前馈神经网络,并且被近似的目标函数通常为输入输出都在欧几里得空间的连续函数。但亦有研究将此定理扩展至其他类型的神经网络,如卷积神经网络、放射状基底函数网络、或其他特殊神经网络

此定理意味着神经网络可以用来近似任意的复杂函数,并且可以达到任意近似精准度。但它并没有告诉我们如何选择神经网络参数权重神经元数量、神经层层数等等)来达到我们想近似的目标函数

1989 年,George Cybenko 最早提出并证明了单一隐藏层、任意宽度、并使用 S 函数作为激励函数的前馈神经网络的通用近似定理。两年后 1991 年,Kurt Hornik 研究发现,激活函数的选择不是关键,前馈神经网络的多层神经层及多神经元架构才是使神经网络有成为通用逼近器的关键。

最重要的是,该定理解释了为什么神经网络似乎表现得如此聪明。理解它是发展对神经网络深刻理解的关键一步。

更深层次的探索

紧凑(有限、封闭)集合上的任何连续函数都可以用分段函数逼近。以 - 3 和 3 之间的正弦波为例,它可以用三个函数来近似——两个二次函数和一个线性函数,如下图所示。

然而,Cybenko 对这个分段函数描述更为具体,因为它可以是恒定,本质上通过 step 来拟合函数。有了足够多的恒定域 (step),我们就可以在给定的范围内合理地估计函数。

基于这种近似,我们可以将神经元当做 step 来构建网络。利用权值和偏差作为「门」来确定哪个输入下降,哪个神经元应该被激活,一个有足够数量神经元神经网络可以简单地将一个函数划分为几个恒定区域来估计。

对于落在神经元下降部分的输入信号,通过将权重放大到较大的值,最终的值将接近 1(当使用 sigmoid 函数计算时)。如果它不属于这个部分,将权重移向负无穷将产生接近于 0 的最终结果。使用 sigmoid 函数作为某种处理器来确定神经元的存在程度,只要有大量的神经元,任何函数都可以近乎完美地近似。在多维空间中,Cybenko 推广了这一思想,每个神经元在多维函数中控制空间的超立方体。

通用近似定理的关键在于,它不是在输入和输出之间建立复杂的数学关系,而是使用简单的线性操作将复杂的函数分割成许多小的、不那么复杂的部分,每个部分由一个神经元处理。

自 Cybenko 的初始证明以后,学界已经形成了许多新的改进,例如针对不同的激活函数(例如 ReLU),或者具有不同的架构(循环网络、卷积等)测试通用近似定理。

不管怎样,所有这些探索都围绕着一个想法——神经网络神经元数量中找到优势。每个神经元监视特征空间的一个模式或区域,其大小由网络中神经元的数量决定。神经元越少,每个神经元需要监视的空间就越多,因此近似能力就会下降。但是,随着神经元增多,无论激活函数是什么,任何函数都可以用许多小片段拼接在一起。

泛化和外推

有人可能指出,通用近似定理虽然简单,但有点过于简单(至少在概念上)。神经网络可以分辨数字、生成音乐等,并且通常表现得很智能,但实际上只是一个复杂的逼近器。

神经网络旨在对给定的数据点,能够建模出复杂的数学函数。神经网络是个很好的逼近器,但是,如果输入超出了训练范围,它们就失去了作用。这类似于有限泰勒级数近似,在一定范围内可以拟合正弦波,但超出范围就失效了。

外推,或者说在给定的训练范围之外做出合理预测的能力,这并不是神经网络设计的目的。从通用近似定理,我们了解到神经网络并不是真正的智能,而是隐藏在多维度伪装下的估计器,在二维或三维中看起来很普通。

定理的实际意义

当然,通用逼近定理假设可以继续向无穷大添加神经元,这在实践中是不可行的。此外,使用神经网络近乎无限的参数组合来寻找性能最佳的组合也是不切实际的。然而,该定理还假设只有一个隐藏层,并且随着添加更多隐藏层,复杂性和通用逼近的潜力呈指数增长。

取而代之的是,机器学习工程师依据直觉和经验决定了如何构造适合给定问题的神经网络架构,以便它能够很好地逼近多维空间,知道这样一个网络的存在,但也要权衡计算性能。

相关 [理解 通用 近似] 推荐:

在理解通用近似定理之前,你可能都不会理解神经网络

- - 机器之心
此前,图灵奖得主、深度学习先驱 Yann LeCun 的一条推文引来众多网友的讨论. 在该推文中,LeCun 表示:「深度学习并不像你想象的那么令人印象深刻,因为它仅仅是通过曲线拟合产生的插值结果. 但在高维空间中,不存在插值这样的情况. 而 LeCun 转发的内容来自哈佛认知科学家 Steven Pinker 的一条推文,Pinker 表示:「 通用近似定理很好地解释了为什么神经网络能工作以及为什么它们经常不起作用.

一个AI小白如何理解近似匹配检索

- -
在AI领域的相似度匹配中通常会接触很多新名词:. ANN、KNN、HNSW、SQ8、Faiss、L2、L1、inner product...你可能会查了很多官方解释,但是:. --> 网上每个名词都告诉了是什么,我知道了他是什么,对,没错,我还是不知道它是什么. --> 根据用户手册,我Step by step成功完成了所有的实验,我依然不知道我在实验什么.

e的近似表达:一个令人惊讶的数字游戏

- hhx - Matrix67: My Blog
    刚才看到这个很漂亮的无理数 e 的近似表达,它恰好用到了 1 到 9 这 9 个数字.     猜猜看它能精确到 e 的小数点后多少位.     远比想象中的牛 B —— 它能精确到小数点后 18, 457, 734, 525, 360, 901, 453, 873, 570 位. 它的秘密就在于, e 事实上等于 lim(n→∞) (1 + 1/n)^n ,而 9^(4^(7·6)) 恰好就等于 3^(2^85).

泛型理解

- - ITeye博客
泛型不是协变的,例如下面的代码不是正确的. 之所以声明泛型方法,一般是因为您想要在该方法的多个参数之间宣称一个类型约束. 例如,下面代码中的ifThenElse()方法,根据它的第一个参数的布尔值,它将返回第二个或第三个参数:. 注意,您可以调用ifThenElse(),而不用显式地告诉编译器,您想要T的什么值.

理解inode

- - haohtml's blog
inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念,从而大大简化用户接口. 下面就是我的inode学习笔记,尽量保持简单. 理解inode,要从文件储存说起.

理解OAuth 2.0

- - 阮一峰的网络日志
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为 RFC 6749. 为了理解OAuth的适用场合,让我举一个假设的例子. 有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来.

理解云计算

- 车东 - oneoo's 私家花园
  现在互联网最热门的关键字“云计算”,大大小小的公司纷纷加入到这块领域. 简单来说,目前的“云计算”主要分为:SaaS、PaaS和IaaS三大类.   其中SaaS云计算,为软件即服务的概念. 把传统客户端软件部署在互联网上,用户只需要一个浏览器就可以使用到软件的模式. 其实早在2000年就已经有B/S结构的软件服务,与现在所说的SaaS云计算相近,但此前的B/S结构软件服务,数据库等服务端是需要用户自行部署的,而非由软件提供商进行统一部署.

深入理解JVM

- 小伟 - ITeye论坛最新讨论
1   Java技术与Java虚拟机. 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API). 图1   Java四个方面的关系. 运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件).

理解RESTful架构

- InterMa - 阮一峰的网络日志
越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点. 网站开发,完全可以采用软件开发的模式. 但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信.