Réseau neuronal BP basé sur l'optimisation Dragonfly (application de classification) - avec code

Réseau neuronal BP basé sur l'optimisation Dragonfly (application de classification) - avec code


Résumé : Cet article présente principalement comment utiliser l'algorithme libellule pour optimiser le réseau neuronal BP, en utilisant les données de l'iris pour donner une explication simple.

1. Introduction aux données sur l'iris

Ce cas utilise les données publiques d'iris de Matlab comme données de test. Les données d'iris ont 4 dimensions et 3 catégories. Le format des données est le suivant :

Caractéristique 1 Caractéristique 2 Caractéristique 3 catégorie
Ensemble unique de données sur l'iris 5.3 2.1 1.2 1

Les trois catégories sont représentées par 1, 2 et 3.

2. Organisation des ensembles de données

Les données de l'iris contiennent un total de 150 groupes de données, divisés en 105 groupes d'ensembles d'apprentissage et 45 groupes d'ensembles de test. Comme le montre le tableau suivant :

ensemble d'entraînement (ensemble) Ensemble de test (groupe) Données totales (groupe)
105 45 150

Traitement des données de catégorie : les catégories de données d'origine sont représentées par 1, 2 et 3. Afin de faciliter la formation des réseaux neuronaux, les catégories 1, 2 et 3 sont représentées par 1, 0, 0 ; 0, 1, 0 ; 0, 0, 1 respectivement.

Lors de l'entraînement des données, toutes les données des entités d'entrée sont normalisées.

3. Dragonfly optimise le réseau neuronal BP

3.1 Paramétrage du réseau neuronal BP

D'une manière générale, des algorithmes intelligents sont généralement utilisés pour optimiser les poids et seuils initiaux du réseau neuronal BP afin d'améliorer les performances du réseau neuronal BP. Ce cas est basé sur les données de l'iris. Comme la dimension des données de l'iris n'est pas élevée, un simple réseau neuronal BP est utilisé. Les paramètres du réseau neuronal sont les suivants :

Structure du réseau neuronal

Figure 1. Structure du réseau neuronal

Les paramètres du réseau neuronal sont les suivants :

%创建神经网络
inputnum = 4;     %inputnum  输入层节点数 4维特征
hiddennum = 10;     %hiddennum  隐含层节点数
outputnum = 3;     %outputnum  隐含层节点数
net = newff( minmax(input) , [hiddennum outputnum] , {
    
     'logsig' 'purelin' } , 'traingdx' ) ;
%设置训练参数
net.trainparam.show = 50 ;
net.trainparam.epochs = 200 ;
net.trainparam.goal = 0.01 ;
net.trainParam.lr = 0.01 ;

3.2 Application de l'algorithme Dragonfly

Pour le principe de l'algorithme Dragonfly, veuillez vous référer à : https://blog.csdn.net/u011835903/article/details/107783363

Les paramètres de l'algorithme libellule sont définis comme suit :

popsize = 10;%种群数量
    Max_iteration = 15;%最大迭代次数
lb = -5;%权值阈值下边界
ub = 5;%权值阈值上边界
%  inputnum * hiddennum + hiddennum*outputnum 为阈值的个数
%  hiddennum + outputnum 为权值的个数
dim =  inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum ;%  inputnum * hiddennum + hiddennum*outputnum维度

Il convient de noter ici que le nombre de seuil du réseau de neurones est calculé comme suit :

Ce réseau comporte 2 couches :

Le nombre de seuils dans la première couche est : 4*10 = 40, c'est-à-dire inputnum * Hiddennum ;

Le nombre de poids dans la première couche est : 10, c'est-à-dire numéro caché ;

Le nombre de seuils dans la deuxième couche est : 3*10 = 30, c'est-à-dire Hiddennum * Outputnum ;

Le nombre de poids dans la deuxième couche est : 3, c'est-à-dire numéro de sortie ;

Nous pouvons donc voir que les dimensions que nous optimisons sont : inputnum * Hiddennum + Hiddennum*outputnum + Hiddennum + Outputnum = 83 ;

Réglage de la valeur de la fonction Fitness :

Cet article définit la fonction de fitness comme suit :
fitness = argmin (T rain D ata E rror R ate + T est D ata E rror R ate ) fitness = argmin (TrainDataErrorRate + TestDataErrorRate)forme physique _ _ _=a r g min ( T r ain D a t a E rror T a t e+Test D a t a Error T a t e )
où TrainDataErrorRate et TestDataErrorRate sont respectivement les taux de classification des erreurs de l'ensemble d'apprentissage et de l'ensemble de test . La fonction fitness montre que le réseau que nous souhaitons en fin de compte est un réseau capable d'obtenir de meilleurs résultats à la fois sur l'ensemble de test et sur l'ensemble d'entraînement.

4. Résultats des tests :

Il ressort de la courbe de convergence de l'algorithme Dragonfly que l'erreur globale diminue continuellement, ce qui indique que l'algorithme Dragonfly joue un rôle d'optimisation :
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici

5.Code Matlab

Je suppose que tu aimes

Origine blog.csdn.net/u011835903/article/details/133561786
conseillé
Classement