最近有两篇关于具有分段线性非线性(包括 ReLU 激活)的深度神经网络的一些几何特性的精彩文章:
- 关于深度神经网络的线性区域数, Montufar、Pascanu、Cho 和 Bengio。
- Pascanu、Montufar 和 Bengio 关于具有分段线性激活的深度前馈网络的响应区域数。
当涉及到神经网络时,它们提供了一些急需的理论和严谨性。
他们的分析围绕着这样一个想法:
尽管使用相同数量的计算单元,深度网络能够将其输入空间分成比浅层网络更多的线性响应区域。
因此,我们可以将具有分段线性激活的深度神经网络解释为将输入空间划分为一堆区域,并且在每个区域上都有一些线性超曲面。
在您引用的图形中,请注意各种 (x,y) 区域在其上具有线性超曲面(看似倾斜平面或平面)。因此,我们在您参考的图形中看到了上述两篇文章的假设。
此外,他们声明(来自合著者的强调):
深度网络能够通过将输入邻域映射到某个中间隐藏层的公共输出来识别指数数量的输入邻域。在这个中间层的激活上执行的计算被复制了很多次,在每个识别的邻域中一次。这允许网络计算看起来非常复杂的函数,即使它们是用相对较少的参数定义的。
基本上,这是允许深度网络具有难以置信的鲁棒性和多样化特征表示的机制,尽管其参数数量少于浅层网络。特别是,深度神经网络可以学习指数数量的这些线性区域。以第一篇参考论文中的定理 8 为例,其中指出:
定理 8:一个 maxout 网络L层宽n0和排名k至少可以计算函数kL−1kn0线性区域。
这同样适用于具有分段线性激活的深度神经网络,例如 ReLU。如果您使用类似 sigmoid 的激活,您将拥有看起来更平滑的正弦超曲面。许多研究人员现在使用 ReLUs 或 ReLUs 的一些变体(leaky ReLUs、PReLUs、ELUs、RReLUs,不胜枚举),因为它们的分段线性结构与可以饱和的 sigmoidal 单元相比允许更好的梯度反向传播(具有非常平坦/渐近区域)并有效地消除梯度。
这种指数结果至关重要,否则分段线性可能无法有效地表示我们在计算机视觉或其他硬机器学习任务中必须学习的非线性函数类型。然而,我们确实有这个指数结果,因此这些深度网络(理论上)可以通过用大量线性区域来逼近它们来学习各种非线性。
至于你关于超曲面的问题:你绝对可以设置一个回归问题,让你的深度网络尝试学习y=f(x1,x2)超曲面。这无异于仅仅使用深度网络来设置回归问题,很多深度学习包都可以做到这一点,没问题。
如果你只想测试你的直觉,现在有很多很棒的深度学习包可用:Theano(Lasagne、No Learn 和基于它构建的 Keras)、TensorFlow,还有很多其他的我确定我要离开了出去。这些深度学习包将为您计算反向传播。但是,对于像您提到的那样的较小规模的问题,自己编写反向传播确实是一个好主意,只需执行一次,然后学习如何对其进行梯度检查。但就像我说的,如果你只是想尝试一下并可视化它,你可以很快开始使用这些深度学习包。
如果一个人能够正确训练网络(我们使用足够的数据点,正确初始化它,训练顺利,坦率地说,这是它自己的另一个问题),那么一种可视化我们的网络所学内容的方法,在这种情况下,一个超曲面,只是在 xy 网格或网格上绘制我们的超曲面并将其可视化。
如果上述直觉是正确的,那么使用带有 ReLU 的深度网络,我们的深度网络将学习指数数量的区域,每个区域都有自己的线性超曲面。当然,重点是因为我们有指数级的多,线性近似可以变得如此精细,并且我们不会感觉到所有的锯齿状,因为我们使用了足够深/足够大的网络。