您的位置:首页 > 理论基础 > 计算机网络

神经网络可以计算哪些函数

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,里面有一些动画类的演示也很有助于理解,建议穿插着一起阅读。
 
简单的网络层是,更方便我们对普遍性可以模拟任何函数这一论点进行证明,但是实际应用中越深度(隐藏层越多)的网络越有助于解决真正的现实问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  神经网络
相关文章推荐