神经网络,流形和拓扑

拓扑学,神经网络,深度学习,流形假设

最近,深度神经网络引起了人们广泛的关注,因为它在计算机视觉等领域取得了突破性的成果。1

但是,他们仍然有一些担忧。一个是人们无法监控到神经网络究竟在做什么。例如一个人训练得好,就能获得高质量的成绩,但要了解这个过程是如何发展的过程是比较困难的。所以网络出现故障,很难理解出了什么问题。

尽管深入了解深度神经网络的行为是一个很大的挑战,但是探索低维深度神经网络 - 每层只有少量神经元的网络要容易得多。事实上,我们可以创建可视化来完全理解这种网络的行为和培训。为了使我们能够更深入地了解神经网络的行为,我们可以将神经网络与数学的拓扑结构关联起来进行研究。

随之而来的是一些问题,例如我们如何界定对于不同数据集进行分类的神经网络复杂性的基本下界。

一个简单的例子

让我们从一个非常简单的数据集开始研究,一个平面上的两条曲线。神经网络将会判定平面上的某个点属于两条曲线中的哪一条

简单的数据集

可视化神经网络的行为或任何分类算法的比较简单的方法就是查看它如何分类每个可能的数据点。

我们将从最简单的神经网络开始。这样的网络只是试图通过用一条线来分隔两类数据。

简单神经网络分割数据点

这种简单神经网络没有什么研究意义。因为现代神经网络通常在其输入和输出之间具有多个层,称为“隐藏”层。这些复杂网络至少有一个“隐藏”层。

来自Wikipedia的简单网络图

和以前一样,我们可以通过查看神经网络中的不同点的划分来研究神经网络的行为。它将数据分成比一条线更复杂的曲线。

复杂的神经网络划分数据点

每一层,神经网络将数据转换创建一个新的representation(表示)2。我们可以查看每个表示中的数据以及神经网络如何对它们进行分类。当神经网络通过将数据转换成不同的表示后,神经网络将会在数据平面(或者更高维的超平面)中画一条线。

在之前的可视化中,我们以“原始”表示的形式查看数据。我们就相当于在输入层中直接看这些数据表示。现在我们将在第一层被转换之后再来看数据表示。你可以想象成我们在看隐藏层中的数据。

每个维度对应于图层中的神经元的活动。

一层处理后的可视化数据

连续可视化图层

在上一节中概述的方法中,我们通过查看与每个图层相对应的表示来了解神经网络。我们获取到了一个离散的representation(表示)列表。

比较困难的部分是我们如何从一个表示到另一个表示。值得庆幸的是,神经网络图层使得这一过程变得非常简单。

神经网络中使用了各种各样的层。我们将讨论一个具体的例子tanh层。Tanh层tanh(Wx + b) 包括:

  1. 由“权重”矩阵W的线性变换
  2. 由矢量b
  3. 单点应用tanh。

我们可以通过持续变化看到神经网络处理数据的过程:

神经网络处理过程

这个与其他标准层的情况大致相同,其中包括仿射变换,然后逐点应用激励函数。

我们可以运用这种技术来了解更复杂的网络。例如,以下网络使用四个隐藏层将两个稍微纠缠的螺旋分类。随着时间的推移,我们可以看到它从“原始”表示转变为更高层次的表达的过程。虽然螺旋本来是纠缠在一起,但最终它们是线性可分的。

另一方面,下面的网络,也是使用多层,却无法分割纠缠更复杂的两个螺旋。

这里值得明确的指出,这些任务只是有点挑战,因为我们仅使用了低维神经网络。如果我们使用高维度的神经网络,这一切都将非常简单。

(Andrej Karpathy已经根据ConvnetJS做了一个很好的演示,可以让你通过这种可视化的训练来交互式地探索网络)

tanh层的拓扑

每一层都会拉伸和挤压空间,但不会切割,折断或折叠。直觉上,我们可以看到它保留了拓扑性质。例如,一个数据集合在被处理变化后还能与变化之前相关联。

像这样的不影响拓扑的变换被称为同胚。从形式上来说,它们是双向连续函数。

定理:如果权重矩阵W是非奇异的,那么具有N个输入和N个输出的层是同胚的。 (需要注意区域和范围是否相同。)

证明:我们一步一步考虑这个问题:

  1. 我们假设W是一个非零行列式。那么它是一个具有线性可逆的双线性函数。线性函数是连续的。所以,乘以W是一个同胚。
  2. 变换是同胚的
  3. tanh(和sigmoid还有softplus)是反函数连续的连续函数,但是ReLU不是。如果我们规定了合适的定义域,他们就是双向连续的。逐点应用函数后就是同胚

因此,如果W是一个非零行列式,我们的层变换就是一个同胚。∎

如果我们把这些层中的许多层合在一起的话,结果仍是同胚。

拓扑和分类

A是红色的,B是蓝色的

考虑具有两个类的二维数据集A,B是包含于2维实数集合的:

A = {x | d(x,0) < 1/3}

B = {x | 2/3 < d(x,0) < 1}

要求:不管深度如何,神经网络需要有3层或3层以上的隐藏层来处理才可能分割开这个数据集合

如前所述,用sigmoid单元或softmax层进行分类相当于试图找到一个超平面(或在这种情况下是一条线),可以将A和B分割开。但是在只有两个隐藏层的网络拓扑结构中不可能以这种方式分离数据。

在下面的可视化图片中,我们观察到网络训练时的隐藏表示,以及分类线。正如我们所看到的,它正在努力学习如何去做这件事。

最后它被拉到了一个无法分割开的形状。虽然,它实际上能够实现80%的分类准确性。

因为这个例子只有一个隐藏层,所以无论如何都会失败。

证明:每一层都是同胚或者该层的权重矩阵具有全0行列式。如果它是一个同胚的,A仍然被B环绕,不能将它们分开。但是假设它有一个0的行列式:那么数据集就会在某个轴上折叠。由于我们正在处理与原始数据集同胚的类,且A被B环绕着,任何轴上的折叠都会使A与B重叠二无法分离。

如果我们添加第三个隐藏单位,问题就变得微不足道了。神经网络学习如下表示:

有了这个表示,我们可以用超平面分割此数据集。

为了更好地理解发生了什么,让我们考虑一个更简单的1维数据集:

一维数据集

A=[−13,13]

B=[−1,−23]∪[23,1]

如果没有使用两层或更多隐藏单元,我们无法对这个数据集进行分类。但是,如果我们使用两个隐藏单元,我们可以将数据表示为一条很好的曲线,使我们能够用一条直线来分隔类:

发生了什么?当x > - 1时,一个隐藏单位学会命中x>-1/2,而另一个隐藏单元会命中x < 1/2。当x > -1/2且x < 1/2时,那就是类别A

流形假说

这与现实世界的数据集,如图像数据有关吗?如果真的认真对待多种假设,我认为这是有可能的。

流形假设是自然数据在其嵌入空间中形成低维流形。理论3和实验4都有充分的证据证实这一点。如果你相信这一点,那么分类算法的任务就是从根本上分离一堆纠缠的流形。

在前面的例子中,一类完全包围另一类。然而,狗的影像似乎不可能完全被猫影像流形包围。但是,还有其他一些更合理的拓扑结构供我们研究,我们将在下一节中看到。

链接和同胚

另一个值得考虑的有趣数据集是两个连接的圆环面,A和B。

圆环面

就像我们考虑的以前的数据集一样,这个数据集不能使用n + 1维来分离,即四维。

这个链接可以用拓扑领域的结理论(knot theory)来研究。有时候,当我们看到一个链接,它确定是否是一个真实的链接(一堆纠结在一起,但可以通过连续变形分离)。

一个相对简单的非连接

如果使用仅有3个单位的层的神经网络可以对它进行分类,那么它是非连接的。(问题:从理论上讲,只有3个单位的网络是否可以将所有的连接分类?)

从这个结点来看,我们连续可视化的神经网络产生的表示不仅仅是一个的动画,它是一个解开连接的过程。在拓扑结构中,我们将其称为原始链接和分离链接之间的环境同位素

形式上,流形之间的环境同位素A和B是一个连续的函数F:[0 ,1] × XY,这样每个Ft是X的一个同胚到它的域,F0是单位函數,而F1是从A到B的映射。那么函数Ft就是不断从A的同胚中来完成映射A到B。

定理:在输入和网络层的表示之间是同伦的,如果:a)W不是奇异的,b)我们愿意排列隐藏层中的神经元,c)有超过1个隐藏单元。

证明:同样,我们分别考虑网络的每个阶段:

  1. 最难的部分是线性转换。为了做到这一点,我们需要W有一个积极的决定因素。当然前提是它不是零矩阵,如果没办法切换两个隐藏的神经元,我们可以翻转这个符号,这样我们可以保证行列式是正的。正行列式矩阵的空间是路径连接的,所以存在p:[0,1]→GLn(ℝ)p:[0,1]→GLn(R)5 ,使得p(0)=Idp(0)=Idandp(1)=Wp(1)=W。我们可以不断从单位函数转换到W用函数x→p(t)x,乘以X在每个时间点t通过连续转换矩阵p(t)
  2. 我们可以不断从单位函数转换到b用函数x → x + tb
  3. 我们可以连续地从恒等函数来逐点使用σ的与功能转变:X → (1-t)x + tσ(x)

我想如果有一个程序可以自动发现这样的环境同位素,并自动证明某些链接的等价性,或某些链接是可分的那一定很有趣。神经网络是否能击败艺术的现状是很有意思的议题。

(显然如果knots是非常复杂的非定常多项式(NP),这对于神经网络来说不是一个好兆头。)

到目前为止,我们讨论过的那种连接看起来似乎不太可能出现在现实世界中,但是有更高维度的描述。在现实世界的数据中似乎可能存在这样的事情。

连接和结是111维度流形,但是我们需要4个维度来解决所有这些问题。同样,人们可能需要更高维度的空间才能够解开n维流形。所有n维流形可以在2 n + 2维中解开。6

(我对结理论知之甚少,真的需要更多地了解关于维度和连接的已知知识,如果我们知道一个流形可以嵌入到n维空间中,而不是多维的维数,我们有什么限制? )

简单的出路

神经网络自然而然的做法是,非常简单的路线是尝试将上限拉开,并尽可能地拉伸缠绕的部分。虽然这不会接近真正的解决方案,但它可以达到相对较高的分类准确度,并且是一个最小值。

它会在试图拉伸的区域表现为非常夸张的形状,而且在它试图拉伸的地方导数很大,并且会出现尖锐的断层。7为了解决这个问题,我们可以通过引入压缩来缓解这一现象。8

由于这类局部极小值从解决拓扑问题的角度来看绝对没有用处,所以拓扑问题可能为探讨这些问题提供了一个很好的着手点。

另一方面,如果我们只关心取得良好的分类结果。如果数据流形的一小部分在另一个流形上被截断了,这似乎对我们没有影响。尽管如此,我们似乎应该能够得到更好更准确的分类结果。

(我的直觉是试图以这样的方式来欺骗这个问题是一个坏主意:很难想象它不会是一个死胡同,特别是在一个局部最小化是一个大问题的优化问题中,不能真正解决问题似乎是一个糟糕的表现配方。)

更好的层次操纵流形?

我对标准神经网络层次的思考越多(标准神经网络也就是说,仿射变换之后是点激活函数),我就越迷惑。

也许有一个不同的层,我们可以用来对传统知识的方式进行分类?

我就去学习了矢量场,这是我觉得可以成为下一个操作流型的方法:

然后根据它来变形空间:

人们可以在固定点学习矢量场(只需从训练集中取一些固定点作为锚点)并以某种方式进行插值。上面的矢量字段的形式是:

其中V0v1是矢量和f0(x)f1(x)是n维高斯面。这是由径向基函数而来的。

K-最邻近层

我开始觉得,线性可分离性可能是不合理的,相当于神经网络的需求量。在某些方面,感觉自然要做的是使用k最近邻(k-NN)。然而,k-NN的成功在很大程度上取决于它对数据进行分类的表示,因此一个好的数据分类表示是k-NN的必要条件。

作为第一个实验中,我通过训练取得了一些MNIST网络(两层卷积网,没有下降现象)约1 %测试错误率。然后,我放弃了最后的softmax层,并使用了k-NN算法。我能够始终如一地将测试误差降低到了0.1-0.2%。

尽管如此,这还不是很正确。网络仍然试图进行线性分类,但是由于我们在测试时使用了k-NN,所以它能够从纠正此错误。

由于1 /距离权重,k-NN关于其所作用的表示是可区分的。因此,我们可以直接训练一个网络进行k-NN分类。这可以被认为是一种“最近邻居”层,可以作为softmax的替代品。

我们不希望为每个小批量的整个训练集进行前馈,因为这会导致计算量非常大。我认为一个很好的方法是根据最小批量的其他元素的类别对每个小批量的元素进行分类,给每个元素赋予1 /(距离分类目标的距离)的权重。9

令人遗憾的是,即使使用复杂的体系结构,使用k-NN也只会降低5-4%的测试错误 - 而使用更简单的体系结构会导致更糟糕的结果。

不过,我真的很喜欢这种方法,因为我们“要求”网络做的方式似乎更合理。我们希望同一个流形的点比其他点更接近,而流形可以用超平面分离。这应该对应于不同类别的之间的膨胀空间来分离流型。这就像简化。

结论

数据的拓扑属性(如链接)可能会使无法使用低维网络线性分隔类。即使在技术上可行的情况下,例如螺旋,这样做也是非常具有挑战性的。

为了用神经网络准确地分类数据,有时需要宽层。而且,传统的神经网络层在表示重要的流形操作方面似乎不是很好; 即使我们巧妙地手动设置权重,但要紧凑地表示我们想要的转换也是很难的。新的处理层,特别是机器学习的多样性的处理方法,可能是有用的补充。

(这是一个正在开展的研究项目,作为一个公开的研究实验,我很乐意收到你对这些想法的反馈意见,你可以在线或在最后发表评论,对于错别字,技术错误或你想要的澄清看到添加,你可以在github上提交你的变动。)

致谢

感谢Yoshua Bengio,Michael Nielsen,Dario Amodei,Eliana Lorch,Jacob Steinhardt和Tamsyn Waterhouse的评论和鼓励。

  1. Krizhevsky 等人似乎真的开始了这个工作,(2012),他们拼凑了许多不同的作品,取得了优异的成绩。从那以后,还有许多很棒的工作。
  2. 希望这些表示可以使数据“更好”,以便网络分类。最近有很多工作在探索交涉。也许最令人着迷的是自然语言处理:我们学习的词语表达,称为词嵌入,具有有趣的属性。见Mikolov et al(2013年)Turian et al (2010年)理查德·瑟歇的工作。为了给你一个快速的味道,有一个非常漂亮的与Turian纸相关的可视化
  3. 你可能想对图像执行很多自然转换,比如翻译或缩放对象,或者改变光照,如果连续执行它们,会在图像空间中形成连续的曲线。
  4. Carlsson 等人 发现当地的图像补丁形成一个克莱恩瓶。
  5. GLn(ℝ)GLn(R)是可逆n × n对实数矩阵,正式称为一般线性群n
  6. 维基百科关于等值版本的小节中提到了这个结果。
  7. Szegedy et al。在那里他们能够修改数据样本,并发现一些细微的修改,导致一些最好的图像分类神经网络misclasify数据。这很麻烦。
  8. 压缩性自动编码器引入了压缩性惩罚。参见Rifai et al。(2011年)
  9. 我使用稍微不太完美,但大致相同的算法,因为在Theano中实现更为实用:同时feedforward两个不同分支,并基于彼此进行分类。

本文的版权归 Hi胡瀚 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏汪毅雄的专栏

机器学习之数据清洗与特征提取

本文详细的解释了机器学习中,经常会用到数据清洗与特征提取的方法PCA,从理论、数据、代码三个层次予以分析。

6.9K5
来自专栏AI科技大本营的专栏

撕起来了!谁说数据少就不能用深度学习?这锅俺不背!

作者 | Andrew L. Beam 编译 | AI100 撕逼大战,从某种角度,标志着一个产业的火热。 最近,大火的深度学习,也开始撕起来了。 前几日,有一...

4597
来自专栏AI研习社

手把手教你从零起步构建自己的图像搜索模型

很多的产品是基于我们的感知来吸引我们的。比如在浏览服装网站上的服装,寻找 Airbnb 上的假期租房,或者领养宠物时,物品的颜值往往是我们做决定的重要因素。想要...

1213
来自专栏IT派

【源码】Python的开源人脸识别库:离线识别率高达99.38%

如果你觉得好的话,不妨分享到朋友圈。 以往的人脸识别主要是包括人脸图像采集、人脸识别预处理、身份确认、身份查找等技术和系统。现在人脸识别已经慢慢延伸到了ADAS...

7416
来自专栏大数据文摘

吴恩达深度学习中文版笔记:人脸识别和神经风格转换

28811
来自专栏大数据文摘

能模仿韩寒小四写作的神奇递归神经网络(附代码)

3875
来自专栏量子位

称霸Kaggle的十大深度学习技巧

在各种Kaggle竞赛的排行榜上,都有不少刚刚进入深度学习领域的程序员,其中大部分有一个共同点:

1581
来自专栏SimpleAI

【DL笔记10】迁移学习——光明正大“窃取”他人成果

从【DL笔记1】到【DL笔记N】,是我学习深度学习一路上的点点滴滴的记录,是从Coursera网课、各大博客、论文的学习以及自己的实践中总结而来。从基本的概念、...

2473
来自专栏AI科技评论

学界 | 港中文AAAI录用论文详解:ST-GCN时空图卷积网络模型

AI 科技评论按:第 32 届 AAAI 大会(AAAI 2018)日前在美国新奥尔良进行,于当地时间 2 月 2 日至 7 日为人工智能研究者们带来一场精彩的...

4867
来自专栏钱塘大数据

Python的开源人脸识别库:离线识别率高达99.38%

以往的人脸识别主要是包括人脸图像采集、人脸识别预处理、身份确认、身份查找等技术和系统。现在人脸识别已经慢慢延伸到了ADAS中的驾驶员检测、行人跟踪、甚至到了动态...

2K7

扫码关注云+社区

领取腾讯云代金券