鑑於本碩博在讀期間未接受 Matrix Calculus 的專項訓練,而在CV, CG 演算法中卻大量涉及 Jacobian Matrix的推導,現將其結合圖形學實際案例進行歸納,備記、備討論。
目錄
X-by-
Vector
X-by-
Matrix
開始之前有必要澄清全域性的符號使用。mathbb 體表示數域
。普通小寫
表示標量; bm體
為列向量; mathbf 體
為矩陣。
由於 Jacobian Matrix 的形狀、維度因問題各異,使用 mathrm體
將其視為一種函式對映;為避免混淆,函式
對應矩陣的逐元素指數,函式
對應矩陣的指數函式。
由於側重解決空間問題,
總是三維,會採取
的拆分表達。
求解 Jaccobian 時還應當注意一個前提:位於分母的 向量/ 矩陣各維度之間應當 mathematically independent and variable。
X-by-
Vector
這一部分包含 標量關於向量
,向量關於向量
兩部分,與 Wiki 中結果採用“
分子佈局
(numerator layout)”的結果一致:單行對應因變數的同一維,單列對應自變數的同一維。
1。1 標量關於向量的
:行向量
使用 Jacobian 計算增量:
實際上,
的形狀規定,旨在方便與
進行矩陣乘法運算。
Properties
鏈式法則(先外後內):
純標量乘法法則:
1。2 向量關於向量的
:矩陣
矩陣的每一行對應因變數的一維:
使用 Jacobian 計算增量:
Properties
鏈式法則(先外後內):
純向量乘法(點積)法則:
混合乘法法則:
Examples
1)
座標軸之間正交,不同維度之間無關;
2)
點乘即投影,矩陣乘向量即逐行投影;
3)
Proof: 利用鏈式法則,
,其中
;
, 其中
;
4)
利用乘法法則,
其中
, 分子的第二項矩陣
稱為向量
的投影矩陣(秩為1);
類似地,
, 其中
;
5)
Proof: 利用乘法法則,
** 當
即可得到
上述結果與 Miles Macklin Blog 中結果一致。
6)**Hessian matrix: 由於標量場的Jacobian Matrix 是行向量,直接對其求偏導欠妥,一般會借用標量場的梯度
定義“二階導”:
而該矩陣的Trace 對應的又是標量場在該點處被 Laplacian Operator 作用的值
。
7) ** 最小二乘
在超定方程的應用中,一般無法找到恰好
的準確解
(各行不相容),因此問題轉化為求凸問題
, 只需令
轉化為求解
。
X-by-Matrix
凡是分子或分母出現矩陣的Jacobian Matrix,都在此分討論 。先引入兩個運算:
克羅內克積
(
Kronecker
product)
用於描述兩個任意大小的矩陣間的運算。設
, 則:
矩陣的向量化:對
,
是將
的所有
列
拼在一起對應的向量。
為了方便理解和描述規律,下面的矩陣分母統一使用
作為示例,
而
之後會用到克羅內克積的一個性質:若
,則
1。1 標量關於矩陣的
:行向量
Wiki 中將這一運算的結果定義為與
形狀相同的矩陣。這不利於與 向量 Jacobian 的相容。
因此本文采用:
使用 Jacobian 計算增量:
Properties
乘法法則:
鏈式法則:
Examples
1)
跡(Trace)僅和對角元素相關;
2)
行列式(Determinant)結果對逐元素的偏導為對應元素的代數餘子式(Cofactor);
1.2
向量關於矩陣
#FormatImgID_76# :寬矩陣
若繼續 Wiki 中 的定義,從這一節開始向下的所有運算都是失效的(結果變為三維張量)。
而若繼續延續上面的定義,有:
使用 Jacobian 計算增量:
Examples
1)
Proof: 驗證 第一個 Joccobian 等價於驗證 Jacobian 計算增量是否正確,即
分別計算兩側(Left /Right Hand Side):
根據第一個 Joccobian, 第二個(標量關於矩陣)可推出
1。3 矩陣關於向量
:長矩陣
使用 Jacobian 計算增量:
Examples
1) 對角陣
和 反對稱陣(定義見Axis-Angle)
2) **Axis-Angle 中 位置 關於轉軸的 Joccobian
Proof: 若直接按照鏈式法則,分析如下:
(Term1) 根據向量關於矩陣 Example 1),
;
(Term2)
;此項不可再分鏈為
作分母,違背各項獨立;
參考paper[Gallego 2015] 中 Eq (8) 及其在論文附錄2中的嚴密推導,並帶入介紹斜交矩陣的文章中其相關性質,即可證明上式成立。
Proof in paper[Gallego 2015]
上述結果的極限形式與Lie Group的文獻以及另一篇對旋轉矩陣求導的文章的結果一致。
3) **FEM 中 能量密度關於tetrahedron各頂點位置的梯度 (Joccobian 的轉置)
Proof:
首先回顧FEM一節中各部分定義
單個四面體
的應變 (strain)基於當前頂點位置的變換計算:
其中
僅和各頂點初始位置有關,視為常量。
而該點處的應變能量密度
是關於
的
標量
函式, 而
會根據能量密度的定義而預先計算,稱之為應力張量
。
因此,Joccobian 計算為:
棘手之處在於第二項,即 matrix-by-vector Joccobian。結合本節定義
依據定義可得
進而有
因此
最終有
這與文獻 Siggraph 2012 tutorial [Sifakis 2012] 中利用 Frobenius inner product 求得的結果一致。
Refs
參考 Blogs
Derivative of a vector with respect to a matrix, From stackexchange;
Derivative of exponential mapping, From stackexchange;
The Matrix Cookbook, By Kaare Brandt Petersen
隱式尤拉積分需要的彈簧Jacobian計算,By Miles Macklin ;
參考 Papers
Gallego, G。 and Yezzi, A。, 2015。 A compact formula for the derivative of a 3-D rotation in exponential coordinates。
Journal of Mathematical Imaging and Vision
,
51
(3), pp。378-384。
Sifakis, E。 and Barbic, J。, 2012。 FEM simulation of 3D deformable solids: a practitioner‘s guide to theory, discretization and model reduction。 In
Acm siggraph 2012 courses
(pp。 1-50)。