Hanjie's Blog

一只有理想的羊驼

一、统一符号定义(维度 + 含义 + 代码对应)

数学符号 矩阵维度 物理含义 代码变量
\(N\) 标量 匹配点对总数 N = Y.rows()
\(M\) 标量 核矩阵低秩近似主成分数 M = Q.cols()
\(D=2\) 标量 二维平面坐标 固定值
\(X\) \(\mathbb{R}^{N \times 2}\) 归一化参考点坐标 \((x_i,y_i)\) 入参 const Eigen::MatrixXf& X
\(Y\) \(\mathbb{R}^{N \times 2}\) 观测位移向量场 入参 const Eigen::MatrixXf& Y
\(P\) \(\mathbb{R}^{N}\) 内点后验概率向量(对角矩阵 \(\mathrm{diag}(P)\) 入参 const Eigen::VectorXf& P
\(Q\) \(\mathbb{R}^{N \times M}\) 高斯核低秩特征向量矩阵 入参 const Eigen::MatrixXf& Q
\(S\) \(\mathbb{R}^{M}\) 高斯核低秩特征值向量 入参 const Eigen::VectorXf& S
\(C\) \(\mathbb{R}^{N \times 2}\) 输出:局部非刚性核系数 出参 Eigen::MatrixXf& C
\(\Theta\) \(\mathbb{R}^{3 \times 2}\) 输出:全局仿射参数 \([平移, A_x, A_y]^T\) 出参 Eigen::MatrixXf& Affine
\(\lambda\) 标量 正则化系数 入参 float lambda
\(\sigma^2\) 标量 噪声方差 入参 float sigma2
\(\lambda_s\) 标量 联合正则系数 \(\lambda \cdot \sigma^2\) lambda_sigma2
\(P_{aff}\) \(\mathbb{R}^{N \times 3}\) 仿射基矩阵 \([\mathbf{1}, X]\) P_affine

二、核心数学模型

将 VFC 向量场解耦为全局仿射变换 + 局部非刚性形变,同时加入正交约束(强制非刚性分量不含全局仿射趋势,与 TPS 数学同源): ### 1. 向量场定义 \[ f(x) = \underbrace{P_{aff} \Theta}_{全局仿射} + \underbrace{K C}_{局部非刚性} \] ### 2. 扩展线性系统(VFC M 步核心) \[ \begin{cases} \left(K + \lambda \sigma^2 P^{-1}\right) C + P_{aff} \Theta = Y \quad (1) \quad // 拟合方程 \\ P_{aff}^T C = 0 \quad\quad\quad\quad\quad\quad\quad\quad\quad\ (2) \quad // 正交约束:非刚性系数群仿射力矩为0 \end{cases} \]

三、分步数学推导(核心修正:正交约束代入)

步骤 1:方程等价变形(消去拟合逆矩阵)

对公式 (1) 左乘概率对角矩阵 \(P\),化简得: \[ \left(P K + \lambda \sigma^2 I_N\right) C + P P_{aff} \Theta = P Y \tag{3} \]

步骤 2:代入核矩阵低秩近似

高斯核低秩分解:\(K \approx Q S Q^T\),代入公式 (3): \[ \left(P Q S Q^T + \lambda \sigma^2 I_N\right) C + P P_{aff} \Theta = P Y \tag{4} \]

步骤 3:定义辅助变量(FastVFC 降维核心)

定义低维辅助变量 \(T = S Q^T C \in \mathbb{R}^{M \times 2}\),代入公式 (4) 并移项,直接得到核系数闭式解\[ \boldsymbol{C = \frac{1}{\lambda \sigma^2} \Big( P Y - P Q T - P P_{aff} \Theta \Big)} \tag{5} \]

步骤 4:正定子系统的反向构建

将显式关系 (5) 代回物理性质方程,构建极小系统:

(A) 代回辅助变量定义式 \(T = S Q^T C\) \[ T = S Q^T \left[ \frac{1}{\lambda \sigma^2} \Big( P Y - P Q T - P P_{aff} \Theta \Big) \right] \] 整理化简可得第一方程: \[ \left( Q^T P Q + \lambda \sigma^2 S^{-1} \right) T + \left( Q^T P P_{aff} \right) \Theta = Q^T P Y \tag{6} \]

(B) [严格修正] 代回正交约束 \(P_{aff}^T C = 0\) \[ P_{aff}^T \left[ \frac{1}{\lambda \sigma^2} \Big( P Y - P Q T - P P_{aff} \Theta \Big) \right] = 0 \] 消去 \(\frac{1}{\lambda \sigma^2}\),并将待求解变量移项。此时伴生在 \(\Theta\) 上的系数矩阵浮现\[ \left( P_{aff}^T P Q \right) T + \boldsymbol{\left( P_{aff}^T P P_{aff} \right)} \Theta = P_{aff}^T P Y \tag{7} \]

步骤 5:构建低维对称正定系统 (SPD)

将 (6) 与 (7) 联立为 \((M+3) \times (M+3)\) 块矩阵:

\[ \underbrace{ \begin{bmatrix} Q^T P Q + \lambda \sigma^2 S^{-1} & Q^T P P_{aff} \\ P_{aff}^T P Q & \boldsymbol{P_{aff}^T P P_{aff}} \end{bmatrix}}_{K_{ext}} \underbrace{\begin{bmatrix} T \\ \Theta \end{bmatrix}}_{T_{ext}} = \underbrace{\begin{bmatrix} Q^T P Y \\ P_{aff}^T P Y \end{bmatrix}}_{B_{ext}} \tag{8} \]

左侧系数大矩阵 \(K_{ext}\) 是一个绝对的对称正定矩阵 (SPD)。由于它是 SPD 矩阵,我们可以安全地只计算下三角部分并使用最高效的 LDLT 分解求逆,彻底避免鞍点系统带来的数值崩溃。

四、C++ 实现代码

利用上一步论证得出的 SPD 对称性,剔除多余乘法、转置操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/**
* @brief 带全局仿射项的VFC控制点更新 (数学严格版,利用 SPD 半区域加速)
* @param X 归一化参考点坐标 N×2
* @param Y 观测位移向量场 N×2
* @param P 内点概率向量 N×1
* @param Q 核低秩特征向量 N×M
* @param S 核低秩特征值 M×1
* @param C 输出:非刚性核系数 N×2
* @param Affine 输出:仿射参数 3×2 [平移, x线性系数, y线性系数]
* @param sigma2 噪声方差
* @param lambda 正则化系数
* @return 求解是否成功
*/
static bool UpdateControlPointsWithAffine(const Eigen::MatrixXf& X,
const Eigen::MatrixXf& Y,
const Eigen::VectorXf& P,
const Eigen::MatrixXf& Q,
const Eigen::VectorXf& S,
Eigen::MatrixXf& C,
Eigen::MatrixXf& Affine,
float sigma2,
float lambda) {
const int N = Y.rows();
const int M = Q.cols();
const float eps = 1e-6f;
const float lambda_sigma2 = lambda * sigma2;

// ====================== 1. 构建仿射基矩阵 P_aff = [1, x, y] (N×3) ======================
Eigen::MatrixXf P_affine(N, 3);
P_affine.col(0).setOnes();
P_affine.col(1) = X.col(0);
P_affine.col(2) = X.col(1);

// ====================== 2. 概率加权矩阵 (N 维度运算) ======================
Eigen::MatrixXf PQ(N, M); PQ.noalias() = P.asDiagonal() * Q;
Eigen::MatrixXf PY(N, 2); PY.noalias() = P.asDiagonal() * Y;
Eigen::MatrixXf PP(N, 3); PP.noalias() = P.asDiagonal() * P_affine;

// ====================== 3. 构建低维系统子矩阵 (极限加速区) ======================
// 因为最终大矩阵是对称正定的,大块矩阵中针对自身的内积我们只算 Lower 下半角,减少近一半计算量
Eigen::MatrixXf QtPQ(M, M);
QtPQ.triangularView<Eigen::Lower>() = Q.transpose() * PQ;
Eigen::MatrixXf PtPP(3, 3);
PtPP.triangularView<Eigen::Lower>() = P_affine.transpose() * PP;

Eigen::MatrixXf QtPP(M, 3); QtPP.noalias() = Q.transpose() * PP;

// 生成右侧目标 B_ext 块
Eigen::MatrixXf QtPY(M, 2); QtPY.noalias() = Q.transpose() * PY;
Eigen::MatrixXf PtPY(3, 2); PtPY.noalias() = P_affine.transpose() * PY;

// ====================== 4. 添加正则化项 ======================
Eigen::VectorXf inv_S = S.cwiseMax(eps).cwiseInverse();
QtPQ.diagonal() += lambda_sigma2 * inv_S;

// ====================== 5. 拼装分块矩阵 K_ext (M+3 × M+3) ======================
Eigen::MatrixXf K_ext(M + 3, M + 3);
// 因为 LDLT 使用 Lower 模式,我们只需填充下三角区域
K_ext.topLeftCorner(M, M).triangularView<Eigen::Lower>() = QtPQ;
K_ext.bottomRightCorner(3, 3).triangularView<Eigen::Lower>() = PtPP;
K_ext.bottomLeftCorner(3, M) = QtPP.transpose();

Eigen::MatrixXf B_ext(M + 3, 2);
B_ext.topRows(M) = QtPY;
B_ext.bottomRows(3) = PtPY;

// ====================== 6. 下三角 LDLT 分解求解 ======================
Eigen::LDLT<Eigen::MatrixXf> ldlt;
ldlt.compute(K_ext.selfadjointView<Eigen::Lower>());
if (ldlt.info() != Eigen::Success) return false;

Eigen::MatrixXf T_ext(M + 3, 2);
T_ext.noalias() = ldlt.solve(B_ext);

// ====================== 7. 还原最终系数 ======================
Eigen::MatrixXf T = T_ext.topRows(M);
Affine = T_ext.bottomRows(3);
C.noalias() = (PY - PQ * T - PP * Affine) / lambda_sigma2;

return true;
}

配套的向量场合成函数(严禁使用隐式会导致失真的 .transpose()):

1
2
3
4
5
6
7
8
9
10
11
12
static void UpdateVectorFieldWithAffine(const Eigen::MatrixXf& Q,
const Eigen::VectorXf& S,
const Eigen::MatrixXf& C,
const Eigen::MatrixXf& Affine,
const Eigen::MatrixXf& X,
Eigen::MatrixXf& V) {
// 1. 局部非刚性形变
V.noalias() = Q * (S.asDiagonal() * (Q.transpose() * C));
// 2. 全局仿射形变 (严格坐标方向映射相加)
V.rowwise() += Affine.row(0); // 广播相加平移量
V.noalias() += X * Affine.bottomRows(2); // x,y 线性矩阵点乘,输出直接为 N×2 尺寸坐标系
}

五、实验结果

VFC NORMAL VFC FAST VFC FAST AFFINE
DEBUG_VQF_CVTE_NORMAL_20251219085323_e32a6c13caa34401881bfffd25dc5241_122_user DEBUG_VQF_CVTE_FAST_20251219085323_e32a6c13caa34401881bfffd25dc5241_122_user DEBUG_VQF_CVTE_FAST_AFFINE_20251219085323_e32a6c13caa34401881bfffd25dc5241_122_user

可以看到,FastVFC加上带显式仿射项后,并没有使得算法快速收敛。

FastVFC 完整实现方法详解

FastVFC 是标准 VFC 算法的低秩加速优化版本,核心解决了标准 VFC 每轮 EM 迭代都需要求解 \(N×N\) 线性方程组带来的 \(O(N^3)\) 高计算复杂度问题,在几乎不损失拟合精度的前提下,将算法速度提升1~2个数量级,是工程实现中最常用的 VFC 版本。

一、核心设计思想与理论依据

1. 标准 VFC 的性能瓶颈

标准 VFC 的核心计算开销集中在 EM 迭代的 M 步:每一轮迭代都需要求解如下 \(N×N\) 规模的线性方程组(可分解核下的简化版): \[ \left(K + \lambda \sigma^2 P^{-1}\right) C = Y \] 其中: - \(N\) 为特征匹配对总数,在宽基线匹配场景下 \(N\) 可达数千甚至上万; - 每轮迭代都需要对 \(N×N\) 矩阵做求逆/线性求解,时间复杂度为 \(O(N^3)\); - 当 \(N>1000\) 时,标准 VFC 的计算延迟会急剧上升,无法满足实时性需求。

2. 低秩近似的理论可行性

FastVFC 的核心突破点,是利用高斯核矩阵的谱衰减特性做低秩近似: 1. VFC 采用的高斯核矩阵 \(K \in \mathbb{R}^{N \times N}\) 是标量核矩阵,第 \((i,j)\) 个元素为 \(\kappa(\mathbf{x}_i,\mathbf{x}_j)\)\(K\)半正定对称矩阵,可通过特征值分解(EVD)表示为:\[K = Q S Q^T\]。其中 \(S=diag(s_1,s_2,...,s_N)\) 是特征值对角矩阵(按降序排列 \(s_1\ge s_2\ge...\ge s_N\ge0\)),\(Q\) 是正交特征向量矩阵。 2. 高斯核矩阵的特征值具有极快的指数衰减特性:前 \(M=\sqrt{N}\) 个主特征值就可以覆盖核矩阵99%以上的能量,剩余特征值几乎为0,对结果的影响可以忽略。 3. 因此可以用前 \(M\) 个主特征值和特征向量做低秩截断,近似原核矩阵: \[K \approx Q_M S_M Q_M^T\] 其中 \(S_M \in \mathbb{R}^{M×M}\) 是前 \(M\) 个特征值构成的对角阵,\(Q_M \in \mathbb{R}^{N×M}\) 是对应的特征向量矩阵。

3. 论文与代码的对应设计

  • 论文中明确提出:FastVFC 采用低秩矩阵近似+Woodbury矩阵求逆引理,将每轮迭代的 \(O(N^3)\) 复杂度降为 \(O(M^2N + M^3)\)
  • 代码中工程化选择 \(M=int(\sqrt{N}+0.5)\),在精度和速度之间取得了最优平衡;
  • 特征值分解仅在 EM 迭代前执行一次,无需在每轮迭代中重复计算,进一步降低了开销。

二、FastVFC 的核心数学推导

标准 VFC 的 M 步线性方程组

可分解核下,标准 VFC 需要求解的线性方程组为: \[ \underbrace{\left(K + \lambda \sigma^2 P^{-1}\right)}_{A_{N×N}} \cdot C_{N×D} = Y_{N×D} \tag{1} \] 其中: - \(P=diag(p_1,p_2,...,p_N)\) 是内点后验概率构成的对角矩阵,\(P^{-1}=diag(1/p_1,1/p_2,...,1/p_N)\); - \(C\) 是待求的核系数矩阵; - \(Y\) 是观测位移矩阵。

步骤1:核矩阵的低秩分解 对核矩阵 \(K\) 做特征值分解,并截断前 \(M\) 个主成分: \[K = Q S Q^T \approx Q_M S_M Q_M^T\] 其中 \(Q_M^T Q_M = I_M\)(特征向量正交性)。

步骤2:Woodbury 矩阵求逆引理化简 1. 原始线性系统(可分解核下) \[ \left(K + \lambda \sigma^2 P^{-1}\right) C = Y \]

  1. 等价变形(两边左乘P) \[ \left(P K + \lambda \sigma^2 I_N\right) C = P Y \]

  2. 低秩近似代入 \[ K \approx Q_M S_M Q_M^T \] \[ \left(P Q_M S_M Q_M^T + \lambda \sigma^2 I_N\right) C = P Y \]

  3. Woodbury公式变量映射 \[ (A + U C V)^{-1} = A^{-1} - A^{-1} U (C^{-1} + V A^{-1} U)^{-1} V A^{-1} \]

  • \(A = \lambda \sigma^2 I_N\)
  • \(U = P Q_M\)
  • \(C = S_M\)
  • \(V = Q_M^T\)
  1. 代入Woodbury公式求逆 \[ (A + U C V)^{-1} = \frac{1}{\lambda \sigma^2} I_N - \frac{1}{\lambda \sigma^2} P Q_M \left( Q_M^T P Q_M + \lambda \sigma^2 S_M^{-1} \right)^{-1} Q_M^T \]

  2. 最终解 \[ C = (A + U C V)^{-1} P Y = \frac{1}{\lambda \sigma^2} \left( P Y - P Q_M \cdot \left( Q_M^T P Q_M + \lambda \sigma^2 S_M^{-1} \right)^{-1} Q_M^T P Y \right) \]

2D向量场总平滑范数\(\|f\|_{\mathcal{H}}^2\)

  1. 通用情况(任意矩阵值核,非可分解)任意向量值核 \(\Gamma(x_i,x_j) \in \mathbb{R}^{D\times D}\)(非对角、非可分解): 向量场的 RKHS 范数 一定是\[ \|f\|_{\mathcal{H}}^2 = \tilde{C}^T \tilde{\Gamma} \tilde{C} \] 其中

    • \(\tilde{\Gamma} \in \mathbb{R}^{DN \times DN}\)(完整分块核矩阵)
    • \(\tilde{C} \in \mathbb{R}^{DN \times 1}\)(向量化系数)

    这是最通用公式永远成立,但一般不能拆成 x、y 分量相加,会包含交叉耦合项

  2. 特例:使用可分解核 \[\Gamma(x_i,x_j) = \kappa(x_i,x_j) \cdot I_D\] 此时: \[\tilde{\Gamma} = K \otimes I_D\]

    核心恒等式\(vec(X)^T \left( A \otimes I_n \right) vec(X) = tr\left( X^T A X \right)\)任意矩阵\(X\in\mathbb{R}^{m×n}\)、对称阵\(A\in\mathbb{R}^{m×m}\)恒成立

    代入通用范数公式: \[ \begin{aligned} \|f\|_{\mathcal{H}}^2 &= \tilde{C}^T \left(K \otimes I_D\right) \tilde{C} \\ &= tr\left( C^T K C \right) \end{aligned} \] 其中 \(C \in \mathbb{R}^{N \times D}\)非向量化系数矩阵

    D=2(2D 向量场)\[ tr\left( C^T K C \right) = C_x^T K C_x + C_y^T K C_y = \|f_x\|_{\mathcal{H}}^2 + \|f_y\|_{\mathcal{H}}^2 \]

    这一步只有可分解核才能做到

    \(K=QSQ^T\) 代入 x 分量的二次型: \[ C_x^T K C_x = C_x^T \cdot \big(Q S Q^T\big) \cdot C_x \]

    根据矩阵结合律正交矩阵性质 \(Q^T Q=I\)\[ C_x^T Q S Q^T C_x = \big(Q^T C_x\big)^T \cdot S \cdot \big(Q^T C_x\big) \]

    设第 \(i\) 个特征向量与 \(C_x\)内积为: \[ z_{x,i} = \boldsymbol{q}_i^T C_x \]\(Q^T C_x = \big[z_{x,1},\ z_{x,2},\dots,z_{x,N}\big]^T\),代入后展开为求和形式\[ \big(Q^T C_x\big)^T S \big(Q^T C_x\big) = \sum_{i=1}^N s_i \cdot z_{x,i}^2 = \sum_{i=1}^N s_i \cdot \big(\boldsymbol{q}_i^T C_x\big)^2 \]

    高斯核特征值指数级快速衰减,仅保留前 \(M\) 个主特征即可高精度近似: \[ C_x^T K C_x \approx \sum_{i=1}^M s_i \cdot \big(\boldsymbol{q}_i^T C_x\big)^2 \tag{B} \]

    完全复用 x 分量的推导逻辑,仅替换分量符号: \[ C_y^T K C_y \approx \sum_{i=1}^M s_i \cdot \big(\boldsymbol{q}_i^T C_y\big)^2 \tag{C} \]

    合并 x/y 分量,得到最终 FastVFC 公式 \[ \boxed{tr\left(C^T K C\right) \approx \sum_{i=1}^{numEig} s_i \cdot \left[ \big(\boldsymbol{q}_i^T C_x\big)^2 + \big(\boldsymbol{q}_i^T C_y\big)^2 \right]} \tag{FastVFC 迹公式} \]

三、FastVFC 算法完整步骤

算法步骤 对应公式/核心内容(FastVFC独有优化标注)
1. 初始化\(\gamma=0.9\)\(V\)\(P=I_N\)\(a\)\(\sigma^2\) 与原VFC完全一致:EM迭代初始值,内点初始比例90%,初始概率矩阵\(P\)为单位矩阵
2. 数据归一化 + 构建标量核矩阵\(K\) 可分解核简化:构建\(N×N\)高斯核矩阵 \(K_{ij}=\exp(-\beta\|x_i-x_j\|^2)\)(对应论文公式(20)核定义)
3. FastVFC预处理:核矩阵特征值分解+低秩截断 FastVFC核心优化
1. 对\(K\)做特征值分解:\(K=QSQ^T\)
2. 截断前\(M=\sqrt{N}\)个主特征值/向量(低秩近似)
3. 仅执行一次,无需迭代重复计算
4. 进入EM迭代循环 标准EM框架,迭代终止条件:能量变化率<阈值/最大迭代次数
5. E步:更新\(P=diag(p_1,...,p_N)\) 与原VFC完全一致:公式(8),计算每个匹配对的内点后验概率\(p_n\)
6. FastVFC专用:计算低秩正则项迹\(trace(C^TQ S Q^T C)\) FastVFC优化:替代原VFC的\(trace(C^T K C)\),用低秩近似计算向量场平滑范数
7. M步:FastVFC低秩求解系数\(C\) FastVFC核心优化
1. 替代原VFC的\(N×N\)线性方程组
2. 基于Woodbury引理,仅求解\(M×M\)小规模方程组
3. 对应可分解核简化公式(20)的低秩版本
8. FastVFC低秩更新向量场\(V\) FastVFC优化\(V=Q S Q^T C\)(低秩矩阵乘法),替代原\(V=KC\)\(O(N^2)\)复杂度
9. 更新\(\sigma^2\)\(\gamma\) 可分解核简化公式,与原VFC完全一致:
• 噪声方差:公式(9)简化版 \(\sigma^2 = \frac{tr((Y-KC)^TP(Y-KC))}{D\cdot tr(P)}\)
• 内点先验:公式(10) \(\gamma=tr(P)/N\)
10. 迭代直到能量函数收敛 与原VFC完全一致:判断能量变化率,收敛则终止迭代
11. 输出向量场\(f\) 可分解核简化:\(f(x)=\sum_{n=1}^N \kappa(x,x_n)c_n\)
12. 筛选内点集\(\mathcal{I}\) 与原VFC完全一致:公式(13),用概率阈值\(\theta\)筛选内点

FastVFC 与 原VFC 的关键区别

  1. 唯一预处理步骤 FastVFC在迭代开始前对核矩阵做一次性特征值分解+低秩截断,原VFC无此步骤;
  2. M步求解复杂度断崖式下降 原VFC:每轮迭代求解 \(N×N\) 方程组(\(O(N^3)\)) FastVFC:每轮迭代求解 \(M×M\) 方程组(\(M=\sqrt{N}\)\(O(M^3)\));
  3. 向量场/正则项计算全低秩化 所有矩阵运算均用低秩特征向量/值完成,避免大矩阵乘法;
  4. 完全兼容可分解核简化 保留了你要求的公式(20)、σ²/γ简化公式,无任何公式改动。

四、FastVFC 与标准VFC、SparseVFC的对比

特性 标准VFC FastVFC SparseVFC
核心原理 完整核矩阵求解线性方程组 完整核矩阵低秩特征值分解 随机选控制点做稀疏基近似
时间复杂度 每轮迭代 \(O(N^3)\) 预处理一次 \(O(N^3)\),每轮迭代 \(O(M^2N+M^3)\) 每轮迭代 \(O(M^2N+M^3)\),无预处理
空间复杂度 \(O(N^2)\) \(O(N^2 + MN)\) \(O(MN + M^2)\)
拟合精度 理论最优,无近似误差 几乎无精度损失(高斯核谱衰减快) 精度略低,受控制点随机选择影响
工程适用场景 小样本量(N<500),追求最高精度 中大规模样本量(N>500),平衡精度与速度 超大规模样本量(N>10000),极致速度优先
代码默认优先级 可选 默认首选方案 可选

EM优化求解

第一章 前置基础:核心符号与EM算法的定位

1.1 全文档统一符号定义(2D点匹配场景专属)

所有符号与论文原文完全一致,同时标注工程物理意义,彻底解决符号混淆问题:

符号 数学定义 工程物理意义
\(N\) 候选匹配对总数 输入的SIFT/SURF等特征点匹配对总数量
\(x_n\) \(n\)个输入点,\(\in \mathbb{R}^P\) 第一张图像中第\(n\)个特征点的像素坐标,2D场景\(P=2\),即\(x_n=[u,v]^T\)
\(y_n\) \(n\)个输出向量,\(\in \mathbb{R}^D\) \(n\)个匹配对的位移向量(第二张图相对第一张图的坐标偏移),2D场景\(D=2\)
\(X\) 所有输入点集合 \(\{x_n\}_{n=1}^N\) 第一张图的全部特征点坐标(固定观测输入,全程不变)
\(Y\) 所有输出向量集合 \(\{y_n\}_{n=1}^N\) 全部匹配对的位移向量(固定观测数据,全程不变)
\(\theta\) 待估参数集 \(\{f, \sigma^2, \gamma\}\) 模型核心待求参数:
1. \(f\):待估计的向量场函数(输入特征点坐标,输出位移向量)
2. \(\sigma^2\):内点位移的高斯噪声方差
3. \(\gamma\):匹配对为内点的先验概率
\(z_n\) 二值隐变量 \(\in\{0,1\}\) 匹配对类型标记:\(z_n=1\)为内点(符合向量场的有效匹配),\(z_n=0\)为外点(随机噪声/错误匹配)
\(Z\) 所有隐变量集合 \(\{z_n\}_{n=1}^N\) 全部匹配对的内/外点标记(不可观测的隐藏信息)
\(p_n\) 内点后验概率 \(P(z_n=1\|x_n,y_n,\theta^{old})\) E步用旧参数计算的「第\(n\)个匹配对为内点的概率」
\(a\) 输出空间有界区域的体积 外点均匀分布的区域大小,固定常数
\(\lambda\) 正则化系数 平衡「数据拟合精度」与「向量场平滑度」的超参数
\(\phi(f)\) 平滑度泛函 等价于向量场在RKHS空间的范数平方\(\|f\|_{\mathcal{H}}^2\),量化向量场的总抖动/不平滑度

1.2 EM算法解决的核心痛点(VFC场景专属)

VFC算法的核心目标是鲁棒点匹配:在大量错误匹配(外点)的干扰下,拟合出符合真实相机运动的平滑向量场,同时筛选出有效匹配(内点)。

我们的最终优化目标是论文公式(6)的能量函数:

\[E(\theta)=-ln p(f)-\sum_{n=1}^{N} ln \sum_{z_{n}} p\left(y_{n}, z_{n} | x_{n}, \theta\right)\]

这个公式存在一个致命缺陷:对数内部嵌套了隐变量\(z_n\)的求和(log-sum-exp结构),无法直接对参数\(\theta\)求导得到闭式解,根本无法直接优化。

EM算法(Expectation-Maximization,期望最大化算法)就是专门解决这个问题的标准框架——它专门处理带隐变量的概率模型参数估计,通过两步迭代,把不可解的优化问题转化为可闭式求解的迭代问题。

1.3 EM算法的核心思想与通用流程

核心思想

既然隐变量\(Z\)无法直接观测,我们就用「两步迭代」绕开这个难题: 1. E步(期望步):用当前迭代的旧参数\(\theta^{old}\),计算隐变量\(Z\)的后验概率分布(相当于“猜”每个匹配对是内点/外点的概率); 2. M步(最大化步):固定隐变量的概率分布,把带隐变量的优化问题转化为无隐变量的确定性优化,闭式更新模型参数\(\theta^{new}\),让参数的后验概率最大化; 3. 反复迭代E步和M步,直到模型收敛(能量函数不再下降、参数变化小于阈值)。

VFC采用的MAP-EM框架

普通EM算法针对最大似然估计(ML),仅优化数据似然;而VFC采用的是最大后验估计(MAP),在似然的基础上加入了向量场的平滑先验,这也是VFC能保证向量场平滑、抗高比例外点的核心原因。

1.4 关键数学基础

1. 离散随机变量的期望定义

对离散隐变量\(Z\),若其概率分布为\(q(Z)\)(满足\(\sum\limits_Z q(Z)=1\)),则任意关于\(Z\)的函数\(g(Z)\)数学期望 = 按概率加权的求和,二者完全等价: \[\mathbb{E}_{Z\sim q(Z)}\big[g(Z)\big] = \sum_{Z} q(Z)\cdot g(Z)\] > 大白话:期望不是复杂概念,就是「按概率给不同情况加权,再求和算平均值」,这是后续所有推导的核心。

2. 针对\(\ln x\)的Jensen不等式

自然对数\(\ln(x)\)严格凹函数,对任意正数\(A(Z)\)、任意合法概率分布\(q(Z)\),永远满足: \[\ln\left( \sum_{Z} q(Z)\cdot A(Z) \right) \ge \sum_{Z} q(Z)\cdot \ln A(Z)\] > 口诀:凹函数,对数的加权平均 ≥ 加权平均的对数。这是EM算法能成立的数学根基,也是Q函数作为下界的核心依据。

3. 贝叶斯定理与概率链式法则
  • 贝叶斯定理:\(p(A|B) = \frac{p(B|A)p(A)}{p(B)}\)
  • 联合概率链式法则:\(p(A,B,C) = p(A|B,C) \cdot p(B|C) \cdot p(C)\)
  • 条件概率扩展:所有公式在增加共同条件\(|X\)后依然成立,例如\(p(A,B|X) = p(A|B,X)p(B|X)\) ### 第二章 公式(6):EM算法的最终优化目标 #### 2.1 公式(6)原文与数学本质 ##### 公式原文 \[E(\theta)=-ln p(f)-\sum_{n=1}^{N} ln \sum_{z_{n}} p\left(y_{n}, z_{n} | x_{n}, \theta\right) \tag{6}\]
数学本质

公式(6)是贝叶斯MAP估计的等价最小化能量函数,最小化这个能量函数,完全等价于最大化参数\(\theta\)在给定观测数据下的后验概率\(p(\theta|X,Y)\),也就是找到「最能解释观测数据、同时符合平滑先验」的模型参数。

2.3 公式(6)的致命缺陷:无法直接求解

公式(6)的核心问题在于对数内部嵌套了隐变量的求和(log-sum-exp结构)\[ln \left( \sum_{z_n} p(y_n,z_n|x_n,\theta) \right)\] 这个结构对参数\(f\)\(\sigma^2\)\(\gamma\)求导后,会得到极其复杂的非线性结果,没有闭式解,无法直接优化。这就是VFC必须引入EM算法的根本原因。 ### 第三章 公式(7):EM算法的核心Q函数零跳步完整推导 公式(7)是EM算法的核心,它把公式(6)不可解的log-sum-exp结构,转化为了可闭式求解的加权求和形式,是整个EM迭代的核心载体。

3.1 Q函数的严格定义与每部分含义拆解

公式(7)的定义源头

\[\mathcal{Q}(\theta, \theta^{old}) = \mathbb{E}_{Z \mid X,Y,\theta^{old}} \left[ \ln p(\theta, Z \mid X, Y) \right]\] 这是MAP-EM框架下Q函数的严格定义,我们逐字拆解每一部分的含义,彻底解决之前的所有疑问:

公式部分 核心含义 角色定位
\(\mathcal{Q}(\theta, \theta^{old})\) EM算法的Q函数 本质是条件期望(加权平均值),是M步要最大化的目标
\(\mathbb{E}\) 数学期望算子 等价于「按概率加权求和」的操作,就像代码里的sum(值 × 权重)
下标\(Z \mid X,Y,\theta^{old}\) 期望的计算规则 大白话:
1. 被平均的随机变量是隐变量\(Z\)
2. 固定观测数据\(X,Y\)和上一轮的旧参数\(\theta^{old}\)
3. 按\(p(Z\|X,Y,\theta^{old})\)这个后验分布给\(Z\)加权。
中括号里的\(\ln p(\theta, Z \mid X, Y)\) 被平均的目标本体 完全数据的联合后验对数,包含待优化的新参数\(\theta\),是我们真正要优化的核心。

3.2 完全数据联合后验的完整拆解

我们对中括号里的\(\ln p(\theta, Z \mid X, Y)\)做完整拆解,每一步都有严格的数学依据: ##### 步骤1:贝叶斯定理展开 \[p(\theta, Z \mid X, Y) = \frac{p(Y \mid X, Z, \theta) \cdot p(Z, \theta \mid X)}{p(Y \mid X)}\]

步骤2:链式法则拆解联合先验

\[p(Z, \theta \mid X) = p(Z \mid X, \theta) \cdot p(\theta \mid X)\] 结合之前的独立性假设\(p(\theta|X)=p(\theta)\)\(p(Z|X,\theta)=p(Z|\theta)\),简化为: \[p(Z, \theta \mid X) = p(Z \mid \theta) \cdot p(\theta)\]

步骤3:取对数拆分乘积

对展开后的式子两边取对数,利用\(\ln(ab/c)=\ln a + \ln b - \ln c\)拆分: \[ \ln p(\theta, Z \mid X, Y) = \underbrace{\ln p(Y \mid X, Z, \theta)}_{项1:完全数据似然} + \underbrace{\ln p(Z \mid \theta)}_{项2:隐变量先验} + \underbrace{\ln p(\theta)}_{项3:参数先验} \underbrace{- \ln p(Y \mid X)}_{项4:固定常数} \] > 关键说明:项4\(-\ln p(Y|X)\)仅与观测数据有关,不含\(\theta\)\(Z\),是固定常数,最大化Q函数时可直接省略。

3.3 每一项的完整展开

我们对前3项做完整展开,所有推导贴合论文建模假设: ##### 展开1:项1 完全数据似然\(\ln p(Y \mid X, Z, \theta)\) 核心依据:样本独立同分布 + 内点D维高斯分布 + 外点均匀分布 1. 样本独立,联合似然=单样本似然的乘积,取对数变求和: \[\ln p(Y|X,Z,\theta) = \sum_{n=1}^N \ln p(y_n | x_n, z_n, \theta)\] 2. 单样本似然分两种情况,由\(z_n\)做0/1开关: - \(z_n=1\)(内点):服从D维高斯分布,取对数后: \[\ln p(y_n|x_n,z_n=1,\theta) = -\frac{D}{2}\ln(2\pi) -\frac{D}{2}\ln(\sigma^2) - \frac{\|y_n-f(x_n)\|^2}{2\sigma^2}\] - \(z_n=0\)(外点):服从均匀分布,取对数后: \[\ln p(y_n|x_n,z_n=0,\theta) = \ln\frac{1}{a}\] 3. 用\(z_n\)合并两种情况,得到完整展开式: \[ \ln p(Y|X,Z,\theta) = \sum_{n=1}^N \left[ z_n \cdot \left( -\frac{D}{2}\ln(2\pi) -\frac{D}{2}\ln(\sigma^2) - \frac{\|y_n-f(x_n)\|^2}{2\sigma^2} \right) + (1-z_n) \cdot \ln\frac{1}{a} \right] \]

展开2:项2 隐变量先验\(\ln p(Z \mid \theta)\)

核心依据:隐变量独立同分布,先验\(p(z_n=1)=\gamma\)\(p(z_n=0)=1-\gamma\) 1. 联合先验=单样本先验的乘积,取对数变求和: \[\ln p(Z|\theta) = \sum_{n=1}^N \ln p(z_n | \theta)\] 2. 代入二值先验,合并得到: \[\ln p(Z|\theta) = \sum_{n=1}^N \left[ z_n \cdot \ln\gamma + (1-z_n) \cdot \ln(1-\gamma) \right]\]

展开3:项3 参数先验\(\ln p(\theta)\)

核心依据:论文公式(5)的向量场平滑先验,\(\sigma^2\)\(\gamma\)为平坦先验 1. 向量场先验为吉布斯分布:\(p(f) \propto e^{-\frac{\lambda}{2}\phi(f)}\),取对数后: \[\ln p(\theta) = -\frac{\lambda}{2}\phi(f) + C_1\] 其中\(C_1\)是与\(\theta\)无关的常数,\(\phi(f)=\|f\|_{\mathcal{H}}^2\)(向量场RKHS范数平方)。

3.4 逐项求期望,合并得到论文公式(7)

步骤1:代入期望定义,交换期望与求和顺序

根据期望的线性性质,和的期望=期望的和,因此可以把\(\mathbb{E}\)放到每一个求和项内部: \[ \mathcal{Q}(\theta, \theta^{old}) = \mathbb{E} \left[ 项1 + 项2 + 项3 + 项4 \right] = \mathbb{E}[项1] + \mathbb{E}[项2] + \mathbb{E}[项3] + \mathbb{E}[项4] \]

步骤2:代入隐变量的期望结果

隐变量\(z_n\)是二值变量,在旧参数\(\theta^{old}\)下的后验期望为: \[\mathbb{E}[z_n] = P(z_n=1 | x_n,y_n,\theta^{old}) = p_n\] \[\mathbb{E}[1-z_n] = 1-p_n\] 所有不含\(z_n\)的项,求期望时等于自身。

步骤3:逐项计算期望
  1. 项1的期望\[ \mathbb{E}[项1] = \sum_{n=1}^N \left[ p_n \cdot \left( -\frac{D}{2}\ln(2\pi) -\frac{D}{2}\ln(\sigma^2) - \frac{\|y_n-f(x_n)\|^2}{2\sigma^2} \right) + (1-p_n) \cdot \ln\frac{1}{a} \right] \] 其中\(-\frac{D}{2}\ln(2\pi)\sum p_n\)\(\ln\frac{1}{a}\sum (1-p_n)\)\(\theta\)无关,是常数项,后续可省略。

  2. 项2的期望\[ \mathbb{E}[项2] = \ln\gamma \sum_{n=1}^N p_n + \ln(1-\gamma) \sum_{n=1}^N (1-p_n) \]

  3. 项3的期望\[ \mathbb{E}[项3] = -\frac{\lambda}{2}\phi(f) + C_1 \]

  4. 项4的期望\[ \mathbb{E}[项4] = -\ln p(Y|X) = C_2 \] 是固定常数,可省略。

步骤4:合并所有项,剔除常数项,得到公式(7)

把所有项合并,省略所有与待优化参数\(\theta\)无关的常数项,最终得到论文原文的公式(7): \[ \boxed{ \begin{aligned} \mathcal{Q}\left(\theta, \theta^{old }\right)= & -\frac{1}{2 \sigma^{2}} \sum_{n=1}^{N} P\left(z_{n}=1 | x_{n}, y_{n}, \theta^{old }\right)\left\| y_{n}-f\left(x_{n}\right)\right\| ^{2} \\ & -\frac{D}{2} ln \sigma^{2} \sum_{n=1}^{N} P\left(z_{n}=1 | x_{n}, y_{n}, \theta^{old }\right) \\ & +ln (1-\gamma) \sum_{n=1}^{N} P\left(z_{n}=0 | x_{n}, y_{n}, \theta^{old }\right) \\ & +ln \gamma \sum_{n=1}^{N} P\left(z_{n}=1 | x_{n}, y_{n}, \theta^{old }\right)-\frac{\lambda}{2} \phi(f) \end{aligned} } \]

3.5 公式(7)每一项的物理意义

公式(7)的项 对应参数 核心作用
第一项 向量场\(f\) 带权重的拟合损失,内点概率\(p_n\)越高的样本,对向量场拟合的影响越大,外点自动被降权
第二项 噪声方差\(\sigma^2\) 内点的噪声拟合项,用于M步闭式更新\(\sigma^2\)
第三、四项 内点先验\(\gamma\) 内点比例的拟合项,用于M步闭式更新\(\gamma\)
第五项 向量场\(f\) 平滑正则项,约束向量场的平滑度,对应贝叶斯先验,避免过拟合

第四章 E步:公式(8)隐变量后验概率的完整推导

4.1 E步的核心目标

E步(期望步)的唯一目标是:用上一轮迭代的旧参数\(\theta^{old}\),计算每个匹配对为内点的后验概率\(p_n\),也就是给隐变量\(z_n\)的分布赋值,为M步构建Q函数提供固定的权重。

4.2 公式(8)的完整推导

公式原文

\[ p_{n}=\frac{\gamma e^{-\frac{\left\| y_{n}-f\left(x_{n}\right)\right\| ^{2}}{2 \sigma^{2}}}}{\gamma e^{-\frac{\left\| y_{n}-f\left(x_{n}\right)\right\| ^{2}}{2 \sigma^{2}}}+(1-\gamma) \frac{\left(2 \pi \sigma^{2}\right)^{D / 2}}{a}} \tag{8} \]

推导过程
  1. 贝叶斯定理展开后验概率 我们要计算的是\(p_n = P(z_n=1 | y_n,x_n,\theta^{old})\),直接用贝叶斯定理: \[ P(z_n=1 | y_n,x_n,\theta^{old}) = \frac{P(y_n | z_n=1,x_n,\theta^{old}) \cdot P(z_n=1 | \theta^{old})}{P(y_n | x_n,\theta^{old})} \]

  2. 代入分布定义

    • 分子第一项(内点似然):D维高斯分布 \[P(y_n | z_n=1,x_n,\theta^{old}) = \frac{1}{(2\pi\sigma^2)^{D/2}} e^{-\frac{\|y_n-f(x_n)\|^2}{2\sigma^2}}\]
    • 分子第二项(内点先验):\(P(z_n=1 | \theta^{old}) = \gamma\)
    • 分母(边缘似然):全概率公式展开,包含内点和外点两种情况 \[ P(y_n | x_n,\theta^{old}) = P(y_n|z_n=1)P(z_n=1) + P(y_n|z_n=0)P(z_n=0) \] 其中外点似然\(P(y_n | z_n=0,x_n,\theta^{old}) = \frac{1}{a}\),外点先验\(P(z_n=0)=1-\gamma\)
  3. 化简消去公共项 将分子分母代入后,分子分母同时乘以\((2\pi\sigma^2)^{D/2}\),消去公共的分母项,最终得到论文原文的公式(8)。

4.3 公式(8)的物理意义与工程解读

  • \(p_n\)是第\(n\)个匹配对为内点的软分类概率,取值范围\([0,1]\)
  • 匹配对的位移越符合当前向量场的预测(\(\|y_n-f(x_n)\|^2\)越小),\(p_n\)越接近1,越可能是有效匹配;
  • 位移和预测偏差越大,\(p_n\)越接近0,越可能是错误匹配;
  • 论文中提到,迭代收敛后,99%的样本\(p_n\)要么>0.99,要么<0.01,天然实现了内点和外点的硬区分。

4.4 工程实现的数值稳定性补充

公式(8)中的指数项\(e^{-\frac{\|y_n-f(x_n)\|^2}{2\sigma^2}}\)\(\sigma^2\)很小时容易出现数值下溢,工程实现时通常会给指数项加一个极小值(如\(1e-8\)),避免分母为0。 ### 第五章 M步:所有参数更新公式的完整推导 #### 5.1 M步的核心目标 M步(最大化步)的核心目标是:固定E步得到的内点概率\(p_n\),最大化Q函数\(\mathcal{Q}(\theta,\theta^{old})\),分别闭式更新\(\sigma^2\)\(\gamma\)\(f\)三个参数

Q函数中,三个参数的优化是完全解耦的:每个参数的更新仅和Q函数中对应的项有关,因此可以分别求导、分别更新。

5.2 公式(9):噪声方差\(\sigma^2\)的更新推导

公式原文

\[ \sigma^{2}=\frac{(\tilde{Y}-\tilde{V})^{T} \tilde{P}(\tilde{Y}-\tilde{V})}{D \cdot tr(P)} \tag{9} \] 其中: - \(\tilde{Y}\)是所有\(y_n\)拼接的列向量,\(\tilde{V}\)是所有\(f(x_n)\)拼接的列向量; - \(P=diag(p_1,p_2,...,p_N)\)是内点概率构成的对角矩阵,\(\tilde{P}=P \otimes I_D\)(克罗内克积); - \(tr(P)\)是矩阵\(P\)的迹,即\(\sum_{n=1}^N p_n\)

推导过程
  1. 从Q函数中提取所有和\(\sigma^2\)相关的项,记为\(\mathcal{Q}_\sigma\)\[ \mathcal{Q}_\sigma = -\frac{1}{2\sigma^2} \sum_{n=1}^N p_n \|y_n-f(x_n)\|^2 - \frac{D}{2} ln\sigma^2 \sum_{n=1}^N p_n \]
  2. \(\sigma^2\)求偏导,令偏导数等于0(最大化Q函数): \[ \frac{\partial \mathcal{Q}_\sigma}{\partial \sigma^2} = \frac{1}{2(\sigma^2)^2} \sum_{n=1}^N p_n \|y_n-f(x_n)\|^2 - \frac{D \cdot \sum_{n=1}^N p_n}{2\sigma^2} = 0 \]
  3. 两边乘以\(2(\sigma^2)^2\)消去分母,整理得: \[ \sum_{n=1}^N p_n \|y_n-f(x_n)\|^2 = D \cdot \sigma^2 \cdot \sum_{n=1}^N p_n \]
  4. 解出\(\sigma^2\),并写成矩阵形式,得到论文中的公式(9)。

5.3 公式(10):内点先验\(\gamma\)的更新推导

公式原文

\[ \gamma=tr(P) / N \tag{10} \]

推导过程
  1. 从Q函数中提取所有和\(\gamma\)相关的项,记为\(\mathcal{Q}_\gamma\)\[ \mathcal{Q}_\gamma = ln\gamma \cdot \sum_{n=1}^N p_n + ln(1-\gamma) \cdot \sum_{n=1}^N (1-p_n) \]
  2. \(\gamma\)求偏导,令偏导数等于0,同时满足约束\(0<\gamma<1\)\[ \frac{\partial \mathcal{Q}_\gamma}{\partial \gamma} = \frac{\sum_{n=1}^N p_n}{\gamma} - \frac{\sum_{n=1}^N (1-p_n)}{1-\gamma} = 0 \]
  3. 交叉相乘整理,消去相同项,解出\(\gamma\)\[ \gamma = \frac{1}{N} \sum_{n=1}^N p_n = \frac{tr(P)}{N} \] > 物理意义:更新后的内点先验\(\gamma\),等于当前所有样本的内点概率平均值,完全符合直觉。
工程落地的硬阈值更新策略

5.3 公式(10):内点先验\(\gamma\)的更新推导

公式原文

\[ \gamma=tr(P) / N \tag{10} \]

推导过程
  1. 从Q函数中提取所有和\(\gamma\)相关的项,记为\(\mathcal{Q}_\gamma\)\[ \mathcal{Q}_\gamma = ln\gamma \cdot \sum_{n=1}^N p_n + ln(1-\gamma) \cdot \sum_{n=1}^N (1-p_n) \]
  2. \(\gamma\)求偏导,令偏导数等于0,同时满足约束\(0<\gamma<1\)\[ \frac{\partial \mathcal{Q}_\gamma}{\partial \gamma} = \frac{\sum_{n=1}^N p_n}{\gamma} - \frac{\sum_{n=1}^N (1-p_n)}{1-\gamma} = 0 \]
  3. 交叉相乘整理,消去相同项,解出\(\gamma\)\[ \gamma = \frac{1}{N} \sum_{n=1}^N p_n = \frac{tr(P)}{N} \] > 物理意义:更新后的内点先验\(\gamma\),等于当前所有样本的内点概率平均值,完全符合直觉。
工程落地的硬阈值更新策略

公式(10)是EM算法理论上的标准闭式解,属于「软更新」策略,但在实际工程落地中,为了提升算法鲁棒性、加快收敛速度,VFC算法通常采用硬阈值筛选的更新方式,该方式是论文A Robust Method for Vector Field Learning with Application to Mismatch Removing3.4节明确推荐的工程变体,并非对理论的偏离,而是理论与实践的合理适配。理论软更新中,大量\(p_n\approx0\)的外点会参与加权求和,强行稀释整体均值,导致\(\gamma_{soft}\)低于真实内点比例;工程硬更新直接剔除外点贡献,\(\gamma_{hard}\)仅反映高置信内点占比,更接近真实值。

工程硬更新的具体实现 工程代码中,\(\gamma\)的更新不再采用“所有样本后验概率的平均值”,而是通过以下步骤实现: - 设定内点置信度阈值\(\theta\)(经验值通常取0.5,可根据场景微调); - 遍历所有样本,筛选出满足\(p_n > \theta\)的高置信度内点,统计其数量\(N_{inlier}\); - 以高置信内点占总样本数的比例,更新\(\gamma = \frac{N_{inlier}}{N}\): - 增加数值钳位约束:限定\(\gamma \in [0.05, 0.95]\),避免迭代过程中\(\gamma\)趋近于0或1,防止后续\(\log\gamma\)\(\log(1-\gamma)\)运算出现数值下溢、奇异崩溃。

具象示例 设总样本数\(N=100\),真实内点20个(\(p_n\approx0.9\)),外点80个(\(p_n\approx0.01\)): - 理论软更新(公式10):\(\gamma_{soft} = \frac{20\times0.9 + 80\times0.01}{100} = 0.188\),低于真实内点比例0.2,被外点稀释低估; - 工程硬更新(\(\theta=0.5\)):\(\gamma_{hard} = \frac{20}{100} = 0.2\),完全贴合真实内点比例,无稀释效应。

5.4 公式(11)(12):向量场\(f\)的优化与闭式解推导

公式原文

\[ \mathcal{E}(f)=\frac{1}{2 \sigma^{2}} \sum_{n=1}^{N} p_{n}\left\| y_{n}-f\left(x_{n}\right)\right\| ^{2}+\frac{\lambda}{2} \phi(f) \tag{11} \] \[ \left(\tilde{\Gamma}+\lambda \sigma^{2} \tilde{P}^{-1}\right) \tilde{C}=\tilde{Y} \tag{12} \]

推导过程
  1. 从Q函数中提取所有和\(f\)相关的项,记为\(\mathcal{Q}_f\)\[ \mathcal{Q}_f = -\frac{1}{2\sigma^2} \sum_{n=1}^N p_n \|y_n-f(x_n)\|^2 - \frac{\lambda}{2}\phi(f) \]

  2. 最大化\(\mathcal{Q}_f\),等价于最小化它的相反数,也就是论文中的公式(11): \[ \mathcal{E}(f) = -\mathcal{Q}_f = \frac{1}{2 \sigma^{2}} \sum_{n=1}^{N} p_{n}\left\| y_{n}-f\left(x_{n}\right)\right\| ^{2}+\frac{\lambda}{2} \phi(f) \] > 这是带权重的Tikhonov正则化优化问题,和无外点场景的公式(1)完全对应,区别是每个样本的拟合损失都乘了权重\(p_n\),外点权重低,对拟合的影响小,天然实现了鲁棒性。

    符号 维度 严格数学定义 论文对应说明
    \(N\) 标量 候选匹配对的总数量 输入样本总数
    \(D\) 标量 输出位移向量的维度(2D点匹配中\(D=2\),3D点云匹配中\(D=3\) 向量场的输出维度
    \(x_n\) \(P×1\) \(n\)个输入特征点的坐标向量,\(x_n \in \mathcal{X} \subseteq \mathbb{R}^P\)(2D匹配\(P=2\) 输入空间样本
    \(y_n\) \(D×1\) \(n\)个匹配对的位移向量,\(y_n \in \mathcal{Y} \subseteq \mathbb{R}^D\) 观测输出向量
    \(\Gamma(\cdot,\cdot)\) \(D×D\) 向量值再生核函数,\(\Gamma: \mathcal{X}×\mathcal{X} \to \mathbb{R}^{D×D}\),输入两个点输出\(D×D\)对称矩阵 论文Section 3.2 向量值RKHS核心定义
    \(c_n\) \(D×1\) \(n\)个样本对应的RKHS系数向量 表示定理的待求系数
    \(\tilde{C}\) \(DN×1\) 全局系数长向量,所有\(c_n\)按列拼接:\(\tilde{C} = \begin{bmatrix} c_1 \\ c_2 \\ \vdots \\ c_N \end{bmatrix}\) 线性方程组的待求变量
    \(\tilde{Y}\) \(DN×1\) 全局观测长向量,所有\(y_n\)按列拼接:\(\tilde{Y} = \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_N \end{bmatrix}\) 线性方程组的右端项
    \(\tilde{\Gamma}\) \(DN×DN\) 全局Gram矩阵(分块对称矩阵),第\((i,j)\)个分块为\(D×D\)核矩阵\(\Gamma(x_i,x_j)\)
    \[\tilde{\Gamma} = \begin{bmatrix} \Gamma(x_1,x_1) & \Gamma(x_1,x_2) & \dots & \Gamma(x_1,x_N) \\ \Gamma(x_2,x_1) & \Gamma(x_2,x_2) & \dots & \Gamma(x_2,x_N) \\ \vdots & \vdots & \ddots & \vdots \\ \Gamma(x_N,x_1) & \Gamma(x_N,x_2) & \dots & \Gamma(x_N,x_N) \end{bmatrix}\]
    论文公式(3)的通用矩阵形式,核函数对称保证\(\tilde{\Gamma}^T=\tilde{\Gamma}\)
    \(p_n\) 标量 \(n\)个样本为内点的后验概率,\(p_n \in (0,1)\) E步输出的样本权重
    \(P\) \(N×N\) 样本权重对角矩阵:\(P = diag(p_1,p_2,\dots,p_N)\) 标量权重矩阵
    \(\tilde{P}\) \(DN×DN\) 全局权重分块对角矩阵,克罗内克积形式:\(\tilde{P} = P \otimes I_D\),第\(n\)个分块为\(p_n I_D\)\(I_D\)\(D\)阶单位矩阵) 对应DN维度的权重矩阵,保证\(\tilde{P}^T=\tilde{P}\)、可逆
    \(\phi(f)\) 标量 向量场的平滑度泛函,等价于RKHS范数平方:\(\phi(f) = \|f\|_{\mathcal{H}}^2\) 论文公式(5)的平滑先验
    \(\lambda, \sigma^2\) 标量 正则化系数、内点噪声方差 论文固定超参数/迭代更新参数
  3. 两个核心引理 对于公式(11)的带权重正则化最小二乘问题,其最优解\(f \in \mathcal{H}\)一定可以表示为核函数的线性组合: \[ \boldsymbol{f(x) = \sum_{n=1}^N \Gamma(x, x_n) c_n} \] 其中\(c_n \in \mathbb{R}^D\)为待求系数向量,该式是后续所有矩阵化推导的基础。

    根据向量值RKHS的再生性,最优解\(f\)的RKHS范数平方可表示为系数向量的二次型: \[ \boldsymbol{\|f\|_{\mathcal{H}}^2 = \tilde{C}^T \tilde{\Gamma} \tilde{C}} \] > 证明:由再生性\(\langle f, \Gamma(\cdot,x_n)c_n \rangle_{\mathcal{H}} = c_n^T f(x_n)\),代入\(f\)的展开式即可得证,该式将无限维的范数转化为有限维的矩阵运算。

  4. 公式(11)的矩阵化改写 我们从论文公式(11)的标量求和形式出发,将其完全转化为DN×DN维度的矩阵二次型,为求导做准备。

    拟合项的矩阵化 首先计算向量场在所有样本点的输出\(f(x_n)\),代入表示定理: \[ f(x_i) = \sum_{n=1}^N \Gamma(x_i, x_n) c_n \] 将所有样本的\(f(x_n)\)拼接为\(DN×1\)的长向量\(\tilde{V} = \begin{bmatrix} f(x_1) \\ f(x_2) \\ \vdots \\ f(x_N) \end{bmatrix}\),根据Gram矩阵的定义,可直接得到: \[ \tilde{V} = \tilde{\Gamma} \tilde{C} \]

    接下来处理带权重的拟合误差平方和: \[ \sum_{n=1}^N p_n \|y_n - f(x_n)\|^2 = \sum_{n=1}^N (y_n - f(x_n))^T \cdot p_n I_D \cdot (y_n - f(x_n)) \] 根据分块对角矩阵的二次型性质,上式可直接改写为DN维度的全局二次型: \[ \sum_{n=1}^N p_n \|y_n - f(x_n)\|^2 = (\tilde{Y} - \tilde{\Gamma}\tilde{C})^T \tilde{P} (\tilde{Y} - \tilde{\Gamma}\tilde{C}) \] > 维度验证:\((DN×1)^T × (DN×DN) × (DN×1) = 标量\),和左边求和结果完全一致。

    正则项的矩阵化 代入引理2的RKHS范数矩阵形式,正则项可改写为: \[ \phi(f) = \|f\|_{\mathcal{H}}^2 = \tilde{C}^T \tilde{\Gamma} \tilde{C} \]

    公式(11)的最终矩阵形式 将拟合项和正则项代入,得到完全矩阵化的优化目标: \[ \boldsymbol{ \mathcal{E}(\tilde{C}) = \frac{1}{2\sigma^2} (\tilde{Y} - \tilde{\Gamma}\tilde{C})^T \tilde{P} (\tilde{Y} - \tilde{\Gamma} \tilde{C}) + \frac{\lambda}{2} \tilde{C}^T \tilde{\Gamma} \tilde{C} } \] > 说明:优化目标从关于函数\(f\)的无限维问题,转化为关于\(DN×1\)系数向量\(\tilde{C}\)的有限维二次型问题,可直接求导求解。

  5. 公式(12)的完整推导 核心思路 二次型优化问题的最优解,出现在目标函数对优化变量\(\tilde{C}\)的偏导数为0的位置。我们将通过矩阵求导标准法则(分母布局),对\(\mathcal{E}(\tilde{C})\)求偏导,令导数为0,化简后直接得到论文公式(12)。

    步骤1:展开目标函数的二次型 先展开拟合项的二次型,利用矩阵转置性质\((AB)^T=B^T A^T\),以及\(\tilde{\Gamma}^T=\tilde{\Gamma}\)\(\tilde{P}^T=\tilde{P}\)的对称性: \[ \begin{aligned} (\tilde{Y} - \tilde{\Gamma}\tilde{C})^T \tilde{P} (\tilde{Y} - \tilde{\Gamma}\tilde{C}) &= \tilde{Y}^T \tilde{P} \tilde{Y} - \tilde{Y}^T \tilde{P} \tilde{\Gamma} \tilde{C} - \tilde{C}^T \tilde{\Gamma}^T \tilde{P} \tilde{Y} + \tilde{C}^T \tilde{\Gamma}^T \tilde{P} \tilde{\Gamma} \tilde{C} \\ &= \tilde{Y}^T \tilde{P} \tilde{Y} - 2\tilde{Y}^T \tilde{P} \tilde{\Gamma} \tilde{C} + \tilde{C}^T \tilde{\Gamma} \tilde{P} \tilde{\Gamma} \tilde{C} \end{aligned} \] > 说明:\(\tilde{Y}^T \tilde{P} \tilde{\Gamma} \tilde{C}\)是标量,标量的转置等于自身,因此\(\tilde{Y}^T \tilde{P} \tilde{\Gamma} \tilde{C} = \tilde{C}^T \tilde{\Gamma}^T \tilde{P} \tilde{Y}\),两项合并为\(-2\tilde{Y}^T \tilde{P} \tilde{\Gamma} \tilde{C}\)

    将展开式代入目标函数\(\mathcal{E}(\tilde{C})\)\[ \mathcal{E}(\tilde{C}) = \frac{1}{2\sigma^2} \left( \tilde{Y}^T \tilde{P} \tilde{Y} - 2\tilde{Y}^T \tilde{P} \tilde{\Gamma} \tilde{C} + \tilde{C}^T \tilde{\Gamma} \tilde{P} \tilde{\Gamma} \tilde{C} \right) + \frac{\lambda}{2} \tilde{C}^T \tilde{\Gamma} \tilde{C} \]

    步骤2:对\(\tilde{C}\)求偏导 使用分母布局的矩阵求导核心法则

    1. 常数项(与\(\tilde{C}\)无关)的偏导数为0:\(\frac{\partial}{\partial \tilde{C}} (\tilde{Y}^T \tilde{P} \tilde{Y}) = 0\)
    2. 线性项求导:\(\frac{\partial}{\partial \tilde{C}} (\boldsymbol{b}^T \boldsymbol{A} \tilde{C}) = \boldsymbol{A}^T \boldsymbol{b}\)
    3. 二次型求导:\(\frac{\partial}{\partial \tilde{C}} (\tilde{C}^T \boldsymbol{A} \tilde{C}) = (\boldsymbol{A} + \boldsymbol{A}^T) \tilde{C}\),若\(\boldsymbol{A}\)对称则简化为\(2\boldsymbol{A}\tilde{C}\)

    \(\mathcal{E}(\tilde{C})\)逐项求偏导: \[ \begin{aligned} \frac{\partial \mathcal{E}}{\partial \tilde{C}} &= \frac{1}{2\sigma^2} \left( 0 - 2\tilde{\Gamma}^T \tilde{P} \tilde{Y} + 2\tilde{\Gamma}^T \tilde{P} \tilde{\Gamma} \tilde{C} \right) + \frac{\lambda}{2} \cdot 2\tilde{\Gamma} \tilde{C} \\ &= \frac{1}{\sigma^2} \left( -\tilde{\Gamma} \tilde{P} \tilde{Y} + \tilde{\Gamma} \tilde{P} \tilde{\Gamma} \tilde{C} \right) + \lambda \tilde{\Gamma} \tilde{C} \end{aligned} \] > 简化说明:利用\(\tilde{\Gamma}^T=\tilde{\Gamma}\)的对称性,替换所有\(\tilde{\Gamma}^T\)\(\tilde{\Gamma}\)

    步骤3:令偏导数为0,化简线性方程组 最优解满足偏导数为0,因此令\(\frac{\partial \mathcal{E}}{\partial \tilde{C}} = 0\)\[ \frac{1}{\sigma^2} \left( -\tilde{\Gamma} \tilde{P} \tilde{Y} + \tilde{\Gamma} \tilde{P} \tilde{\Gamma} \tilde{C} \right) + \lambda \tilde{\Gamma} \tilde{C} = 0 \]

    化简步骤1:两边同乘\(\sigma^2\)消去分母 \[ -\tilde{\Gamma} \tilde{P} \tilde{Y} + \tilde{\Gamma} \tilde{P} \tilde{\Gamma} \tilde{C} + \lambda \sigma^2 \tilde{\Gamma} \tilde{C} = 0 \]

    化简步骤2:移项整理 将常数项移到等式右侧: \[ \tilde{\Gamma} \tilde{P} \tilde{\Gamma} \tilde{C} + \lambda \sigma^2 \tilde{\Gamma} \tilde{C} = \tilde{\Gamma} \tilde{P} \tilde{Y} \]

    化简步骤3:提取公因子\(\tilde{\Gamma}\) 等式左侧提取公因子\(\tilde{\Gamma}\),右侧提取公因子\(\tilde{\Gamma}\)\[ \tilde{\Gamma} \left( \tilde{P} \tilde{\Gamma} + \lambda \sigma^2 I_{DN} \right) \tilde{C} = \tilde{\Gamma} \tilde{P} \tilde{Y} \] 其中\(I_{DN}\)\(DN\)阶单位矩阵。

    化简步骤4:左乘\(\tilde{\Gamma}^{-1}\)消去公共项 Gram矩阵\(\tilde{\Gamma}\)是正定对称矩阵(核函数为正定核),因此可逆。两边同时左乘\(\tilde{\Gamma}^{-1}\)\[ \left( \tilde{P} \tilde{\Gamma} + \lambda \sigma^2 I_{DN} \right) \tilde{C} = \tilde{P} \tilde{Y} \]

    化简步骤5:左乘\(\tilde{P}^{-1}\)得到论文公式(12) 权重矩阵\(\tilde{P}\)是分块对角矩阵,所有\(p_n>0\),因此可逆。两边同时左乘\(\tilde{P}^{-1}\)\[ \tilde{P}^{-1} \tilde{P} \tilde{\Gamma} \tilde{C} + \lambda \sigma^2 \tilde{P}^{-1} I_{DN} \tilde{C} = \tilde{P}^{-1} \tilde{P} \tilde{Y} \]

    利用\(\tilde{P}^{-1}\tilde{P}=I_{DN}\)化简,最终得到论文原文的公式(12)(完整DN×DN维度)\[ \boxed{ \left(\tilde{\Gamma}+\lambda \sigma^{2} \tilde{P}^{-1}\right) \tilde{C}=\tilde{Y} \tag{12} } \]

关键验证与论文对应说明
  1. 无外点场景(所有\(p_n=1\)) 当所有样本都是内点时,\(p_n=1\),因此\(\tilde{P}=I_{DN}\)\(\tilde{P}^{-1}=I_{DN}\),公式(12)退化为:

    \[ (\tilde{\Gamma} + \lambda \sigma^2 I_{DN}) \tilde{C} = \tilde{Y} \]

    和论文无外点场景的公式(3)完全一致,逻辑自洽。

  2. 标量核简化(工程常用版本) 论文在B. Kernel Choice章节中指出,对于点匹配问题,生成的运动场结构通常较为简单,因此采用可分解核(decomposable kernel) 能在保证效果的同时大幅提升计算效率。这类核的通用形式为 \(\Gamma(\mathbf{x}_i,\mathbf{x}_j) = \kappa(\mathbf{x}_i,\mathbf{x}_j) \cdot \mathbf{A}\),其中 \(\kappa\) 是标量核,\(\mathbf{A}\) 是关系矩阵;论文中通过实验验证,取 \(\mathbf{A}=\mathbf{I}_D\)(单位矩阵)时效果最优,即矩阵值核可简化为标量核与单位矩阵的直积: \[ \Gamma(\mathbf{x}_i,\mathbf{x}_j) = \kappa(\mathbf{x}_i,\mathbf{x}_j) \mathbf{I}_D \]

    论文工程实现中,标量核 \(\kappa\) 选用高斯核: \[ \kappa(\mathbf{x}_i,\mathbf{x}_j) = e^{-\beta\|\mathbf{x}_i-\mathbf{x}_j\|^2} \]

    此时,DN×DN维度的全局Gram矩阵可表示为克罗内克积形式: \[ \tilde{\Gamma} = K \otimes \mathbf{I}_D \] 其中 \(K \in \mathbb{R}^{N \times N}\) 是标量核矩阵,第 \((i,j)\) 个元素为 \(\kappa(\mathbf{x}_i,\mathbf{x}_j)\)

    同时,样本权重矩阵 \(\tilde{P} = P \otimes \mathbf{I}_D\),其逆矩阵满足 \(\tilde{P}^{-1} = P^{-1} \otimes \mathbf{I}_D\),其中 \(P = diag(p_1,p_2,\dots,p_N)\)\(N \times N\) 的标量权重对角矩阵。

    将上述克罗内克积形式代入论文公式(12)的DN×DN线性方程组: \[ (\tilde{\Gamma} + \lambda \sigma^2 \tilde{P}^{-1}) \tilde{C} = \tilde{Y} \] 利用克罗内克积的性质 \((\mathbf{A} \otimes \mathbf{I}_D)(\mathbf{B} \otimes \mathbf{I}_D) = (\mathbf{A}\mathbf{B}) \otimes \mathbf{I}_D\),以及矩阵向量化的性质,可将DN×DN维度的方程组,等价简化为 \(N \times N\) 维度的矩阵线性方程组,即论文公式(20): \[ \boxed{(K + \lambda \sigma^2 P^{-1}) C = Y} \tag{20} \] 其中:

    • \(K \in \mathbb{R}^{N \times N}\) 为标量高斯核矩阵;
    • \(P^{-1} \in \mathbb{R}^{N \times N}\) 为内点概率对角矩阵的逆;
    • \(C \in \mathbb{R}^{N \times D}\) 为待求系数矩阵,每一行对应一个样本的 \(D\) 维系数向量;
    • \(Y \in \mathbb{R}^{N \times D}\) 为观测位移矩阵,每一行对应一个样本的 \(D\) 维位移向量。

    这个简化将原本 \(DN \times DN\) 规模的大型线性方程组,降维为 \(N \times N\) 规模的小型方程组,计算复杂度从 \(O((DN)^3)\) 降低为 \(O(N^3 + DN^2)\),大幅降低了计算量,完全对齐论文的工程实现方案。

    噪声方差 \(\sigma^2\) 更新公式(公式9)的简化 在可分解核下,向量场在所有样本点的预测值可表示为矩阵形式 \(V = KC\)\(N \times D\) 矩阵,每一行是 \(f(x_i)\)),因此公式(9)的二次型项可利用矩阵迹性质简化:

    原始公式(9): \[ \sigma^{2}=\frac{(\tilde{Y}-\tilde{V})^{T} \tilde{P}(\tilde{Y}-\tilde{V})}{D \cdot tr(P)} \] 其中 \(\tilde{Y}=vec(Y)\)\(\tilde{V}=vec(V)=vec(KC)\)\(\tilde{P}=P\otimes I_D\)。根据矩阵二次型的性质 \(vec(X)^T(A\otimes I_D)vec(X) = tr(X^T A X)\),可将分子改写为: \[ (\tilde{Y}-\tilde{V})^T \tilde{P} (\tilde{Y}-\tilde{V}) = tr\left( (Y - KC)^T P (Y - KC) \right) \]

    因此公式(9)简化为: \[ \boxed{ \sigma^2 = \frac{tr\left( (Y - KC)^T P (Y - KC) \right)}{D \cdot tr(P)} } \] 该形式直接使用 \(N \times D\) 矩阵运算,避免了DN×DN维度的向量拼接,更便于工程实现。

第六章 公式(6)与公式(7)的深度绑定关系

6.1 核心结论一句话总结

公式(6)是VFC算法的全局最终优化目标,公式(7)是求解公式(6)的迭代工具/严格下界。公式(6)定义了我们要去哪里,公式(7)给了我们通往目的地的路,EM迭代就是走路的过程。

6.2 数学本质:Q函数是公式(6)能量函数的严格下界

我们用Jensen不等式严格推导两者的大小关系: 1. 公式(6)的能量函数等价于负对数后验: \[E(\theta) = -ln\ p(\theta | X,Y)\] 我们的目标是最小化\(E(\theta)\),等价于最大化\(ln\ p(\theta | X,Y)\)

  1. 用全概率公式展开对数后验,引入隐变量\(Z\)\[ln\ p(\theta | X,Y) = ln\left( \sum_{Z} p(\theta, Z | X,Y) \right)\]

  2. 引入隐变量的后验分布\(q(Z)=p(Z|X,Y,\theta^{old})\),做恒等变形: \[ln\ p(\theta | X,Y) = ln\left( \sum_{Z} q(Z) \cdot \frac{p(\theta, Z | X,Y)}{q(Z)} \right)\]

  3. 应用Jensen不等式,得到下界: \[ ln\left( \sum_{Z} q(Z) \cdot \frac{p}{q} \right) \ge \sum_{Z} q(Z) \cdot ln\left( \frac{p}{q} \right) \] 拆分右边的对数,得到: \[ ln\ p(\theta | X,Y) \ge \underbrace{\sum_{Z} q(Z) \cdot ln\ p(\theta,Z|X,Y)}_{公式(7)的Q函数} - \underbrace{\sum_{Z} q(Z) \cdot ln\ q(Z)}_{熵项,与θ无关的常数} \]

  4. 两边取负号,对应公式(6)的能量函数: \[ E(\theta) \le -Q(\theta,\theta^{old}) + 常数 \]

最终数学结论
  1. 对对数后验\(ln\ p(\theta|X,Y)\)来说,Q函数是它的严格下界(Q函数永远小于等于对数后验);
  2. 对公式(6)的能量函数\(E(\theta)\)来说,最大化Q函数等价于最小化能量函数的上界
  3. 每一次EM迭代,都会让公式(6)的能量单调不增,永远不会越优化越差,最终一定会收敛到公式(6)的局部最优解。

6.3 工程意义:从不可解到可解的转化

公式(6)因为log-sum-exp结构无法直接求解,而公式(7)完美解决了这个问题: - 公式(6)的似然项是「对数里的隐变量求和」,无法求导闭式解; - 公式(7)把它转化为了「带权重\(p_n\)的求和」,每一项都能对参数求导,得到闭式更新公式。

6.4 迭代闭环:EM如何通过Q函数优化公式(6)

EM迭代步骤 公式(6)与公式(7)的角色
初始化 给参数\(\theta\)赋初始值,计算初始的公式(6)能量
E步 用旧参数\(\theta^{old}\)计算隐变量后验\(p_n\),构建公式(7)的Q函数,为公式(6)的优化搭好“台阶”
M步 最大化公式(7)的Q函数,闭式更新参数\(\theta^{new}\),让公式(6)的能量下降
收敛判断 检查公式(6)的能量是否不再下降,若收敛则停止迭代,输出最优参数;否则回到E步

第七章 EM算法完整流程与收敛性分析

7.1 论文Algorithm 1 逐行解析(与公式一一对应)

算法步骤 对应公式/核心内容
1. 初始化\(\gamma=0.9\)\(V\)\(P=I_N\)\(a\)\(\sigma^2\) EM迭代初始值,论文中默认内点初始比例90%,初始\(P\)为单位矩阵
4. 构建Gram矩阵\(\tilde{\Gamma}\) 核矩阵构建,与公式(3)一致
7. E步:更新\(P=diag(p_1,...,p_N)\) 公式(8),计算每个匹配对的内点后验概率
9. M步:更新\(\tilde{C}\),解线性方程组 公式(12),更新向量场的系数
10. 更新\(\tilde{V}\) 公式(2),计算向量场在样本点的输出
11. 更新\(\sigma^2\)\(\gamma\) 公式(9)(10),更新噪声方差和内点先验
12. 迭代直到Q函数收敛 EM迭代收敛判断
13. 输出向量场\(f\) 公式(2),最终拟合的向量场
14. 筛选内点集\(\mathcal{I}\) 公式(13),用阈值筛选内点

7.2 收敛性保证

EM算法有严格的收敛性保证:每一次迭代,对数后验概率都会单调不减,能量函数都会单调不增,最终一定会收敛到一个局部最优解。

7.3 关键初始化策略:大初始方差\(\sigma^2\)

论文中专门提出了大初始方差的初始化策略,解决EM算法容易陷入局部最优的问题: 1. 初始化时给\(\sigma^2\)一个很大的值,此时目标函数在全局最优附近是凸的,能大概率找到全局最优的初始位置; 2. 随着迭代进行,\(\sigma^2\)逐渐减小,目标函数的凸区域缩小,但我们用前一次的最优解作为初始值,能平滑地跟踪全局最优,避免陷入局部最优; 3. 这个思路和确定性退火类似,但不需要手动设置退火schedule,完全由EM迭代自动完成,工程实现更简单。

7.4 收敛判断标准

论文中采用Q函数的变化量作为收敛判断标准:当两次迭代的Q函数变化量小于预设阈值(如\(1e-6\))时,认为算法收敛,停止迭代。 ### 第八章 算法闭环:内点筛选与最终输出 #### 8.1 公式(13):内点集筛选 ##### 公式原文

\[ \mathcal{I}=\left\{n: p_{n}>\tau, n \in \mathbb{N}_{N}\right\} \tag{13} \]

说明

EM迭代收敛后,我们得到了每个样本的内点后验概率\(p_n\),用预设阈值\(\tau\)(论文中默认\(\tau=0.75\))做硬分类,\(p_n>\tau\)的样本就是有效内点,构成共识集\(\mathcal{I}\),这也是算法名称Vector Field Consensus(向量场共识)的来源。

8.2 整个VFC算法的完整逻辑闭环

  1. 输入:初始特征点匹配对(包含大量外点);
  2. EM迭代:通过E步猜内点概率、M步拟合平滑向量场,反复迭代,自动区分内点和外点;
  3. 输出:拟合的平滑向量场 + 筛选后的有效内点匹配对。

8.3 核心鲁棒性来源总结

VFC算法能容忍高达90%的外点,核心来自三个设计: 1. 贝叶斯混合模型:同时建模内点的有效信号和外点的随机噪声; 2. 软加权机制:外点自动获得低权重,不会污染向量场的拟合; 3. RKHS平滑先验:强制向量场平滑,天然排斥外点带来的剧烈抖动。

0%