转载自  浅析神经网络为什么能够无限逼近任意连续函数

神经网络为什么能够无限逼近任意连续函数?

下面通过一个分类例子一步一步的引出为什么神经网络能够无限逼近任意函数这个观点,并且给出直观感觉!

我们首先有这个需求,需要将下面的数据点进行分类,将三角形与正方形正确的分开,如图所示:

其实上图就是一个解决一个异或问题。

下面我分别从线性模型,感知机以及神经网络逐步围绕这个例子来引出自己的观点。(以下的讲解都在二元函数下进行,便于可视化,高维空间类比)

1.线性模型

如上图所示,我们什么激活函数都不加,那么输出结点的公式表达为:y=w1x1+w2x2(注:这里的1,2均是下标,下文一样)

我们希望得到通过训练数据学习出w1,w2,然后得到线性模型,能够解决异或问题。但是我们很容易看出,无论怎么学习,异或问题是一个非线性问题,并不能由一个线性方程能够正确的将三角形与正方形分隔开!就好像下图表达一样,无论你直线怎么动,都不能正确分离开:

2.感知机

感知机的定义非常简单,在上面线性模型中的激活函数变为下面的阶梯函数的时候,就是感知机模型。

那么感知机是否可以解决上面异或问题呢?很显然并没有改变它只是线性模型的本质,并不能解决非线性分类问题.因为感知机分类平面投影到二维空间的时候,与下图是一模一样的:

红线就代表投影方程,比如现在一个输入点坐标为(0,0)带入方程得到结果为0,那么就在红线上,输入数据带入模型中,大于0的话,投影下来是在红线的右侧. 小于0的话,投影下来是在红线的左侧.无论怎么学习(移动)模型,都无法改变感知机是一个线性模型解决不了非线性问题的本质.

3.神经网络 

下面我们看多个感知机组合成的神经网络是否能够解决这个问题呢?答案是肯定能啊,标题是神经网络能够无限逼近任意连续函数,那么肯定能够解决非线性问题,那么如何解释呢。下面一步一步给出理解,首先给出一个俩层神经网络结构如下:

很容易看出神经网络就是多个感知机组合而来的,第二层的第一个感知机学到的模型可视化可以是下面这个:

第二层的第二个感知机学到的模型可视化可以是下面这个:

那么在最后一个输出结点,进行将第二层俩个神经元进行线性组合的时候,得到的可视化图是下面这个:

相信到这里大家已经有感觉了,这不是明摆着已经解决了我提出的问题了吗,还不信,看下面!

我们已经成功的将圆形与正方形分类出来,圆形对+1这个输出,三角形对应-1这个输出,俩个不同的平面上,正确的完成了非线性分类问题。

可能还有些抽象,这么直白来说,第一个神经元学到的方程可以为x1+x2=1/2对四个数据的输出分别是:

(0,0)输出为-1,输入神经元激活函数之前的值是小于0(为-1/2)的

(1,0)输出我+1 输入神经元激活函数之前的值是大于0(为1/2)的

(0,1)输出为+1 输入神经元激活函数之前的值是大于0(1/2)的

(1,1)输出为+1 输入神经元激活函数之前的值是大于0(3/2)的

这与我们的预期不一样,我们希望(0,0)与(1,1)输出的结果应该一样,属于同一类。

根据上图知道第二个神经元学到的模型x1+x2=7/4对四个数据的输出分别是:

(0,0)输出为-1,输入神经元激活函数之前的值是小于0(-7/4)的

(1,0)输出我-1 输入神经元激活函数之前的值是小于0(-3/4)的

(0,1)输出为-1 输入神经元激活函数之前的值是小于0(-3/4)的

(1,1)输出为+1 输入神经元激活函数之前的值是大于0(1/2)的

注:以上方程只是为了讲解,并不一定是对的!

第三个神经元通过对前面俩个神经元的线性组合,只需要我们通过学习w1,w2来控制(0,0)与(1,1)的输出同为负数,(1,0)与(0,1)的输出同为正,那么就完成了我们的任务,也满足了我上图的结论,正确分类了.也就是说,

我们希望得到下面的结论:

代入(-1,-1)的时候,模型输出为-1

代入(+1,-1)的时候,模型输出为+1

代入(+1,+1)的时候,模型输出为-1

也就是说满足:-w1-w2+b<0

w1-w2+b>0

w1+w2+b<0

很容易通过学习w1,w2,b得到这样的模型,比如5x1-2x2-4=0(x1为第一个神经元的输出,x2为第二个神经元的输出,注意通过阶梯函数,输出只能是+1,-1了),满足了我们的分类要求!!已经成功的解决了异或问题。

可能有同学会问,你这仅仅只解决了异或问题呀?那加入其它限制条件呢?比如说下图:

如果是上图的非线性分类问题,不仅仅是简单的异或问题,神经网络能够解决吗?答案是肯定的,我们可以在隐藏层加一个神经元,在一开始俩个神经元的作用下,再加入一个神经元,它起到的线性效果是下图(这里为了简单方便,我就画一下投影图):

在没有加入第三个神经元的时候,投影图如下(俩个红线之内的是输出为+1的样本,之外的为输出为-1的样本):

但是这个图只能解决异或问题,并不能将最上面三角形正确分类,我们新加入的神经元起到的效果只要满足下面这个条件即可:

我们就很容易得到结论,我们又可以正确将要求的样本正确分类了(每个区域应该属于哪个输出-1还是+1,为了直观我在图上画出来了~)!那么无论你是什么样的数据样本,我都可以理论上加入无数个隐藏层神经元来逼近任意连续函数进行我们的任务(有一个结论是无数个直线能够逼近任意连续曲线,道理是一样的)。

下面给出四个隐藏神经元的输出层可视化效果,这次的激活函数也不会阶梯函数了,可能是sigmoid或者tanh等其它非线性激活函数,但这些都不影响表达的本质。

到这里,我已经讲完了我要说的内容了,只是根据自己的理解通过非常简单的例子想给大家一个直观上的认识和理解,希望能对大家理解有帮助,欢迎大家指错交流~

部分图片来自于:Hugo Larochelle课程的slides

浅析神经网络为什么能够无限逼近任意连续函数相关推荐

  1. 神经网络是什么?如何直观理解它的能力极限?它是如何无限逼近真理?

    神经网络的基本单元就是一个一个的感知机,感知机有两部分组成:线性部分和激活函数部分.一个感知机的能力是有限的,他只能将数据进行二分,而且这些数据还必须是线性可分的. 普遍逼近定理: 只要神经网络有一个 ...

  2. 为什么说神经网络可以逼近任意函数?

    本文主要介绍神经网络万能逼近理论,并且通过PyTorch展示了两个案例来说明神经网络的函数逼近功能. 大多数人理解"函数"为高等代数中形如"f(x)=2x"的表 ...

  3. 智源新星刘利斌:让 AI 无限逼近人类的运动能力

    自"智源学者计划"启动以来,智源研究院已经支持了一批优秀的青年科学家致力于人工智能领域的前沿探索和技术创新.今年6月份,研究院实施"智源新星计划",积极引进和支 ...

  4. [LeetCode] Sqrt(int x)解题报告之无限逼近(牛顿法)

    Implement int sqrt(int x). Compute and return the square root of x. 求一个数的平方根.这道题的难点在于虽然接口的参数给的是int,但 ...

  5. 华为诺亚加法网络再升级:精度提升,可以逼近任意函数

    转自:机器之心 深度卷积神经网络的计算常常需要巨大的能耗,因此难以在移动设备上实现.为此学界正在探索研究各式各样的新方法,本文要介绍的这项研究提出了使用加法替代 CNN 中的乘法(卷积),从而极大降低 ...

  6. matlab数学建模-神经网络经典应用:逼近非线性函数

    目录 代码:先画出要逼近的函数,再用没有训练的神经网络去逼近 下一步:增大n值(神经网络隐藏层的数量) 下面改变频率参数k: 目标:设计一个BP网络,逼近非线性函数 代码:先画出要逼近的函数,再用没有 ...

  7. 神经网络三:浅析神经网络backpropagation算法中的代价函数和神经网络的反向传播原理、和ResNet网络的捷径链接误差传播计算

    在博客神经网络一:介绍,示例,代码中,Backpropagation Algorithm中用到了代价函数:该代价函数是否是最好的?其有没有自身的局限性?还有其他的代价函数吗,有何特点?本文将针对这些问 ...

  8. 我最佩服的一位同学!他是哈工大在读NLP博士积累28W粉丝

    今天只给大家介绍我的朋友忆臻,我是在知乎认识他的,解答了我不少问题,他目前在哈工大SCIR实验室读NLP方向博士,一直热心回答问题,知乎粉丝达到3万多人! 忆臻创建的公众号[机器学习算法与自然语言处理 ...

  9. 【机器学习】神经网络浅讲:从神经元到深度学习

    来源:深度学习初学者本文约4500字,建议阅读5分钟本文以一种简单的,循序的方式讲解神经网络. 适合对神经网络了解不多的同学,深入浅出的讲解了神经网络的核心思想,是一篇入门深度学习的好文.本文节选自& ...

最新文章

  1. 上帝视角任意切换:三维重建和图像渲染是怎么结合的?
  2. 与php代码类似,类似于PHP的代码_html/css_WEB-ITnose
  3. java web oracle 分页_Oracle分页的两种方式
  4. 我的游戏学习日志46——游戏交互设计(2)
  5. python约束 与MD5加密写法
  6. 二叉树的六种遍历方法汇总(转)
  7. 安卓事件机制与页面跳转
  8. 15条常用的视频音频编辑脚本命令(mencoder/ffmpeg等)
  9. .network 中文文档_以太坊链下支付网络Raiden API中文文档
  10. HDU4268 2012ACM长春赛区网络赛 Alice and Bob
  11. Win10启用linux子系统(Linuxer福利)
  12. mysql忘记密码时如何修改root用户密码
  13. 【bzoj2806】[Ctsc2012]Cheat 广义后缀自动机+二分+单调队列优化dp
  14. jsp调用getParameterValues获取表单信息
  15. 学环境艺术设计的 考计算机,环境艺术设计专业升本要考哪些科目?
  16. python 多目标跟踪_多目标追踪器:用 OpenCV 实现多目标追踪(C++/Python)
  17. 【入门2】分支结构 P1422 小玉家的电费
  18. 华为认证发布3000元“考证奖励”后,又有啥新动作?
  19. 【Arduino+ESP32专题】一起来读INA3221数据手册 1
  20. 普元 AppServer 6.5 业务应用连接mysql数据库报错:java.security.UnrecoverableKeyException: Password verification fai

热门文章

  1. core java面试题_CoreJava基础面试题
  2. 每天都在红绿灯前面梭行,不如自己来实现个红绿灯?
  3. 广西高考成绩查询2021,2021年广西高考个人排名怎么查询,广西高考成绩排名查询方法...
  4. 十一届蓝桥杯国赛 本质上升序列-dp
  5. 蓝桥杯2016初赛-网友年龄-枚举
  6. Aeroplane chess HDU - 4405(期望dp)
  7. java 导入导出 插件_Java最优的Excel导入/导出工具开发,你用过吗?
  8. 数据结构:链表(c语言)
  9. P4151 [WC2011]最大XOR和路径(线性基应用)
  10. HDU - 6989 Didn‘t I Say to Make My Abilities Average in the Next Life?! 莫队/单调栈 + 线段树/ST表在线