我正在研究FF神经网络(用于分类问题),正在使用PSO进行训练。我只有一个隐藏层,可以改变该层中神经元的数量。

我的问题是,NN可以很容易地学习线性可分离的问题,但不能像它应该做的那样学习不是线性可分离的问题(例如XOR)。

我相信我的PSO工作正常,因为我可以看到它试图最小化每个粒子的误差函数(在训练集上使用均方误差)。

我试过使用S形和线性激活函数,结果类似(不好)。我也有一个偏见单位(也没有太大帮助)。

我想知道的是,是否有某些我可能做错的特定事情可能导致这种类型的问题,或者只是一些我应该查看错误可能在哪里的事情。

我现在有点迷路

谢谢

最佳答案

PSO可以训练神经网络以解决非线性可分离问题,例如XOR。我之前已经做过,我的算法最多需要大约50次迭代。 Sigmoid是XOR的良好激活函数。如果它确实收敛于不可分割的问题,那么我的猜测是您的隐藏层不起作用或被绕开了。由于隐藏层通常是不可分离的。

当我调试AI时,我发现首先确定我的训练代码或评估代码(在这种情况下为神经网络)是否出错通常很有用。您可能要为您的网络创建第二个培训师。然后,您可以确保您的网络代码正确计算了输出。您甚至可以做一个简单的“登山者”。选择一个随机的权重,并随机少量(向上或向下)进行更改。您的错误变好了吗?保持体重变化并重复。您的错误加剧了吗,请放弃更改,然后重试。

08-25 08:37