【问题标题】:Artificial Neural network PSO training人工神经网络 PSO 训练
【发布时间】:2013-04-27 07:28:50
【问题描述】:

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

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

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

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

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

我现在有点迷茫

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 你是对的关于跳过隐藏层。我的错误函数也有错误。当我使用线性激活函数时,该应用程序现在可以很好地解决 XOR 等问题。当我使用 sigmoid 激活函数时,它不起作用。使用 sigmoid 函数时,您应该将权重保持在特定范围内吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2019-09-15
    • 1970-01-01
    相关资源
    最近更新 更多