写给计算机系同学的李群与李代数(六):李群与李代数在计算机中的应用

李群与李代数在计算机中的应用

写给计算机系同学的李群与李代数(五):最大阿贝尔子代数与李代数的分解

在前五篇文章中,我们从李群(Lie Group)和李代数(Lie Algebra)的基本概念出发,逐步探索了矩阵指数映射(Matrix Exponential)、李括号(Lie Bracket)、结构常数(Structure Constants),以及最大阿贝尔子代数(Maximal Abelian Subalgebra, MASA)。这些数学工具看似抽象,却在计算机科学中有着广泛而深刻的应用。今天,我们将聚焦于李群与李代数如何解决实际问题,涵盖计算机图形学(Computer Graphics)、机器人学(Robotics)和机器学习(Machine Learning)。通过公式推导、具体例子和直观解释,我们将展示这些理论如何转化为高效的算法和优雅的解决方案。

李群与李代数的核心优势

为什么李群和李代数在计算机科学中如此重要?它们提供了描述连续变换(Continuous Transformation)的自然框架,具有以下优势:

  • 几何约束:李群(如 SO(3)、SE(3))天然保持变换的性质,例如旋转的正交性或刚体运动的结构。
  • 局部线性化:李代数提供了一个线性空间,简化了非线性优化问题。
  • 非交换性:李括号捕捉了变换的顺序依赖,适用于复杂运动的建模。

让我们通过三个领域——计算机图形学、机器人学和机器学习——具体探讨这些应用。

应用一:计算机图形学中的旋转与插值

在 3D 动画和游戏开发中,物体的旋转是核心任务。特殊正交群(Special Orthogonal Group, SO(3))描述三维旋转,其李代数 so ( 3 ) \text{so}(3) so(3) 由反对称矩阵(Skew-Symmetric Matrix)组成。

平滑旋转插值

假设我们需要让一个物体从旋转矩阵 R 1 ∈ SO ( 3 ) R_1 \in \text{SO}(3) R1SO(3) 平滑过渡到 R 2 ∈ SO ( 3 ) R_2 \in \text{SO}(3) R2SO(3),时间从 t = 0 t=0 t=0 t = 1 t=1 t=1。直接在矩阵空间插值(例如 ( 1 − t ) R 1 + t R 2 (1-t)R_1 + t R_2 (1t)R1+tR2)会破坏正交性,导致非旋转矩阵。使用李代数可以优雅地解决这个问题。

推导
  1. 计算相对旋转
    R = R 1 T R 2 R = R_1^T R_2 R=R1TR2
    R ∈ SO ( 3 ) R \in \text{SO}(3) RSO(3) 表示从 R 1 R_1 R1 R 2 R_2 R2 的旋转。

  2. 映射到 so ( 3 ) \text{so}(3) so(3)
    使用矩阵对数(Matrix Logarithm),近似为:
    B = log ⁡ R ∈ so ( 3 ) B = \log R \in \text{so}(3) B=logRso(3)
    B B B 是反对称矩阵,表示旋转轴和角度。例如,若 R = e B R = e^B R=eB,则 B = ω B ^ B = \omega \hat{B} B=ωB^,其中 B ^ \hat{B} B^ 是单位旋转轴对应的矩阵, ω \omega ω 是旋转角。

  3. 插值
    在李代数中线性插值:
    B ( t ) = t B B(t) = t B B(t)=tB
    然后映射回 SO(3):
    R ( t ) = R 1 e t B = R 1 e t log ⁡ ( R 1 T R 2 ) R(t) = R_1 e^{t B} = R_1 e^{t \log(R_1^T R_2)} R(t)=R1etB=R1etlog(R1TR2)
    t = 0 t=0 t=0 R ( 0 ) = R 1 R(0) = R_1 R(0)=R1;当 t = 1 t=1 t=1 R ( 1 ) = R 1 R = R 2 R(1) = R_1 R = R_2 R(1)=R1R=R2

例子:游戏角色旋转

在游戏中,角色的朝向从 R 1 R_1 R1(面向 x 轴)变为 R 2 R_2 R2(面向 y 轴)。计算:
R 1 = [ 1 0 0 0 1 0 0 0 1 ] , R 2 = [ 0 − 1 0 1 0 0 0 0 1 ] R_1 = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}, \quad R_2 = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} R1= 100010001 ,R2= 010100001
相对旋转:
R = R 1 T R 2 = R 2 R = R_1^T R_2 = R_2 R=R1TR2=R2
对数近似(假设小角度,或使用 Rodrigues 公式反推):
log ⁡ R 2 ≈ π 2 [ 0 − 1 0 1 0 0 0 0 0 ] \log R_2 \approx \frac{\pi}{2} \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} logR22π 010100000
插值路径:
R ( t ) = e t π 2 [ 0 − 1 0 1 0 0 0 0 0 ] = [ cos ⁡ ( t π 2 ) − sin ⁡ ( t π 2 ) 0 sin ⁡ ( t π 2 ) cos ⁡ ( t π 2 ) 0 0 0 1 ] R(t) = e^{t \frac{\pi}{2} \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix}} = \begin{bmatrix} \cos(t \frac{\pi}{2}) & -\sin(t \frac{\pi}{2}) & 0 \\ \sin(t \frac{\pi}{2}) & \cos(t \frac{\pi}{2}) & 0 \\ 0 & 0 & 1 \end{bmatrix} R(t)=et2π[010100000]= cos(t2π)sin(t2π)0sin(t2π)cos(t2π)0001
这实现了绕 z 轴的平滑旋转,保证了正交性。

几何意义

李代数 so ( 3 ) \text{so}(3) so(3) 提供了一个“平坦”的空间,旋转轴和角度可以线性插值。指数映射 e t B e^{t B} etB 将其转化为 SO(3) 中的曲线,像是从“角速度”到“旋转角度”的积分。这种方法避免了欧拉角(Euler Angles)的万向节锁(Gimbal Lock)问题。

应用二:机器人学中的运动规划

欧几里得群(Euclidean Group, SE(3))描述三维空间的刚体变换(旋转加平移),其李代数 se ( 3 ) \text{se}(3) se(3) 由矩阵构成:
[ B v 0 0 ] , B ∈ so ( 3 ) , v ∈ R 3 \begin{bmatrix} B & v \\ 0 & 0 \end{bmatrix}, \quad B \in \text{so}(3), \quad v \in \mathbb{R}^3 [B0v0],Bso(3),vR3
在机器人学中, se ( 3 ) \text{se}(3) se(3) 用于优化机械臂或无人机的运动轨迹。

螺旋运动(Screw Motion)

se ( 3 ) \text{se}(3) se(3) 的指数映射生成螺旋运动,结合旋转和平移。例如,考虑:
A = [ B v 0 0 ] A = \begin{bmatrix} B & v \\ 0 & 0 \end{bmatrix} A=[B0v0]
其中 B B B 是角速度矩阵, v v v 是线速度向量。指数映射:
e t A = [ e t B V v 0 1 ] e^{t A} = \begin{bmatrix} e^{t B} & V v \\ 0 & 1 \end{bmatrix} etA=[etB0Vv1]
其中 V V V 是旋转相关的矩阵(见第三篇博客)。

推导:路径优化

假设机械臂从位姿 T 1 ∈ SE ( 3 ) T_1 \in \text{SE}(3) T1SE(3) 移动到 T 2 ∈ SE ( 3 ) T_2 \in \text{SE}(3) T2SE(3),我们希望最小化路径的“能量”。直接在 SE(3) 上优化是复杂的非线性问题,但在 se ( 3 ) \text{se}(3) se(3) 上可以通过线性化简化。

  1. 相对位姿
    T = T 1 − 1 T 2 T = T_1^{-1} T_2 T=T11T2
  2. 映射到 se ( 3 ) \text{se}(3) se(3)
    A = log ⁡ T ∈ se ( 3 ) A = \log T \in \text{se}(3) A=logTse(3)
  3. 优化目标
    假设路径为 T ( t ) = T 1 e t A T(t) = T_1 e^{t A} T(t)=T1etA,优化角速度和线速度的范数:
    min ⁡ ∫ 0 1 ∥ A ( t ) ∥ 2   d t \min \int_0^1 \| A(t) \|^2 \, dt min01A(t)2dt
    se ( 3 ) \text{se}(3) se(3) 上,这是一个二次优化问题。
例子:机械臂运动

假设机械臂从位姿:
T 1 = [ I 0 0 1 ] T_1 = \begin{bmatrix} I & 0 \\ 0 & 1 \end{bmatrix} T1=[I001]
移动到:
T 2 = [ [ 0 − 1 0 1 0 0 0 0 1 ] [ 1 0 0 ] 0 1 ] T_2 = \begin{bmatrix} \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} & \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} \\ 0 & 1 \end{bmatrix} T2= 010100001 0 100 1
计算相对位姿并取对数(近似):
A = log ⁡ T 2 ≈ [ [ 0 − π 2 0 π 2 0 0 0 0 0 ] [ 1 0 0 ] 0 0 ] A = \log T_2 \approx \begin{bmatrix} \begin{bmatrix} 0 & -\frac{\pi}{2} & 0 \\ \frac{\pi}{2} & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} & \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} \\ 0 & 0 \end{bmatrix} A=logT2 02π02π00000 0 100 0
路径:
T ( t ) = e t A T(t) = e^{t A} T(t)=etA
这描述了绕 z 轴旋转 π 2 \frac{\pi}{2} 2π 同时沿 x 轴平移的过程。优化可通过 se ( 3 ) \text{se}(3) se(3) 的线性结构调整 A A A 的分量。

几何意义

se ( 3 ) \text{se}(3) se(3) 将刚体运动分解为旋转和平移的“速度”,指数映射生成平滑的螺旋路径。几何上, se ( 3 ) \text{se}(3) se(3) 是 SE(3) 的“切空间”,提供了局部线性化的工具,方便梯度下降等优化方法。

应用三:机器学习中的流形优化

在机器学习中,许多问题涉及在李群上优化,例如神经网络的正交约束或机器人数据的流形学习。李群(如 SO(n))的非欧几里得结构需要特殊的优化方法,而李代数提供了解决方案。

李代数上的导数

假设我们优化一个旋转矩阵 R ∈ SO ( n ) R \in \text{SO}(n) RSO(n),目标是最小化损失函数 f ( R ) f(R) f(R)。直接在 SO(n) 上计算梯度是复杂的,因为 R R R 受正交约束 R T R = I R^T R = I RTR=I。使用李代数 so ( n ) \text{so}(n) so(n) 简化问题。

推导:梯度下降
  1. 参数化
    表示 R = e B R = e^B R=eB,其中 B ∈ so ( n ) B \in \text{so}(n) Bso(n) 是反对称矩阵。
  2. 导数
    损失函数变为 f ( e B ) f(e^B) f(eB)。在 so ( n ) \text{so}(n) so(n) 上计算导数:
    d d t f ( e B + t A ) ∣ t = 0 \frac{d}{dt} f(e^{B + t A}) \bigg|_{t=0} dtdf(eB+tA) t=0
    其中 A ∈ so ( n ) A \in \text{so}(n) Aso(n) 是扰动方向。梯度可以通过矩阵内积表示:
    ⟨ ∇ B f , A ⟩ = tr ( ( ∇ f ) T A ) \langle \nabla_B f, A \rangle = \text{tr} \left( (\nabla f)^T A \right) Bf,A=tr((f)TA)
  3. 更新
    更新 B B B
    B ← B − η ∇ B f B \gets B - \eta \nabla_B f BBηBf
    然后映射回 SO(n):
    R ← e B R \gets e^B ReB
例子:正交化神经网络

在深度学习中,正交矩阵用于保持信号的稳定性(例如在 RNN 或 GAN 中)。优化目标可能是:
min ⁡ R ∈ SO ( n ) ∥ R X − Y ∥ 2 \min_{R \in \text{SO}(n)} \| R X - Y \|^2 RSO(n)minRXY2
其中 X , Y X, Y X,Y 是数据矩阵。参数化 R = e B R = e^B R=eB,梯度为:
∇ B f = skew ( e B ( R X − Y ) X T ) \nabla_B f = \text{skew} \left( e^B (R X - Y) X^T \right) Bf=skew(eB(RXY)XT)
其中 skew ( M ) = M − M T 2 \text{skew}(M) = \frac{M - M^T}{2} skew(M)=2MMT 确保反对称性。通过李代数迭代优化,保证 R R R 始终在 SO(n) 上。

几何意义

李代数 so ( n ) \text{so}(n) so(n) 是 SO(n) 的“局部坐标系”,将非线性流形优化转化为线性空间的优化。几何上,李代数像是“切平面”,梯度下降在切平面内移动,再通过指数映射回到流形。

综合例子:从动画到机器人

考虑一个综合场景:一个机器人手臂在 3D 动画中执行任务。手臂的位姿由 SE(3) 描述,动画需要平滑插值,机器人需要优化路径。

  1. 动画插值
    使用 se ( 3 ) \text{se}(3) se(3) 的对数映射计算从 T 1 T_1 T1 T 2 T_2 T2 的相对变换 A A A,然后插值 T ( t ) = e t A T(t) = e^{t A} T(t)=etA,确保平滑的螺旋运动。

  2. 路径优化
    se ( 3 ) \text{se}(3) se(3) 上优化 A A A 的分量,最小化能量或避障约束,使用梯度下降。

  3. 正交约束
    如果涉及传感器数据处理(例如姿态估计),使用 so ( 3 ) \text{so}(3) so(3) 优化旋转矩阵,保持正交性。

几何意义

李群和李代数将复杂的非线性问题分解为局部线性和全局约束。 se ( 3 ) \text{se}(3) se(3) 的螺旋运动像是“螺丝拧动”, so ( 3 ) \text{so}(3) so(3) 的旋转像是“绕轴转动”,这些几何图像帮助我们设计直观的算法。

直观总结

  • 计算机图形学 so ( 3 ) \text{so}(3) so(3) 用于平滑旋转插值,避免万向节锁。
  • 机器人学 se ( 3 ) \text{se}(3) se(3) 描述螺旋运动,优化运动规划。
  • 机器学习:李代数简化流形优化,保持几何约束。
  • 几何意义:李代数是“速度”,李群是“位置”,指数映射连接两者,提供了局部与全局的桥梁。
  • 核心优势:李群保持几何结构,李代数提供线性化工具,共同解决非线性问题。

通过这六篇博客,我们从李群与李代数的基础理论到实际应用,构建了一个完整的知识体系。希望你现在不仅理解了这些数学工具的优雅,还能感受到它们在计算机科学中的强大力量!未来,你可以进一步探索李群上的微分几何或更复杂的李代数(如 sp ( n ) \text{sp}(n) sp(n)),开启更广阔的旅程。

后记

2025年4月12日于上海,在grok 3大模型辅助下完成。