神经网络可以计算哪些函数
2018-02-21 23:35
274 查看
神经网络可以计算什么样的函数?
答案是任何函数。本文将用图像来证明神经网络可以模拟任何的空间上的坐标,而且网络节点越多,精度越高。
一个输入和一个输出的普遍型:
对于f(x)=sigmoid(wx+b)来说,W越大,s形状越陡,阶跃发生在s=-b/w的位置,阶跃的位置与w成反比,与b成正比
我们用一个参数s替换w和b来简化神经元的描述难度
例如只观察隐藏层上面这个神经元,当w=1000,b=-400时,图形曲线如下:
当然这样简化的前提是w是个很大的值,以至于sigmoid的s曲线趋近与阶跃函数。
到目前为止,我们只是考虑了隐藏层的上面的这个单个节点,如果考虑到更多的节点,网络和输出曲线是这样的:
S决定了阶跃点,权重w决定了函数变化的方向和高度。
当w1为N,w2为-N时,这种情况就会在输出图中形成一个凸起,我们用一个h来标识±w,那么稍微4个节点的神经网络可以表示为:
我们可以通过改变h来任意的改变期望高度,再看个更复杂的例子:
那么有了这些理论基础,我们就可以通过s和h来描述任意的曲线,只要我们的神经网元足够多,可以将x轴拆分的足够细,精度就会足够高。图中蓝色曲线是任意的函数曲线,桔色是我们通过s+h拟合出的结果。
多个输入变量的普遍性:
很难从视觉或者脑空间想象来解释3个输入以上场景,所以对多个输入变量的推理就从2个输入变量开始,然后剩下的只能靠推理和脑补了。
现在有x和y两个输入变量,当固定了其中y的权限w为0后,那么output与x和y的关系图如下:
延续前一章节一个变量时s=-wb的原理,当w很大时,s被称为阶跃点;由于现在是多维,所以s还要多增加一个维度的信息,上图当w很大时,我们用xs来标识x坐标上的阶跃点,如下:
同理可以推出ys:
同一个变量时一样再引入h这个概念,如果只有xs的神经网元,效果如下:
如果xs和ys的神经网元都存在的情况下,效果如下:
当我们改变h到一个比较大的值,然后偏置b≈-3h/2时,该网络的输出会变成一个锥形:
其实这个启示已经很明显了,如果一个锥看不出来,假设网络规模翻一倍,就可以展示2个锥:
每个锥的锥顶代表了一组输出数据的区域,这样就跟单变量输入时一样,只要神经元节点够多,网络规模够大,我们就可以构造足够多的锥,那么就可以证明目前这个神经网络可以模拟所有的输出。
超过2个变量,神经网络搭建方式类似,也是通过s和h的概念进行类推。
本文参考英文原文http://neuralnetworksanddeeplearning.com/chap4.html,里面有一些动画类的演示也很有助于理解,建议穿插着一起阅读。
简单的网络层是,更方便我们对普遍性可以模拟任何函数这一论点进行证明,但是实际应用中越深度(隐藏层越多)的网络越有助于解决真正的现实问题。
答案是任何函数。本文将用图像来证明神经网络可以模拟任何的空间上的坐标,而且网络节点越多,精度越高。
一个输入和一个输出的普遍型:
对于f(x)=sigmoid(wx+b)来说,W越大,s形状越陡,阶跃发生在s=-b/w的位置,阶跃的位置与w成反比,与b成正比
我们用一个参数s替换w和b来简化神经元的描述难度
例如只观察隐藏层上面这个神经元,当w=1000,b=-400时,图形曲线如下:
当然这样简化的前提是w是个很大的值,以至于sigmoid的s曲线趋近与阶跃函数。
到目前为止,我们只是考虑了隐藏层的上面的这个单个节点,如果考虑到更多的节点,网络和输出曲线是这样的:
S决定了阶跃点,权重w决定了函数变化的方向和高度。
当w1为N,w2为-N时,这种情况就会在输出图中形成一个凸起,我们用一个h来标识±w,那么稍微4个节点的神经网络可以表示为:
我们可以通过改变h来任意的改变期望高度,再看个更复杂的例子:
那么有了这些理论基础,我们就可以通过s和h来描述任意的曲线,只要我们的神经网元足够多,可以将x轴拆分的足够细,精度就会足够高。图中蓝色曲线是任意的函数曲线,桔色是我们通过s+h拟合出的结果。
多个输入变量的普遍性:
很难从视觉或者脑空间想象来解释3个输入以上场景,所以对多个输入变量的推理就从2个输入变量开始,然后剩下的只能靠推理和脑补了。
现在有x和y两个输入变量,当固定了其中y的权限w为0后,那么output与x和y的关系图如下:
延续前一章节一个变量时s=-wb的原理,当w很大时,s被称为阶跃点;由于现在是多维,所以s还要多增加一个维度的信息,上图当w很大时,我们用xs来标识x坐标上的阶跃点,如下:
同理可以推出ys:
同一个变量时一样再引入h这个概念,如果只有xs的神经网元,效果如下:
如果xs和ys的神经网元都存在的情况下,效果如下:
当我们改变h到一个比较大的值,然后偏置b≈-3h/2时,该网络的输出会变成一个锥形:
其实这个启示已经很明显了,如果一个锥看不出来,假设网络规模翻一倍,就可以展示2个锥:
每个锥的锥顶代表了一组输出数据的区域,这样就跟单变量输入时一样,只要神经元节点够多,网络规模够大,我们就可以构造足够多的锥,那么就可以证明目前这个神经网络可以模拟所有的输出。
超过2个变量,神经网络搭建方式类似,也是通过s和h的概念进行类推。
本文参考英文原文http://neuralnetworksanddeeplearning.com/chap4.html,里面有一些动画类的演示也很有助于理解,建议穿插着一起阅读。
简单的网络层是,更方便我们对普遍性可以模拟任何函数这一论点进行证明,但是实际应用中越深度(隐藏层越多)的网络越有助于解决真正的现实问题。
相关文章推荐
- 可视化证明神经网络可以计算任何函数
- 神经网络与深度学习笔记——第4章 神经网络可以计算任何函数的可视化证明
- 神经网络可以拟合任意函数的视觉证明A visual proof that neural nets can compute any function
- 神经网络中embedding层作用——本质就是word2vec,数据降维,同时可以很方便计算同义词(各个word之间的距离),底层实现是2-gram(词频)+神经网络
- 2016.3.29 一个简单的视觉化证明神经网络可以拟合任意函数
- 神经网络可以拟合任意函数的视觉证明A visual proof that neural nets can compute any function
- 日期计算,可以跨天的函数
- python绘制神经网络中的ReLU激活函数图像(附代码)
- 神经网络案例分析4-5-神经网络遗传算法函数极值寻优-基于BP_Adaboost 的强分类器设计
- CS231n课程笔记5.1:神经网络历史&激活函数比较
- CSS选择器有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先?
- 神经网络之激活函数(sigmoid、tanh、ReLU)
- 神经网络之激活函数面面观
- 类脑计算与神经网络加速
- 神经网络中的激活函数
- MySQL提供的可以计算两个时间间隔的函数
- 利用函数计算实现网络游戏或视频直播中的敏感词检测
- 什么时候神经网络可以接受任意的输入?
- 想要在SQL语句中可以使用用户自定义的函数,那么这样的用户定义函数有哪些限制?
- 神经网络五:常用的激活函数