李群李代数 简明教程
slam算法中往往需要用到李群李代数的一些知识,最近看到一个李群李代数的简明教程,就翻译下来,有些地方翻译的可能不准,主要是作为一个学习记录。
文章目录
2.4 李群
优化和滤波的方法适用与欧式向量空间 R n \R^n Rn中的向量或标量,当进行优化操作时,我们计算一个增量 δ ∈ R n \bf \delta \in \R^n δ∈Rn,然后将该增量加到当前的估计值 x ( k ) ∈ R n \bf x^{(k)} \in \R^n x(k)∈Rn上:
x ( k + 1 ) = x ( k ) + δ \bf x^{(k+1)} = x^{(k)} + \delta x(k+1)=x(k)+δ
现在我们来看一个表达式 G ( ω ) G(\omega) G(ω), ω = ( ω 1 , ω 2 , ω 3 ) \bf \omega = \rm (\omega_1,\omega_2,\omega_3) ω=(ω1,ω2,ω3)是一个三维空间中的旋转,我们希望求出使 G ( ω ) G(\omega) G(ω)最小的 ω \omega ω的值。 ω \omega ω可能是三维旋转的任何一种参数表示(例如欧拉角、旋转向量)。执行一次 δ \bf\delta δ旋转然后再进行一次 ω \omega ω旋转通常与执行一次 δ + ω \bf \delta + \omega δ+ω的旋转是不相等的。两次旋转并不能通过两个向量的简单相加得到。因此,旋转并不能用欧式向量空间表达,而是需要使用李群。
李群在计算机视觉和机器人学的相关领域越来越受欢迎。但是大多数文档或者是单纯的只讲如何应用,很少谈及一些特殊李群的相关性质,或者时面向数学专业的讲得很复杂的书。因此,为了弥补两者之间的gap,该教程不仅会介绍 S O ( 3 ) SO(3) SO(3)和 S E ( 3 ) SE(3) SE(3)而且会介绍一些更一般的概念。
2.4.1 光滑流形和李群
许多基本的数学方法和结论都基于变量是欧氏向量空间中的量。然而大多数的结论都是可以泛化到更加抽象的概念中的。一个较实用的泛化就是从欧氏空间泛化到光滑流行上。一个光滑流形在局部可以视作是欧氏空间,但是在全局结构上又不同于欧氏空间。球面是光滑流形较好的一个例子,球面的每一个局部区域都可以近似用切平面表示,然而它的全局结构又与平面不同。例如,一个2维平面是无界的,而球面是有界的。直观上看,我们可以认为流形是一个被弯曲了的欧氏向量空间。
我们将会关注一类有着特殊的流形:李群,它有着一些非常好的性质。李群是一种群,同时也是一种光滑流形。基于这个抽象的定义来介绍李群需要许多高阶的数学理论,例如拓扑学和微分几何学。然而我们将跟随Stillwell的步伐来理解作为可逆矩阵群 G L ( n ) GL(n) GL(n)的封闭子群的李群。因此我们就不必非常正式来介绍光滑流形。限定在李群矩阵上并不会有什么大的损失,因为我们感兴趣的大多数李群都属于这一类的李群。
从几何上来直观的介绍李群是比较困难的,因为没有一个比较直观的例子。球面是光滑流形的一个好例子,但是它并不是李群。欧氏空间是一个不太重要的李群。很明显,它不是李群的一个很好的例子,正如一条直线并不能作为光滑函数的一个很好的例子一样。一个最基本的例子是圆环群(图2.3b)。这个群定义了平面旋转。然而,圆环群不够一般,因为它是可交换的。我们将会看到可交换群是非常特殊的。一个最简单的不可交换李群是三维旋转群 S O ( 3 ) SO(3) SO(3)。该群将作为我们主要的例子来使用。
2.4.2 群
首先,李群是一种群。一个群 ( G , i d , ⊗ ) (G,id,\otimes) (G,id,⊗)是一个集合G,它包含幺元 i d ∈ G id \in G id∈G和运算符 ⊗ : G ⊗ G → G \otimes: G \otimes G \to G ⊗:G⊗G→G,且满足下列群公理:
∀ a ∈ G ∀ b ∈ G ∀ c ∈ G a ⊗ ( b ⊗ c ) = ( a ⊗ b ) ⊗ c ( a s s o c i a t i v i t y ) \forall_{a \in G} \forall_{b \in G} \forall_{c \in G} \; a \otimes(b \otimes c) = (a \otimes b) \otimes c \qquad(associativity) ∀a∈G∀b∈G∀c∈Ga⊗(b⊗c)=(a⊗b)⊗c(associativity)
∀ a ∈ G a ⊗ i d = i d ⊗ a ( n e u t r a l e l e m e n t ) \forall_{a \in G} \quad a \otimes id = id \otimes a \qquad(neutral \;element) ∀a∈Ga⊗id=id⊗a(neutralelement)
∀ a ∈ G ∃ b ∈ G a ⊗ b = b ⊗ a = i d ( u n i q u e i n v e r s e e l e m e n t ) \forall_{a \in G} \exist_{b \in G} \quad a \otimes b = b \otimes a = id \qquad (unique \;inverse \;element) ∀a∈G∃b∈Ga⊗b=b⊗a=id(uniqueinverseelement)
从公理(4)可知,每个群都有一个取逆函数 i n v : G → G inv: G \to G inv:G→G,定义如下:
i n v ( a ) : = t h a t b s u c h t h a t a ⊗ b = i d inv(a) := that \; b \; such \;that \; a \otimes b = id inv(a):=thatbsuchthata⊗b=id
一个群是可交换的,如果所有的元素可交换:
∀ a ∈ G ∀ b ∈ G a ⊗ b = b ⊗ a \forall_{a \in G} \forall_{b \in G} \; a \otimes b = b \otimes a ∀a∈G∀b∈Ga⊗b=b⊗a
一个群 ( G , i d , ⊗ ) (G,id,\otimes) (G,id,⊗)的子集 S ⊂ G S \subset G S⊂G是一个G子群的子群当 ( S , i d , ⊗ ) (S,id,\otimes) (S,id,⊗)是一个群的时候。子群 Z ( G ) ⊂ G Z(G) \subset G Z(G)⊂G的元素是与G中所有元素都满足交换律,即
Z ( G ) : = { x ∈ G : ∀ y ∈ G : x ⊗ y = y ⊗ x } Z(G):=\{x \in G:\forall_{y \in G}:x \otimes y = y \otimes x\} Z(G):={
x∈G:∀y∈G:x⊗y=y⊗x}
则 Z ( G ) Z(G) Z(G)称为G的中心。
2.4.3 李群矩阵
首先看一般线性群这一最一般的李群矩阵。它是由 n × n n \times n n×n可逆实矩阵构成的群。该群的运算符为矩阵乘法,幺元为单位阵 I n × n I_{n \times n} In×n。矩阵必须是可逆的才能满足群公理的要求。矩阵的乘法不可交换因此李群矩阵的运算也不可交换。例如:
[ 0 1 1 1 ] [ 1 2 0 1 ] = [ 0 1 1 3 ] , 但 是 [ 1 2 0 1 ] [ 0 1 1 1 ] = [ 2 3 1 1 ] \left[ \begin{matrix}0 & 1\\ 1 & 1 \end{matrix}\right] \left[ \begin{matrix} 1 & 2 \\ 0 & 1\end{matrix}\right] = \left[ \begin{matrix} 0 & 1 \\ 1 & 3\end{matrix}\right] ,但是 \left[ \begin{matrix} 1 & 2 \\ 0 & 1\end{matrix}\right] \left[ \begin{matrix}0 & 1\\ 1 & 1 \end{matrix}\right] = \left[ \begin{matrix} 2 & 3 \\ 1 & 1\end{matrix}\right] [0111][1021]=[0113],但是[1021][0111]=[2131]
有几个李群的例子将会贯穿到整个教程中。一个是称为 S O ( 2 ) SO(2) SO(2)的平面旋转群。它由 R ( α ) R(\alpha) R(α)形式的 2 × 2 2 \times 2 2×2矩阵构成。
R ( α ) = [ cos ( α ) − sin ( α ) sin ( α ) cos ( α ) ] R(\alpha) = \left[\begin{matrix} \cos(\alpha) & -\sin(\alpha) \\ \sin(\alpha) & \cos(\alpha)\end{matrix}\right] R(α)=[cos(α)sin(α)−sin(α)cos(α)]
如果将 R ( α ) R(\alpha) R(α)乘以一个2维向量 x x x,那么在右手坐标系中相当于该向量被绕着原点逆时针旋转了 α \alpha α角度。 S O ( 2 ) SO(2) SO(2)李群是一个特殊的群,因为它是可以交换的,也就是对于两个矩阵 R ( α ) , R ( β ) ∈ S O ( 2 ) R(\alpha),R(\beta) \in SO(2) R(α),R(β)∈SO(2),那么 R ( α ) R ( β ) = R ( β ) R ( α ) R(\alpha)R(\beta) = R(\beta)R(\alpha) R(α)R(β)=R(β)R(α)。
为了从 S O ( 2 ) SO(2) SO(2)进行一般化,首先注意到它的元素都是正交矩阵,即 R ( α ) R ( α ) T = I R(\alpha)R(\alpha)^T = I R(α)R(α)T=I或等价的 R ( α ) T = R ( α ) − 1 R(\alpha)^T = R(\alpha)^{-1} R(α)T=R(α)−1;一般地,如果 n × n n \times n n×n矩阵 A A T = I AA^T = I AAT=I,那么矩阵称为正交矩阵群 O ( n ) O(n) O(n)。正交群 O ( n ) O(n) O(n)的行列式为1或-1。行列式为-1的正交群处了旋转作用外还有镜像作用。如果我们只想获得旋转,那么需要限制正交矩阵的行列式 d e t ( A ) = 1 det(A) = 1 det(A)=1。这样的群被称为特殊正交群,我们将主要研究三维旋转群 S O ( 3 ) SO(3) SO(3)。
2.4.4切空间
多数李群,包括 S O ( 3 ) SO(3) SO(3),都是不可交换群。然而每一个群的元素 a a a与幺元 i d id id是可交换的,即: a ⨂ i d = i d ⨂ a a \bigotimes id = id \bigotimes a a⨂id=id⨂a。因此在幺元附近一个无穷小的区域内是可交换的空间。这一空间就是我们将要介绍的幺元附近的切空间。
光滑路径定义
令 X ⊂ R m X \subset R^m X⊂Rm, [ a , b ] [a,b] [a,b]为一个实数区间。
P 是 X 上 的 光 滑 路 径 : ⟺ P : [ a , b ] → X 是 一 个 可 微 的 方 程 。 P是X上的光滑路径 :\iff P:[a,b]\rightarrow X是一个可微的方程。 P是X上的光滑路径:⟺P:[a,b]→X是一个可微的方程。
因此一个光滑路径是一个从实数区间映射到实向量空间的可微函数。必要时,我们会将一个矩阵看成是一个m维元组。因此我们可以将一个方阵 A n × n A_{n \times n} An×n看做是向量空间 R m R^m Rm的一个成员,这里 m = n 2 m = n^2 m=n2。实际上我们感兴趣的是映射到矩阵群上的光滑路径。例如一个 S O ( 3 ) SO(3) SO(3)的光滑路径为:
R x : [ − π , π ] → S O ( 3 ) , R x ( t ) = [ 1 0 0 0 cos ( t ) − sin ( t ) 0 sin ( t ) cos ( t ) ] R_x:[-\pi,\pi] \rightarrow SO(3), R_x(t) = \left[ \begin{matrix} 1 & 0 & 0 \\ 0 & \cos(t) & -\sin(t) \\ 0 & \sin(t) & \cos(t) \end{matrix} \right] Rx:[−π,π]→SO(3),Rx(t)=⎣⎡1000cos(t)sin(t)0−sin(t)cos(t)⎦⎤
光滑路径是一个与空间中运动概念相关联的术语。事实上, R ( t ) R(t) R(t)描述了 t t t时刻绕 x x x轴的旋转。另外一个例子是 S O ( 2 ) SO(2) SO(2)是由式(2)定义的光滑路径完全确定。
定义:一个路径的切向量
令 P P P是一个光滑路径,且 P ( 0 ) = y P(0) = y P(0)=y。
x 是 路 径 P 在 y 点 处 的 切 向 量 : ⟺ x = ∂ ∂ t P ( t ) ∣ t = 0 x 是路径P在y点处的切向量 :\iff x = \frac {\partial} {\partial t} P(t)|_{t=0} x是路径P在y点处的切向量:⟺x=∂t∂P(t)∣t=0
此外,如果如果这样的一个光滑路径存在,那么我们称 x x x是空间 X X X的一个切向量。
定义:一个空间的切向量
令 X ⊂ R n X \subset R^n X⊂Rn是一个空间,且 y ∈ X y \in X y∈X。
x 是 X 上 y 点 处 的 一 个 切 向 量 : ⟺ ∃ s m o o t h _ p a t h _ P _ i n _ X ( P ( 0 ) = y ∧ x = ∂ ∂ t P ( t ) ∣ t = 0 ) x 是X上y点处的一个切向量 :\iff \exist_{smooth\_path\_P\_in\_X}(P(0) = y \wedge x = \frac {\partial}{\partial t}P(t)|_{t=0}) x是X上y点处的一个切向量:⟺∃smooth_path_P_in_X(P(0)=y∧x=∂t∂P(t)∣t=0)
例如,
∂ ∂ t R x ( t ) ∣ t = 0 = [ 0 0 0 0 − sin ( 0 ) − cos ( 0 ) 0 cos ( 0 ) − sin ( 0 ) ] = [ 0 0 0 0 0 − 1 0 1 0 ] \frac {\partial} {\partial t} R_x(t)|_{t=0} = \left[\begin{matrix} 0 & 0 & 0 \\ 0 & -\sin(0) & -\cos(0) \\ 0 & \cos(0) & -\sin(0)\end{matrix}\right] = \left[ \begin{matrix} 0 & 0 & 0 \\ 0 & 0 & -1\\ 0 & 1 & 0\end{matrix}\right] ∂t∂Rx(t)∣t=0=⎣⎡0000−sin(0)cos(0)0−cos(0)−sin(0)⎦⎤=⎣⎡0000010−10⎦⎤
是 R ( x ) R(x) R(x)的切向量,因此也是