引言:平坦世界的局限
想象你站在一个巨大的球面上,比如地球。你手里有一个指南针,可以告诉你"北"的方向。你沿着"北"的方向走,一直走到北极。然后,你继续沿着原来的"南"方向(相对于你的起点)走下去。
奇怪的事情发生了:你永远不会回到原来的方向。北极点的"北"没有意义——所有方向都是"南"!
这就是微分几何要解决的问题:在弯曲的世界中,我们如何定义方向、距离、曲线和导数?
从平坦到弯曲
在欧几里得几何中,空间是平坦的、均匀的。平行线永不相交,三角形内角和总是180度,两点之间直线最短。我们中学学的几何,都是这样的。
但真实世界不是平坦的。地球是球面(近似),时空是弯曲的(广义相对论),高维数据分布在复杂的流形上(深度学习)。
微分几何,就是研究这些弯曲空间的数学工具。它告诉我们:在弯曲的世界里,什么是"直线",什么是"平行",甚至什么是"导数"。
而今天,这个曾经抽象的数学分支,已经成为深度学习、机器人工程和自动驾驶的核心。
让我们从最基本的概念开始,逐步走向这些现代技术的深处。
第一章:流形——弯曲空间的数学
1.1 什么是流形?
流形(manifold)的概念源于这样一个观察:局部看,任何光滑的弯曲空间都像平坦的欧几里得空间。
例子:球面
- 局部看:一个小区域的地球表面,看起来是平的(所以我们可以画平面地图)
- 整体看:它是弯曲的(所以所有地图都有变形)
数学上,一个$n$维流形$\mathcal{M}$是这样一个空间:每一点$p\in\mathcal{M}$都有一个邻域,同胚于$\mathbb{R}^n$。
直观理解:流形是"局部平坦,整体弯曲"的空间。
1.2 切空间和切向量
在弯曲的流形上,我们不能直接说"向量指向某个方向"。向量必须定义在切空间(tangent space)上。
切空间$T_p\mathcal{M}$:在点$p$处,所有可能的"方向"构成的线性空间。
对于球面上的点,切空间是该点的切平面。在这个平面上,我们可以定义向量和线性运算。
关键:不同点的切空间是不同的!你不能直接比较点$p$的切向量和点$q$的切向量。
这就是为什么我们需要联络(connection)——它告诉我们如何在相邻的切空间之间移动向量。
1.3 度量张量
在平坦的欧几里得空间中,两个向量$\mathbf{u}, \mathbf{v}$的内积很简单:
$$\langle \mathbf{u}, \mathbf{v} \rangle = \mathbf{u}^T \mathbf{v} = u_1 v_1 + u_2 v_2 + \cdots + u_n v_n$$
但在弯曲空间中,每个点的度量可能是不同的。我们需要度量张量$g_{ij}$:
$$\langle \mathbf{u}, \mathbf{v} \rangle_p = g_{ij}(p) u^i v^j$$
使用爱因斯坦求和约定(重复指标自动求和)。
直观理解:$g_{ij}$告诉我们这个点空间的"拉伸"和"扭曲"程度。
1.4 曲率
曲率(curvature)描述了空间弯曲的程度。
在平坦空间中,平行移动一个向量回到原点,方向不变。在弯曲空间中,方向会改变。
黎曼曲率张量$R^k_{lij}$:
$$(\nabla_i \nabla_j - \nabla_j \nabla_i) V^k = R^k_{lij} V^l$$
物理意义:$R^k_{lij}$告诉我们,沿着$i$和$j$两个方向平行移动后的差异。
第二章:深度学习中的流形几何
2.1 高维数据的流形假设
深度学习的一个核心假设是:真实世界的数据分布在一个低维流形上。
例子:人脸图像
- 每张人脸图像是高维向量(比如1000×1000像素=1,000,000维)
- 但这些图像不是随机分布的,它们受到有限参数控制:
- 身份
- 表情
- 光照
- 角度
- …
所以,人脸图像实际上分布在一个低维流形上(维数远小于1,000,000)。
2.2 流形学习
流形学习(manifold learning)的目标是从高维数据中恢复出低维流形结构。
经典方法:
MDS(多维尺度分析):
- 保持数据点之间的距离关系
- 类似于在平面上"展开"流形
ISOMAP:
- 使用测地距离(沿着流形的距离)而非欧几里得距离
- 类似于在地球表面测量距离(沿着球面,而不是穿过地球)
t-SNE(t-分布随机邻居嵌入):
- 保留数据的局部邻域结构
- 广泛用于数据可视化
UMAP(统一流形近似和投影):
- 更快的流形学习方法
- 兼具t-SNE的视觉效果和MDS的全局结构保留
核心思想:这些方法都在尝试"展开"弯曲的数据流形,使其可以在低维欧几里得空间中可视化或处理。
2.3 黎曼优化
当我们要优化的目标函数定义在流形上时,我们需要黎曼优化(Riemannian optimization)。
普通梯度下降:
$$\theta_{k+1} = \theta_k - \alpha \nabla f(\theta_k)$$
黎曼梯度下降:
$$\theta_{k+1} = \mathcal{R}_{\theta_k}(-\alpha \nabla f(\theta_k))$$
其中$\mathcal{R}_p(\mathbf{v})$是收缩映射(retraction),将切空间中的向量映射回流形。
例子:
- 在球面上,收缩映射可能是沿着测地线移动
- 在Stiefel流形(正交矩阵流形)上,收缩映射可能是正交化(如QR分解)
2.4 几何深度学习
几何深度学习(geometric deep learning)处理定义在非欧几里得数据(如图、流形)上的深度学习。
典型应用:
- 图神经网络(GNN)
- 点云处理(PointNet等)
- 三维网格分析
核心思想:利用数据的几何结构,而不仅仅是其数值表示。
第三章:机器人工程学中的李群和李代数
3.1 旋转矩阵和SO(3)
在三维空间中,刚体的姿态可以用旋转矩阵$R\in\mathbb{R}^{3\times3}$表示。
性质:
- 正交性:$R^T R = I$
- 行列式为1:$\det(R) = 1$(排除反射)
所有满足这两个条件的$3\times3$矩阵构成特殊正交群$\text{SO}(3)$(Special Orthogonal Group)。
SO(3)的性质:
- 是一个流形(实际上是李群)
- 维数是3(需要3个参数描述旋转)
- 非交换:$R_1 R_2 \neq R_2 R_1$(旋转顺序很重要)
3.2 位形空间和SE(3)
刚体的完整位姿(位置+方向)由旋转矩阵$R$和位置向量$\mathbf{t}\in\mathbb{R}^3$描述。
我们可以用$4\times4$的齐次变换矩阵表示:
$$T = \begin{pmatrix} R & \mathbf{t} \ \mathbf{0}^T & 1 \end{pmatrix}$$
所有这样的矩阵构成特殊欧几里得群$\text{SE}(3)$(Special Euclidean Group)。
3.3 李代数
李群是"光滑群"——它们既是群,又是光滑流形。李代数是李群的"切空间",在原点处。
SO(3)的李代数:$\mathfrak{so}(3)$
$\mathfrak{so}(3)$由$3\times3$的反对称矩阵构成:
$$\Omega = \begin{pmatrix} 0 & -\omega_z & \omega_y \ \omega_z & 0 & -\omega_x \ -\omega_y & \omega_x & 0 \end{pmatrix}$$
可以用3维向量$\mathbf{\omega} = (\omega_x, \omega_y, \omega_z)$表示。
指数映射:从李代数到李群
$$R = \exp(\Omega) = I + \frac{\sin\theta}{\theta}\Omega + \frac{1-\cos\theta}{\theta^2}\Omega^2$$
其中$\theta = |\mathbf{\omega}|$是旋转角度。
对数映射:从李群到李代数
$$\Omega = \log(R)$$
直观理解:
- 李代数:速度空间(角速度)
- 李群:姿态空间(旋转矩阵)
- 指数映射:积分速度得到姿态
- 对数映射:从姿态求出速度
3.4 机器人运动学和动力学
前向运动学:给定关节角度,计算末端执行器的位置和方向
这涉及到一系列的旋转和平移,可以在李群上计算。
雅可比矩阵:关节速度到末端执行器速度的映射
雅可比矩阵在SE(3)的切空间中工作。
动力学:力矩和加速度的关系
动力学方程也在李群和李代数的框架下表述,确保计算在正确的几何空间中进行。
第四章:自动驾驶中的应用
4.1 车辆姿态估计
自动驾驶车辆需要实时估计自己的姿态(位置和方向)。
挑战:
- 传感器数据有噪声
- 车辆在运动
- 需要高频更新
解决方案:在李群空间中进行状态估计
卡尔曼滤波:经典的线性滤波器
在非线性系统中,我们需要扩展卡尔曼滤波(EKF)或无迹卡尔曼滤波(UKF)。
关键:状态更新必须在SE(3)上,而不能简单地用欧几里得空间的加法。
错误示例: $$T_{k+1} = T_k + \Delta T$$
在SE(3)中,“加法"没有意义!
正确方法: $$T_{k+1} = T_k \odot \exp(\Delta \xi)$$
其中$\xi$是李代数元素,$\odot$是李群上的运算,$\exp$是指数映射。
4.2 SLAM(同步定位与地图构建)
SLAM(Simultaneous Localization and Mapping)是自动驾驶的核心技术之一。
问题:车辆在未知环境中,需要同时估计自己的位置和构建环境地图。
视觉SLAM(V-SLAM):
- 使用相机观察环境特征
- 在李群空间中估计相机位姿
- 使用非线性优化(Bundle Adjustment)优化位姿和地图
激光雷达SLAM(LiDAR SLAM):
- 使用激光雷达扫描环境
- 在SE(3)中估计车辆运动
- 构建点云地图
关键挑战:非线性优化
传统的欧几里得优化方法不适用于流形上的优化。需要使用:
- 李群上的梯度下降
- 流形上的牛顿法
- 基于李代数的雅可比矩阵
4.3 路径规划
自动驾驶车辆需要规划从起点到终点的安全路径。
挑战:
- 车辆是非完整约束系统(不能横向移动)
- 车辆有转向半径限制
- 环境是动态的
曲线路径:
简单的直线或圆弧路径不能满足所有需求。更复杂的路径(如B样条、贝塞尔曲线)需要考虑车辆的几何约束。
Dubins路径:
- 假设车辆只能前进,有最小转弯半径
- 由圆弧和直线段组成
- 在几何上最优(最短)
Reeds-Shepp路径:
- 允许车辆前进和后退
- 可能包含"掉头"段
- 更适合狭窄空间
关键思想:这些路径都是在特定的几何约束下计算的,与微分几何密切相关。
4.4 传感器融合
自动驾驶车辆使用多种传感器:
- 激光雷达
- 相机
- 毫米波雷达
- IMU(惯性测量单元)
- GPS
这些传感器的数据需要在统一的框架下融合。
挑战:
- 不同的坐标系
- 不同的更新频率
- 不同的噪声特性
解决方案:在李群空间中进行融合
例子:IMU和GPS融合
IMU测量加速度和角速度,GPS提供位置。在传统方法中,可能会用欧几里得空间的状态向量。但更好的方法是在SE(3)中定义状态。
优势:
- 几何一致性:姿态始终是有效的旋转矩阵
- 更好的数值稳定性
- 更准确的误差模型
第五章:数值方法和计算
5.1 指数映射和对数映射
在流形优化中,我们需要频繁地在李群和李代数之间转换。
SO(3)的指数映射(Rodrigues公式):
$$R = \exp(\Omega) = I + \frac{\sin\theta}{\theta}\Omega + \frac{1-\cos\theta}{\theta^2}\Omega^2$$
其中$\theta = |\mathbf{\omega}|$,$\Omega = [\mathbf{\omega}]_\times$是反对称矩阵。
SO(3)的对数映射:
给定旋转矩阵$R$,提取旋转角度和轴:
$$\theta = \arccos\left(\frac{\text{tr}(R) - 1}{2}\right)$$
$$\mathbf{\omega} = \frac{1}{2\sin\theta} \begin{pmatrix} R_{32} - R_{23} \ R_{13} - R_{31} \ R_{21} - R_{12} \end{pmatrix}$$
5.2 流形上的梯度下降
普通梯度下降:
$$\theta_{k+1} = \theta_k - \alpha \nabla f(\theta_k)$$
流形上的梯度下降:
$$\theta_{k+1} = \mathcal{R}_{\theta_k}(-\alpha \nabla f(\theta_k))$$
其中:
- $\nabla f(\theta_k)$是黎曼梯度(在切空间中)
- $\mathcal{R}_p$是收缩映射
收缩映射的选择:
对于不同的流形,收缩映射不同:
- 球面:沿着测地线移动
- Stiefel流形:正交化(QR分解)
- SPD矩阵(对称正定矩阵):对数空间更新后指数化
5.3 流形上的牛顿法
牛顿法利用二阶信息收敛更快:
$$\theta_{k+1} = \mathcal{R}_{\theta_k}(-[\nabla^2 f(\theta_k)]^{-1} \nabla f(\theta_k))$$
其中$\nabla^2 f(\theta_k)$是黎曼Hessian(在切空间中的二阶导数)。
优势:二次收敛(迭代次数少) 挑战:计算和存储Hessian矩阵代价高
第六章:实例分析——从抽象到应用
6.1 案例一:旋转插值
问题:在两个旋转$R_1$和$R_2$之间插值。
错误方法: $$R(t) = (1-t)R_1 + tR_2$$
问题:$R(t)$可能不是旋转矩阵(不正交,或行列式不为1)。
正确方法:在李代数空间插值
计算相对旋转: $$R_{12} = R_1^T R_2$$
取对数: $$\mathbf{\omega}{12} = \log(R{12})$$
插值: $$\mathbf{\omega}(t) = t \mathbf{\omega}_{12}$$
指数映射回李群: $$R(t) = R_1 \exp(\mathbf{\omega}(t))$$
结果:$R(t)$始终是有效的旋转矩阵,且路径是"最短"的(测地线)。
6.2 案例二:相机位姿优化
问题:给定一系列图像对,估计相机之间的相对位姿。
方法:Bundle Adjustment
定义重投影误差:3D点投影到2D图像坐标的差异
在SE(3)的李代数空间优化相机位姿
使用流形上的非线性最小二乘(如Levenberg-Marquardt)
关键:位姿更新必须在李代数空间,使用指数映射。
6.3 案例三:IMU预积分
问题:高频IMU数据和低频相机/GPS数据融合。
挑战:优化变量过多(每次IMU采样都是变量)
解决方案:预积分
在两个关键帧之间的所有IMU数据预先积分,形成一个"相对运动"测量,作为一个整体优化变量。
关键:预积分在李代数空间进行,确保数值稳定和计算效率。
第七章:工具和库
7.1 流形优化库
GTSAM(Georgia Tech Smoothing and Mapping):
- 专门用于SLAM的C++库
- 内置多种流形支持(SO(3), SE(3), etc.)
Ceres Solver:
- 通用的非线性优化库
- 支持自定义流形
Sophus:
- 轻量级的C++库
- 实现了李群和李代数的基本运算
Manopt(MATLAB):
- 流形优化的MATLAB工具箱
- 支持多种流形
7.2 深度学习框架
PyTorch:
- 有社区实现的流形层
- 可以自定义流形上的操作
TensorFlow:
- 类似,有几何深度学习库
Geometric Deep Learning:
- 专门的几何深度学习库
- 支持图、点云等非欧几里得数据
7.3 机器人学库
ROS(Robot Operating System):
- 广泛使用的机器人操作系统
- 内置变换树(TF2),支持SE(3)变换
MoveIt:
- ROS的运动规划框架
- 考虑机器人的运动学和动力学约束
第八章:未来方向
8.1 几何深度学习的深入
趋势:
- 更复杂的流形结构
- 流形间的相互作用
- 可解释的几何表示
挑战:
- 如何定义合适的流形
- 如何高效地在大规模数据上学习
8.2 自动驾驶的几何感知
趋势:
- 更精确的传感器模型
- 考虑几何约束的规划算法
- 在流形上学习和预测
挑战:
- 实时性要求
- 安全性保证
8.3 理论与实现的桥梁
趋势:
- 更高效的数值算法
- 更好的理论保证
- 跨领域的统一框架
结语:几何之美,实用之真
回顾我们的旅程,从球面上的"北"没有意义,到自动驾驶车辆的实时定位,我们看到了微分几何的广泛应用。
核心思想:
流形假设:许多实际问题(无论是数据分布还是物理系统)都定义在弯曲的流形上。
李群和李代数:提供了在流形上表示姿态和运动的数学框架。
流形优化:在正确的几何空间中进行优化,确保结果的有效性和数值稳定性。
从抽象到应用:曾经纯粹的数学概念,如今已是深度学习、机器人工程和自动驾驶的基石。
给读者的建议:
如果你想深入这个领域:
打好基础:
- 线性代数(特别是矩阵分解)
- 微积分(特别是多元微积分)
- 最优化理论
学习数学:
- 流形论
- 李群和李代数
- 黎曼几何
实践编程:
- 实现基本的李群运算
- 在SE(3)上写简单的优化
- 使用现有的流形优化库
关注应用:
- 阅读SLAM论文
- 学习几何深度学习
- 了解自动驾驶的算法
微分几何不仅仅是抽象的数学,它是理解世界、构建智能系统的基础。从球面上的导航,到自动驾驶的路径规划,从高维数据的可视化,到机器人姿态的估计——微分几何无处不在。
希望这篇文章为你打开了一扇门,让你看到这些美丽而强大的数学工具如何在现代技术中发挥关键作用。
附录:重要公式汇总
李群和李代数
SO(3)的指数映射:
$$R = \exp(\Omega) = I + \frac{\sin\theta}{\theta}\Omega + \frac{1-\cos\theta}{\theta^2}\Omega^2$$
其中$\theta = |\mathbf{\omega}|$,$\Omega = [\mathbf{\omega}]_\times$。
反对称矩阵:
$$[\mathbf{\omega}]_\times = \begin{pmatrix} 0 & -\omega_z & \omega_y \ \omega_z & 0 & -\omega_x \ -\omega_y & \omega_x & 0 \end{pmatrix}$$
流形优化
黎曼梯度下降:
$$\theta_{k+1} = \mathcal{R}_{\theta_k}(-\alpha \nabla f(\theta_k))$$
黎曼牛顿法:
$$\theta_{k+1} = \mathcal{R}_{\theta_k}(-[\nabla^2 f(\theta_k)]^{-1} \nabla f(\theta_k))$$
SLAM
EKF-SLAM预测:
$$\hat{x}{k|k-1} = f(\hat{x}{k-1|k-1}, u_k)$$
$$P_{k|k-1} = F_k P_{k-1|k-1} F_k^T + Q_k$$
EKF-SLAM更新:
$$K_k = P_{k|k-1} H_k^T (H_k P_{k|k-1} H_k^T + R_k)^{-1}$$
$$\hat{x}{k|k} = \hat{x}{k|k-1} + K_k (z_k - h(\hat{x}_{k|k-1}))$$
$$P_{k|k} = (I - K_k H_k) P_{k|k-1}$$
其中$f$和$h$在李群空间定义。
系列导航
本文是广义相对论系列文章的第 [5] 篇。
本系列文章:
| 编号 | 主题 |
|---|---|
| [1] | 广义相对论入门:从微分几何到爱因斯坦场方程 |
| [2] | 克里斯托费尔符号:联络的数学定义 |
| [3] | 测地线方程:自由粒子的运动轨迹 |
| [4] | 高斯绝妙定理:曲率的内在几何 |
| [5] | 微分几何在广义相对论中的应用 |
| [6] | 高斯博内-陈定理:拓扑与几何的深刻联系 |
| [7] | 希尔伯特作用量:从变分原理到场方程 |
| [8] | 比安基恒等式:曲率的对称性 |
| [9] | 彭罗斯-霍金奇点定理:时空的边界 |
| [10] | 引力波:时空的涟漪 |
| [11] | 克尔黑洞:旋转的时空漩涡 |
| [12] | 宇宙学:从大爆炸到暗能量 |
本文旨在为有一定数学基础的读者提供微分几何在现代技术中应用的导引。更深入的学习建议参考专业教材,如Solomon的《Geometric Data Analysis》、Sola等人的《A micro Lie theory for state estimation in robotics》,以及相关的学术论文。
