1

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

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

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

我尝试使用具有相似(坏)结果的 sigmoid 和线性激活函数。我也有一个偏置单元(这也没有多大帮助)。

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

我现在有点失落

谢谢

4

1 回答 1

2

PSO 可以训练神经网络来解决线性可分问题,例如 XOR。我以前做过,我的算法最多需要大约 50 次迭代。Sigmoid 是一个很好的异或激活函数。如果它确实收敛于不可分离的问题,那么我的猜测是你的隐藏层没有效果,或者被绕过了。由于隐藏层通常是不可分离的。

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

于 2013-05-03T14:24:31.630 回答