欠定线性系统的最小范数解

信息处理 信号分析 线性系统 矩阵 线性代数 最小二乘
2022-01-15 16:00:21

假设我有一个矩阵

A=(10100110)

其中变量是通道信息,例如假设考虑典型的最小二乘问题X1X2X3X4

Y=AX+b

然而,矩阵是胖的,因此是不可逆的。我无法获得,它们将为零。我可以使用正则化并优化联合最小二乘和最小范数问题,但这并没有给我相同的有没有办法解决这个问题?AATAX3X4X1X2

我尝试将所有接收到的向量堆叠到矩阵执行相同操作以使矩阵变胖。但是,由于的结构,它仍然不可逆。有谁知道如何解决这个问题?我可以根据从正则化解决方案中获得的信息恢复参数的解决方案吗?YAbAA

4个回答

对于线性方程组,最小二乘解总是很好定义。

在您的情况下,这是未确定的,这意味着线性方程组有很多解。
最小二乘解具有很好的特性,它还最小化了解的范数(最小范数解),因此它是明确定义的。L2

在实践中,为了求解这个方程,您需要使用pinv()MATLAB 中的函数。
此函数使用Moore Penrose 伪逆矩阵求解方程:A

x = pinv(A) * b

它基本上使用奇异值分解 (SVD)分解矩阵,使得并重建矩阵其中的任何非零元素求逆的结果USVT=AA=USVTSS

更新

用户@percusse 说:

你只需要 A\b

您不应该将 pinv 用于线性系统解决方案,这就是我的意思。不仅效率低,而且不准确。没有唯一的解决方案,因此您至少不能谈论。

反斜杠运算符针对所有可能的线性 eq 集进行了优化。试试吧。

由于非平凡零空间,欠定系统没有最小二乘解。反正没关系。

所以,要把事情说清楚。
最小二乘解总是存在的,它也是最小范数解。
即,从集合有一个唯一的使得B={xminxAxb}x^x^=argminxx2 subject to {xxB}

例如:

for ii = 1:1e12
    numRows = 3;
    numCols = 27; %<! Must be bigger than 'numRows' for Under Determined System
    
    mA   = randn([numRows, numCols]);
    vB   = randn([numRows, 1]);
    vXLs = pinv(mA) * vB;
    vX   = mA \ vB;
    
    
    if(norm(vXLs) >= norm(vX))
        keyboard();
    end
    
    if(mod(ii, 1e4) == 0)
        disp(['Iteration Number - ', num2str(ii)]);
    end
    
end

评论:

  • 差异出现在未确定的系统中。对于过度/确定的系统,解决方案会发生冲突(即高矩阵,这是 LS 问题中的“经典”案例)。
  • Psuedo Inverse 的使用速度比\运算符慢得多。如果您正在寻找任何解决方案,请使用\. 如果您正在寻找欠确定系统的最小二乘解决方案(最小二乘解决方案始终是最小范数解决方案),您需要使用该pinv()功能。
  • 证明和更深入的分析可以在我的奇异值分解 (SVD) 演示中找到。具体来说,这个问题在第 50-60 页上。
  • Cleve Moler(MATLAB 的发明者)关于 Pseudo Inverse vs. \- The World's Simpleest Impossible Problem 的帖子。

有没有办法解决这个问题

不,不是。拥有这样一个格式错误的原因观察值矩阵只是因为您没有更多信息。你不能从任何地方产生信息。

可以观察到,如果,因为是非方阵。因此逆不能存在。b=0A

观察到由于非独立列,伪逆不存在。ATA

解决该问题的唯一方法是在信号上引入其他条件,例如稀疏性。如果有 2 个或更少的非零系数,则有一个可能的解决方案。X

这意味着您将有一个非唯一的解决方案或冗余。在您的公式中,是完全免费的,而是一个偏移参数。您可以缩小矩阵并获得满秩部分以消除不受约束的部分。X4X3

在您的示例中,解决方案是

[X1X2]=b[X3X3]

您有一个退化的情况,其中一个变量是完全自由的,但类似的问题在具有过度驱动的机械手的机器人技术中很常见,等等,您在所有可能的解决方案中对其进行了优化。