Contenu principal

trainlm

Rétropropagation Levenberg-Marquardt

Description

net.trainFcn = 'trainlm' définit la propriété trainFcn du réseau.

[trainedNet,tr] = train(net,...) entraîne le réseau avec trainlm.

trainlm est une fonction d’apprentissage de réseau qui met à jour les valeurs de poids et de biais selon l’optimisation de Levenberg-Marquardt.

trainlm est souvent l'algorithme de rétropropagation le plus rapide de la toolbox et est fortement recommandé en tant qu’algorithme supervisé de premier choix, bien qu'il nécessite plus de mémoire que les autres algorithmes.

L’apprentissage s’effectue selon les paramètres d’apprentissage trainlm, présentés ici avec leurs valeurs par défaut :

  • net.trainParam.epochs — Nombre maximal d’epochs pour l'apprentissage. La valeur par défaut est 1000.

  • net.trainParam.goal — Objectif de performance. La valeur par défaut est 0.

  • net.trainParam.max_fail — Nombre maximal d’échecs de validation. La valeur par défaut est 6.

  • net.trainParam.min_grad — Gradient de performance minimal. La valeur par défaut est 1e-7.

  • net.trainParam.mumu initial. La valeur par défaut est 0.001.

  • net.trainParam.mu_dec — Facteur de réduction pour mu. La valeur par défaut est 0.1.

  • net.trainParam.mu_inc — Facteur d’augmentation pour mu. La valeur par défaut est 10.

  • net.trainParam.mu_max — Valeur maximale pour mu. La valeur par défaut est 1e10.

  • net.trainParam.show — Epochs entre les affichages (NaN pour ne rien afficher). La valeur par défaut est 25.

  • net.trainParam.showCommandLine — Générer une sortie dans la ligne de commande. La valeur par défaut est false.

  • net.trainParam.showWindow — Afficher l’interface graphique utilisateur d’apprentissage. La valeur par défaut est true.

  • net.trainParam.time — Temps d’apprentissage maximal en secondes. La valeur par défaut est inf.

Les vecteurs de validation permettent d’arrêter prématurément l’apprentissage si la performance du réseau sur les vecteurs de validation ne s'améliore pas ou reste inchangée pendant max_fail epochs consécutives. Les vecteurs de test permettent de vérifier que le réseau se généralise bien, mais n'ont aucune incidence sur l’apprentissage.

exemple

Exemples

réduire tout

Cet exemple indique comment entraîner un réseau de neurones avec la fonction d’apprentissage trainlm.

Ici, un réseau de neurones est entraîné pour prédire les pourcentages de graisse corporelle.

[x, t] = bodyfat_dataset;
net = feedforwardnet(10, 'trainlm');
net = train(net, x, t);

Figure Neural Network Training (09-Aug-2025 13:38:15) contains an object of type uigridlayout.

y = net(x);

Arguments d'entrée

réduire tout

Réseau d’entrée, défini par un objet réseau. Pour créer un objet réseau, utilisez par exemple feedforwardnet ou narxnet.

Arguments de sortie

réduire tout

Réseau entraîné, retourné comme un objet network.

L'enregistrement de l’apprentissage (epoch et perf) est renvoyé comme une structure dont les champs dépendent de la fonction d’apprentissage du réseau (net.NET.trainFcn). Il peut inclure des champs comme :

  • Fonctions et paramètres d’apprentissage, de division de données et de performance

  • Indices de division des données pour les jeux d’apprentissage, de validation et de test

  • Masques de division des données pour les jeux d’apprentissage, de validation et de test

  • Nombre d’epochs (num_epochs) et la meilleure epoch (best_epoch)

  • Liste des noms des états d’apprentissage (states)

  • Champs pour chaque nom d’état enregistrant sa valeur pendant l’apprentissage

  • Performances du meilleur réseau (best_perf, best_vperf, best_tperf)

Limitations

Cette fonction utilise le jacobien pour les calculs, ce qui suppose que la performance est une moyenne ou une somme d'erreurs quadratiques. Par conséquent, les réseaux entraînés avec cette fonction doivent utiliser la fonction de performance mse ou sse.

En savoir plus

réduire tout

Algorithmes

trainlm supporte l’apprentissage avec des vecteurs de validation et de test si la propriété NET.divideFcn du réseau est définie sur une fonction de division des données. Les vecteurs de validation permettent d’arrêter prématurément l’apprentissage si la performance du réseau sur les vecteurs de validation ne s'améliore pas ou reste inchangée pendant max_fail epochs consécutives. Les vecteurs de test permettent de vérifier que le réseau se généralise bien, mais n'ont aucune incidence sur l’apprentissage.

trainlm peut entraîner n'importe quel réseau tant que ses fonctions de poids, d'entrée nette et de transfert ont des fonctions dérivées.

La rétropropagation permet de calculer le jacobien jX de la performance perf par rapport aux variables de poids et de biais X. Chaque variable est ajustée selon Levenberg-Marquardt,

jj = jX * jX
je = jX * E
dX = -(jj+I*mu) \ je

E correspond à toutes les erreurs et I, à la matrice d’identité.

La valeur adaptative mu est augmentée de mu_inc jusqu'à ce que le changement ci-dessus entraîne une réduction de la valeur de performance. Le changement est alors apporté au réseau et mu est réduit de mu_dec.

L’apprentissage s’arrête lorsque l’une des conditions suivantes se vérifie :

  • Le nombre maximal de epochs (répétitions) est atteint.

  • La quantité maximale de time est dépassée.

  • La performance est minimisée à goal.

  • Le gradient de performance passe au-dessous de min_grad.

  • mu dépasse mu_max.

  • La performance de validation (erreur de validation) a augmenté plus de max_fail fois depuis la dernière fois où elle a diminué (lors de l'utilisation de la validation).

Historique des versions

Introduit avant R2006a