矩阵分解

分解的唯一性

大多数矩阵分解本身并不唯一;只有在固定一个归一化约定之后才唯一。原因是你总能把一个可逆因子塞进中间再消去:若 A = B C,则对任意尺寸合适的可逆 M 都有 A = (B M)(M^-1 C)。唯一性的论断其实是在说允许哪些 M。

标准的固定方式很简单。一旦要求 L 为单位下三角(对角线为 1),LU 就唯一,从而对角缩放不能在 L 与 U 之间游移;再加上部分选主元,P A = L U 便被确定。对列满秩的 A,一旦要求 R 的对角线为正,QR 就唯一,这钉住了 Q 每一列的符号。Cholesky A = L L^T 在要求 L 的对角线为正时唯一。

最深刻的情形是谱分解与奇异值分解,其唯一性是有条件的。特征向量只定义到一个缩放倍数;当特征值有重根时,其特征空间的任意一组基都可用,所以特征向量矩阵确实不唯一。在 SVD 中,对应于重奇异值的奇异向量可以在那个子空间内自由旋转。

这在实践中为何重要:两个正确的程序,或同一程序的两次运行,可能返回相差一个符号或一个旋转的因子,而二者都对。若你的代码直接比较因子,或假定固定的符号,就会看到虚假的不一致。应当比较真正被确定的东西——A 本身或奇异值,而非那些不唯一的因子。

A = B C = (B M)(M^-1 C); fix M by a convention (unit diag L, positive diag R, etc.)

唯一性是用一个归一化换来的,它消除了插入可逆 M 的自由。

当对分解的单元测试时好时坏,问题通常出在符号或旋转的自由度上,而非答案错了。应检验 A = 乘积或奇异值,绝不要检验原始因子。

又称
normalization conventionsfactorization conventions分解约定