RBF和伪逆XOR

时间:2012-03-07 02:44:32

标签: matlab neural-network xor

我试图理解的问题很简单但我似乎无法在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。

有人可以向我解释为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我会对此嗤之以鼻。矩阵,我称之为AA = [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 

所以,这似乎是你的问题。如果可能的话,我建议您查看φ矩阵,以获得更强大的系统。希望这很有用。