Press "Enter" to skip to content

一文带你了解卷积网络中的几何学

几何深度学习是个很令人兴奋的新领域,但是它的数学运算逐渐转移到代数拓朴和理论物理的范围。

 

在Cohen等人的论文《规范等变卷积网络和二十面体CNN》中,这种现象尤其明显。这篇论文也正是本文要探讨的对象。论文中使用了规范场理论的用辞,那些喜欢把“量子”和“场”两个词合起来使用的所有的物理学当中,规范场理论居于中心地位。论文承诺对规范场理论的基础知识提供一个直观的解读,其实,我也不得不承认,它做到了,而且它也许是目前我看到的最棒的入门介绍。然而,它终究是个很难的学科。

 

我在这里想做的,是纯直观的解读,不涉及数学。我并不完全依照论文的顺序,但是你仍然可以打开论文对照阅读,而我也尽量标出所有重要的术语。

 

下面我将假设你已经知道卷积神经网络(CNN)的工作原理,但是不明白它与流形(manifold)的关系。现在,让我们开始吧!

 

    流形

 

流形是很简单的东西。你看到的每一个二维平面都可以算做流形。球体表面,立方体表面,都是流形。但是它并不严格限定于二维,甚至不局限于能想像到的东西,真是见鬼。曲线是流形,四维时空是流形。它相当普遍,能够描绘出一个空间。但是,让我们只专注于二维表面。最简单的表面是平面,就像电脑屏幕。当我们用CNN做卷积时,我们往往都是针对这些平面图像来做的。

 

假设,我们想用CNN来预测天气。对一个单独的国家,这很容易:用当地的天气数据作为输入,然后keras-keras-咚,你有了一个训练好的模型。如果我们想对全球天气分类呢?你怎样安置在一张图片里?也许是:

 

 

(来自 Pixabay 的图片)

 

但有一个问题。在现实中,左边缘和右边缘是同一个地点。而且,整个上边缘对应一个点,下边缘也是如此。整个对应关系都扭曲了。有没有试过摊平一个乒乓球?是的,确实没弄好。当我们尝试应用卷积时,我们会得到奇怪的结果。边缘会出现不合常理的情况。它可能会预测图片的最右侧会有强东风,然而图片左边什幺也没有,即使它们代表相同的地点。CNN根本不知道地球是环回的。

 

或者,我们可以对地球生成多个重叠的地图,然后对它们应用CNN。这些地图的集合也称作地图册。在确保下一张地图开始于上一张地图相同的重合点的情况下,把CNN在这些单独的地图上平移,这样应该能让它认识到地球是圆的。这是几何深度学习的基本思想:直接应用深度学习于表面或流形上,以保留几何结构。然而,这有一个问题。一个大问题。

 

    我们去新加坡吧!

 

现在,让我们暂时忘掉天气,然后拿出指南针。假设你在新加坡。面朝北方,经过泰国,穿越中国、蒙古直到北极。保持方向不变,一直往前走。你将会穿越加拿大、美国,直到你抵到美洲中部的某个地方。在那里止步,然后开始横向游泳,穿越太平洋,保持方向不变!经过无数次奋力击水,你会最终回到新加坡。但是等一等。你从没改变方向,但是为什幺现在却是面朝南方?

 

让我们再重复一次旅程,但这次我们抵达北极后,朝左横向移动。我们会到达尼日利亚附近,然后开始向后走,此时还是不改变方向。等我们回到新加坡,这次我们居然朝向西方?奇怪……不相信我?你自己试一试,带一个指南针,然后开始游泳……

 

这个问题是由球面曲度造成的,我们把“不改变方向的移动”叫作平移。你也看到了平移非常依赖于球体上的路径。然而,在二维平面上不受影响。你可以保持方向行走任何一条路径,回到起点后,方向不变。因此,我们说平面是可平行的(回到起点后,你的方向矢量仍旧保持平行),而球面不是。

 

你会发现这对于我们在球面上的CNN来说是一个问题。当我们把CNN在所有地图上朝四面八方移动时,方向似乎会改变。我们需要想办法确保这种怪现象不会影响到我们的结果!或者,至少我们应该知道如何解决它。

 

    毛茸茸的球

 

我们必须引入更多的数学概念才能找到答案。指南针上的指针可以看作是平面上指向某个方向的矢量,基本都指向北方。指针转动所形成的平面与地球表面相切,我们把它称作这一地点的地球切线空间。尽管地球是圆的,但切线空间却是纯平的。它就像是一个本地坐标系统,以北和东作为坐标矢量。因为我们可以在地球任一地点掏出指南针,所以每一个地点都有自己的切线空间。但我们也可以把40°和130°定义为我们的坐标矢量。在这种情况下,北以及其它方向都没特别之处,可以任意选择。

 

现在,让我们在切线空间中任选一个方向,并沿此方向朝前走一步。我们确保走最短路径(曲面上的),然后到达一个新点。你也许会称之为“前进”,但是,让各位糊涂的是,我们把这个过程叫作指数映射(之所以叫这个名字,是因为所有这些微小的步伐神奇地相似于指数函数的级数展开……但这现在不重要)。

 

让我们再看看指南针的指针。指南针为地球上“每个”地点指定了一个矢量的现象叫作(切线)矢量场。风也可以看作是矢量场,因为它为每一个点指定了一个方向。我特别把“每个”加上引号,是因为当你站在磁北极或磁南极时,指南针会出错。事实上,在球面的每一个非零连续矢量场上,它都会出错。球体的磁场中必须有极地存在。这种现象叫毛球定理,因为跟梳理毛球就必然产生漩毛涡的情况很像:

 

 

(图片来自Wikipedia)

 

矢量场不需要跟切线空间有相同维度。相反,在每一点,它可以有自己任意维度的矢量空间。这很重要,因为我们也想能在地球的每一个点上指定三维或99维矢量,而不仅仅是二维方向。场中每一个点上的矢量空间也被称作纤维丛。

 

(一个特殊类型的场叫作标量场。它只有一个维度,温度就可以看作是这样的标量场)

 

    规范

 

每个地方测量温度都不一样。在德国这里,我们用摄氏度。在美国用华氏度。这种不同的选择,叫作规范。是的,这个词是从测量工具那里派生来的。现在,每当我看一条来自美国的天气预报,我不得不计算一下华氏度等于多少摄氏度。我们有不同的准则。这种计算叫作规范变换。注意,实际的温度没有改变,只不过我们用来表示的数值不同,而且变换是简单的线性函数。

 

如果我们考察矢量场,比如风的方向,情况就变得复杂起来。极端一点,我们假设有个国家叫规范国,它并不在乎南北,而是以星座或受惊刺猬逃跑的方位作为他们方向系统的基础。这些人描述风时,我们必须做规范变换才能知道他们在说哪个方向。现在,规范变换变成了可逆矩阵的乘法(显然必须是双向的)。这种矩阵的群,叫作一般线性群,或GL。

 

对于理论上平坦的地面,选择出一个风的规范,到处都可以适用。但是在球面,我们遇到一些问题。我们没法定义一个统一的规范,而是不得不依赖多个规范和地图。至于为什幺必须是这样,从平行化问题和毛球定理中,我们可以获得一些启发。

 

这自然意味着我们需要多个风向地图。但是,我们不再允许规范国乱来,规定至少他们所使用的矢量的大小(风速)必须跟我们的一致。我们只允许他们使用不同的方向。由此,每一个规范变换都简化为了旋转。这些变换也构成一个群,名叫特殊正交群,或SO,它是GL的子群。通过选择不同结构的群,我们有效地减少了规范场理论可能会有的变换。

 

    回到深度学习

 

我们回到原来的问题,想要在风向矢量场上进行卷积。这里,风代表输入特征。假设我们想要找龙卷风方向作为输出。我们可以对“small patch”执行卷积以从风向提取这些输出特征。(注意:我不知道这是否具有气象意义…输入向量到输出向量…这就是我们需要知道的全部)

 

但“small patch”是一个非常模糊的描述。在二维平面上,它是直截了当的,我们可以把一些球内的所有东西都放在补丁的中心周围。这在某种程度上也适用于完美的球体。但在任意的多个面?事情变得棘手。看看这个时髦的流形:

 

 

图像来自维基百科

 

它被称为Klein瓶,我们可以看到,点之间的原始距离是有问题的。我们可能永远不会需要Klein瓶进行深度学习,但我们希望尽可能保持一般性。

 

我们需要的是一种仅在流形附近包含卷积点的方法。我们确实有办法做到这一点。回想一下,指数图在我们的流形上做了微小的步骤来找到附近的点。所以让我们用它。从中心开始,我们向切线空间允许的每个方向迈出一步,并将这一点包含在我们的卷积中。

 

我们现在需要的是一些与卷积相关的函数。因此,我们定义了一个内核,为每个指针分配一个矩阵……等待,不,我们用指数映射的切线空间的每个方向。这有点奇怪,但是当你看到经典的2-D卷积时,它实际上也是如此。它不是那幺明显,因为它在飞机上。

 

该矩阵乘以输入矢量并产生输出矢量。在这里,作者确定了第一个问题。该矩阵仅针对中心定义。但是我们将它应用于附近点的场矢量,它们有自己奇怪的属性。在一个平面上,这不是问题,但在我们的领域,它们略有不同,我们不能只应用内核。

 

让我们解决这个问题并将这些点上的向量传输回我们small batch的中心。在这里,我们可以应用我们的矩阵,而不必担心奇怪的曲率问题。

 

    规范等价


到目前为止我们定义的卷积似乎是明智的。我们应用我们的内核来获取数据并得到一个很好的结果:龙卷风向东移动。但不知何故,与所谓的规范国相比,我们仍然得到不同的结果?他们预测龙卷风正在向左移动?

 

啊,是的:我们需要衡量将他们的结果转化为我们的框架aaa和voila:他们预测龙卷风会向西走..还是错的..

 

发生了什幺?我们忘了让我们的卷积规范变得相同。简而言之,内核的结果必须依赖于所选择的规格并且等效地变换。如果没有,我们只会得到无法相互关联或相互比较的奇怪结果。

 

但是输出矢量可能是一个不同的维度,或者与输入有不同的解释,我们如何将输入的规范变换与输出的等变“规范变换”联系起来?好吧,因为结构组仅作用于输入,所以想法是找到作用于输出向量的同一组的表示。例如,具有旋转组作为其结构组的2-D输入矢量的变换可以由围绕单个轴旋转的3-D输出矢量表示。当2-D矢量旋转时,3-D输出也围绕固定轴旋转。通常,可以存在许多表示,例如在3D中可以存在许多不同的旋转轴。关键是,它做了代表相同动作的事情。

 

有了表示的概念,我们可以使卷积规范变得相同。我们只需要确保输入矢量的规范变换导致输出矢量的等变变换(即,相同的变换,但在适当的表示中)。

 

现在,使用规范等价,当我们在不同的地图上执行卷积时,我们在数字上得到不同的结果,但是他们的结果是一致的。这是我们定义卷积以在整个范围内有意义的最佳方式。

 

    二十面体?

 

我们基本上涵盖了论文的第2部分。作者现在转向二十面体,它与拓扑结构非常相似,但更好。它们更好,我们可以比球体更容易离散它们。

 

就像我们用多个地图覆盖地球时一样,让我们用五个重叠的地图覆盖二十面体(重叠用小的全白三角形表示):

 

 

图像来自论文

 

美丽,地图甚至大小相同。难怪他们选择了这种多样性。我们也可以将其视为图表。注意,每个节点,即每个交叉点,是具有输入特征向量的歧管上的点(在上图中不可见)。每个小三角形都有3个角,每个角都是这些节点之一。他们是我们感兴趣的。

 

那幺,让我们做卷积!

 

首先,我们需要看看我们的指数地图是什幺样的。好吧,在我们的离散流形上,这很容易。我们只是从节点开始向任何方向迈出一步。方向在上图中可见为连接节点的线。因此,大多数节点有6个邻居,除了在二十面体的角落有5个邻居。

 

接下来,我们需要一个内核函数。但我们很懒,不想重新发明轮子。因此,我们只使用标准2D卷积的3 x 3滤波器。这些3 x 3滤波器具有中心点和8个邻居。这比我们需要的还要多。所以,让我们忽略3 x 3网格中的右上角和左下角邻居,将它们设置为0并假装它只有6个邻居。

 

剩下的就是让这个东西变得规范。那幺,让我们来看看我们的二十面体的结构组。我们已经注意到,我们只能进入6个不同的方向。如果我们在这个结构上描述风,我们将只有6个不同的参照系,每个参考系旋转60°。这也可以配制成具有6级或C6的环状基团作为其结构基团。

 

最后,我提到我们的地图是重叠的。因此,如果我们想要在具有重叠的区域上移动卷积滤波器,我们基本上使用来自不同映射的值。我们如何处理这些值?在我们使用它们之前,我们会测量它们到正确的帧。瞧,我们正在对二十面体进行卷积。

 

  结论

 

在我看来,本文为几何深度学习领域提供了基本的结果。在进行卷积时理解规范等价的总体思路和重要性是这里的主要内容。

 

我希望我的非数学解释有助于理解论文中提出的想法。如果你发现这类事情很有趣并想要硬核数学,那幺一定要看看Nakahara的“几何,拓扑和物理”。

 

本文编辑:王立鱼

 

英语原文:https://towardsdatascience.com/an-easy-guide-to-gauge-equivariant-convolutional-networks-9366fb600b70

原标题 |  An Easy Guide to Gauge Equivariant Convolutional Networks

作 者 |  Michael Kissner

译者 | AI小山(工程师)、Mr-UC(中国科学院大学)

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注