[Lan Xie Notes] Neural Networks, Manifolds, and Topology

2018-11-07

Posted by 谢澜

from colah.github.io

 

Neural Networks, Manifolds, and Topology

神经网络,流形和拓扑学


1. 一个简单的例子

我们需要对图1(a)的数据进行二分类 。

  • 如果只用最简单的神经网络,一个输入层、一个输出层,那么我们只能得到线性分类的结果如图1(b)所示。
  • 如果使用一个包含一层隐藏层的神经网络,得到的结果如图1(d)所示。

WechatIMG94

 图1

    在经过网络的隐藏层后,网络将对数据进行变化,产生一个新的表示 (representation)。在本例中,隐藏层学习到了原始数据的新表示,如图1(c)所示。在新的表示下,可以通过线性(或超平面)对数据进行分类。

2. 层的连续可视化

我们考察隐藏层在对一个输入层进行变化时发生了什么。例如,在使用tanh(Wx+b)作为隐藏层的激活函数时,隐藏层的输入和输出之间的变化过程如图2所示。

WechatIMG95

图2

    这样的变化过程可以总结为:对输入x通过点积(point-wise application)进行仿射变换(affine),然后通过一个单调(monotone)的激活函数

下面是一个更复杂的例子,使用了4个隐藏层,使得最终结果是线性可分的:

WechatIMG96

图3

    但是如果使用更多的隐藏层,可能使得结果并不能得到很好的分类结果(此处图可见原博客)。

 

3. tanh层拓扑结构

每一层可以对空间进行拉伸和挤压(stretch and squish),但是不会对空间进行切割、破坏和折叠(cut,break,fold)。直观上,数据的拓扑经过一层后是仍然保持的。不改变拓扑的变换被称为同胚(homeomorphisms)。

定理:一个有N个输入、N个输出、且权重矩阵W是非奇异的(满秩)的层是同胚的。

 

4. 流形假设(manifold hypothesis

流形假设指的是自然数据是在其空间中由低维的流形构成的。环(link)和结(knot)是一维的流形。

 

5. 环(link)和同伦(Homotopy

用纽结理论(knot theory)来解释神经网络可视化做的事情,就是把扭在一起的结,不经过切割而打开。在拓扑学中,我们称原始纽结和分离的结之间的状态为活结(ambient isotopy)。如下图,就是一个活结(unlink)。活结有什么好处?可以通过各种变换达到线形可分。

WechatIMG98

图4

定理:如果输入和隐藏层表示之间有活结,需要满足:a) W是非奇异的(满秩),b) 隐藏层的神经元是可以任意排列的,c) 隐藏层至少有1层。

 

5. 简单地去理解神经网络干了啥

神经网络要做的事情就是把很多交织的流形,通过不断的拉扯,将它们分离,使得每个独立流形越“瘦”越好(可能是比较好线性分离?)。

 

6. 操纵流形有没有更好的方式?

一个标准的神经网络,就是把数据进行仿射变换,然后再通过一个点积的激活函数。再仔细想想,这个方法的做法好像并没有那么吸引人了。

考虑一下我们想对流形操作的目的——就是想让不同的流形分离。对于colah而言,他认为应该学习一些向量,可以直接操作于流形上,这样的向量可能是像图5(a)这样的。空间经过这样的向量变形后,变成图5(b)这样。

WechatIMG97

图5

    人们可以在某些固定的点处(比如从训练集中选出一些anchor)学习这些向量,并通过某些方式进行插值(interpolation)得到一个新的表示。