trainlm
Rétropropagation Levenberg-Marquardt
Description
net.trainFcn = 'trainlm' définit la propriété trainFcn du réseau.
[ entraîne le réseau avec trainedNet,tr] = train(net,...)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 est6.net.trainParam.min_grad— Gradient de performance minimal. La valeur par défaut est1e-7.net.trainParam.mu—muinitial. La valeur par défaut est 0.001.net.trainParam.mu_dec— Facteur de réduction pourmu. La valeur par défaut est 0.1.net.trainParam.mu_inc— Facteur d’augmentation pourmu. La valeur par défaut est 10.net.trainParam.mu_max— Valeur maximale pourmu. La valeur par défaut est1e10.net.trainParam.show— Epochs entre les affichages (NaNpour 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 estfalse.net.trainParam.showWindow— Afficher l’interface graphique utilisateur d’apprentissage. La valeur par défaut esttrue.net.trainParam.time— Temps d’apprentissage maximal en secondes. La valeur par défaut estinf.
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.
Exemples
Arguments d'entrée
Arguments de sortie
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
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
où 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
timeest dépassée.La performance est minimisée à
goal.Le gradient de performance passe au-dessous de
min_grad.mudépassemu_max.La performance de validation (erreur de validation) a augmenté plus de
max_failfois depuis la dernière fois où elle a diminué (lors de l'utilisation de la validation).
Historique des versions
Introduit avant R2006a
