【问题标题】:Neural Network Training Using Particle Swarm Optimization使用粒子群优化的神经网络训练
【发布时间】:2016-11-23 22:57:05
【问题描述】:

我想在 Matlab 上使用粒子群优化和差分进化算法训练一个前馈神经网络,用于预测乳腺癌。

我是 Matlab 新手,所以我搜索并找到了 George Ever 的工具箱,但在将工具箱添加到 Matlab 路径后,我不知道如何使用它。谁能告诉我训练神经网络的步骤 谢谢

【问题讨论】:

    标签: matlab optimization neural-network particle-swarm differential-evolution


    【解决方案1】:

    您是否有特别的理由使用上述方法来训练网络?

    传统上,神经网络是使用基于梯度的优化器(称为误差反向传播)进行训练的,与您提到的那些无梯度方法相比,它很可能会很慢。

    也许您应该查看一些用于 MATLAB 的特定神经网络工具箱,例如 deep-learning-toolbox

    一般来说,在考虑具有多层的网络时,最好使用一种流行且高效的实现(Theano、Torch、Tensorflow、Caffe)。

    【讨论】:

    • 是的,我想使用网络预测乳腺癌
    • 您已经在问题中告诉我们了。但这如何回答彼得的问题?
    • 我刚刚更新了这个问题,因为我忘了添加原因,无论如何,从我从许多比较 PSO 和反向传播的论文中了解到,它们以 PSO 更好。另外,我的目标是对两种方法的性能进行比较
    • 嗯......这些都是启发式或元启发式的工作可能是非凸问题(所以我们只得到一个局部最小值)。有时 PSO 可能会击败反向传播,但在大多数用例中,基于反向传播的经典 NN 学习方法将击败 PSO 99.9% 的时间。有一个原因,所有现代 NN 都是通过基于梯度或 hessian 的方法学习的。这可能被夸大了,但没有人会使用 PSO 来完成这项任务。只是我的看法。
    • 那么用粒子群优化作为权重更新函数的反向传播方法训练神经网络会更好吗?
    【解决方案2】:

    嗯,你可以做到,我已经用粒子群和微分进化做到了。但是您需要做的是手动从神经网络中提取权重和偏差作为向量,将它们传递给优化器,然后在您的目标函数中,您需要将向量转换回权重和偏差你的神经网络的架构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2012-05-30
      • 2012-04-02
      • 2018-08-19
      • 2010-11-20
      • 2019-09-15
      • 1970-01-01
      相关资源
      最近更新 更多