Neural Networks and Deep Learning CH4

来源:互联网 发布:js定时器怎么用 编辑:程序博客网 时间:2024/06/02 04:41

  • Two caveats
  • Universality with one input and one output
  • Many input variables
  • Extension beyond sigmoid neurons

这一章比较简单,主要证明了为什么神经网络可以计算任意的连续函数。无论这个函数是什么,总存在一个神经网络,对任意的输入x,可以从网络中得到近似的f(x)。当函数有多个输入多个输出时也适用。

这个结论告诉我们,神经网络有一种普遍性(universality),无论我们要计算什么样的函数,总有一个神经网络可以计算它。甚至是只需要一层隐藏层就可以实现计算任意函数。因此非常简单的网络就可以很强大了。

本章将会给出一个关于universality theorem简单可视化的解释。

Two caveats

在进入解释之前,严格定义一下何为“a neural network can compute any function”。

第一,这并不意味着一个网络可以用来精确地(exactly)计算任意的函数,而是获得一个我们想要的最好的近似(approximation)。增加隐藏层可以增加近似的程度。

第二,我们所能近似的函数是连续函数(continuous functions)。但实际中还是可以用连续函数近似不连续的函数的。

Universality with one input and one output

为了理解为什么universality theorem成立,从理解神经网络如何构造一个单输入单输出的函数入手:
这里写图片描述

假设用以下神经网络来构造:
这里写图片描述
拖动w值和b的值后可以发现:w值增大,输出的中间段会变陡;反之,变缓。b值增大,整个函数向左平移;反之,向右平移。
因此,通过控制上图中wb的值,可以近似出一个step function:
这里写图片描述
而实际上分析step functions比分析sigmoid functions简单,因为分析一系列的step functions的和比sigmoid functions的和简单。因此我们可以认为我们的神经网络输出的是step function的近似。
并且可以发现,阶跃发生在s=b/w处。
这里写图片描述
因此可以只用一个s来简化表达:
这里写图片描述

目前为止,我们只考虑了上面的一个神经元,现在我们加入下面的一个神经元以及最后两个weights一起考虑:
这里写图片描述

调制参数,可以得到如下图像:
这里写图片描述
易知上图中w1,w2可以调整凸包的高度,s1,s2调整宽度,于是可以将上图简化表示如下:
这里写图片描述

继续加入几个神经元,可以达到如下效果:
这里写图片描述
更进一步,可以得到:
这里写图片描述

回到原来的问题,我们如何用上面的结论去构造一个函数呢?这里我觉得已经非常简单了,就和积分的推导过程差不多。而书中也是这样的意思:
这里写图片描述

Many input variables

接下来先看一个有两个输入的例子,之后就可以推广到更多维度。
这里写图片描述
同样可以发现w调整“瀑布”的陡峭程度,越大越陡;而b则调整图像的位置。
依旧可以发现,其阶跃的位置为s=b/w1。因此,同单输入一样定义:
这里写图片描述
如果由下面那个神经元影响,图像如下:
这里写图片描述
同一维的情况,可以“搭个桥”,注意此时的输出是输出层进入激活函数之前的输出:
这里写图片描述
同理如果是y主导的,就换个方向。
如果将两个方向结合起来,可以组成如下图像,中间一块凸起来是符合规律的,因为xy重复叠加了:
这里写图片描述
上图省略了边权为0的边。

如果能将上面的图像经过输出层的激活函数后,变为如下的Tower function:
这里写图片描述
那么我们就可以把许多的Tower function叠加起来:
这里写图片描述

因此,加入输出层的偏差b,考虑如何构造Tower function,尝试后可以发现,当h变大,b变小时,可以达到这个效果:
这里写图片描述
此时可以选择b=3h/2

将两个不同模块结合起来,并增加一层输出,可以得到如下效果:
这里写图片描述
接下来如何构造出一个二维的函数与一维同理。

接着可以往更多维的推导了。

经过推导,可以得到一个m维的函数,为了得到类似上面的Tower function,其输出的偏差约为(m+1/2)h

至此,便可以解释本章的问题了。

Extension beyond sigmoid neurons

考虑不同与sigmoid的激活函数,s(z)
这里写图片描述
我们依旧可以用这个函数来构造一个step function:
这里写图片描述
w调大,调整位置b,可以得到:
这里写图片描述
我们可以使用上面一节所提到的所有技巧来整合这个函数。

推广到一般,可以实现上述条件的激活函数满足:当z趋于正无穷和负无穷时,函数值趋近于两个值。

因而ReLU是不满足的。那么就有一个问题了,为什么ReLU可以用作激活函数来训练神经网络呢?
这里目前我也还没有答案。

0 0
原创粉丝点击