引言
多层感知器(MLP)仍然是神经网络的基础架构,因其对输入和输出之间复杂的非线性关系进行建模的能力而得到广泛认可。尽管取得了成功,但在依赖传统梯度下降优化时,MLP训练过程经常面临局部最优敏感性和过拟合等挑战。元启发式优化算法最近成为优化MLP训练的强大替代方案。
本文介绍了MetaPerceptron,这是一个标准化的开源Python框架,旨在将元启发式优化算法与MLP无缝集成,支持回归和分类任务,其中包括200多种元启发式优化算法训练的MLP模型(GA、PSO、WOA、TLO、DE等)和梯度下降训练的MLP模型(SGD、Adam、Adelta、Adagrad等)。该成果2025年4月发表在中科院2区,JCR1区 SCI期刊Computer Standards & Interfaces。
MetaPerceptron构建在PyTorch、Scikit-Learn和Mealpy之上。通过这种设计,MetaPerceptron促进了MLP优化的标准化,结合了基本的机器学习实用程序,如模型预测、特征选择、超参数调整等。通过提供超过200多种元启发式优化算法, MetaPerceptron使用户能够在不重新实现的情况下进行广泛的元启发式优化技术实验。该框架显著增强了元启发式训练神经网络研究和应用的可访问性、适应性和一致性,将其定位为机器学习、数据科学和计算优化的宝贵资源。目测,基于 MetaPerceptron框架可扩展应用于其他算法(如:SVM,ELM,LSTM,Transformer,GRU,XGBoost等)的参数寻优。
亮点:
•MetaPerceptron:一个用户友好且全面的基于元启发式优化算法的MLP框架。
•支持200多种元启发式优化算法的回归和分类任务。
•综合资源:示例、文档和用户测试用例。
•它的用户友好界面允许非编码人员用最少的代码解决问题。
•灵活的框架,用户可以很容易地修改算法、代码和替换数据集。
本节将介绍展示所建议框架的优点的主要应用程序,以及演示如何使用它的示例代码。在进入主代码部分之前,我们讨论解决机器学习问题所需的步骤如下:
1.加载和预处理数据。
2.为模型准备数据(分成训练集和测试集,缩放数据)
3.定义模型。
4.用训练数据集训练模型。
5.使用测试数据集测试模型。
6.通过选定的性能指标评估模型的性能。
在上述所有步骤中,MetaPerceptron库将帮助用户完成最后五个步骤。第一步与用户的具体问题和数据直接相关。他们可以从其他库中选择各种预处理技术。因此,在下面的代码片段中,我们假设get_data()函数是由用户定义的。这个函数期望返回特征集X和标签y。
分类任务
- 在本教程中,我们将使用遗传算法GA来训练多层感知器网络来完成分类任务。对于更复杂的示例和用例,请查看示例文件夹。
# 请关注微信公众号:优化算法侠 Swarm-Opti
from metaperceptron import DataTransformer, Data
from metaperceptron import MhaMlpRegressor, MhaMlpClassifier, MlpRegressor, MlpClassifier
from metaperceptron import MhaMlpTuner, MhaMlpComparator
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from metaperceptron import DataTransformer, MhaMlpClassifier
## 1.Load the dataset 加载你的数据,返回特征集X 和 其标签y
X, y = load_iris(return_X_y=True)
## 2.Split train and test 划分训练集和测试集
X_train, y_train, X_test, y_test = train_test_split(X, y, test_size=0.2)
## 3.Scale dataset with two methods: standard and minmax
# 标准化数据
dt = DataTransformer(scaling_methods=("standard", "minmax"))
X_train_scaled = dt.fit_transform(X_train)
X_test_scaled = dt.transform(X_test)
## 3.Define Genetic Algorithm-trained Multi-Layer Perceptron
# 利用GA训练MLP
# epoch:批次,pop_size:优化算法的种群数
opt_paras = {"epoch": 100, "pop_size": 20} # 优化算法参数
## 定义MLP模型:hidden_layers:隐含层,act_names:激活函数,
# optim:优化方法(可随意选择200多种算法)
# dropout_rates:dropout率,optim_paras:优化算法的参数,obj_name:目标函数
model = MhaMlpClassifier(hidden_layers=(50, 15), act_names="Tanh", dropout_rates=None, act_output=None,
optim="BaseGA", optim_paras=opt_paras, obj_name="F1S", seed=42, verbose=True)
## 4.Train the model 训练模型
# X:训练数据,y:训练集标签
model.fit(X=X_train_scaled, y=y_train)
## 5. Test the model 测试模型
y_pred = model.predict(X_test) # 输入测试数据
print(y_pred)
## 6. 输出 分类或回归 分数
print(model.score(X_test_scaled, y_test))
## 7. 计算一些分类相关的指标 Calculate some metrics
print(model.evaluate(y_true=y_test, y_pred=y_pred, list_metrics=["AS", "PS", "RS", "F2S", "CKS", "FBS"]))
参考文献
Nguyen Van Thieu, Seyedali Mirjalili, Harish Garg, Nguyen Thanh Hoang,MetaPerceptron: A standardized framework for metaheuristic-driven multi-layer perceptron optimization,Computer Standards & Interfaces,Volume 93, 2025, 103977, https://doi.org/10.1016/j.csi.2025.103977.
代码下载
微信搜索并关注-优化算法侠(英文名:Swarm-Opti),或扫描下方二维码关注,以算法名字搜索历史文章即可下载。
完整代码
点击链接跳转:
390种优化算法免费下载-matlab
https://mp.weixin.qq.com/s/EzKqtSwR9r2DkGj-ozJXwA
求解cec测试函数-matlab
cec2022测试函使用教程及matlab代码免费下载
绘制cec2017/018/2019/2020/2021/2022函数的三维图像教程,SO EASY!