由于最近要学习著名的Kaczmarz算法,其核心思想就是投影。为了更好的理解该算法,此文详细记录一下投影的推导过程。
Let's begin!
要计算向量 \(\mathbf{x}\in\mathbb{R}^n\) 到超平面 \(H=\{\mathbf{x}\in\mathbb{R}^n|\mathbf{a}^{\top}\mathbf{x}=b\}(\mathbf{a}\neq\mathbf{0})\)的投影 \(\mathbf{x}_{k+1}\),本质上是求解一个带约束的最小二乘问题。下面从 几何推导 和 拉格朗日乘数法 两个角度进行详细推导。
1. 几何直观推导
超平面的法向量为 \(\mathbf{a}\). 从点 \(\mathbf{x}_k\) 到超平面 \(H\) 的最短距离路径必然沿着法向量方向。因此,投影点 \(\mathbf{x}_{k+1}\) 可以写成:
\[\mathbf{x}_{k+1}=\mathbf{x}_{k}+\alpha\mathbf{a},
\]
其中 \(\alpha\in\mathbb{R}\) 是一个待定的标量(表示沿法向量移动的步长)。因为投影点 \(\mathbf{x}_{k+1}\) 必须满足超平面方程 \(\mathbf{a}^{\top}\mathbf{x}_{k+1}=b\) 代入上式得:
\[\mathbf{a}^{\top}(\mathbf{x}_{k}+\alpha\mathbf{a})=b,
\]
展开:
\[\mathbf{a}^{\top}\mathbf{x}_{k}+\alpha\mathbf{a}^{\top}\mathbf{a}=b,
\]
因为 \(\mathbf{a}^{\top}\mathbf{a}=\|\mathbf{a}\|_{2}^{2}\), 解得
\[\alpha=\frac{b-\mathbf{a}^{\top}\mathbf{x}_{k}}{\|\mathbf{a}\|_{2}^{2}},
\]
将上述 \(\alpha\) 代回,即得到投影公式
\[\boxed{\mathbf{x}_{k+1}=\mathbf{x}_{k}+\frac{b-\mathbf{a}^{\top}\mathbf{x}_{k}}{\|\mathbf{a}\|_{2}^{2}}\mathbf{a}.}
\]
2. 拉格朗日乘数法 (最严谨)
将该投影问题写成标准的约束优化形式:
\[\min_{\mathbf{x}\in\mathbb{R}^{n}} \frac{1}{2}\|\mathbf{x}-\mathbf{x}_{k}\|_{2}^{2},\qquad s.t.\quad \mathbf{a}^{\top}\mathbf{x}=b.
\]
构造拉格朗日函数\(L(\mathbf{x},\lambda)\):
\[L(\mathbf{x},\lambda)=\frac{1}{2}\|\mathbf{x}-\mathbf{x}_{k}\|_{2}^{2}+\lambda(\mathbf{a}^{\top}\mathbf{x}-b),
\]
其中 \(\lambda\in\mathbb{R}\) 是拉格朗日乘子。令 \(L\) 对 \(\mathbf{x}\) 的梯度为零:
\[\nabla_{\mathbf{x}}L(\mathbf{x},\lambda)=\mathbf{x}-\mathbf{x}_{k}+\lambda\mathbf{a}=\mathbf{0},
\]
得:
\[\mathbf{x}=\mathbf{x}_{k}-\lambda\mathbf{a}.
\]
再将上式代入约束条件 \(\mathbf{a}^{\top}\mathbf{x}=b\), 得
\[\mathbf{a}^{\top}\mathbf{x}_{k}-\lambda\|\mathbf{a}\|_{2}^{2}=b,
\]
所以
\[\lambda=\frac{\mathbf{a}^{\top}\mathbf{x_{k}}-b}{\|\mathbf{a}\|_{2}^{2}}.
\]
整理得:
\[\boxed{\mathbf{x}_{k+1}=\mathbf{x}_{k}+\frac{b-\mathbf{a}^{\top}\mathbf{x}_{k}}{\|\mathbf{a}\|_{2}^{2}}\mathbf{a}.}
\]