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

神经网络可以计算什么样的函数? 答案是任何函数。本文将用图像来证明神经网络可以模拟任何的空间上的坐标,而且网络节点越多,精度越高。

 

一个输入和一个输出的普遍型:

对于f(x)=sigmoid(wx+b)来说,W越大,s形状越陡,阶跃发生在s=-b/w的位置,阶跃的位置与w成反比,与b成正比

神经网络可以计算哪些函数_第1张图片

我们用一个参数s替换wb来简化神经元的描述难度

例如只观察隐藏层上面这个神经元,当w=1000b=-400时,图形曲线如下:

神经网络可以计算哪些函数_第2张图片

当然这样简化的前提是w是个很大的值,以至于sigmoids曲线趋近与阶跃函数。

 

到目前为止,我们只是考虑了隐藏层的上面的这个单个节点,如果考虑到更多的节点,网络和输出曲线是这样的:

神经网络可以计算哪些函数_第3张图片


S决定了阶跃点,权重w决定了函数变化的方向和高度。

w1Nw2-N时,这种情况就会在输出图中形成一个凸起,我们用一个h来标识±w,那么稍微4个节点的神经网络可以表示为:

神经网络可以计算哪些函数_第4张图片


我们可以通过改变h来任意的改变期望高度,再看个更复杂的例子:

神经网络可以计算哪些函数_第5张图片


那么有了这些理论基础,我们就可以通过sh来描述任意的曲线,只要我们的神经网元足够多,可以将x轴拆分的足够细,精度就会足够高。图中蓝色曲线是任意的函数曲线,桔色是我们通过s+h拟合出的结果。

神经网络可以计算哪些函数_第6张图片



 

多个输入变量的普遍性:

很难从视觉或者脑空间想象来解释3个输入以上场景,所以对多个输入变量的推理就从2个输入变量开始,然后剩下的只能靠推理和脑补了。

现在有xy两个输入变量,当固定了其中y的权限w0后,那么outputxy的关系图如下:

神经网络可以计算哪些函数_第7张图片


延续前一章节一个变量时s=-wb的原理,当w很大时,s被称为阶跃点;由于现在是多维,所以s还要多增加一个维度的信息,上图当w很大时,我们用xs来标识x坐标上的阶跃点,如下:

神经网络可以计算哪些函数_第8张图片

同理可以推出ys

神经网络可以计算哪些函数_第9张图片

同一个变量时一样再引入h这个概念,如果只有xs的神经网元,效果如下:

神经网络可以计算哪些函数_第10张图片

如果xsys的神经网元都存在的情况下,效果如下:

神经网络可以计算哪些函数_第11张图片

当我们改变h到一个比较大的值,然后偏置b-3h/2时,该网络的输出会变成一个锥形:

神经网络可以计算哪些函数_第12张图片

其实这个启示已经很明显了,如果一个锥看不出来,假设网络规模翻一倍,就可以展示2个锥:

神经网络可以计算哪些函数_第13张图片

每个锥的锥顶代表了一组输出数据的区域,这样就跟单变量输入时一样,只要神经元节点够多,网络规模够大,我们就可以构造足够多的锥,那么就可以证明目前这个神经网络可以模拟所有的输出。

超过2个变量,神经网络搭建方式类似,也是通过sh的概念进行类推。

 

本文参考英文原文http://neuralnetworksanddeeplearning.com/chap4.html,里面有一些动画类的演示也很有助于理解,建议穿插着一起阅读。

 

简单的网络层是,更方便我们对普遍性可以模拟任何函数这一论点进行证明,但是实际应用中越深度(隐藏层越多)的网络越有助于解决真正的现实问题。


你可能感兴趣的:(深度学习)