打开本页,如果没有显示公式,请刷新页面。
QR分解是一种重要的矩阵分解方式,《机器学习数学基础》的第3章3.5.1节“QR分解”对此做了最基本的介绍,此处在该基础上,对QR分解给予适当拓展。
QR分解目前已知三种算法$$^{[1]}$$:
- 格拉姆-施密特正交化(Gram-Schmidt)方法,这种方法在《机器学习数学基础》中有详细介绍。
- 豪斯霍尔德变换(Householder transformation)
- 吉文斯旋转法(Givens)
豪斯霍尔德变换(Householder transformation),又称初等反射(elementary reflection)。最初由A.C Aitken在1932年提出。阿尔斯通·斯科特·豪斯霍尔德在1958年指出了这一变换在数值线性代数上的意义
通过豪斯霍尔德变换,一个向量能实现“超平面反射”的线性变换,实现这种线性变换的矩阵被称作豪斯霍尔德矩阵,超平面的法向量被称作豪斯霍尔德向量。
设
其中
设任一向量
下面用正交投影推导镜像变换$$^{[5]}$$ :
根据《机器学习数学基础》第3章3.4.4节的投影矩阵,可得:
其中
因为镜像超平面是法向量的正交补(参阅“直和与投影”),如上图,向量
对(1.1)式,若
由此可知,$$\pmb{H}$$ 有一个特征向量
对于
所以:
这说明
- 是对称矩阵,$$\pmb{H}^T=\pmb{H}$$
- 是正交矩阵,$$\pmb{H}^T=\pmb{H}^{-1}$$
- 是埃尔米特矩阵,$$\pmb{H}^*=\pmb{H}$$
- 是对合的$$^{[3]}$$,$$\pmb{H}^2=\pmb{I}$$
豪斯霍尔德变换可以将向量的某些元素变成零,同时保持该向量的范数不变。例如,列向量 $$\pmb{x}=\begin{bmatrix}x_1\\vdots\x_n\end{bmatrix}$$ ,通过豪斯霍尔德变换,成为单位向量 $$\pmb{e}_1=\begin{bmatrix}1\0\\vdots\0\end{bmatrix}$$ 乘以一个常数的豪斯霍尔德矩阵:
其中豪斯霍尔德向量
对一个矩阵的各个列向量逐一进行相应的豪斯霍尔德变换,可以将这个矩阵变换为上海森伯格矩阵、上三角矩阵等形式。后者就是QR分解的豪斯霍尔德算法。
之所以能如此,原因在于:通过选择适当的超平面法向量
设
这说明
则:
根据假设,可知 $$\pmb{x}^T\pmb{x}=\begin{Vmatrix}\pmb{x}\end{Vmatrix}^2=\sigma^2$$ ,则:
将上式结果代入到(1.2)式,可得:
由此,可以看出,利用豪斯霍尔德矩阵能够实现对称矩阵的三角化$$^{[1]}$$ 。
设
构建豪斯霍尔德矩阵
用
$$\begin{split}\pmb{H}_1\pmb{A} &= \pmb{H}_1\begin{bmatrix}\pmb{a}_1&\cdots&\pmb{a}_n\end{bmatrix}\ &= \begin{bmatrix}\pmb{H}1\pmb{a}1&\cdots&\pmb{H}1\pmb{a}n\end{bmatrix}\ &= \begin{bmatrix}r{11}&r{12}&\cdots&r{1n}\0&&\cdots&\\vdots&\vdots&\ddots&\vdots\0&&\cdots&\end{bmatrix}\quad(参考(1.3)计算)\&=\begin{bmatrix}r{11}&\pmb{r}_1^T\\pmb{0}&\pmb{A}_2\end{bmatrix}\end{split}$$
其中 $$r_{11}=\begin{Vmatrix}\pmb{a}_1\end{Vmatrix}$$ ,$$\pmb{A}_2$$ 为右下
按照上述方式,对
其中 $$\hat{\pmb{H}}2=\pmb{I}{m-1}-2\pmb{v}_2\pmb{v}_2^T$$ ,用
$$\pmb{H}2\pmb{H}1\pmb{A}=\begin{bmatrix}r{11}&\pmb{r}1^T\\pmb{0}&\hat{\pmb{H}}2\pmb{A}\end{bmatrix}=\begin{bmatrix}r{11}&r{12}&r{13}&\cdots&r_{1n}\0&r_{22}&r_{23}&\cdots&\0&0&&\cdots&\\vdots&\vdots&\vdots&\ddots&\vdots\0&0&&\cdots&*\end{bmatrix}$$
若
其中
因为
令
设单位向量 $$\pmb{e}_1=\begin{bmatrix}1\0\\vdots\0\end{bmatrix}$$ ,令:
则豪斯霍尔德矩阵为:$$\pmb{H}=\pmb{I}-2\pmb{vv}^T$$
满足:$$\pmb{Hx}=\begin{bmatrix}\alpha\0\\vdots\0\end{bmatrix}$$
例如:$$\pmb{A}=\begin{bmatrix}0&3&1\0&4&-2\2&1&1\end{bmatrix}$$ ,进行QR分解。
列向量 $$\pmb\alpha_1=\begin{bmatrix}0\0\2\end{bmatrix}$$ ,令 $$a_1=\begin{Vmatrix}\pmb\alpha_1\end{Vmatrix}_2=2$$ ,则:
所以:
从而:
对上述所得矩阵,令 $$\pmb\alpha_2=\begin{bmatrix}4\3\end{bmatrix}$$ ,则 $$a_2=\begin{Vmatrix}\alpha_2\end{Vmatrix}_2=5$$ ,则:
记:
则:
通过上述示例,总结利用豪斯霍尔德变换进行QR分解的步骤:
-
选矩阵第一列的列向量,计算出相应的豪斯霍尔德矩阵
$$\pmb{H}_1$$ ; -
计算:$$\pmb{H}_1\pmb{A}$$ ,得到第一列除第一个值之外其余都为零的矩阵,如下图所示:
-
对于上图中的分块矩阵
$$\pmb{A}'$$ ,重复执行以上两步。从而得到$$\pmb{H}_2$$ ; -
加上以上迭代过程为
$$t$$ 次,则:$$\pmb{R}=\pmb{H}_t\cdots\pmb{H}_2\pmb{H}_1\pmb{A}$$ $$\pmb{Q}=\pmb{H}_1^T\pmb{H}_2^T\cdots\pmb{H}_t^T$$
相比于格拉姆-施密特正交化方法,豪斯霍尔德变换具有更好的数值稳定性$$^{[4]}$$ 。
对
其中,$$c=\cos\theta,s=\sin\theta$$ ,吉文斯旋转矩阵
$$g_{kk}=1(k\ne i,j);g_{ii}=c;g_{jj}=c;g_{ij}=s;g_{ji}=-s$$
乘积
例如
以向量 $$\pmb{x}=\begin{bmatrix}a\b\end{bmatrix}$$ 为例,分别计算:
吉文斯旋转矩阵 $$\pmb{G}=\begin{bmatrix}c&-s\s&c\end{bmatrix}$$ 乘以此向量:$$\begin{bmatrix}c&-s\s&c\end{bmatrix}\begin{bmatrix}a\b\end{bmatrix}=\begin{bmatrix}r\0\end{bmatrix}$$ ,如此将原向量底部的元素转换为
例如$$^{[1]}$$:$$3$$ 阶矩阵:
用吉文斯旋转矩阵的目标是将矩阵主对角线以下的所有元变为
-
将
$$\pmb{A}$$ 的$$(2,1)$$ 位置元素变为$$0$$ ,对应的吉文斯旋转矩阵设为 $$\pmb{H}{21}$$ ,即 $$i=2,j=1$$ 。以 $$\pmb{A}$$ 的第一列 $$\begin{bmatrix}0\4\3\end{bmatrix}$$ 来设定 $$\pmb{H}{21}$$ 的参数:$$\begin{split}c&=\frac{x_j}{\sqrt{x_i^2+x_j^2}}=\frac{0}{\sqrt{0^2+4^2}}=0\s&=-\frac{x_i}{\sqrt{x_i^2+x_j^2}}=\frac{4}{\sqrt{0^2+4^2}}=-1\\pmb{G}_{21}&=\begin{bmatrix}c&-s&0\s&c&0\0&0&1\end{bmatrix}=\begin{bmatrix}0&1&0\-1&0&0\0&0&1\end{bmatrix}\end{split}$$
旋转后得到:
$$\pmb{G}_{21}\pmb{A}=\begin{bmatrix}0&1&0\-1&0&0\0&0&1\end{bmatrix}\begin{bmatrix}0&-15&14\4&32&2\3&-1&4\end{bmatrix}=\begin{bmatrix}4&32&2\0&15&-14\3&-1&4\end{bmatrix}$$
-
上一步中所得到的矩阵 $$\pmb{G}{21}\pmb{A}$$ 中 $$(3,1)$$ 位置的元素再转换为 $$0$$ ,其所在列向量 $$\begin{bmatrix}4\0\3\end{bmatrix}$$ ,设定相应的吉文斯旋转矩阵 $$\pmb{H}{31}$$ :
$$\begin{split}c &= \frac{4}{\sqrt{4^2+3^2}}=\frac{4}{5}\s&=-\frac{3}{\sqrt{4^2+3^2}}=-\frac{3}{5}\\pmb{G}_{31}&=\begin{bmatrix}c&0&-s\0&1&0\s&0&c\end{bmatrix}=\begin{bmatrix}4/5&0&3/5\0&1&0\-3/5&0&4/5\end{bmatrix}\end{split}$$
旋转后得:
$$\pmb{G}{31}\pmb{G}{21}\pmb{A}=\begin{bmatrix}4/5&0&3/5\0&1&0\-3/5&0&4/5\end{bmatrix}\begin{bmatrix}4&32&2\0&15&-14\3&-1&4\end{bmatrix}=\begin{bmatrix}5&25&4\0&15&-14\0&-20&2\end{bmatrix}$$
-
上面所得矩阵中的
$$(3,2)$$ 位置的元素,转换为$$0$$ ,所在列向量 $$\begin{bmatrix}25\15\-20\end{bmatrix}$$ ,则:$$\begin{split}c&=\frac{15}{\sqrt{15^2+(-20)^2}}=\frac{3}{5}\s&=-\frac{-20}{\sqrt{15^2+(-20)^2}}=\frac{4}{5}\end{split}$$
旋转后得:
$$\pmb{G}{32}\pmb{G}{31}\pmb{G}_{21}\pmb{A}=\begin{bmatrix}1&0&0\0&3/5&-4/5\0&4/5&3/5\end{bmatrix}\begin{bmatrix}5&25&4\0&15&-14\0&-20&2\end{bmatrix}=\begin{bmatrix}5&25&4\0&25&-10\0&0&-10\end{bmatrix}$$
经过连续三次旋转那之后,可以表示为:
$$\pmb{G}{32}\pmb{G}{31}\pmb{G}_{21}\pmb{A}=\pmb{R}$$
则矩阵
$$\pmb{A}=(\pmb{G}{32}\pmb{G}{31}\pmb{G}{21})^{-1}\pmb{R}=\pmb{G}{21}^{-1}\pmb{G}{31}^{-1}\pmb{G}{32}^{-1}\pmb{R}$$
因为吉文斯旋转矩阵是正交矩阵,$$\pmb{G}{ij}^T=\pmb{G}{ij}^{-1}$$ ,因此矩阵
$$\pmb{A}=\pmb{G}{21}^{T}\pmb{G}{31}^{T}\pmb{G}_{32}^{T}\pmb{R}=\pmb{QR}$$
其中 $$\pmb{Q}=\pmb{G}{21}^{T}\pmb{G}{31}^{T}\pmb{G}_{32}^{T}$$ 。正交矩阵的积还是正交矩阵,即
注意,通过吉文斯旋转得到的 QR分解形式,与格拉姆-施密特正交化所得形式有所不同。
[1]. https://ccjou.wordpress.com/2010/02/18/givens-旋轉於-qr-分解的應用/
[2]. https://zh.wikipedia.org/wiki/豪斯霍尔德变换
[3]. 所谓对合(involution),也称为对核函数,即逆(反)函数等于自身的函数。在线性代数中,对合是线性算子
[4]. https://zh.wikipedia.org/wiki/QR分解
[5]. https://ccjou.wordpress.com/2009/09/14/特殊矩陣-四:householder-矩陣/