我试图理解的问题很简单但我似乎无法在matlab中得到正确的结果。实际问题是我想仅使用普通距离作为函数来获得2隐藏层输入RBF的权向量,即没有贝叶斯或高斯函数作为我的φ。我将使用具有2个中心的函数,例如0,0和1,1。所以这将给我一个矩阵φ:
[0 sqrt(2); 1 1; 1 1; sqrt(2)0] * [w1; w2] = [0; 1; 1; 0]如我所定义的XOR函数。
当我在matlab * [0; 1; 1; 0]中应用Φ的伪逆时,虽然我得到[0.33; 0.33]这不是允许我得到正确输出值[0; 1; 1; 0]的正确值。
即。 .33 * sqrt(2)!= 0。
有人可以向我解释为什么会这样吗?
答案 0 :(得分:0)
我会对此嗤之以鼻。矩阵,我称之为A
,A = [0 sqrt(2) ; 1 1; 1 1; sqrt(2) 0]
具有完整列排名,但不是完整行排名,即rank(A) = 2
。然后你基本上解决了系统Ax = b
,其中x
是你的加权向量。你也可以在Matlab中做x = A\b
,这应该是一个更准确的答案。我得到了和你一样的答案。这是一个非常粗略的解释,当您的系统无法针对某个解决方案向量求解时,这意味着不存在可以为x
求解的此类向量Ax = b
。 Matlab所做的是尽可能地估计答案。我猜你使用了pinv
,如果你看看Matlab帮助它说:
如果A的行数多于列而且不是满级,那么超定的最小二乘问题
minimize norm(A*x-b)
没有独特的解决方案。无限多解决方案中的两个是
x = pinv(A)*b
和
y = A\b
所以,这似乎是你的问题。如果可能的话,我建议您查看φ矩阵,以获得更强大的系统。希望这很有用。