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

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端模块化工具--webpack学习心得

话说前头 webpack前段时间有听说一下&#xff0c;现在已经到了3.x的版本&#xff0c;自己没去接触。因为之前使用gulp来作为自己的项目构建工具。现在感觉gulp使用的趋势在减少。现在这段时间去接触了webpack&#xff0c;感觉很不错&#xff0c;它的模块化打包机制&#xff0c…

基于.NET CORE微服务框架 -谈谈surging的服务容错降级

一、前言 对于不久开源的surging受到不少.net同学的青睐&#xff0c;也受到.net core学习小组的关注&#xff0c;邀请加入.NET China Foundation 以方便国内.net core开源项目的推广&#xff0c;我果断接受邀请加入了队伍进行互相交流学习&#xff0c;最近也更新了surging新的…

java中部的分页实现(二)

大家好&#xff0c;欢迎来到雄雄的小课堂&#xff0c;昨天分享了关于分页查询的理论知识&#xff0c;今天我们就来结合代码和案例实际的应用一下&#xff0c;方便大家理解。前言&#xff1a;我们都知道&#xff0c;实现分页需要三个步骤。第一&#xff0c;确定页大小&#xff0…

SpringSecurity授权(访问控制)

一、 访问控制url匹配 在前面讲解了认证中所有常用配置&#xff0c;主要是对httpSecurity.formLogin()进行操作。而在配置类中httphttpSecurity.authorizeRequests()主要是对url进行控制&#xff0c;也就是我们所说的授权&#xff08;访问控制&#xff09;。httpSecurity.autho…

剥析surging的架构思想

1、前言 前面第一篇阐述了采用基于.NET CORE微服务架构&#xff0c;应用surging服务端与客户端之间进行通信的简单示例以及对于surging服务化框架简单介绍。在这篇文章中&#xff0c;我们将剥析surging的架构思想。 surging源码下载 2、通信机制 2.1 简介 在单体应用中&am…

javaweb实现分页(二)

前言&#xff1a;我们都知道&#xff0c;实现分页需要三个步骤。第一&#xff0c;确定页大小&#xff08;每页显示的数据量&#xff09;。第二&#xff0c;计算显示的总页数。第三&#xff0c;写分页的sql语句。这三步已经在昨天的推文中详细说明&#xff0c;需要的可以点击这里…

滴滴出行基于RocketMQ构建企业级消息队列服务的实践

转载自 滴滴出行基于RocketMQ构建企业级消息队列服务的实践 本文整理自滴滴出行消息队列负责人 江海挺 在Apache RocketMQ开发者沙龙北京站的分享。通过本文&#xff0c;您将了解到滴滴出行&#xff1a; 1. 在消息队列技术选型方面的思考&#xff1b; 2. 为什么选择 RocketMQ…

[信息安全] 1.密码工具箱

0. 何谓安全&#xff1f; 对于信息安全性的重要性&#xff0c;我想大家都不会否认。那么具体来说应该具有哪些特性才能称之为安全呢&#xff1f;举个简单的例子&#xff1a;我给你发送一条消息“借给我100元”&#xff0c;当你收到这条消息并且处理后你的账户里面会少出来100块…

深入理解TCP/IP协议-TCP建立与终止连接

转载自 深入理解TCP/IP协议-TCP建立与终止连接 一、引言 TCP 是一个面向连接的协议。无论哪一方向另一方发送数据之前&#xff0c;都必须先在双方之间建立一条连接。连接创建与终止的状态变化图如下&#xff1a; 二、三次握手建立连接 过程如下&#xff1a; 客户端发送一个 SY…

在Docker中运行asp.net core 跨平台应用程序

概述 Docker已经热了有一两年了&#xff0c;而且我相信这不是一个昙花一现的技术&#xff0c;而是一个将深远影响我们日后开发和部署、运营应用系统的一种创新&#xff08;很多人将其作为devops的一种非常重要的基石&#xff09;。学习docker的最好方式&#xff0c;莫过于它的…

java中的Queue队列的用法

大家好&#xff0c;欢迎来到雄雄的小课堂&#xff0c;今天给大家分享的是“java中的Queue队列的用法” 前言&#xff1a;好多人对Queue不是很熟悉&#xff0c;毕竟平时也不怎么用&#xff0c;遇到集合要么List要么map这些常用的&#xff0c;殊不知&#xff0c;java中还有个Que…

SpringCloud Netflix Eureka

文章目录一、 Eureka简介Eureka组件二、 Eureka和Zookeeper 对比1 什么是CAP定理2 基于CAP定理比对Eureka和Zookeeper三、 搭建Eureka注册中心1 POM文件2 配置文件application.yml3 启动类4 访问Eureka Server WEB服务管理平台四、 Eureka 服务管理平台介绍1 Eureka Server服务…

使用枚举定义常量更好点儿

大家好&#xff0c;欢迎来到雄雄的小课堂&#xff0c;昨天给大家分享的是“java中的Queue队列的用法示例”&#xff0c;今天&#xff0c;分享的主题是“java中&#xff0c;推荐使用枚举定义常量”。 前言&#xff1a;常量&#xff0c;相信大家多不会陌生&#xff0c;常量值一般…

SpringCloud Netflix Ribbon

文章目录一、 Ribbon简介二、 使用Ribbon开发微服务1 创建springcloud工程 和 commons子模块2 开发服务提供者 - ribbonappservice3 开发服务消费者 - ribbonappclient三、 集中式与进程内负载均衡区别四、 Ribbon常见的负载均衡策略1 Ribbon中的常用负载均衡简介2 配置负载均衡…

Entity Framework Core 生成跟踪列

注意&#xff1a;我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final)。正式版发布时&#xff0c;功能可能存在变动。 当您设计数据库时&#xff0c;有时需要添加列以跟踪记录何时更改&#xff0c;以及谁进行了更改。例如&#xff0c;您添加以下列&#xff1a; Cre…

老师,我们想看到您的笑容!

“老师&#xff0c;你可以对我们笑笑吗&#xff1f;”今天偶然遇见一位学生在吃饭的路上和我说道。我冲他点了点头&#xff0c;笑道&#xff1a;“好呀”&#xff01;是啊&#xff0c;我是好久没有把笑声带回班级中了。1目前&#xff0c;4班都在倾尽全力的做项目&#xff0c;试…

阿里巴巴开源 Spring Cloud Alibaba,加码微服务生态建设

转载自 阿里巴巴开源 Spring Cloud Alibaba&#xff0c;加码微服务生态建设 本周&#xff0c;Spring Cloud联合创始人Spencer Gibb在Spring官网的博客页面宣布&#xff1a;阿里巴巴开源 Spring Cloud Alibaba&#xff0c;并发布了首个预览版本。随后&#xff0c;Spring Cloud…

微软发布Azure Stack更多细节,预计9月交付

在近日举行的微软全球合作伙伴大会上&#xff0c;微软宣布Azure Stack现在开始接受预定&#xff0c;预计9月份就可以交付。Azure Stack是微软公有Azure云的私有云实现。和其他私有云提供商不同&#xff0c;微软将把Azure Stack作为一项基于消费的服务&#xff0c;这和其公有云的…

今天你们表现的真棒!!!

12月5日在报告厅举行了“2020级青鸟4班 HTML网页设计大赛”。从一个洁白如纸的空白页面&#xff0c;到布满五彩斑斓样式的cool页面&#xff0c;是同学们一个字母一个单词的敲打出来的。从头脑空白啥都不会说到现在的条理清晰张嘴就来的演讲&#xff0c;是同学们时时刻刻写稿子背…

再有人问你Netty是什么,就把这篇文章发给他

转载自 再有人问你Netty是什么&#xff0c;就把这篇文章发给他 本文基于Netty4.1展开介绍相关理论模型&#xff0c;使用场景&#xff0c;基本组件、整体架构&#xff0c;知其然且知其所以然&#xff0c;希望给大家在实际开发实践、学习开源项目提供参考。 这是一篇万字长文&a…