使用元启发式算法(如 PSO)训练神经网络如何工作?

How does training a neural network using a metaheuristic like PSO work?

我想更多地了解其他训练神经网络的方法,我可以找到很多关于 GA 训练网络的文献,但没有太多关于 PSO 训练的文献。它是如何工作的?

我有一个大概的想法:你创建了一个由这么多粒子组成的群,并使用网络损失函数(例如 MSE)作为启发式算法。粒子将移动到 MSE 最低的区域,然后您就有了网络权重。

我了解在线香草反向传播网络,这是训练的总体思路:

for each epoch:
  for each training example d:
    feed-forward d through layers 0..n
    find error e as a function of expected vs. actual output
    back-propagate e through layers n..0
    update weights w as a function of w, e, learning and momentum rates
  endfor
endfor

我找不到太多关于使用 PSO 训练神经网络或它适合算法的信息。除了我的陈词滥调(可能是不正确的)假设,我不知道它是用于在线学习还是批量学习,没有 BP 的内层如何发现错误,PSO 是否替代或伴随 BP 等

我喜欢朝着正确的方向前进,但不一定要编写代码,因为我更有兴趣在实施之前先了解它。

仅供后人参考,以防其他人遇到此问题:PSO 通过替代 BP 进行训练而集成到神经网络中。使用 MSE 误差函数和一组训练示例,您可以进行连续且有界的搜索 space 和适应度函数,这正是 PSO 所需要的。

initialize a set of random particles in n-dimensions (n = # of weights in network)
perform PSO using swarm of particles
PSO fitness function is network MSE function
MSE function should (always?) uses feed forward to generate sum of errors of found vs target
over time, particles (as an encoding of weights) will find a minimum of MSE
return the best particle after so many iterations, initialize network weights as position

还有其他应用程序可以将 PSO 与神经网络结合使用,例如超参数选择或模型结构选择。然而,我对培训最感兴趣。