作者:玉来愈宏

来源:知乎

链接:https://zhuanlan.zhihu.com/p/39334377

编辑:王萌(深度学习冲鸭公众号)

著作权归作者所有,本文仅作学术分享,若侵权,请联系后台删文处理

机器学习在本质上,就是找好一个好用的函数。而人工神经网络最牛的地方可能就在于,它可以在理论上证明:“一个包含足够多隐层神经元的多层前馈网络,能以任意精度逼近任意预定的连续函数[1]”。

用近似定理牛在哪里?

这个定理也被称之为通用近似定理(Universal Approximation Theorem)。这里的“Universal”,也有人将其翻译成“万能的”,由此可以看出来,这个定理的能量有多大。

图2-4 通用近似定理

“通用近似定理”告诉我们,不管函数  在形式上有多复杂,我们总能确保找到一个神经网络,对任何可能的输入x,以任意高的精度近似输出值为f(x)(如图2-4所示)。即使函数有多个输入和输出,即  ,通用近似定理的结论也是成立的。换句话说,神经网络在理论上可近似解决任何问题,这就厉害了!有关神经网络可以计算任何函数的可视化证明,感兴趣的读者可以参阅Michael Nielsen的博客文章[2]。

使用这个定理时,我们需要注意如下两点:

(1)定理说的是,可以设计一个神经网络尽可能好地去“近似”某个特定函数,而不是说“准确”计算这个函数。我们通过增加隐层神经元的个数来提升近似的精度。

(2)被近似的函数,必须是连续函数。如果函数是非连续的,也就是说有极陡跳跃的函数,神经网络就“爱莫能助”了。

即使函数是连续的,有关神经网络能不能解决所有问题,也是有争议的。原因很简单,就如同那句玩笑话“理想很丰满,现实很骨感”说得那样,通用近似定理在理论上是一回事,而在实际操作又是另外一回事。

比如,深度学习新秀、生成对抗网络(GAN)发明者 Ian Goodfellow就曾发表意见说,“仅含有一层的前馈网络,的确足以有效地表示任何函数,但是,这样的网络结构可能会格外庞大,进而无法正确地学习和泛化:

"A feedforward network with a single layer is sufficient to represent any function, but the layer may be infeasibly large and may fail to learn and generalize correctly。”

Goodfellow的言外之意是说,“广而浅薄”的神经网络在理论上是万能的,但在实践中却不是那么回事。因此,网络往“深”的方向去做,才是正途。(这个议题,回头我们再深入探讨)

事实上,1989年“通用近似定理”就被提出了,到2006年深度学习开始厚积而薄发,这期间神经网络并没有因为这个理论而得到蓬勃发展。因此,从某种程度上,验证了Goodfellow的判断。

神经网络是如何模拟(拟合)一个函数的?

深度学习工程师Brendan Fortuner在其博客中[3]比较形象地说明“通用近似定理”的长处和短处,他把目标函数设为:

 (2-1)

神经元使用的激活函数是ReLU。ReLU是“Rectified Linear Units(修正线性单元)”的缩写。关于“激活函数”的概念在后续章节,我们会详细讲解。这里读者只需要知道ReLU是一个简单的非线性函数:

 (2-2)

然后,重复尝试ReLU单元的不同组合,直到它拟合地看起来很像目标函数。下面是使用6个ReLU神经元组合的示意图。

在6个神经元分别用公式(2-3~公式(2-8)所示。

 (2.3)

 (2.4)

 (2.5)

 (2.6)

 (2.7)

 (2.8)

在上述公式中,诸如“-5”、“-1.2”等数值,是输入神经元与隐层神经元之间的连接权值(weight),而诸如“-7.7”、“-1.3”等数值,是隐层神经元的偏置(bias)。本来这些参数都是通过不断地训练学习而来的,这里为了说明问题,就直接给出了。

然后把这些神经元组合起来,就形成了输出函数,如公式(2-9)所示。

 (2-9)

事实上,神经元前面的系数“-1”、“-1”、“-1”、“1”、“1”、“1”分别是隐层神经元和输出神经元之间的连接权重值,它们也是需要学习才能得到的,这里也直接给出了(为排版方便,公式(2-9)中,我们用  代替了  ,其他类似)。

图2-5 神经网络拟合示意图

通过上述的工作,我们来看看如图2-5所示的神经网络拟合的效果如何呢?参见图2-6,从该图中可以看出,神经网络的确可以少量神经元和单个隐层来为非平凡函数(non-trivial functions)建模,如果我们把神经网络的参数调整的更加“细腻”,那么这个“近似”将会更加逼真。

图2-6 神经网络模拟函数示意图(来自参考文献[3]工具生成)

但细心的读者可能发现了图2-6中的端倪,那就是这个函数“近似”的区间在[-2,2]之间。在这个区间,神经网络的“近似”的效果,看起来还不错,但这个拟合效果,经不起区间范围的放大。

一旦区间放大,上述神经网络的近似效果就“大相径庭”。换句话说,如果我们不想重新训练且不想增加网络隐层神经元,那么就别指望它可以“泛化”支撑其他输入。

这里的泛化(generalization)是指,训练好的机器学习模型对新样本的适应能力。如果所设计的模拟仅仅对训练数据集合有效,而对训练集合之外的元素低效,那么就称这样的模型泛化能力差,或陷入了过拟合(overfitting)状态。

参考文献

[1] Hornik K, Stinchcombe M, White H.

Multilayer feedforward networks are universal approximators[J]. Neural

Networks, 1989, 2(5):359-366.

[2] Michael A. Nielsen, A visual proof that neural nets can compute any function, http://neuralnetworksanddeeplearning.com/chap4.html

[3] https://www.desmos.com/calculator/cfvtjusqmq

本文节选自《深度学习之美:AI时代的数据处理与最佳实践》(张玉宏著,电子工业出版社,2018年7月出版)。

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总

2022届互联网求职现状,金9银10快变成铜9铁10!!

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)

发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

神经网络最本质的理论基础是什么?相关推荐

  1. 王维嘉:神经网络的本质是在数据里面提取相关性

    https://www.toutiao.com/a6674548769591132683/ 3月30日下午消息,2019中国(深圳)IT领袖峰会在今日举行,在青年领袖论坛环节,CEG Ventures ...

  2. 神经网络的节点代表什么,神经网络的本质是什么

    BP神经网络的核心问题是什么?其优缺点有哪些? . 人工神经网络,是一种旨在模仿人脑结构及其功能的信息处理系统,就是使用人工神经网络方法实现模式识别.可处理一些环境信息十分复杂,背景知识不清楚,推理规 ...

  3. 通用近似定理(学习笔记)

    通用近似定理(学习笔记) -----用任意深度的神经网络逼近函数,张玉宏的<深度学习之美>阅读笔记. 发展历程 "通用近似定理"1989年被提出[1],其中George ...

  4. 【数据挖掘】神经网络 后向传播算法 ( 线性回归与逻辑回归 | 单个神经元本质及逻辑 | 神经网络每一层分析 | 神经网络矩阵形式 | 线性变换与非线性变换 )

    文章目录 I . 线性回归 与 逻辑回归 II . sigmod 非线性激活函数 III . 神经元单元 逻辑 IV . 单个 神经元单元 总结 V . 神经网络 每一层分析 VI . 神经网络 矩阵 ...

  5. 反向传播算法的理论基础,神经网络反向传播算法

    1.如何理解神经网络里面的反向传播算法 反向传播算法(Backpropagation)是目前用来训练人工神经网络(Artificial Neural Network,ANN)的最常用且最有效的算法.其 ...

  6. BP神经网络的数学本质

    原创文章,转载请说明来自<老饼讲解-BP神经网络>:bp.bbbdata.com 目录 一. 隐神经元与tansig函数 二 .BP本质 三.BP神经网络的曲线拟合要素 (一)  误差函数 ...

  7. 神经网络反向传播的作用,双向传播的神经网络

    如何理解神经网络里面的反向传播算法 反向传播算法(Backpropagation)是目前用来训练人工神经网络(ArtificialNeuralNetwork,ANN)的最常用且最有效的算法. 其主要思 ...

  8. 人工神经网络的算法原理,对人工神经网络的理解

    什么是人工神经网络及其算法实现方式 人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点. 它从信息处理角度对人脑神经元网 ...

  9. 如何简单形象又有趣地讲解神经网络是什么?(知乎) 说的人很多,理解很充分

    https://www.zhihu.com/question/22553761 如何简单形象又有趣地讲解神经网络是什么? 有网友在 Quora 上提问:对于那些非计算机科学行业的人,你会如何向他们解释 ...

最新文章

  1. 类继承中的构造函数与析构函数
  2. android适配右到左布局注意事项
  3. 用android studio测量距离,Android studio 百度地图开发(6)Marker绑定事件、计算两点距离...
  4. python第三方库下载-python常用第三方库介绍及下载
  5. Python中使用元组对ndarray矩阵的某个维度进行选取和调序的操作
  6. centos(linux) 下如何查看端口占用情况及杀死进程
  7. VB 调用 QuickTestpro 脚本
  8. C# 程序执行时间差
  9. 国内一些大公司的开源项目
  10. Wannafly交流赛1: B. 白兔的式子(组合数)
  11. Android自定义ToolBar布局
  12. BZOJ 1087 [SCOI2005]互不侵犯King(状压DP)
  13. Uniapp微信雪糕刺客单页小程序源码
  14. 一个计算机爱好者的不完整回忆(十二)下载软件
  15. 转载:全志问题解决方法
  16. Go官方的使用Gin开发Web服务教程 | Gopher Daily (2021.08.19) ʕ◔ϖ◔ʔ
  17. iOS-图文混排方案-2种方案
  18. 直播电商平台开发,点击让窗口抖动动画效果
  19. 自动化测试工具 Java等
  20. 如何理解一台服务器可以绑定多个ip,一个ip可以绑定多个域名

热门文章

  1. Grafana系列教程–Grafana基本概念
  2. 《摩诃般若波罗蜜多心经》 玄奘 译
  3. 用注册表修改Windows系统的MAC地址
  4. 图像色深与位深度的区别
  5. 数据分析-豆瓣电影Top250
  6. 把SWF打回原形Imperator FLA v1.6.9.8
  7. matlab智能算法之模拟退火算法
  8. Photoshop新手学堂:ps消除锯齿在哪里
  9. Matlab中解决pcolor和imagesc格网显示问题
  10. Maxwell简介使用