||
最近开始认真学习范畴学,主要是通过听取鲁学星老师在“范畴学与AI”的系列讲座,再通过和某个国产聊天机器人对话来学习来得到理解的。
先给出对范畴概念用自己的话表述的理解,什么是“数学范畴”呢?(顺便解释一下为什么一定要强调是数学范畴概念,是为了区分和哲学范畴概念的。当然和哲学概念的范畴有一定联系,熟悉哲学的老师的亲切感是有道理的。但需要注意的是,只是亲切感,不是完全一致的)。下面言归正卷:
数学范畴,是一种用于对数学对象进行分类的工具。可理解为是:数学对象分类器。
数学对象:在数学理论中出现的所有结构性事物,都是数学对象。如一个集合,一个代数结构(如一个群、环、域、代数等),一个几何图形,一个函数,一个空间等等。其中每个对象的名称,实际就标识了这些对象彼此是“结构”不同的。因为它们的“结构”不同,所以被归属为不同的对象类中。
顺便吐槽一下数学:应该把对象类和对象实例集合的概念区分开来,数学上的这种不区分类与全体实例集合的表述至少是在语义上不严格的,这是否会影响数学证明,或是可能的(容易引起类-例集概念偷换引起的悖论。如:一个对象归属某个类和属于该类的全体可能实例集合虽然数学上等价,但其语义是不同的,表述的并不是同一个事实。这会造成量词表述上的人为复杂性,需要在量词表述上来区分类与实例集合的不同,而一定程度造成数学证明的表述晦涩难懂,且不自然,造成一种无谓的专业术语的壁垒。事实上,区分类的定义和类的对象实例集合对建立“多级的元模型”来说,还有更深刻的意义。
要把数学对象进行分类,就得知道对象的结构形式。才能把具有相同结构形式的数学对象,归入到同一个数学对象类型中。
数学对象的结构简称数学结构,数学上是如何定义数学结构的呢?用的是变换的方法。
即:假设可以定义一些“操作套路”,这些套路中规定了一些操作的方法和规则。可对某些数学对象施行某一套操作,操作结果会得到经变换的另一个结果对象,或查找出与之对应的另一个结果对象,如果对结果对象经持续不断进行同样的操作,总会得到下一个结果对象,这些结果对象总可以保持与这套操作相对应的一些不变的性质出来,那么,这些被操作的数学对象就被认为是具有“由这套操作所代表的同样的数学结构”的。也就是说:对数学对象的操作套路的定义,以及经过实施套路中所定义的操作后,对象总可以保持的不变性的定义,就构成了对“数学结构”的定义。
经过检验是具有相同的数学结构的数学对象的集合被归结为一个数学对象类型。
这样,一个数学对象类型,就是一个范畴。
比如,定义“欧式平面上任意三点组成的集合”这个类,在其上可以定义任意移动其中的某个点的操作,就可以得到所有可能的三点集合的对象实例集合。这些实例总能保持连接三点形成的“三角形的三个内角和等于180度”的性质是不变的。这就是一个“平面三角形”范畴。
其中,“有三个点,可任意移动一点的操作”就是对这个范畴的数学结构的定义。保持三内角和是180度,不管对一个对象如何操作使之变成另一个对象,始终满足这条的不变的性质,就是与操作对应的不变性,就表明其操作是保结构的。
在计算机软件开发领域的面向对象编程OOP范式来类比,和面向对象编程中的类定义与对象实例的关系是高度相似的。OOP可以在类的定义中定义属于这个类的对象应该具有的属性和方法(即对象结构的定义)。属于该类的对象实例就“拥有同样的属性特征,并可进行同样的方法操作”(拥有相同的结构)。一个对象经方法操作后虽然属性特征被改变了,但被改变属性特征后的对象仍然还是同一个类的实例,也就是说,对对象的这些操作可以改变对象的特征,但不会改变对象的结构。这种可以在对象实例上做“保结构”变换的类的定义,就是一个范畴。事实上,如前所述,如果考虑“类-例集”的语义区分的话,在范畴学和OOP的语境下,对象实例的集合定义都是次要的,对“类”的、也就是作用在所有对象实例上的保结构变换的定义才是重要的。而结构的不变性体现在所有对象经过任意的变换后总能保持某些性质是不变的。
特别强调,在此之前自己对数学范畴的理解是类型的集合是不符合数学语义的含义事实的。事实是范畴就是类型,定义范畴的对象集合,是对范畴的核心性质表达的一种“扰乱”,是造成“对象集合中的数学对象是某种类型的定义”混淆理解的根源所在。这也是为什么本文一开始就忍不住要吐槽的原因。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-1 07:16
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社