"伴随(adjunction)"是范畴论里最优雅、也最常用的概念之一。Saunders Mac Lane 说过一句被引用到泛滥的话:
"Adjoint functors arise everywhere." —— 伴随函子无处不在。
本章的目标不是把伴随讲完——那要一本书——而是让你认出它,记住它的形状,并在层、概形、神经网络里都能识别出它的脸。
1. 伴随对的定义
伴随(Adjunction)
设 $F: \mathcal{C}\to\mathcal{D}$ 与 $G: \mathcal{D}\to\mathcal{C}$ 是两个函子。称 $F$ 与 $G$ 构成一对伴随,记 $F\dashv G$($F$ 是左伴随,$G$ 是右伴随),若有自然同构 $$ \mathrm{Hom}_{\mathcal{D}}(F(A),\, B) \;\cong\; \mathrm{Hom}_{\mathcal{C}}(A,\, G(B)) \qquad (\text{对任意 } A\in\mathcal{C},\, B\in\mathcal{D}), $$ 且该同构在 $A$ 与 $B$ 上都是自然的。
直观:把 $A$ 通过 $F$ "翻译"到 $\mathcal{D}$ 再连到 $B$,和把 $B$ 通过 $G$ "翻译"回 $\mathcal{C}$ 再被 $A$ 连,给出同样多的态射。
图解 1:伴随对 $F\dashv G$ 的 Hom 集同构
2. 经典伴随例子
2.1 自由 ⊣ 遗忘(Free ⊣ Forgetful)
所有的"自由对象"——自由群、自由模、自由幺半群、自由 $R$-代数——都是遗忘函子的左伴随。这是伴随最常见、也最直观的来源。
例 1:自由群 ⊣ 遗忘
$F: \mathbf{Set}\to\mathbf{Grp}$ 把集合 $S$ 送到自由群 $F(S)$;$U: \mathbf{Grp}\to\mathbf{Set}$ 把群忘记成集合。则 $$ \mathrm{Hom}_{\mathbf{Grp}}(F(S), G)\;\cong\;\mathrm{Hom}_{\mathbf{Set}}(S, U(G)). $$ 解读:定义一个群同态 $F(S)\to G$ 等价于给 $S$ 中每个生成元指派一个 $G$ 中的元素——和"无关系约束"完全一致。
图解 2:自由-遗忘伴随的具体例子
2.2 张量 ⊣ Hom
例 2:$(-\otimes_R M) \dashv \mathrm{Hom}_R(M, -)$
在 $R$-模范畴中,对固定的 $R$-模 $M$,有 $$ \mathrm{Hom}_R(A\otimes_R M,\, B)\;\cong\;\mathrm{Hom}_R(A,\, \mathrm{Hom}_R(M, B)). $$ 这就是Hom-tensor 伴随。它的"咖哩化"风味——把双线性映射改写成"先吃一个,再吐出一个一元映射"——和 lambda 演算中的 currying 是同一件事。
2.3 直接像 ⊣ 逆像(代数几何核心)
图解 3:直接像-逆像伴随 $f^{-1}\dashv f_*$
伴随同构
对 $\mathcal{F}\in\mathbf{Sh}(X)$,$\mathcal{G}\in\mathbf{Sh}(Y)$: $$ \mathrm{Hom}_{\mathbf{Sh}(X)}(f^{-1}\mathcal{G},\, \mathcal{F}) \;\cong\; \mathrm{Hom}_{\mathbf{Sh}(Y)}(\mathcal{G},\, f_*\mathcal{F}). $$ 在概形理论中,"诱导环映射 → 概形态射"、"模层的拉回与推前"……几乎所有"几何 ↔ 代数"对应都是这条同构的化身。
3. 单位 $\eta$、余单位 $\varepsilon$ 与三角恒等式
单位与余单位
给定 $F\dashv G$,存在两个自然变换:
- 单位 $\eta: \mathrm{id}_{\mathcal{C}}\Rightarrow GF$,分量 $\eta_A: A\to GF(A)$;
- 余单位 $\varepsilon: FG\Rightarrow \mathrm{id}_{\mathcal{D}}$,分量 $\varepsilon_B: FG(B)\to B$。
$\eta$ 是 $\mathrm{id}_A$ 对应 $A\xrightarrow{\eta_A} G(F A)$;$\varepsilon$ 是 $\mathrm{id}_{F A}$ 对应 $F(G B)\xrightarrow{\varepsilon_B} B$ 的"伴随翻译"。
图解 4:三角恒等式(Zig-zag identities)
4. 伴随与(余)极限:RAPL / LAPC
RAPL (Right Adjoints Preserve Limits)
若 $G$ 有左伴随 $F$,则 $G$ 保持所有已存在的极限: $$ G\bigl(\varprojlim D\bigr)\;\cong\;\varprojlim (G\circ D). $$ 对偶地:LAPC(Left Adjoints Preserve Colimits)—— 左伴随保持余极限。
为什么直觉上是对的?因为 $\mathrm{Hom}(A, -)$ 自身保持极限,而伴随同构 $\mathrm{Hom}(F-, B) = \mathrm{Hom}(-, GB)$ 把 $G$ "翻译"成 $\mathrm{Hom}$ 函子,由此继承极限保持性。
图解 5:RAPL —— 右伴随保持积
例 3:从 RAPL 看古典定理
- $\mathrm{Hom}(X, A\times B)\cong \mathrm{Hom}(X, A)\times \mathrm{Hom}(X, B)$ —— $\mathrm{Hom}$ 保积;
- 遗忘函子保持极限:所以群、环的直积仍是底层集合的直积;
- 左伴随不一定保积(自由群 $F(S\amalg T) \neq F(S)\times F(T)$),但保余积。
5. 单子(Monad):伴随的"自传"
由伴随诱导的单子
每对伴随 $F\dashv G$ 都自动给出一个单子 $(T, \eta, \mu)$,其中
- $T = G\circ F: \mathcal{C}\to\mathcal{C}$;
- $\eta: \mathrm{id}\Rightarrow T$ 是伴随的单位;
- $\mu := G\varepsilon F: T^2\Rightarrow T$ 是"扁平化"。
满足结合律 $\mu\circ T\mu = \mu\circ \mu T$ 和单位律 $\mu\circ \eta T = \mu\circ T\eta = \mathrm{id}$。
例 4:常见单子
- List monad:$T(A) = A^*$($A$ 上的列表)—— Haskell 程序员熟悉的"嵌套展平"。
- Free group monad:$T(S) = U(F(S))$ —— 自由群上的乘法/单位。
- Maybe / Option monad:$T(A) = A\sqcup\{*\}$ —— 错误处理。
- Power-set monad:$T(A) = \mathcal{P}(A)$ —— 非确定性计算。
6. 生活实例:免费试用 ⊣ 付费订阅
把用户世界想成 $\mathbf{User}$,会员世界想成 $\mathbf{Member}$。
- 自由函子 $F$:把任意用户"赠送"一个最小限度的免费会员("自由试用")。
- 遗忘函子 $U$:把会员"忘掉权益"看成普通用户。
- 伴随同构:把 $S$ 升级为会员、再连到 $G$ 的操作,等价于把 $S$ 这群人直接和 $G$ 的"底层用户"对接。
- 单位 $\eta_S: S\hookrightarrow U(F(S))$:每个普通用户都"自动嵌入"为对应的试用会员。
- 余单位 $\varepsilon_G: F(U(G))\to G$:把"按会员名单重新构造出的标准会员"映回原始会员(多了的权益被折叠)。
7. 练习
练习 1(自由阿贝尔群伴随)
自由阿贝尔群 $\mathbb{Z}[-]: \mathbf{Set}\to\mathbf{Ab}$ 与遗忘 $U: \mathbf{Ab}\to\mathbf{Set}$ 构成伴随。验证伴随同构,并写出单位 $\eta_S$ 与余单位 $\varepsilon_A$ 的显式公式。
提示
$\eta_S(s) = [s]\in \mathbb{Z}[S]$;$\varepsilon_A: \mathbb{Z}[U(A)]\to A$ 定义为 $\sum n_a [a]\mapsto \sum n_a\cdot a$("求值")。三角恒等式验证略。
练习 2(离散 ⊣ 遗忘 ⊣ 平凡)
$\mathbf{Set}$ 与 $\mathbf{Top}$ 之间有三个函子:$D$(赋予离散拓扑)、$U$(遗忘拓扑)、$T$(赋予平凡拓扑)。证明 $D\dashv U\dashv T$。
提示
连续映射 $D(S)\to X$ 任意(无约束),等价于集合映射 $S\to U(X)$;连续映射 $X\to T(S)$ 任意,等价于集合映射 $U(X)\to S$。
练习 3(RAPL 一例)
用 RAPL 证明:$\mathrm{Hom}(X, \prod_i A_i) \cong \prod_i \mathrm{Hom}(X, A_i)$。
练习 4(伴随的唯一性)
若 $F$ 同时有两个右伴随 $G, G'$,证明 $G\cong G'$(自然同构)。
提示
对所有 $A,B$:$\mathrm{Hom}(A, GB) \cong \mathrm{Hom}(FA, B) \cong \mathrm{Hom}(A, G'B)$,自然于 $A$ → 由 Yoneda 得 $GB\cong G'B$,自然于 $B$。
练习 5(具体的 Hom-tensor)
设 $M = \mathbb{Z}/2$ 作为 $\mathbb{Z}$-模。计算 $\mathbb{Z}\otimes_\mathbb{Z} M$ 与 $\mathrm{Hom}_\mathbb{Z}(M, \mathbb{Q}/\mathbb{Z})$,并验证伴随同构在 $A = \mathbb{Z}, B = \mathbb{Q}/\mathbb{Z}$ 上的具体含义。