1

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

我的问题是,NN可以很轻松地学习线性可分问题,但无法得知不是线性分离(如XOR)像它应该能够做到的问题。

我相信我的PSO正常工作,因为我看到易拉罐它试图最大限度地减少每个粒子(使用均方误差在训练集)的误差函数。

我曾尝试使用具有类似(坏)结果的S形和线性激活函数。我也有一个偏见单位(这也没有多大帮助)。

我想知道的是,如果有具体的,我可能是做错了一些可能导致此类型的问题,或者只是有些事情我应该看看那里的错误可能。

我此刻有点失落

感谢

回答

2

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

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

+0

关于跳过隐藏层是正确的。我的错误功能也有错误。当我使用线性激活函数时,该应用程序现在可以很好地处理XOR等问题。当我使用sigmoid激活功能时,它不起作用。当使用sigmoid函数时,你应该将权重保持在特定范围内吗? – MysteryMan 2013-05-03 20:48:49

+0

只是一个简单的计算错误。非常感谢 – MysteryMan 2013-05-04 09:26:49