java - 人工神经网络 PSO 训练

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

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

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

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

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

我想知道的是,是否有一些特定的事情我可能做错了,可能会导致此类问题,或者也许只是我应该看看错误可能出在哪里。

我现在有点迷茫

谢谢

最佳答案

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

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

关于java - 人工神经网络 PSO 训练,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16349671/

相关文章:

java - Android中的调用方法

java - 计算非二叉树的高度

algorithm - 当初始位置未知时,迷宫中可接受的启发式算法

artificial-intelligence - 神经网络架构设计

python - sigmoid激活函数可以用来解决Keras中的回归问题吗?

java - log4j2 不将日志写入文件

java - 在 Java 1.5 项目中使用 Jmockit 时出现 UnsupportedClassVersionError

c# - 分类或关键字匹配自然语言字符串或短语

artificial-intelligence - 经典人工智能、本体论、机器学习、贝叶斯

python - 在用 pybrain 训练的网络中输出总是相等的以逼近函数