通过神经网络可以模拟任意的布尔运算与多项式运算。
神经网络模拟情况的好坏取决于网络的深度和宽度。如果只用一层的话需要的节点数将会呈指数级增长,因此我们会用多层网络来进行模拟。
同时在网络的训练过程中在每一层的传递时需要考虑信息的损失,sigmoid激活函数会损失两端的信息,造成失真现象,常用于最后一层不需要回传信息时。其余层多用ReLU函数进行激活保留各层信息。
¥
支付方式
请使用微信扫一扫 扫描二维码支付
请使用支付宝扫一扫 扫描二维码支付
通过神经网络可以模拟任意的布尔运算与多项式运算。
神经网络模拟情况的好坏取决于网络的深度和宽度。如果只用一层的话需要的节点数将会呈指数级增长,因此我们会用多层网络来进行模拟。
同时在网络的训练过程中在每一层的传递时需要考虑信息的损失,sigmoid激活函数会损失两端的信息,造成失真现象,常用于最后一层不需要回传信息时。其余层多用ReLU函数进行激活保留各层信息。
神经网络是一个通用逼近器
突然就了解到了图像,或者语意分割是怎么实现的了,我们之前就说,一个三层的神经网络可以你和任何形状的的函数,只要这个神经网络足够深,或者输入的特征足够多,他就可以拟合出一个人的形状,并且对其进行分类,在圈内的东西是“人”,在圈外的东西是“非人”。
depth matters
相比于布尔门来说,阈门更加重要。
若限制MLP的深度D,则需要指数级别的单元。
————————————————
MLP作为classifier:
实际就是找到一个复杂的决策边界,边界内得到1,边界外得到0.
感知机只能具有线性边界。
一个隐藏层的MLP只能组成凸的多边形。
所以,无法得出非凸的边界。
随着不断增加边的数量,将会得到一个圆柱体,圆柱体内部的和为N,然后很快减小到N/2。
含有一个隐藏层的MLP,可以对任意一个分类器任意精度的边界建模,但是这将需要指数数量的神经元,神经元数量将接近无限。
上述阐述了deep的重要性。
——————————————————
MLP是一个通用布尔机器/通用分类函数/是一个两层或者一个隐层的通用分类器。
更深的网络需要更少的神经元。
————————————————————
优化depth/width
若第一层隐含层的感知机数量减少一半,则会丢失很多信息。没有方法可以从不完全的输入信息中恢复。
每一层必须足够宽,来捕获那一层所需要的信息。
一旦达到sigmoid阈值函数的饱和区,所有信息都丢失了,所以保留的信息,仅仅是离边界不是很远的信息。
现代神经网络很少用sigmoid(更饱和),在前面的层中,实际上不会传递信息。在最后一层,可以用sigmoid。
并不是说,sigmoid或者阈值函数是很差的激活函数,只是说,使用这些,你将会需要更多的神经元。
总结:提升网络容量的不同方法:deeper and wider。
使用分层的激活函数。如果在前面丢失了信息,后面的层中,将无法恢复。因此,应该尽可能不在前面的层中丢失信息。但是,简单地线性传递所有信息,也不能实现任何东西,实际上应该在每一个点上都做出决定。
布尔函数到阈值电路,到实函数,其实都可以使用MLP来表达,其中当深度被限制的时候,宽度就需要指数级别,因此优化深度变得很重要。
如何理解深度优化,从理解MLP可以对真是输入进行通用分类说起,MLP可以为真实输入提供一个复杂的决策边界。单层感知机只能表达一个线性的边界判别,对于复杂的情况无能为力。此时就需要进行组合,增加深度去组合,就是扩展深度。
但是在此之前,还是去理解下为什么只使用一层隐藏层能表达任意决策边界,但是是不可行的。因为此时需要无数个感知器才可行,去无限的近似目标边界。具体看课程的多边形到圆柱的演化,此时边界的确定,可以通过指数量的圆柱去填充近似表达。
不可行则通过增加层数(深度),接下来的问题是如何优化设定层数和层节点?一系列的例子说明,更深的网络需要更少的节点(神经元),其实深度学习中一直有更深更窄会更好的说法,而固定深度往往是不太满意的。
接下来要解决的是MLP去表达一个连续的实值问题,还是可以转换到几何意义的近似表达,类似微分的区域抽取(圆柱)来表达填充,就可以得到任意数值的MLP表达。而在输出时,使用激活函数,可以将输入值核定到一个具体的区间内。
MLP设定为一定深度的结构后,那么激活函数和节点数量如何设定,这个结构是有效的?这里MLP实际是个数据的过滤器,逐层的去保留边界内的数据,这个过程其实就是一种搜索过程,在原来的整个输入空间中找到决策边界对应的空间。那么合适的阈值控制激活函数会达到不同的过滤性质。过滤的好坏一般是考虑下层不需要进行信息恢复,即激活过程没有信息的损耗。比如sigmod函数会将边界内大部分信息有效保留,但是在下层会将这些信息进行距离化,则需要恢复,并且还有部分信息的丢失。此时只捕捉边界的激活函数会更好,比如RL。
那么有了激活函数的过滤,MLP的深度和节点都可以被优化减少,因为向前的信息是逐渐减少的。就是说,好的激活函数会减少层数和节点数。
最后总结来说,结构的充分性,即MLP网络的容量的设定是由宽度、深度和激活函数来决定的,而网络的容量是一致捕获能力的表达,在不同模式不同区域中去将空间划分为多少个不同的凸包,但是这里没有更好的范式去描述网络的容量,但是这个网络容量确实可以模拟事物,尤其去提升这个网络容量。
神经网络可以作为通用的布尔函数,实值函数逼近器,层数越多,越能模拟更复杂的函数,并随着层数增多,每层需要的节点也呈现指数下降
1.香农定理
2.感知机中的激活函数作用于输入组合的映射上,sigmoid、tanh、softplus或分类器等其他激活函数将有一个共同的作用范围。
3.对于MLP每一层必须足够宽以充分提取信息(否则在浅层丢失的信息是无法恢复的)。
神经网络作为通用逼近器:
激活函数
一个MLP只要它无限宽或无限深,就可以解决指数级别宽的问题。并且最佳宽度取决于布尔函数的复杂性理论所需要变量个数。
大多数布尔函数,阈门是一个多项式函数,并且n是一个最佳深度,如果限制深度的话,需要指数级别的单元。那意味着,如果限制深度,正如限制MLP的深度,那么大多数的函数是无法表达的。因此,更深意味着更好。如果增加深度,意味着你可表达的函数,也呈指数级增加。
我们在现实中更多讨论的是分类问题,我们已经将MLP作用于真实的输入,MLP实际上就是找到一个复杂的决策边界,如果你是在做分类,边界内得到1,边界外得到0。单个感知机只是一个线性分类,它使用一个线性边界,它实际上是一个超平面。一侧输出是0,一侧输出是1,这是二维的,感知机就是类似于这样的形式,我们可以计算或与非逻辑,但无法计算XOR,因为XOR并非是一个阶梯函数,XOR横切与对角线,一旦越过对角线就回来了,因此无论你所做的感知机如何复杂,都无法表达XOR,感知机只能具有线性边界。但我们可以使用MLP组合一个随机的决策边界,得到任意的凸多边形(一个隐藏层的MLP只能组成凸多边形)。如何做出非凸的决策边界呢?我们通过叠加多余一层的网络来得到任意决策边界。但我们可以只使用一个隐藏层构成一个任意的决策边界吗?
含有一个隐藏层的mlp可以对任意一个分类器任意精度的边界建模,但是这将会需要指数数量的非常大的神经元数量将接近无限。
现在浅层网络需要的神经元的数量,是输入维度的潜在指数,任何时候固定你网络的深度,对于一个特别大的函数来说这都是浅层的。MLP是一个布尔机器,甚至是一个单隐层的网络作为布尔机。多层感知机是一个通用分类函数,甚至是一个两层或者一层隐层的通用分类器。但是相对于一个深层网络,一个单隐层的网络可能需要指数级数量的感知机。建造同样的函数,更深的网络可能需要更少的神经元。
MLP是通用布尔函数、通用分类器、通用逼近器。一个单层MLP可以近似任意精度,但对于输入尺寸会有指数级或者无限宽,MLP可以用更少的神经元实现同样精度。更深层次的网络更具表现力,即可以构建更多类型的函数。