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
这一章比较简单,主要证明了为什么神经网络可以计算任意的连续函数。无论这个函数是什么,总存在一个神经网络,对任意的输入
这个结论告诉我们,神经网络有一种普遍性(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成立,从理解神经网络如何构造一个单输入单输出的函数入手:
假设用以下神经网络来构造:
拖动
因此,通过控制上图中
而实际上分析step functions比分析sigmoid functions简单,因为分析一系列的step functions的和比sigmoid functions的和简单。因此我们可以认为我们的神经网络输出的是step function的近似。
并且可以发现,阶跃发生在
因此可以只用一个
目前为止,我们只考虑了上面的一个神经元,现在我们加入下面的一个神经元以及最后两个weights一起考虑:
调制参数,可以得到如下图像:
易知上图中
继续加入几个神经元,可以达到如下效果:
更进一步,可以得到:
回到原来的问题,我们如何用上面的结论去构造一个函数呢?这里我觉得已经非常简单了,就和积分的推导过程差不多。而书中也是这样的意思:
Many input variables
接下来先看一个有两个输入的例子,之后就可以推广到更多维度。
同样可以发现
依旧可以发现,其阶跃的位置为
如果由下面那个神经元影响,图像如下:
同一维的情况,可以“搭个桥”,注意此时的输出是输出层进入激活函数之前的输出:
同理如果是
如果将两个方向结合起来,可以组成如下图像,中间一块凸起来是符合规律的,因为
上图省略了边权为0的边。
如果能将上面的图像经过输出层的激活函数后,变为如下的Tower function:
那么我们就可以把许多的Tower function叠加起来:
因此,加入输出层的偏差
此时可以选择
将两个不同模块结合起来,并增加一层输出,可以得到如下效果:
接下来如何构造出一个二维的函数与一维同理。
接着可以往更多维的推导了。
…
经过推导,可以得到一个
至此,便可以解释本章的问题了。
Extension beyond sigmoid neurons
考虑不同与sigmoid的激活函数,
我们依旧可以用这个函数来构造一个step function:
将
我们可以使用上面一节所提到的所有技巧来整合这个函数。
推广到一般,可以实现上述条件的激活函数满足:当
因而ReLU是不满足的。那么就有一个问题了,为什么ReLU可以用作激活函数来训练神经网络呢?
这里目前我也还没有答案。
- Neural Networks and Deep Learning CH4
- Neural Networks and Deep Learning
- Neural Networks and Deep Learning
- Neural networks and Deep Learning
- Neural Networks and Deep Learning
- 《Neural networks and deep learning》概览
- 《Neural networks and deep learning》概览
- 《Neural networks and deep learning》概览
- Neural Networks And Deep Learning(1)
- Neural networks and deep learning materials
- neural-networks-and-deep-learning mnist-loader
- neural-networks-and-deep-learning mnist_pca.py
- neural-networks-and-deep-learning expand_mnist.py
- neural-networks-and-deep-learning mnist_average_darkness.py
- neural-networks-and-deep-learning mnist_svm.py
- neural-networks-and-deep-learning network.py
- neural-networks-and-deep-learning network2.py
- neural-networks-and-deep-learning test.py
- 多态性实现机制——静态分派与动态分派
- 文件存储
- Codeforces Round #265 (Div. 2)-C. No to Palindromes!
- 个人总结javaWeb以及SSH等相关面试题
- opencv中step[i],step1(i),elemsize,elemsize1
- Neural Networks and Deep Learning CH4
- ios开发者如何获取iOS应用中所有图片资源
- ARM 构建交叉编译工具链
- 类初始化
- 图形界面编程(五) 布局容器类(3)
- poj2104[划分树问题]
- Harris角点标注法
- PHP扩展安装详解
- Collection List Set和Map用法与区别(转)