人工神经网络PSO训练

时间:2013-05-03 00:05:01

标签: java artificial-intelligence neural-network particle-swarm feed-forward

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

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

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

我尝试过使用sigmoid和线性激活函数,但结果相似(不好)。我也有一个偏置单元(也没有多大帮助)。

我想知道的是,如果有某些特定的东西我可能做错了可能导致这类问题,或者可能只是我应该看看错误可能出现的地方。

我现在有点失落

谢谢

1 个答案:

答案 0 :(得分:2)

PSO可以训练神经网络来解决线性可分离的问题,例如XOR。我以前做过这个,我的算法最多需要大约50次迭代。 Sigmoid是XOR的良好激活功能。如果它确实收敛于不可分离的问题,那么我的猜测是某种程度上你的隐藏层没有效果,或被绕过。由于隐藏层通常允许不可分离。

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