一个用vue做的网站,建立网站的模板,wordpress托管 根目录,东莞网站开发前三强转载自 浅析神经网络为什么能够无限逼近任意连续函数
神经网络为什么能够无限逼近任意连续函数#xff1f; 下面通过一个分类例子一步一步的引出为什么神经网络能够无限逼近任意函数这个观点#xff0c;并且给出直观感觉!
我们首先有这个需求#xff0c;需要将下面的数据…转载自 浅析神经网络为什么能够无限逼近任意连续函数
神经网络为什么能够无限逼近任意连续函数 下面通过一个分类例子一步一步的引出为什么神经网络能够无限逼近任意函数这个观点并且给出直观感觉!
我们首先有这个需求需要将下面的数据点进行分类将三角形与正方形正确的分开如图所示 其实上图就是一个解决一个异或问题。
下面我分别从线性模型感知机以及神经网络逐步围绕这个例子来引出自己的观点。以下的讲解都在二元函数下进行便于可视化高维空间类比
1.线性模型 如上图所示我们什么激活函数都不加那么输出结点的公式表达为yw1x1w2x2(注这里的1,2均是下标下文一样)
我们希望得到通过训练数据学习出w1,w2然后得到线性模型能够解决异或问题。但是我们很容易看出无论怎么学习异或问题是一个非线性问题并不能由一个线性方程能够正确的将三角形与正方形分隔开就好像下图表达一样无论你直线怎么动都不能正确分离开 2.感知机
感知机的定义非常简单在上面线性模型中的激活函数变为下面的阶梯函数的时候就是感知机模型。 那么感知机是否可以解决上面异或问题呢很显然并没有改变它只是线性模型的本质并不能解决非线性分类问题.因为感知机分类平面投影到二维空间的时候与下图是一模一样的 红线就代表投影方程比如现在一个输入点坐标为0,0带入方程得到结果为0那么就在红线上输入数据带入模型中大于0的话投影下来是在红线的右侧. 小于0的话投影下来是在红线的左侧.无论怎么学习(移动)模型都无法改变感知机是一个线性模型解决不了非线性问题的本质. 3.神经网络
下面我们看多个感知机组合成的神经网络是否能够解决这个问题呢答案是肯定能啊标题是神经网络能够无限逼近任意连续函数那么肯定能够解决非线性问题那么如何解释呢。下面一步一步给出理解首先给出一个俩层神经网络结构如下 很容易看出神经网络就是多个感知机组合而来的第二层的第一个感知机学到的模型可视化可以是下面这个 第二层的第二个感知机学到的模型可视化可以是下面这个 那么在最后一个输出结点进行将第二层俩个神经元进行线性组合的时候得到的可视化图是下面这个 相信到这里大家已经有感觉了这不是明摆着已经解决了我提出的问题了吗还不信看下面! 我们已经成功的将圆形与正方形分类出来圆形对1这个输出三角形对应-1这个输出俩个不同的平面上正确的完成了非线性分类问题。
可能还有些抽象这么直白来说第一个神经元学到的方程可以为x1x21/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输出的结果应该一样属于同一类。
根据上图知道第二个神经元学到的模型x1x27/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-w2b0 w1-w2b0 w1w2b0
很容易通过学习w1w2,b得到这样的模型比如5x1-2x2-40x1为第一个神经元的输出x2为第二个神经元的输出注意通过阶梯函数输出只能是1-1了,满足了我们的分类要求已经成功的解决了异或问题。
可能有同学会问你这仅仅只解决了异或问题呀那加入其它限制条件呢比如说下图 如果是上图的非线性分类问题不仅仅是简单的异或问题神经网络能够解决吗答案是肯定的我们可以在隐藏层加一个神经元在一开始俩个神经元的作用下再加入一个神经元它起到的线性效果是下图这里为了简单方便我就画一下投影图
在没有加入第三个神经元的时候投影图如下俩个红线之内的是输出为1的样本之外的为输出为-1的样本 但是这个图只能解决异或问题并不能将最上面三角形正确分类我们新加入的神经元起到的效果只要满足下面这个条件即可
我们就很容易得到结论我们又可以正确将要求的样本正确分类了每个区域应该属于哪个输出-1还是1为了直观我在图上画出来了~那么无论你是什么样的数据样本我都可以理论上加入无数个隐藏层神经元来逼近任意连续函数进行我们的任务有一个结论是无数个直线能够逼近任意连续曲线道理是一样的。
下面给出四个隐藏神经元的输出层可视化效果这次的激活函数也不会阶梯函数了可能是sigmoid或者tanh等其它非线性激活函数但这些都不影响表达的本质。 到这里我已经讲完了我要说的内容了只是根据自己的理解通过非常简单的例子想给大家一个直观上的认识和理解希望能对大家理解有帮助欢迎大家指错交流~
部分图片来自于Hugo Larochelle课程的slides