Algorithme de rétropropagation d'erreur habr. Méthode de rétropropagation : mathématiques, exemples, code

Algorithme rétropropagation Les erreurs sont l'une des méthodes de formation des réseaux neuronaux à action directe multicouche, également appelés perceptrons multicouches. Les perceptrons multicouches ont été utilisés avec succès pour résoudre de nombreux problèmes complexes.

La formation avec l'algorithme de rétropropagation implique deux passages à travers toutes les couches du réseau : avant et arrière. Lors du passage aller, le vecteur d'entrée est transmis à la couche d'entrée du réseau neuronal, puis se propage à travers le réseau de couche en couche. En conséquence, un ensemble de signaux de sortie est généré, qui constitue la réponse réelle du réseau à une image d’entrée donnée. Lors du passage vers l'avant, tous les poids synaptiques du réseau sont fixes. Lors du passage en arrière, tous les poids synaptiques sont ajustés selon une règle de correction d'erreur, à savoir : la sortie réelle du réseau est soustraite de la sortie souhaitée, ce qui entraîne un signal d'erreur. Ce signal se propage ensuite dans tout le réseau dans le sens opposé au sens des connexions synaptiques. D'où le nom - algorithme de rétropropagation. Les poids synaptiques sont ajustés pour rapprocher le plus possible la sortie du réseau de celle souhaitée.

Examinons plus en détail le fonctionnement de l'algorithme. Disons que vous devez former les éléments suivants réseau neuronal, en utilisant l'algorithme de rétropropagation :

Les symboles suivants sont utilisés dans la figure :

Comme fonction d'activation dans les perceptrons multicouches, on utilise généralement une fonction d'activation sigmoïde, notamment logistique :

où est le paramètre de pente de la fonction sigmoïde. En modifiant ce paramètre, vous pouvez construire des fonctions avec différentes pentes. Réservons que pour tous les arguments ultérieurs nous utiliserons précisément la fonction d'activation logistique, représentée uniquement par la formule ci-dessus.

Le sigmoïde réduit la plage de variation de sorte que la valeur se situe entre zéro et un. Les réseaux de neurones multicouches ont un plus grand pouvoir de représentation que les réseaux de neurones monocouches uniquement en présence de non-linéarité. La fonction de compression fournit la non-linéarité requise. En réalité, de nombreuses fonctions pourraient être utilisées. L'algorithme de rétropropagation exige seulement que la fonction soit différentiable partout. Le sigmoïde satisfait à cette exigence. Il présente l’avantage supplémentaire d’un contrôle automatique du gain. Pour les signaux faibles (c'est-à-dire proches de zéro), la courbe entrée-sortie présente une forte pente, ce qui donne un gain important. À mesure que l’amplitude du signal augmente, le gain diminue. De cette manière, les gros signaux sont acceptés par le réseau sans saturation, et les petits signaux traversent le réseau sans atténuation excessive.

Le but de la formation en réseau L'algorithme de rétropropagation est un ajustement de ses poids de telle sorte que l'application d'un certain ensemble d'entrées conduit à l'ensemble de sorties requis. Par souci de concision, ces ensembles d’entrées et de sorties seront appelés vecteurs. Pendant la formation, on suppose que pour chaque vecteur d'entrée, il existe un vecteur cible associé, qui spécifie la sortie requise. Ensemble, ils forment un duo d'entraînement. Le réseau est formé sur de nombreuses paires.

Suivant:

  1. Initialisez les poids synaptiques avec de petites valeurs aléatoires.
  2. Sélectionnez la paire d'entraînement suivante dans l'ensemble d'entraînement ; soumettre le vecteur d’entrée à l’entrée réseau.
  3. Calculez la sortie du réseau.
  4. Calculez la différence entre la sortie du réseau et la sortie requise (vecteur cible de la paire de formation).
  5. Ajustez les pondérations du réseau pour minimiser les erreurs (comme voir ci-dessous).
  6. Répétez les étapes 2 à 5 pour chaque vecteur de l’ensemble d’apprentissage jusqu’à ce que l’erreur sur l’ensemble de l’ensemble atteigne un niveau acceptable.

Les opérations effectuées par les étapes 2 et 3 sont similaires à celles effectuées lorsque le réseau est déjà formé, c'est-à-dire un vecteur d'entrée est donné et la sortie résultante est calculée. Les calculs sont effectués couche par couche. Sur la fig. 1, les sorties des neurones de la couche sont d'abord calculées (la couche est l'entrée, ce qui signifie qu'aucun calcul n'y a lieu), puis elles sont utilisées comme entrées de la couche, les sorties des neurones de la couche sont calculées , qui forment le vecteur de sortie du réseau. Les étapes 2 et 3 forment ce que l'on appelle un « passage direct » lorsque le signal se propage à travers le réseau, de l'entrée à la sortie.

Les étapes 4 et 5 constituent un "backpass", où le signal d'erreur calculé est propagé à travers le réseau et utilisé pour ajuster les poids.

Examinons de plus près l'étape 5 : ajuster les pondérations du réseau. Deux cas décrits ci-dessous doivent être soulignés ici.

Cas 1. Ajustement des poids synaptiques de la couche de sortie

Par exemple, pour le modèle de réseau neuronal de la Fig. 1, il s'agira de poids ayant les désignations suivantes : et . Décidons que l'indice désignera le neurone d'où sort le poids synaptique, et le neurone dans lequel il entre :

Introduisons la valeur , qui est égale à la différence entre les sorties requises et réelles, multipliée par la dérivée de la fonction d'activation logistique (voir la formule de la fonction d'activation logistique ci-dessus) :

Ensuite, les poids de la couche de sortie après correction seront égaux à :

Voici un exemple de calculs de poids synaptique :

Cas 2. Ajustement des poids synaptiques de la couche cachée

Pour le modèle de réseau neuronal de la Fig. 1, ce seront les poids correspondant aux couches et . Décidons que l'indice désignera le neurone d'où sort le poids synaptique, et le neurone dans lequel il entre (notons l'apparition d'une nouvelle variable).

Delta est une règle utilisée lors de la formation d'un perceptron, en utilisant la valeur d'erreur de la couche de sortie. Si le réseau comporte deux couches ou plus, il n'y a pas de valeur d'erreur explicite pour les couches intermédiaires et la règle delta ne peut pas être utilisée.

L’idée principale de la rétropropagation est de savoir comment obtenir une estimation de l’erreur pour les neurones des couches cachées. Noter que célèbre les erreurs commises par les neurones dans la couche de sortie sont dues à inconnu erreurs des neurones de la couche cachée. Plus la valeur de la connexion synaptique entre le neurone de la couche cachée et le neurone de sortie est grande, plus la erreur plus forte le premier affecte l'erreur du second. Par conséquent, l'estimation de l'erreur des éléments des couches cachées peut être obtenue comme une somme pondérée des erreurs des couches suivantes.

L'algorithme de rétropropagation (BEP), qui est une généralisation de la règle delta, vous permet de former un PR ANN avec n'importe quel nombre de couches. On peut dire qu'AORO utilise en réalité une variété descente de pente, en réorganisant les poids dans le sens de l'erreur minimale.

Lors de l'utilisation de l'AOR, on suppose que la fonction sigmoïde est utilisée comme fonction d'activation. Cette fonction économise des efforts de calcul car elle a une dérivée simple :

La fonction sigmoïde limite les signaux forts à 1 et amplifie les signaux faibles.

La signification de l'algorithme de rétropropagation est que lors de la formation, le réseau reçoit d'abord une image pour laquelle l'erreur de sortie est calculée. Cette erreur se propage ensuite à travers le réseau dans la direction opposée, modifiant le poids des connexions interneurones.

L'algorithme comprend la même séquence d'actions que lors de la formation d'un perceptron. Tout d’abord, les poids des connexions interneurones sont obtenus valeurs aléatoires, puis les étapes suivantes sont effectuées :

1) Une paire d'entraînement est sélectionnée ( X , Z*), X fourni à l'entrée ;

2) La sortie du réseau est calculée Z = F(Oui);

3) L'erreur de sortie est calculée E;

4) Les pondérations du réseau sont ajustées pour minimiser les erreurs ;

Les étapes 1 et 2 sont une propagation vers l'avant à travers le réseau, et les étapes 3 et 4 sont une propagation inverse.

Avant la formation, il est nécessaire de diviser les couples entrées-sorties existants en deux parties : la formation et les tests.

Les paires de tests sont utilisées pour vérifier la qualité de la formation - le réseau neuronal est bien formé s'il produit une sortie proche de celle du test pour l'entrée spécifiée par la paire de tests.

Pendant l'entraînement, une situation est possible où le réseau neuronal affiche de bons résultats pour les données d'entraînement, mais de mauvais résultats pour les données de test. Il peut y avoir deux raisons :

1. Les données de test sont très différentes des données d'entraînement, c'est-à-dire les paires de formation ne couvraient pas toutes les zones de l’espace d’entrée.


2. Le phénomène de « reconversion » est apparu ( surapprentissage), lorsque le comportement du réseau de neurones s'avère plus complexe que le problème à résoudre.

Dernier cas pour le problème de l'approximation d'une fonction par points est illustré sur la Fig. 3.3, où les cercles blancs indiquent les données de test et les cercles sombres indiquent les données d'entraînement.

Dans les réseaux neuronaux multicouches, les valeurs de sortie optimales des neurones de toutes les couches sauf la dernière sont, en règle générale, inconnues ; un perceptron à trois couches ou plus ne peut plus être entraîné, guidé uniquement par les valeurs d'erreur ; aux sorties du réseau

L'une des options pour résoudre ce problème consiste à développer des ensembles de signaux de sortie correspondant à ceux d'entrée pour chaque couche du réseau neuronal, ce qui, bien entendu, est une opération très laborieuse et n'est pas toujours réalisable. pour ajuster dynamiquement les coefficients de pondération des synapses, au cours desquels, en règle générale, elles sont sélectionnées le plus liens faibles et changez légèrement dans un sens ou dans l'autre, et seules les modifications qui conduisent à une diminution de l'erreur à la sortie de l'ensemble du réseau sont enregistrées. cette méthode, malgré

d'une apparente simplicité, nécessite des calculs de routine fastidieux. Et enfin, la troisième option, plus acceptable, est la propagation des signaux d'erreur des sorties du réseau neuronal vers ses entrées, dans le sens opposé à la propagation directe des signaux en fonctionnement normal. L'algorithme est appelé procédure de rétropropagation (erreur rétro-propagation) C'est de lui dont il est question ci-dessous

L'algorithme de rétropropagation est un algorithme d'apprentissage itératif par gradient utilisé pour minimiser écart type courant provenant des sorties requises des réseaux neuronaux multicouches avec connexions série

Selon la méthode moindres carrés, la fonction d'erreur objective du réseau neuronal à minimiser est la valeur

où est l'état de sortie réel du neurone au niveau de la couche de sortie du réseau neuronal lorsqu'une image est transmise à ses entrées, l'état de sortie requis de ce neurone

La sommation est effectuée sur tous les neurones de la couche de sortie et sur toutes les images traitées par le réseau. La minimisation par la méthode de descente de gradient assure l'ajustement des coefficients de poids comme suit.

où est le coefficient de pondération de la connexion synaptique reliant un neurone en couche à un neurone en couche - le coefficient de taux d'apprentissage,

Conformément à la règle de différenciation des fonctions complexes

où est la somme pondérée des signaux d'entrée du neurone et de l'argument de la fonction d'activation. Puisque la dérivée de la fonction d'activation doit être déterminée sur tout l'axe des abscisses, la fonction de saut d'unité et les autres fonctions d'activation avec inhomogénéités ne conviennent pas. les réseaux de neurones considérés. Ils utilisent les éléments suivants. fonctions fluides, Comment tangente hyperbolique ou une sigmoïde classique avec une exponentielle (voir tableau 1 1) Par exemple, dans le cas d'une tangente hyperbolique

Le troisième multiplicateur est égal à la sortie du neurone de la couche précédente

Quant au premier facteur de (1.11), il peut facilement être développé comme suit :

Ici la sommation est effectuée parmi les neurones de la couche en introduisant une nouvelle variable :

on obtient une formule récursive pour calculer les valeurs d'une couche à partir des valeurs d'une couche plus ancienne

Pour la couche de sortie :

Nous pouvons maintenant écrire (1.10) sous forme développée :

Parfois, pour donner une certaine inertie au processus de correction du poids, en atténuant les sauts brusques lors du déplacement sur la surface fonction objectif, (1.17) est complété par la valeur du changement de poids à l’itération précédente.

où est le coefficient d'inertie ; numéro d’itération actuel.

Ainsi, l'algorithme complet de formation d'un réseau neuronal à l'aide de la procédure de rétropropagation est construit comme suit.

ÉTAPE 1. Appliquez l'une des images possibles aux entrées du réseau et, en mode de fonctionnement normal du réseau de neurones, lorsque les signaux se propagent des entrées aux sorties, calculez les valeurs de ces dernières. Rappelons que :

où est le nombre de neurones dans la couche, en tenant compte d'un neurone avec un état de sortie constant qui définit le biais ; entrée neuronale au niveau de la couche

où est le sigmoïde,

où est la composante vectorielle de l'image d'entrée.

ÉTAPE 4. Ajustez tous les poids du réseau neuronal :

ÉTAPE 5. Si l'erreur réseau est importante, passez à l'étape 1. Sinon, terminez.

Réseaux à l'étape 1 alternativement à ordre aléatoire Toutes les images d'entraînement sont présentées de manière à ce que le réseau, au sens figuré, n'en oublie pas certaines comme il en mémorise d'autres.

De l'expression (1.17), il s'ensuit que lorsque la valeur de sortie tend vers zéro, l'efficacité d'apprentissage diminue sensiblement. Avec les vecteurs d’entrée binaires, en moyenne la moitié des poids ne seront pas ajustés, donc la région valeurs possibles Il est souhaitable de décaler les sorties des neurones dans les limites obtenues par de simples modifications des fonctions logistiques. Par exemple, un sigmoïde avec une exponentielle est converti sous la forme :

Considérons la question de la capacité d'un réseau de neurones, c'est-à-dire du nombre d'images présentées à ses entrées qu'il peut apprendre à reconnaître. Pour les réseaux comportant plus de deux couches, cette question reste ouverte. Pour les réseaux à deux couches, la capacité déterministe du réseau est estimée comme suit :

où est le nombre de poids réglables, est le nombre de neurones dans la couche de sortie.

Cette expression a été obtenue en tenant compte de certaines restrictions. Premièrement, le nombre d'entrées et de neurones dans la couche cachée doit satisfaire l'inégalité. Deuxièmement, cependant, l'estimation ci-dessus a été faite pour des réseaux avec des fonctions d'activation de seuil de neurones, et la capacité des réseaux avec des fonctions d'activation douces, par exemple (1.23), est généralement plus grande. De plus, le terme déterministe signifie que l’estimation de capacité résultante est adaptée à tous les modèles d’entrée pouvant être représentés par les entrées. En réalité, la distribution des modèles d’entrée tend à avoir une certaine régularité, ce qui permet au réseau neuronal de se généraliser et ainsi d’augmenter sa capacité réelle. Depuis la diffusion des images, en cas général, n'est pas connue à l'avance, on ne peut parler de la capacité réelle qu'à titre provisoire, mais elle est généralement le double de la capacité déterministe.

La question de la capacité d'un réseau de neurones est étroitement liée à la question de la puissance requise de la couche de sortie du réseau qui effectue la classification finale des images. Par exemple, pour diviser un ensemble d’images d’entrée en deux classes, un neurone de sortie suffit. Dans ce cas, chaque niveau logique désignera une classe distincte. Sur deux neurones de sortie dotés d'une fonction d'activation de seuil, quatre classes peuvent être codées. Pour augmenter la fiabilité de la classification, il est souhaitable d'introduire une redondance en attribuant à chaque classe un neurone dans la couche de sortie ou, mieux encore, plusieurs, dont chacun est entraîné pour déterminer si une image appartient à une classe avec son propre degré de classification. confiance, par exemple : élevée, moyenne et faible. De tels réseaux de neurones permettent de classer les images d'entrée combinées en ensembles flous (flou ou entrecroisés). Cette propriété rapproche ces réseaux de conditions réelles fonctionnement des réseaux de neurones biologiques.

Le réseau de neurones en question en possède plusieurs » goulots d'étranglement" Premièrement, dans le processus, il y a de grandes choses positives ou valeurs négatives les poids peuvent déplacer le point de fonctionnement des sigmoïdes des neurones vers la région de saturation. De petites valeurs de la dérivée de la fonction logistique conduiront, conformément à (1.15) et (1.16), à un arrêt de l'apprentissage, qui paralyse le réseau. Deuxièmement, l’utilisation de la méthode de descente de gradient ne garantit pas de trouver le minimum global de la fonction objectif. Ceci est étroitement lié à la question du choix du taux d’apprentissage. Les incréments de poids et, par conséquent, le taux d'apprentissage pour trouver l'extremum doivent être infinitésimaux, mais dans ce cas l'apprentissage sera

se produit avec une lenteur inacceptable. En revanche, des ajustements trop importants des poids peuvent conduire à une instabilité permanente du processus d’apprentissage. Par conséquent, un nombre inférieur à 1 (par exemple 0,1) est généralement choisi comme coefficient de taux d'apprentissage 1], qui diminue progressivement au cours du processus d'apprentissage. De plus, pour exclure les coups accidentels du réseau dans les minima locaux, parfois, après avoir stabilisé les valeurs des coefficients de pondération, 7 est considérablement augmenté pendant une courte période afin de commencer la descente de pente de nouveau point. Si répéter cette procédure plusieurs fois amène le réseau au même état, on peut supposer qu'un minimum global a été trouvé.

Il existe une autre méthode pour éliminer les minima locaux et la paralysie du réseau, qui consiste à utiliser des réseaux de neurones stochastiques.

Donnons à ce qui précède une interprétation géométrique.

Dans l'algorithme de rétropropagation, le vecteur gradient de la surface d'erreur est calculé. Ce vecteur indique la direction de la descente la plus courte le long de la surface à partir du point actuel, mouvement le long duquel conduit à une diminution de l'erreur. Une séquence d'étapes décroissantes conduira à un minimum d'un type ou d'un autre. La difficulté ici réside dans la sélection de la longueur des étapes.

À grande tailleétape, la convergence sera plus rapide, mais il y a un danger de sauter par-dessus la solution ou au cas où forme complexe l'erreur consiste à prendre la mauvaise direction, par exemple en se déplaçant le long d'un ravin étroit aux pentes abruptes, en sautant d'un côté à l'autre. Au contraire, quand petit pas et aller dans la bonne direction nécessitera de nombreuses itérations. En pratique, la taille du pas est considérée comme proportionnelle à l’inclinaison de la pente, de sorte que l’algorithme ralentisse près du minimum. Le bon choix la vitesse d'apprentissage dépend de tâche spécifique et est généralement réalisé de manière expérimentale. Cette constante peut également dépendre du temps, diminuant au fur et à mesure de la progression de l'algorithme.

Généralement, cet algorithme est modifié pour inclure un terme d'impulsion (ou d'inertie). Cela favorise la progression dans une direction fixe, donc si plusieurs pas ont été effectués dans la même direction, l'algorithme augmente la vitesse, ce qui permet parfois d'éviter un minimum local, ainsi que de traverser plus rapidement des zones plates.

À chaque étape de l'algorithme, tous les exemples de formation sont transmis tour à tour à l'entrée du réseau, les valeurs de sortie réelles du réseau sont comparées aux valeurs requises et l'erreur est calculée. La valeur de l'erreur ainsi que le gradient de la surface d'erreur

utilisé pour ajuster la balance, après quoi toutes les actions sont répétées. Le processus d'apprentissage s'arrête soit lorsqu'un certain nombre d'époques se sont écoulés, soit lorsque l'erreur atteint un certain petit niveau, soit lorsque l'erreur cesse de diminuer.

Examinons plus en détail les problèmes de généralisation et de recyclage d'un réseau de neurones. La généralisation est la capacité d'un réseau neuronal à faire une prédiction précise sur des données qui n'appartiennent pas à l'ensemble d'apprentissage d'origine. Le surajustement est un surajustement qui se produit lorsque l'algorithme de formation prend trop de temps et que le réseau est trop complexe pour la tâche ou la quantité de données disponibles.

Démontrons les problèmes de généralisation et de recyclage en utilisant l'exemple de l'approximation d'une certaine dépendance non pas par un réseau de neurones, mais au moyen de polynômes, et l'essence du phénomène sera absolument la même.

Les graphes polynomiaux peuvent avoir forme différente, et plus le degré et le nombre de termes sont élevés, plus cette forme peut être complexe. Pour les données initiales, vous pouvez sélectionner une courbe polynomiale (modèle) et ainsi obtenir une explication de la dépendance existante. Les données peuvent être bruitées, de sorte que l’on ne peut pas supposer que le meilleur modèle passe exactement par tous les points disponibles. Un polynôme d'ordre inférieur peut mieux expliquer la dépendance existante, cependant, ce n'est pas un moyen suffisamment flexible pour approximer les données, alors qu'un polynôme ordre élevé peut-être trop flexible, mais suivra exactement les données, tout en prenant une forme alambiquée qui n'a rien à voir avec la relation réelle.

Les réseaux de neurones sont confrontés aux mêmes difficultés. Des réseaux avec un grand nombre les poids sont modélisés fonctions complexes et sont donc sujets au surentraînement. Les réseaux avec un petit nombre de pondérations peuvent ne pas être suffisamment flexibles pour modéliser les dépendances existantes. Par exemple, un réseau sans couches cachées modélise uniquement une fonction linéaire ordinaire.

Comment choisir bon diplôme complexité du réseau ? Presque toujours, un réseau plus complexe produit une erreur plus petite, mais cela peut ne pas indiquer bonne qualité modèle, mais sur le recyclage du réseau.

La solution consiste à utiliser la validation croisée de référence. À cette fin, une partie de l'échantillon d'apprentissage est réservée, qui est utilisée non pas pour entraîner le réseau à l'aide de l'algorithme de rétropropagation, mais pour une surveillance indépendante du résultat pendant l'algorithme. Au début des travaux, une erreur réseau s'est produite sur la formation et

les ensembles de contrôles seront les mêmes. Au fur et à mesure que le réseau est formé, l'erreur de formation diminue, tout comme l'erreur sur l'ensemble de contrôle. Si l'erreur de contrôle cesse de diminuer ou commence même à augmenter, cela indique que le réseau a commencé à se rapprocher trop étroitement des données (surentraînement) et que l'entraînement doit être arrêté. Si cela se produit, le nombre d’éléments et/ou de couches cachés doit être réduit, car le réseau est trop puissant pour cette tâche. Si les deux erreurs (entraînement et validation croisée) n'atteignent pas un niveau suffisamment faible, alors le recyclage n'a naturellement pas eu lieu, et le réseau, au contraire, n'est pas assez puissant pour modéliser la dépendance existante.

Les problèmes décrits conduisent au fait que lorsque travaux pratiques Avec les réseaux de neurones, il faut expérimenter un grand nombre de réseaux différents, en entraînant parfois chacun d'eux plusieurs fois et en comparant les résultats. Le principal indicateur de la qualité du résultat est l'erreur de contrôle. Dans le même temps, conformément au principe à l'échelle du système, de deux réseaux avec des erreurs de contrôle à peu près égales, il est logique de choisir celui qui est le plus simple.

La nécessité d'expériences répétées conduit au fait que l'ensemble de contrôle commence à jouer un rôle clé dans le choix d'un modèle et devient une partie du processus d'apprentissage. Cela affaiblit son rôle de critère indépendant qualité du modèle. À grand nombre il y a des expériences forte probabilité choisissez un bon réseau qui donne bon résultat sur le poste de commande. Cependant, afin de donner au modèle final la fiabilité appropriée, ils procèdent souvent (lorsque le volume des exemples de formation le permet) comme suit : réserver un ensemble d'exemples de test. Le modèle final est testé sur les données de cet ensemble pour garantir que les résultats obtenus sur les ensembles d'exemples de formation et de test sont réels et non des artefacts du processus d'apprentissage. Bien entendu, pour bien jouer son rôle, l’ensemble de test ne doit être utilisé qu’une seule fois : s’il est réutilisé pour ajuster le processus d’apprentissage, il se transformera effectivement en un ensemble de contrôle.

Afin d'accélérer le processus de formation du réseau, de nombreuses modifications de l'algorithme de rétropropagation ont été proposées, liées à l'utilisation de diverses fonctions erreurs, procédures pour déterminer la direction et la taille des pas.

1) Fonctions d'erreur :

L'erreur intégrale fonctionne sur l'ensemble des exemples de formation ;

Fonctions d'erreur des puissances entières et fractionnaires

2) Procédures pour déterminer la taille du pas à chaque itération

Dichotomie;

Relations inertielles (voir ci-dessus) ;

3) Procédures pour déterminer la direction du pas.

Utiliser une matrice de dérivées du second ordre (méthode de Newton) ;

Utiliser des instructions en plusieurs étapes (méthode partan).

L'objectif de la formation d'un réseau est d'ajuster ses pondérations de telle sorte que l'application d'un certain ensemble d'entrées conduise à l'ensemble de sorties requis. Par souci de concision, ces ensembles d’entrées et de sorties seront appelés vecteurs. Pendant la formation, on suppose que pour chaque vecteur d'entrée, il existe un vecteur cible qui lui est associé, qui spécifie la sortie requise. Ensemble, ils forment un duo d'entraînement. Généralement, le réseau est formé sur plusieurs paires.

Avant le début de l'entraînement, tous les poids doivent se voir attribuer de petites valeurs initiales, choisies au hasard. Cela garantit que le réseau ne soit pas saturé de poids importants et évite un certain nombre d'autres cas pathologiques. Par exemple, si tous les poids reçoivent le même valeurs initiales, et que le fonctionnement requis nécessite des valeurs inégales, alors le réseau ne pourra pas apprendre.

La formation d'un réseau de rétropropagation nécessite

effectuer les opérations suivantes :

1. Sélectionnez la paire de formation suivante dans l'ensemble de formation, soumettez le vecteur d'entrée à l'entrée réseau.

2. Calculez la sortie du réseau.

3. Calculez la différence entre la sortie du réseau et la sortie requise (vecteur cible de la paire de formation)

4. Ajustez les pondérations du réseau afin de minimiser l'erreur.

5. Répétez les étapes 1 à 4 pour chaque vecteur de l'ensemble d'apprentissage jusqu'à ce que l'erreur sur l'ensemble de l'ensemble atteigne un niveau acceptable.

Les opérations effectuées par les étapes 1 et 2 sont similaires à celles effectuées lorsque le réseau est déjà formé, c'est-à-dire un vecteur d'entrée est donné et la sortie résultante est calculée. Les calculs sont effectués couche par couche. Sur la figure 3, les sorties des neurones de la couche j sont d'abord calculées, puis elles sont utilisées comme entrées de la couche k, les sorties des neurones de la couche k sont calculées, qui forment le vecteur de sortie du réseau.

À l'étape 3, chacune des sorties du réseau, étiquetées OUT sur la figure 3, est soustraite de la composante correspondante du vecteur cible pour obtenir l'erreur. Cette erreur est utilisée à l'étape 4 pour ajuster les poids du réseau, le signe et l'ampleur des changements dans les poids étant déterminés par l'algorithme d'apprentissage (voir ci-dessous).

Après suffisamment de répétitions de ces quatre étapes, la différence entre les sorties réelles et les sorties cibles devrait diminuer jusqu'à une valeur acceptable, et on dit que le réseau a appris. Désormais, le réseau est utilisé pour la reconnaissance et les poids ne changent pas.

Les étapes 1 et 2 peuvent être considérées comme une « passe avant » lorsque le signal se propage à travers le réseau, de l'entrée à la sortie. Les étapes 3, 4 constituent un « backpass », ici le signal d'erreur calculé est propagé à travers le réseau et utilisé pour ajuster les poids. Ces deux passes vont maintenant être détaillées et exprimées sous une forme plus mathématique.

Passage en avant. Les étapes 1 et 2 peuvent être exprimées en forme vectorielle comme suit : le vecteur d'entrée est fourni X et la sortie est un vecteur Oui. Paire entrée-cible vectorielle X Et T est extrait de l’ensemble d’entraînement. Les calculs sont effectués sur le vecteur X pour obtenir le vecteur de sortie Oui.

Comme nous l’avons vu, le calcul dans les réseaux multicouches s’effectue couche par couche, en commençant par la couche la plus proche de l’entrée. La valeur NETTE de chaque neurone de la première couche est calculée comme une somme pondérée des entrées du neurone. La fonction d'activation F "compresse" ensuite le NET et produit une valeur OUT pour chaque neurone de cette couche. Lorsque l’ensemble de sortie d’une couche est reçu, il devient l’ensemble d’entrée de la couche suivante. Le processus est répété couche par couche jusqu'à ce que l'ensemble final de sorties réseau soit obtenu.

Ce processus peut être exprimé sous une forme condensée en utilisant la notation vectorielle. Les poids entre neurones peuvent être considérés comme une matrice W. Par exemple, le poids du neurone 8 dans la couche 2 au neurone 5 dans la couche 3 est noté w 8,5. Puis le vecteur NET de la couche N peut être exprimé non pas comme une somme de produits, mais comme un produit X Et W. En notation vectorielle N= XW. En appliquant par composants la fonction F à un vecteur NET N le vecteur de sortie est obtenu À PROPOS. Ainsi, pour une couche donnée, le processus de calcul est décrit par l'expression suivante :

Ô=F( XW) (3)

Le vecteur de sortie d’une couche est le vecteur d’entrée de la suivante.

Passe inversée. Ajustement des poids de la couche de sortie. Puisqu'une valeur cible est spécifiée pour chaque neurone dans la couche de sortie, l'ajustement des poids est facilement effectué à l'aide d'une règle delta modifiée. Les couches internes sont appelées « couches cachées » et leurs sorties n'ont aucune valeur cible à comparer. L’apprentissage devient donc plus difficile.

Entraînement de la dernière couche Fig. 2.4

Sur la fig. La figure 2.4 montre le processus d'apprentissage d'un poids à partir du neurone p.

dans la couche cachée j au neurone q dans la couche de sortie k. La sortie du neurone de couche k, soustraite de la valeur cible (Target), donne le signal d'erreur. Ceci est multiplié par la dérivée de la fonction de contraction calculée pour ce neurone de couche 6, donnant ainsi la valeur d.

d = OUT(1 - OUT)(Cible - OUT). (2.4)

Ensuite, d est multiplié par la valeur OUT du neurone j, d'où provient le poids en question. Ce produit est à son tour multiplié par un facteur de taux d'apprentissage h (généralement compris entre 0,01 et 1,0) et le résultat est ajouté au poids. La même procédure est effectuée pour chaque poids, du neurone de la couche cachée au neurone de la couche de sortie.

Les équations suivantes illustrent ce calcul :

Dw pq, k = hd q, k OUT p, j (2,5)

où w pq, k(n) est la valeur du poids du neurone h dans la couche cachée au neurone q dans la couche de sortie à l'étape n (avant correction), notez que l'indice k fait référence à la couche dans laquelle se termine ce poids , c'est-à-dire selon la convention adoptée dans ce livre, avec laquelle il est uni ; w pq, k (n+1) - valeur de poids à l'étape n+1 (après correction), d q, k - valeur d pour le neurone dans la couche de sortie k, OUT p, j - valeur OUT pour le neurone p dans la couche cachée j.

Ajustement des poids des calques masqués. Considérons un seul neurone dans la couche cachée précédant la couche de sortie. Lors de son passage, ce neurone transmet son signal de sortie aux neurones de la couche de sortie via les poids qui les relient. Pendant l'entraînement, ces poids fonctionnent dans l'ordre inverse, transmettant la valeur de d de la couche de sortie à la couche cachée. Chacun de ces poids est multiplié par la valeur d du neurone auquel il est connecté dans la couche de sortie. La valeur d requise pour un neurone de couche cachée est obtenue en additionnant tous ces produits et en multipliant par la dérivée de la fonction de compression :

(voir Fig. 5) Une fois la valeur de d obtenue, les poids alimentant la première couche cachée peuvent être ajustés à l'aide des équations (5) et (6), où les indices sont modifiés en fonction de la couche.

Formation de la couche interne Fig. 2.5

Pour chaque neurone d'une couche cachée donnée, d doit être calculé et tous les poids associés à cette couche doivent être ajustés. Ce processus est répété couche par couche vers l'entrée jusqu'à ce que tous les poids aient été ajustés.

En utilisant la notation vectorielle, l’opération de rétropropagation d’erreur peut être écrite de manière beaucoup plus compacte. Notons l'ensemble des valeurs d de la couche de sortie par D k et l'ensemble des poids de la couche de sortie par le tableau W k . Pour obtenir Dj, le vecteur d de la couche de sortie, les deux opérations suivantes suffisent :

1. Multipliez le vecteur d de la couche de sortie D k par la matrice de poids transposée W k reliant la couche cachée à la couche de sortie.

2. Multipliez chaque composant du produit résultant par la dérivée de la fonction de compression du neurone correspondant dans la couche cachée.

En notation symbolique :

,

où l'opérateur $ désigne le produit des vecteurs par composants. O j est le vecteur de sortie de la couche j et I est un vecteur dont toutes les composantes sont égales à 1.

Paralysie du réseau. Au cours du processus de formation du réseau, les valeurs de poids peuvent devenir très importantes à la suite d'une correction. Cela peut entraîner le fonctionnement de tous ou de la plupart des neurones à un niveau très élevé. grandes valeurs OUT, dans la région où la dérivée de la fonction de compression est très petite. Puisque l’erreur renvoyée lors du processus d’apprentissage est proportionnelle à cette dérivée, le processus d’apprentissage peut pratiquement se figer. D'un point de vue théorique, ce problème est mal compris. Ceci est généralement évité en diminuant la taille du pas n, mais cela augmente le temps de formation. Diverses heuristiques ont été utilisées pour prévenir ou guérir de la paralysie, mais pour l’instant elles ne peuvent être considérées que comme expérimentales.

Minimums locaux. La rétropropagation utilise une variation de descente de gradient, c'est-à-dire descend la surface d’erreur, ajustant continuellement les poids vers le minimum. La surface d'erreur d'un réseau complexe est très accidentée et se compose de collines, de vallées, de plis et de ravins dans un espace de grande dimension. Le réseau peut entrer dans minimum local(vallée peu profonde) lorsqu'il y a une dépression beaucoup plus profonde à proximité. À un point minimum local, toutes les directions pointent vers le haut et le réseau est incapable d’y échapper. Les méthodes d’apprentissage statistique peuvent permettre d’éviter cet écueil, mais elles sont lentes. Une méthode est proposée qui combine les méthodes statistiques de la machine Kasha avec la descente de gradient de rétropropagation et conduit à un système qui trouve le minimum global tout en préservant grande vitesse rétropropagation. Ceci est discuté au Chap. 5.

Taille du pas. Un examen attentif de la preuve de convergence montre que les corrections de poids sont supposées infinitésimales. De toute évidence, cela n’est pas réalisable dans la pratique, car cela conduit à une courbe d’apprentissage sans fin. La taille du pas doit être considérée comme finie et, dans cette affaire, il faut se fier uniquement à l'expérience. Si la taille du pas est très petite, alors la convergence est trop lente, mais si elle est très grande, une paralysie ou une instabilité constante peut survenir.

Instabilité temporaire. Si le réseau apprend à reconnaître les lettres, alors cela ne sert à rien d'apprendre B si A est oublié. Le processus d'apprentissage doit être tel que le réseau soit formé sur l'ensemble de l'ensemble de formation sans sauter ce qui a déjà été appris. Dans la preuve de convergence, cette condition est remplie, mais il est également nécessaire que le réseau soit présenté avec tous les vecteurs de l'ensemble d'apprentissage avant que les poids ne soient ajustés. Les changements de poids nécessaires doivent être calculés sur l'ensemble de l'ensemble, ce qui nécessite mémoire supplémentaire; Après un certain nombre de cycles de formation, les poids convergeront vers une erreur minimale. Cette méthode peut être inutile si le réseau se trouve dans un environnement externe en constante évolution, de sorte que le même vecteur ne peut pas se répéter une seconde fois. Dans ce cas, le processus d’apprentissage peut ne jamais converger, errant sans but ou oscillant de manière extravagante. En ce sens, la rétropropagation est différente des systèmes biologiques.

À proprement parler, la méthode de rétropropagation est une méthode permettant de calculer rapidement un gradient, basée sur les fonctionnalités de la fonction de recalcul du réseau qui réduisent la complexité de calcul du calcul du gradient. Le procédé utilise l'erreur en sortie du réseau pour calculer les dérivées partielles par rapport aux poids de la dernière couche de connexions entraînées, puis l'erreur en sortie de l'avant-dernière couche est déterminée à l'aide des poids de la dernière couche et de l'erreur du réseau et le processus est répété.

Description de l'algorithme

La rétropropagation s'applique aux réseaux multicouches dont les neurones ont une non-linéarité avec une dérivée continue, comme ceci :

La non-linéarité de ce type est pratique en raison de la simplicité de calcul de la dérivée :

Pour entraîner le réseau, P couples de vecteurs de signaux sont utilisés : le vecteur d'entrée I et le vecteur qui doit être reçu en sortie du réseau D. Le réseau, en cas simple, se compose de N couches, et chaque neurone de la couche suivante est connecté à tous les neurones de la couche précédente par des connexions, avec des poids w [n].

En propagation directe, pour chaque couche le signal total en sortie de la couche (S[n]) et le signal en sortie du neurone sont calculés (et stockés). Ainsi, le signal à l'entrée du i-ième neurone de la n-ième couche :

Ici w (i, j) sont les poids des connexions de la nième couche. Le signal de sortie du neurone est calculé en appliquant la non-linéarité du neurone au signal total.

Le signal de couche de sortie x[N] est considéré comme le signal de sortie du réseau O.

Sur la base du signal de sortie du réseau O et du signal D, qui doit être obtenu à la sortie du réseau pour une entrée donnée, l'erreur du réseau est calculée. Généralement, le carré moyen de l'écart sur tous les vecteurs de l'ensemble d'apprentissage est utilisé :

Pour entraîner le réseau, le gradient de la fonction d'erreur sur les poids du réseau est utilisé. L'algorithme de rétropropagation consiste à calculer le gradient de la fonction d'erreur en « rétropropagant le signal » de l'erreur. Ensuite, la dérivée partielle de l'erreur par rapport aux poids de connexion est calculée à l'aide de la formule :

Ici d est le résidu du réseau, qui pour la couche de sortie est calculé à l'aide de la fonction d'erreur :

Et pour les calques cachés - selon l'écart du calque précédent :

Pour le cas de non-linéarité sigmoïde et d’écart carré moyen en fonction de l’erreur :

La formation proprement dite du réseau consiste à trouver des valeurs de poids qui minimisent l'erreur aux sorties du réseau. Il existe de nombreuses méthodes basées sur le gradient ou basées sur le gradient pour résoudre ce problème. Dans le cas le plus simple, le réseau est entraîné en utilisant de petits incréments de poids de connexion dans la direction opposée au vecteur gradient :

Cette méthode d'apprentissage est appelée « optimisation de descente de gradient » et, dans le cas des réseaux de neurones, est souvent considérée comme faisant partie de la méthode de rétropropagation.

Implémentation de l'algorithme de rétropropagation d'erreur à l'aide de l'exemple d'approximation de fonction

Devoir : Soit un tableau de valeurs d'arguments ( x je ) et les valeurs de fonction correspondantes ( f(x je )) ( ce tableau aurait pu apparaître lors des calculs de certains analyses fonction donnée lors de la réalisation d'une expérience pour identifier la dépendance du courant à l'égard de la résistance dans réseau électrique, lors de l'identification d'un lien entre activité solaire et le nombre de visites au centre de cardiologie, entre le montant des subventions aux agriculteurs et le volume de la production agricole, etc.).

Dans l'environnement Matlab, il est nécessaire de construire et d'entraîner un réseau de neurones pour approximer une fonction spécifiée dans la table, i=1, 20. Développer un programme qui implémente l'algorithme d'approximation du réseau de neurones et affiche les résultats de l'approximation sous forme de graphiques.

L'approximation consiste dans le fait qu'en utilisant les informations disponibles sur f (x), on peut considérer la fonction d'approximation z (x) qui est en quelque sorte proche de f (x), permettant d'effectuer sur elle les opérations correspondantes et d'obtenir une estimation de l'erreur d'un tel remplacement.

L'approximation signifie généralement une description d'une dépendance, parfois non explicitement spécifiée, ou un ensemble de données la représentant à l'aide d'une autre dépendance, généralement plus simple ou plus uniforme. Souvent, les données se présentent sous la forme de points d'ancrage individuels dont les coordonnées sont spécifiées par le tableau de données. Le résultat de l’approximation ne peut pas passer par les points nodaux. En revanche, la tâche de l’interpolation consiste à trouver des données à proximité des points nodaux. À cette fin, des fonctions appropriées sont utilisées, dont les valeurs aux points nodaux coïncident avec les coordonnées de ces points.

Tâche. Dans l'environnement Matlab, il est nécessaire de construire et d'entraîner un réseau de neurones pour se rapprocher d'une fonction spécifiée dans une table (voir Figure 5).

Figure 5. Tableau des valeurs des fonctions Dans l'environnement mathématique Matlab, dans la fenêtre de commande, nous écrivons le code du programme de création et de formation d'un réseau de neurones.

Pour résoudre ce problème, nous utiliserons la fonction newff (.) - créant un réseau neuronal multicouche « classique » avec entraînement utilisant la méthode de rétropropagation, c'est-à-dire les poids des synapses changent en tenant compte de la fonction d'erreur ; la différence entre les réponses réelles et correctes du réseau neuronal, déterminée au niveau de la couche de sortie, se propage dans la direction opposée - vers le flux du signal. Le réseau aura deux couches cachées. La première couche a 5 neurones, la seconde - 1. La fonction d'activation de la première couche est "tansig" (fonction sigmoïde, renvoie des vecteurs de sortie avec des valeurs comprises entre - 1 et 1), la seconde - "purelin" ( fonction linéaire activation, renvoie les vecteurs de sortie inchangés). Il y aura 100 époques de formation. Fonction de formation "trainlm" - une fonction qui forme le réseau (utilisée par défaut car elle fournit le plus apprentissage rapide, mais nécessite beaucoup de mémoire).

Code du programme :

P = zéros (1, 20) ;

pour i = 1 : 20 % de création de tableau P (i) = i*0,1 ; %input (argument) fin T= ; %input (valeur de la fonction) net = newff ([-1 2.09], ,("tansig" "purelin")); %création d'un réseau de neurones net. trainParam. époques = 100 ; %définir le nombre d'époques d'entraînement net=train (net,P,T) ; %formation réseau y = sim(net,P); % chiffre du sondage du réseau formé (1 );

plot(P,T,P,y,"o"),grille ; %dessiner un graphique des données sources et de la fonction générée par le réseau neuronal.

Le résultat du réseau neuronal.

Résultat de l'entraînement (voir Fig. 2) : le graphique montre le temps d'entraînement du réseau neuronal et l'erreur d'entraînement. Dans cet exemple, le réseau neuronal a traversé les 100 époques, apprenant et réduisant progressivement les erreurs, atteignant 10 -2,35 (0,00455531).

Figure 2. Résultat de la formation du réseau neuronal

Graphique des données originales et de la fonction générée par le réseau neuronal (voir Fig. 3) : les cercles indiquent les données originales et la ligne indique la fonction générée par le réseau neuronal. Ensuite, en utilisant les points obtenus, vous pouvez construire une régression et obtenir une équation d'approximation (voir Figure 8). Nous avons utilisé la régression cubique car son graphique passe avec la plus grande précision par les points obtenus. L'équation résultante ressemble à :

y=0,049x3 +0,88x2 -0,006x+2,1.

Ainsi, on voit qu'à l'aide d'un réseau de neurones, on peut retrouver rapidement une fonction, en ne connaissant que les coordonnées des points par lesquels elle passe.

Figure 3. Graphique des données originales et de la fonction générée par le réseau neuronal


Figure 4. Graphique de la fonction d'approximation



Avez-vous aimé l'article? Partagez avec vos amis !