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

文章发布于公号【数智物语】 (ID:decision_engine),关注公号不错过每一篇干货。

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

作者 | Michael Kissner

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

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

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

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

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

01流形

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

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

(来自 Pixabay 的图片)

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

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

02我们去新加坡吧!

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

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

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

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

03毛茸茸的球

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

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

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

(图片来自Wikipedia)

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

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

04规范

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

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

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

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

05回到深度学习

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

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

图像来自维基百科

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

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

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

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

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

06规范等价

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

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

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

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

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

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

07二十面体?

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

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

图像来自论文

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

那么,让我们做卷积!

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

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

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

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

08结论

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

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

星标我,每天多一点智慧

原文地址:https://www.cnblogs.com/shuzhiwuyu/p/11232611.html

时间: 2024-10-09 22:33:55

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

卷积网络中的几何学你了解多少?

几何深度学习是个很令人兴奋的新领域,但是它的数学运算逐渐转移到代数拓朴和理论物理的范围. 在Cohen等人的论文<规范等变卷积网络和二十面体CNN>中,这种现象尤其明显.这篇论文也正是本文要探讨的对象.论文中使用了规范场理论的用辞,那些喜欢把“量子”和“场”两个词合起来使用的所有的物理学当中,规范场理论居于中心地位.论文承诺对规范场理论的基础知识提供一个直观的解读,其实,我也不得不承认,它做到了,而且它也许是目前我看到的最棒的入门介绍.然而,它终究是个很难的学科. 我在这里想做的,是纯直观的解

一文带你搞懂 MySQL 中的分区!

作者:GrimMjx https://www.cnblogs.com/GrimMjx/p/10526821.html 一.InnoDB逻辑存储结构 首先要先介绍一下InnoDB逻辑存储结构和区的概念,它的所有数据都被逻辑地存放在表空间,表空间又由段,区,页组成. 段 段就是上图的segment区域,常见的段有数据段.索引段.回滚段等,在InnoDB存储引擎中,对段的管理都是由引擎自身所完成的. 区 区就是上图的extent区域,区是由连续的页组成的空间,无论页的大小怎么变,区的大小默认总是为1M

TCN时间卷积网络——解决LSTM的并发问题

TCN是指时间卷积网络,一种新型的可以用来解决时间序列预测的算法.在这一两年中已有多篇论文提出,但是普遍认为下篇论文是TCN的开端. 论文名称: An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling 作者:Shaojie Bai 1 J. Zico Kolter 2 Vladlen Koltun 3 自从TCN提出后引起了巨大反响,有人认为 时间卷积网络(TCN)

可变形的卷积网络

机器学习_深度学习_入门经典(博主免费教学视频系列) https://study.163.com/course/courseMain.htm?courseId=1006390023&share=2&shareId=400000000398149 本文链接:https://blog.csdn.net/yeler082/article/details/78370795原文链接:Deformable Convolutional Networks 代码链接:https://github.com/m

Cisco UCS环境中CentOS带Vlan ID的网络配置指南

最近新进了一批Cisco UCS C系列服务器,经过两周的部署安装终于可以进行测试了.本文简要介绍一下cisco UCS服务器中操作系统(CentOS 6)的网络配置.可以简单的认为,本文描述的是一台物理服务器用网线将网卡连接到上层交换机的trunk模式的端口中的网络配置. 物理连接拓扑图如下所示. 顶层采用Cisco C3560物理交换机,为整个机群提供Internet连接.Vlan划分为两个,一个管理Vlan一个应用Vlan,Vlan ID分别为4和31,上联端口全部设置为trunk模式.

TensorFlow 中的卷积网络

TensorFlow 中的卷积网络 是时候看一下 TensorFlow 中的卷积神经网络的例子了. 网络的结构跟经典的 CNNs 结构一样,是卷积层,最大池化层和全链接层的混合. 这里你看到的代码与你在 TensorFlow 深度神经网络的代码类似,我们按 CNN 重新组织了结构. 如那一节一样,这里你将会学习如何分解一行一行的代码.你还可以下载代码自己运行. 感谢 Aymeric Damien 提供了这节课的原始 TensorFlow 模型. 现在开看下! 数据集 你从之前的课程中见过这节课的

旧文备份: 工业网络中单片机节点的地址和波特率设置方式

在工业应用中有很多单片机组网的应用,无论是485网络.CAN网络还是其他什么网络,都会涉及到节点地址的设置问题,下面就来探讨几种地址的设置方式: 硬件设置 在单片机电路板上,加一个拨码开关,以二进制的开关状态表示地址值,拨码开关由单片机的I/O去检测,单片机可以在每次上电去检测一下拨码开关的状态,设置本节点的地址,也可已定期比如500mS去查询一次开关的状态,动态设置本节点地址,建议采用上电检测的方法,因为该方法简单实用,可以在检测后初始化与地址相关的一些资源,如果采用动态检测的方法,不但占用系

深度卷积网络CNN与图像语义分割

转载请注明出处: http://xiahouzuoxin.github.io/notes/ 级别1:DL快速上手 级别2:从Caffe着手实践 级别3:读paper,网络Train起来 级别3:Demo跑起来 读一些源码玩玩 熟悉Caffe接口,写Demo这是硬功夫 分析各层Layer输出特征 级别4:何不自己搭个CNN玩玩 级别5:加速吧,GPU编程 关于语义分割的一些其它工作 说好的要笔耕不缀,这开始一边实习一边找工作,还摊上了自己的一点私事困扰,这几个月的东西都没来得及总结一下.这就来记录

R-FCN:基于区域的全卷积网络来检测物体

http://blog.csdn.net/shadow_guo/article/details/51767036 原文标题为"R-FCN: Object Detection via Region-based Fully Convolutional Networks ",作者代季峰 1,14年毕业的清华博士到微软亚洲研究院的视觉计算组,CVPR 16 两篇一作的会议主持人~ ╰(°▽°)╯ 同时公布了源码~ 2 后面主要内容为原文随便的翻译或概括.必有不紧贴原文原意之处,曲解请指出,否则