如何使用像PSO这样的元启发式算法训练神经网络?

我想多了解一些训练神经网络的其他方法,我能找到不少关于使用遗传算法(GA)训练网络的文献,但关于PSO训练的资料却很少。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  endforendfor

我就是找不到太多关于使用PSO来训练神经网络的信息,或者它在算法中的位置。除了我那薄弱的(可能不正确的)假设之外,我不知道它是用于在线学习还是批量学习,如何在没有BP的情况下找到内层错误,PSO是替代还是伴随BP等。

我希望能得到一些正确的指引,但不一定是代码,因为我更感兴趣的是先了解它,然后再进行实现。


回答:

为了记录和以防其他人也遇到这个问题:PSO是通过替代BP来集成到神经网络中的训练中的。使用MSE误差函数和一组训练样本,你有一个连续且有界的搜索空间和一个适应度函数,这正是PSO所需要的。

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

你还可以将PSO与神经网络结合用于其他应用,比如超参数选择或模型结构选择。不过,我最感兴趣的是训练方面。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注