机器学习与范畴论 I

上班第一周,老板说组里终于来了个懂数学的,我们有个东西一直搞不明白,论文里用到好多数学,谁都看不下去。论文在arXiv上可以找到:

https://arxiv.org/abs/1711.10455

https://arxiv.org/abs/1804.00746

本文简单介绍一下基本的范畴论(category theory),后续准备在下一篇文章中聊一聊17年11月的论文:自动微分(automatic differentiation,AD)可以实现为范畴论中的函子(functor)。再下一篇聊18年4月的那篇:梯度递降(gradient descent,GD)和反向传播(back propagation,BP)也可以实现为函子。

对深度学习稍有了解的朋友会知道,GD和BP是训练神经网络的最核心的算法,因此可以说深度学习的整个方法论(或者更广泛地说机器学习的整套理论)可以用范畴论给出描述,而且这些描述也有一些比较好的结构和性质,可以期待范畴论中的一些结论会给机器学习提供新的方法和观点。

书归正传,简单说一下范畴论。所谓范畴,包括范畴的对象(objects)、对象之间的态射(morphisms)和态射与态射的复合运算(composition)。一个容易理解的例子是:把每个集合看作一个对象,两个集合之间的映射看作态射,态射的复合就是通常意义下映射的复合,这个范畴我们记作Sets。

范畴的公理化定义除了上述数据之外,还有这些数据所需满足的公理:其一称为恒等公理,即每个对象都有个自己到自己的恒等态射(identity morphism),而且恒等态射与任何态射的复合依旧得到原态射;其二是态射之间的复合满足结合律(associativity)。

对上面的例子Sets,恒等态射就是每个集合里的恒等映射,即f(x)=x。对其他一些范畴,态射可以不是映射,对象可能也不是集合,对象里面没有元素,那恒等也就无从说起。之所以用恒等态射这个名字,是因为范畴论从最开始就是朴素集合论的一个推广,可以说数学家们第一个考虑的范畴就是Sets,很多术语也由此继承而来。Sets中的结合律即普通映射的结合律,这个结果不平凡,但是在集合论中是经典结果,有兴趣的读者可以自行证明或查阅。

其他一些常见的范畴包括:Groups—对象是所有群、态射是群同态,Vect—对象是所有线性空间、态射是线性变换(即矩阵),以上两个例子中的复合依旧是映射的复合。

到这里可能会让读者觉得范畴论只是把集合论里的东西打包而已,事实上虽然最常见的范畴是Sets的各种子范畴,但是也有很多跟大家的直觉不大一样的范畴,下面举个例子(以后打算写篇文章介绍UMAP,是最新出现的用来对数据进行降维的算法,其中的数学原理用到拓扑上的单形simplex,会用到下面这个范畴)。

任何一个偏序集可以看作一个范畴。所谓偏序集(poset,或者partially ordered set),就是集合里的元素之间可能存在序关系。序关系可以看作是广义的大小关系,满足自反性(即任何x都满足x<=x)反对称性(即如果x<=y且y<=x则x=y)和传递性(即如果x<=y且y<=z则x<=z)。所谓偏序就是说并不是集合中任意两个元素都可以比大小,一个例子是集合都包含关系,两个集合可能一个包含另一个,也可能互不包含。与偏序相对应的是良序,即任何两个元素都可以比大小,比如实数集。偏序集看作范畴,其中都对象即集合里的元素,态射就是偏序关系,态射的复合对应传递性,恒等态射对应自反性,结合律是容易验证的。

至此我们介绍里范畴的定义,某种意义上说,范畴可以看作集合的升级版(把元素升级为对象,而且对象和对象之间要有联系),那么集合论中的映射(map,数集之间的映射称为函数——function,大家可能对这个名词更熟悉一些)在范畴论中的对应是什么呢?答案是函子(functor)。两个范畴之间的函子在两个范畴中的对象之间建立联系,同时在态射之间也建立联系,并且这种联系保持范畴中的态射复合、恒等态射等结构,一个简单的示意图如下:

图中两个方框及其中的花体字母表示两个范畴,范畴中大写字母表示对象,小写字母是态射,两个范畴之间的粗箭头表示函子,细箭头表示函子在不同层次上定义的映射。进一步解释一下上面说的函子对范畴结构的保持:函子把恒等态射映到恒等态射,另外我们先对两个态射进行复合运算再进行函子作用,和先分别进行函子作用再到另一个范畴中做复合运算,得到的结果是一样的。

最简单的函子的例子,就是将Sets的子范畴映到Sets,例如将Groups映到Sets,忽略对象上的群结构,只将其看作集合,因此这一类函子叫做遗忘函子(forgetful functors)。一个稍微复杂点的例子如下图所示。

花体S即上述Sets范畴,函子P把一个集合映A到它的幂集P(A)即A的所有子集组成的集合。对图中对态射(即A到B的一个映射)f 而言,P(f)是P(A)到P(B)之间对一个态射,将A的一个子集映到该子集中所有元素在 f 下的像组成的集合,注意该集合一定是B的一个子集,所以是P(B)中的元素。可以证明P把恒等映射映到恒等映射,也保持映射间的复合运算,具体证明感兴趣的读者可自行完成,也是关于集合论的一个不错的练习。

以上介绍了范畴论中的入门知识,有这些知识,我们可以介绍1711.10455这篇论文,其中将微分构造成了函子。这些我们下一篇文章将会细说。

你可能感兴趣的:(机器学习与范畴论 I)