数学建立在集合论之上,以集合为语言。当我们用数学来研究一个对象时,总是先将其用集合定义出来,并用集合框定概念的边界。
例子4.1 我们可以研究地球的形状,考察它是扁平的还是球形的,是有限的还是无限的等。数学上,研究形状的分支叫做 拓扑学 (topology)。我们定义一个对象的 拓扑 是一个二元组( X, T ),其中 X 是一个集合, T ⊂2 X 是 X 的满足一定性质的若干子集构成的集合。
作为例子我们就不深入介绍拓扑了。当然,我们也可以研究点别的,比如本书的主题多项式方程的解。
例子4.2 当研究多项式方程的解时,我们会考察系数取自集合 F 的多项式全体构成的集合。我们会探索这个集合在加减乘除下具有的性质,以回答关于方程的解的问题。
要研究苹果,苹果是什么?在数学家看来,无非也就是一堆空间中的点的集合,其满足若干足以描述苹果的性质。
不过, 一个 集合是没有什么意思的。相比通过钻研描述地球形状的那 一个 拓扑,我们发现研究地球与月球、土星、太阳等其他星体形状之间的 关系 ,更能把握住“形状”这个概念。显然,地球与月球有着相同的形状,与土星有着不同的形状(因为土星有个环)。所以,地球的 形状 这个概念本身是 地球 的形状么 ?不是。是 月球 的形状吗?也不是。那它 是 什么呢?它与地球、月球均无关系,是那个地球与月球在忽略掉其体积、表面沟壑、大气层等无关表象后,所 共同承载 着的东西。正如本章开头所言,本质的概念并不是任何一个具体承载它的对象,而是 所有 承载着它的对象所共享的那个存在。
洞察4.3 概念的本质往往蕴藏在集合间关系之中,而非某一个特定具体的集合之内。
这一洞察指导我们关注集合之间的关系,或曰 映射 。直观来看,映射是很自然的概念,无非就是常说的“对应”。班上的学生与其学号之间有一个对应关系,这便是“班上学生”这个集合与“学号”这个集合之间的一个映射:
但要怎么严格地定义出映射呢?前面说过,一切都是集合,那映射要如何被描述成集合呢?它不是箭头 吗?其实不难发现,这些箭头无非是在挑出一些学生与学号的 两两组合 罢了。
定义4.4 令 A 、 B 为两个集合,它们的 笛卡儿积 (Cartesian product)是由它们中元素的两两组合构成的集合
{( a,b )| a ∈ A,b ∈ B }
我们记这个集合为 A × B 。
两个集合 A 和 B 的笛卡儿积中的元素就是由它们各自元素构成的 有序 二元组( a,b ),其中 a 来自 A , b 来自 B 。一定要注意笛卡儿积是有顺序的, A × B 与 B × A 是不同的集合。
然而,不是随便从笛卡儿积中挑出一些组合都能定义映射的。在学号的例子中,每位学生只能有 一个 学号,不能有学生有两个学号,对吧。这个要求一加上,我们便足以定义映射了。
定义4.5 令 A 、 B 为两个集合,我们称 f 是从 A 到 B 的一个 映射 (map),也称一个 函数 (function),如果
· f ⊂ A × B ,即 f 是 A 与 B 的笛卡儿积的一个子集;
· 对于任意( a 1 ,b 1 ),( a 2 ,b 2 )∈ f ,若 a 1 = a 2 ,那么 b 1 = b 2 。
我们记之为
f : A → B
并称 A 为 f 的 定义域 (domain), B 为 f 的 值域 (range)。对于( a,b )∈ f ,我们称 b 为 a 在 f 下的 像 (image),记为 f ( a )= b 。
让我们来看一些映射的例子。首先,我们在学校里接触过的那些函数都是映射,比如
就定义了一个自然数到其自身的映射 h ,将每一个自然数映射到它的平方。一种显式描述映射的办法就是像上面那样,用→表达映射的定义域与值域,然后将具体集合元素的对应规则写在下面,并用 记号表示。
值得强调的一点是,函数的值域是可以任意“冗余”的。一个 A 到 B 的映射,也可以看成是 A 到任何一个包含 B 的更大的集合 C 上的映射。
让我们再来看一些更高级更实际的映射。
例子4.6 令 U 为全体合法的中文句子构成的集合 。那么,一个(单轮)对话机器人(chatbot)就是一个映射
b : U → U
其接收一句话,回应一句话。
个人认为,对话是人类智能复杂度之集大成者,多轮对话尤甚。自从神经网络火了后,如何构建一个充分智能的对话机器人成了学界和业界热门的探索方向。但不得不说,这真的很难。例子4.6中给出了单轮对话——即一来一回就结束了的对话——机器人的定义,你不妨想想用映射要怎么来描述多轮对话机器人。
例子4.7 令 P 为某电商网站所有用户构成的集合, M 为其所有商品构成的集合。那么,一个推荐引擎(recommendation engine)就是一个映射
r : P × M → N
其为平台中每一个用户 p ∈ P 和每一个商品 m ∈ M 打一个分数 r ( p,m ),预测该用户对该商品的喜爱度。
我们上网购物时经常看到一些“猜你喜欢”的推荐以及所谓的“大数据杀熟”,背后正是这样的映射在根据你的历史行为做着计算与预测。
例子4.8 令 L 为一个由若干标签构成的有限集, Z 256 为0 ∼ 255这256个自然数构成的集合。那么一张长 W 像素宽 H 像素的黑白图片即为集合
中的一个元素 [1] 。一个黑白图片分类器(image classifier)就是一个函数
c : G → L
其为每一张黑白图片打上一个标签。
如何判断一张图片是猫是狗一直以来都是人工智能研究中非常困难的问题。为啥?因为——你也看到了—— G 实在是太大了。直到我们有了深度神经网络加上强力GPU [2] 加上海量数据,这个问题才算是被比较不错地解决了。
上面举了三个映射的例子,希望你能感受到如下两点。首先,映射无处不在,生活工作中的任何事物都能通过映射严格地描述出来,且往往这么做是很有好处的。其次,写下映射的定义域与值域可以很简单,但给出具体的对应规则可以非常困难。上述例子都没有给出具体的规则,正是因为现实中它们都极其复杂,都会涉及海量的数据与复杂的算法。实际研究与工作中,我们往往是先明确映射的定义域与值域,框定好边界,然后再寻找具体的对应规则 。
为了今后说话方便,我们再定义几个与映射相关的概念。
定义4.9 令 f : A → B 为一个映射。
· 令 X ⊂ A 为 A 的一个子集,我们称
f ( X ):={ f ( a )∈ B | a ∈ X }
为集合 X 在映射 f 下的 像 (image)。特别的,我们记
Im f := f ( A )
为定义域的像,也称为映射 f 的像。
· 令 Y ⊂ B 为 B 的一个子集,我们称
pre f ( Y ):={ a ∈ A | f ( a )∈ Y }
为集合 Y 在映射 f 下的 原像 (preimage)。
如图4.1,直观说来 f ( X )就是 B 中由 X 映射过来的元素,pre f ( Y )就是 A 中那些被映射到 Y 内的元素 [3] 。
图4.1映射的像与原像
定义4.10 令 f : A → B 为一个映射, X ⊂ A 为 A 的一个子集,我们称
为映射 f 在 X 上的 限制 (restriction)。
映射的限制就是把定义域收缩到了其一个子集,比如自然数之间有加法,它也可以限制到偶数之间。别看其看似平凡简单,我们将看到,在探寻五次方程求根公式的旅程中,几乎一切努力都是围绕着一个映射的限制展开的。
定义4.11 令 f : A → B 为一个映射。
· 我们称 f 是一个 单射 (injection),如果 A 中不同元素被映射到 B 中不同元素,也即对于任意 a 1 ,a 2 ∈ A , f ( a 1 )= f ( a 2 )仅当 a 1 = a 2 。
· 我们称 f 是一个 满射 (surjection),如果 B 中任意元素都有 A 中元素映射到它,也即 f ( A )= B 。
· 若 f 即是单射又是满射,便称其是一个 双射 (bijection),也叫 一一对应 (one-to-one correspondence)。
若以学校的全部学号为值域,学生和学号之间的映射是一个双射。如果我们现在将学生映射到他的性别,那这个映射便是一个满射但不是单射 。如果我们再变一下,将这个班级的学生映射到他们的身份证号,并以全中国的身份证号为值域。那可是一个有十几亿个元素的庞大集合呀,所以这个映射显然是一个单射但不是满射。最后,来看看例子4.6中的对话机器人。两个句子可以有相同的回答吗?当然可以,所以它不是单射。有些句子可以永远不作为答案吗?当然也可以,所以它不是满射。于是,它是一个既非单射也非满射的映射。
到目前为止,我们只关注了两个集合间的映射,其实映射还可以头尾相连把多个集合“串”起来!
定义4.12 令 f : A → B 、 g : B → C 为两个映射,我们称映射
为 f 与 g 的 复合 (composition)。
如图4.2所示,在复合映射 g ◦ f 下一个元素 a ∈ A 的像,就是先将其用 f 映射到 B ,然后再用 g 映射到 C 。所以,复合映射一个显然的要求是:下一个映射的定义域要包含上一个映射的像,不然的话有些元素映射着映射着就没法继续了。特别的,在一种情况下我们可以不停地复合,那就是当定义域与值域相同的时候!如图4.3,若
f,g : X → X
都是从 X 到其自身的映射,那么我们可以将它们随心所欲地串在一起:
f ◦ f ◦ f, f ◦ g, f ◦ g ◦ f, g ◦ f ◦ g, f ◦ g ◦ f ◦ f ◦ g, …
图4.2映射的复合
图4.3到自身的映射
我们将会看到,很多集合自身深层的性质正是蕴藏在这些其到自身的映射之中。
如洞察4.3所说,映射在数学中扮演着举足轻重的角色,很多深刻的发现都来自于对集合间映射的研究。比如本书的主题:求解多项式方程。人们盯着一个又一个方程吭哧吭哧地解了几个世纪而无果,直到伽罗瓦天才般地意识到我们别去解它们了,方程解的信息全部蕴藏在其分裂域的自同构之中了!别担心,咱们以后会解释什么叫“分裂域”以及什么叫“自同构”的,现在你只要知道,它们分别是多项式的解所属于的一个特殊的集合,以及这个集合到其自身的一种特殊的映射。