Householder变换:线性代数中的镜像反射器

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!

1 引言:什么是Householder变换?

Householder变换 (Householder transformation)又称为初等反射变换 (Elementary reflection)或豪斯霍尔德变换 ,是线性代数中一种基本而强大的正交变换 🎯。这种变换以美国数学家Alston Scott Householder (1904-1993)的名字命名,尽管历史记录显示苏格兰数学家A.C. Aitken在1932年就已率先提出了这一概念。Householder在1958年强调了该变换在数值线性代数中的重要意义,从而使其成为矩阵计算和数值分析中不可或缺的工具。

从几何角度看,Householder变换描述了一种镜像反射 操作------它可以将任意向量关于某个经过原点的超平面进行反射,这个超平面由其法向量确定。这种直观的几何解释与其简洁的代数表示相结合,使得Householder变换在矩阵分解线性方程组求解特征值计算等众多领域中有着广泛应用。

与Givens旋转相比,Householder变换具有一次变换可以零化多个矩阵元素的优点,这使得它在许多实际计算中更加高效。

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!

往期文章推荐:

2 Householder变换的几何直观与数学定义

2.1 几何直观:镜子中的反射

Householder变换有一个非常直观的几何解释 🔍。在三维空间中,想象一个由法向量 u \mathbf{u} u确定的平面镜子。对于任意向量 x \mathbf{x} x,Householder变换将其映射为关于这个镜平面的镜像向量 y \mathbf{y} y。

更一般地,在n维空间中,给定一个单位向量 u \mathbf{u} u( ∣ u ∣ 2 = 1 \ | \mathbf{u}\ | _2 = 1 ∣u ∣2=1),Householder变换定义了关于以 u \mathbf{u} u为法向量的超平面的一种反射变换。这个超平面由所有满足 u ⊤ x = 0 \mathbf{u}^\top \mathbf{x} = 0 u⊤x=0的向量 x \mathbf{x} x组成,即所有与 u \mathbf{u} u正交的向量构成的子空间。

2.2 数学定义与矩阵表示

Householder变换的矩阵形式异常简洁而优美。给定非零向量 u \mathbf{u} u,对应的Householder矩阵定义为:

H = I − 2 u u ⊤ H = I - 2\mathbf{u}\mathbf{u}^\top H=I−2uu⊤

其中 I I I是单位矩阵。

当 u \mathbf{u} u是单位向量时(即 ∣ u ∣ 2 = 1 \ | \mathbf{u}\ | _2 = 1 ∣u ∣2=1),这个矩阵具有深刻的几何意义:它表示关于以 u \mathbf{u} u为法向量的超平面的反射。

如果需要将向量 x \mathbf{x} x反射为与特定向量 y \mathbf{y} y同方向,且保持长度不变(即 ∣ H x ∣ 2 = ∣ x ∣ 2 \ | H\mathbf{x}\ | _2 = \ | \mathbf{x}\ | _2 ∣Hx ∣2= ∣x ∣2),我们可以通过选择适当的 u \mathbf{u} u来实现。常用的构造方法是给定向量 x \mathbf{x} x,我们希望找到Householder变换使其映射到基向量 e 1 \mathbf{e}_1 e1的倍数:

u = x − α e 1 ∣ x − α e 1 ∣ 2 , α = ± ∣ x ∣ 2 \mathbf{u} = \frac{\mathbf{x} - \alpha\mathbf{e}_1}{\ | \mathbf{x} - \alpha\mathbf{e}_1\ | _2}, \quad \alpha = \pm\ | \mathbf{x}\ | _2 u= ∣x−αe1 ∣2x−αe1,α=± ∣x ∣2

这种选择可以确保 H x = α e 1 H\mathbf{x} = \alpha\mathbf{e}_1 Hx=αe1,即通过一次变换将向量 x \mathbf{x} x的所有非第一个分量零化。在实际数值计算中,通常选择 α = − sign ( x 1 ) ∣ x ∣ 2 \alpha = -\text{sign}(x_1)\ | \mathbf{x}\ | _2 α=−sign(x1) ∣x ∣2以避免数值不稳定。

3 Householder变换的数学性质

3.1 基本性质

Householder矩阵具有几个非常重要的数学性质,这些性质使得它在数值计算中特别有用:

  1. 对称性 : H ⊤ = H H^\top = H H⊤=H
  2. 正交性 : H ⊤ H = I H^\top H = I H⊤H=I,即 H − 1 = H ⊤ = H H^{-1} = H^\top = H H−1=H⊤=H
  3. 对合性 : H 2 = I H^2 = I H2=I,即应用两次相同的Householder变换会回到原始向量
  4. 行列式 : det ⁡ ( H ) = − 1 \det(H) = -1 det(H)=−1
  5. 保范性 : ∣ H x ∣ 2 = ∣ x ∣ 2 \ | H\mathbf{x}\ | _2 = \ | \mathbf{x}\ | _2 ∣Hx ∣2= ∣x ∣2,保持向量长度不变

这些性质中,正交性保范性尤为重要,因为它们保证了Householder变换在数值计算中不会放大误差,从而具有良好的数值稳定性。

3.2 反射性质证明

Householder变换的反射性质可以从其定义直接推导。对于任意向量 x \mathbf{x} x,我们有:

H x = ( I − 2 u u ⊤ ) x = x − 2 u ( u ⊤ x ) H\mathbf{x} = (I - 2\mathbf{u}\mathbf{u}^\top)\mathbf{x} = \mathbf{x} - 2\mathbf{u}(\mathbf{u}^\top\mathbf{x}) Hx=(I−2uu⊤)x=x−2u(u⊤x)

注意到 u ⊤ x \mathbf{u}^\top\mathbf{x} u⊤x是一个标量,表示 x \mathbf{x} x在 u \mathbf{u} u方向上的投影长度。因此, x − 2 u ( u ⊤ x ) \mathbf{x} - 2\mathbf{u}(\mathbf{u}^\top\mathbf{x}) x−2u(u⊤x)恰好是 x \mathbf{x} x关于以 u \mathbf{u} u为法向量的超平面的镜像点。

特别地,对于与 u \mathbf{u} u平行的向量 x = c u \mathbf{x} = c\mathbf{u} x=cu,有:

H ( c u ) = c u − 2 u ( u ⊤ c u ) = c u − 2 c u = − c u H(c\mathbf{u}) = c\mathbf{u} - 2\mathbf{u}(\mathbf{u}^\top c\mathbf{u}) = c\mathbf{u} - 2c\mathbf{u} = -c\mathbf{u} H(cu)=cu−2u(u⊤cu)=cu−2cu=−cu

而对于与 u \mathbf{u} u正交的向量 x \mathbf{x} x(即 u ⊤ x = 0 \mathbf{u}^\top\mathbf{x} = 0 u⊤x=0),则有:

H x = x − 2 u ( 0 ) = x H\mathbf{x} = \mathbf{x} - 2\mathbf{u}(0) = \mathbf{x} Hx=x−2u(0)=x

这验证了 H H H确实表示关于以 u \mathbf{u} u为法向量的超平面的反射变换。

4 Householder变换的算法实现

4.1 数值稳定的算法设计

在实际数值计算中,算法的数值稳定性至关重要。Dubrulle在2000年提出了生成一般稀疏向量的数值稳定Householder变换算法。以下是计算Householder向量的标准数值稳定算法:

给定向量 x \mathbf{x} x,我们希望计算Householder向量 u \mathbf{u} u和标量 β \beta β,使得 H x = σ e 1 H\mathbf{x} = \sigma\mathbf{e}_1 Hx=σe1,其中 \| \\sigma \| = \\ \| \\mathbf{x}\\ \| _2

算法步骤

  1. 计算 σ = − sign ( x 1 ) ∣ x ∣ 2 \sigma = -\text{sign}(x_1)\ | \mathbf{x}\ | _2 σ=−sign(x1) ∣x ∣2
  2. 令 u = x \mathbf{u} = \mathbf{x} u=x
  3. 更新 u 1 = u 1 − σ u_1 = u_1 - \sigma u1=u1−σ
  4. 计算 β = 2 u ⊤ u = 2 ∣ u ∣ 2 2 \beta = \frac{2}{\mathbf{u}^\top\mathbf{u}} = \frac{2}{\ | \mathbf{u}\ | _2^2} β=u⊤u2= ∣u ∣222
  5. 返回 u \mathbf{u} u和 β \beta β

这里使用 sign ( x 1 ) \text{sign}(x_1) sign(x1)并取负号是为了避免抵消现象 ,增强数值稳定性。如果 x 1 x_1 x1是正数,则 x 1 − σ x_1 - \sigma x1−σ是两个相近正数的减法,可能导致有效数字位数的损失。

5 Householder变换在QR分解中的应用

5.1 QR分解的Householder算法

QR分解 是将矩阵分解为正交矩阵 Q Q Q和上三角矩阵 R R R乘积的过程,即 A = Q R A = QR A=QR。使用Householder变换进行QR分解是目前数值稳定性最好的方法之一。

算法的基本思想是通过一系列Householder变换 H 1 , H 2 , ... , H n H_1, H_2, \ldots, H_n H1,H2,...,Hn,逐步将矩阵 A A A化为上三角形式:

H n ⋯ H 2 H 1 A = R H_n \cdots H_2 H_1 A = R Hn⋯H2H1A=R

由于每个 H i H_i Hi都是正交矩阵,它们的乘积也是正交矩阵,因此我们有:

A = ( H 1 H 2 ⋯ H n ) R = Q R A = (H_1 H_2 \cdots H_n) R = QR A=(H1H2⋯Hn)R=QR

其中 Q = H 1 H 2 ⋯ H n Q = H_1 H_2 \cdots H_n Q=H1H2⋯Hn是正交矩阵。

5.2 QR分解的逐步过程

设 A A A是 m × n m \times n m×n矩阵( m ≥ n m \geq n m≥n)。QR分解的Householder算法步骤如下:

  1. 第一步 :令 a 1 \mathbf{a}_1 a1表示 A A A的第一列。构造Householder变换 H 1 H_1 H1使得 H 1 a 1 = r 11 e 1 H_1\mathbf{a}1 = r{11}\mathbf{e}_1 H1a1=r11e1。则:

    H 1 A = [ r 11 ∗ ⋯ ∗ 0 ⋮ B 1 0 ] H_1A = \begin{bmatrix} r_{11} & * & \cdots & * \\ 0 & & & \\ \vdots & & B_1 & \\ 0 & & & \end{bmatrix} H1A= r110⋮0∗⋯B1∗

  2. 第二步 :对子矩阵 B 1 B_1 B1的第一列(即原矩阵 A A A的第二列去掉第一个元素)应用Householder变换 H ^ 2 \widehat{H}_2 H 2,并令 H 2 = diag ( 1 , H ^ 2 ) H_2 = \text{diag}(1, \widehat{H}_2) H2=diag(1,H 2)。则:

    H 2 H 1 A = [ r 11 r 12 ∗ ⋯ ∗ 0 r 22 ∗ ⋯ ∗ 0 0 ⋮ ⋮ C 2 0 0 ] H_2H_1A = \begin{bmatrix} r_{11} & r_{12} & * & \cdots & * \\ 0 & r_{22} & * & \cdots & * \\ 0 & 0 & & & \\ \vdots & \vdots & & C_2 & \\ 0 & 0 & & & \end{bmatrix} H2H1A= r1100⋮0r12r220⋮0∗∗⋯⋯C2∗∗

  3. 继续此过程 :经过 n n n步(对于列满秩矩阵)后,我们得到上三角矩阵 R = H n ⋯ H 1 A R = H_n \cdots H_1 A R=Hn⋯H1A。

  4. 重构Q :正交矩阵 Q = H 1 H 2 ⋯ H n Q = H_1 H_2 \cdots H_n Q=H1H2⋯Hn。

在实际实现中,通常不会显式构造 Q Q Q矩阵,而是存储Householder向量,以便后续计算。

6 Householder变换的其他应用

6.1 矩阵三对角化

对称矩阵特征值问题 中,Householder变换可以用于将矩阵化为三对角形式,这是许多特征值算法(如QR算法)的关键预处理步骤。

对于对称矩阵 A A A,我们可以通过一系列Householder变换将其化为三对角矩阵 T T T:

H n − 2 ⋯ H 2 H 1 A H 1 H 2 ⋯ H n − 2 = T H_{n-2} \cdots H_2 H_1 A H_1 H_2 \cdots H_{n-2} = T Hn−2⋯H2H1AH1H2⋯Hn−2=T

这个过程通过 n − 2 n-2 n−2步完成,每一步将一列和一行中的非三对角元素零化。

与Jacobi方法相比,Householder方法具有更高的收敛速度更好的数值稳定性,特别适用于中大型矩阵的特征值计算。

6.2 最小二乘问题求解

Householder变换在最小二乘问题 中也有重要应用。对于超定线性方程组 A x = b Ax = b Ax=b(其中 A A A是 m × n m \times n m×n矩阵, m > n m > n m>n),最小二乘解可以通过QR分解高效求得。

使用Householder变换对 A A A进行QR分解后,最小二乘问题转化为:

min ⁡ x ∣ A x − b ∣ 2 = min ⁡ x ∣ Q R x − b ∣ 2 = min ⁡ x ∣ R x − Q ⊤ b ∣ 2 \min_x \ | Ax - b\ | _2 = \min_x \ | QRx - b\ | _2 = \min_x \ | Rx - Q^\top b\ | _2 xmin ∣Ax−b ∣2=xmin ∣QRx−b ∣2=xmin ∣Rx−Q⊤b ∣2

由于 R R R是上三角矩阵,这个方程组可以通过回代法轻松求解。

与直接解法 x = ( A ⊤ A ) − 1 A ⊤ b x = (A^\top A)^{-1}A^\top b x=(A⊤A)−1A⊤b相比,基于QR分解的方法数值稳定性更好 ,避免了计算 A ⊤ A A^\top A A⊤A可能导致的条件数平方问题。

6.3 奇异值分解(SVD)

奇异值分解(SVD)的数值计算中,Householder变换也扮演着重要角色。Golub和Kahan在1965年提出的SVD算法就使用了Householder变换将矩阵双对角化,这是计算SVD的关键步骤。

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!

相关推荐
长颈鹿仙女3 小时前
数学基础-线性代数(向量、矩阵、运算、范数、特征向量、特征值)
线性代数·机器学习·矩阵
world-wide-wait3 小时前
机器学习03——matplotlib
python·机器学习·matplotlib
许泽宇的技术分享3 小时前
当 AI Agent 遇上 MCP:微软 Agent Framework 的“瑞士军刀“式扩展之道
人工智能·microsoft
沉迷单车的追风少年3 小时前
Diffusion Model与视频超分(2):解读字节开源视频增强模型SeedVR2
人工智能·深度学习·aigc·音视频·强化学习·视频生成·视频超分
Mr.H01273 小时前
迪杰斯特拉(dijkstra)算法
算法
Victory_orsh3 小时前
“自然搞懂”深度学习系列(基于Pytorch架构)——03渐入佳境
人工智能·pytorch·深度学习
南方的狮子先生3 小时前
【数据结构】从线性表到排序算法详解
开发语言·数据结构·c++·算法·排序算法·1024程序员节
Fuly10243 小时前
AI 大模型应用中的图像,视频,音频的处理
人工智能·音视频
派大星爱吃猫3 小时前
快速排序和交换排序详解(含三路划分)
算法·排序算法·快速排序·三路划分