La méthode de rétro-propagation des erreurs, également connue sous le nom d'algorithme de rétropropagation, est une méthode courante pour entraîner les réseaux de neurones. Il utilise la règle de chaîne pour calculer l'erreur entre la sortie du réseau neuronal et l'étiquette, et rétropropage l'erreur à chaque nœud couche par couche pour calculer le gradient de chaque nœud. Ces gradients peuvent être utilisés pour mettre à jour les poids et les biais du réseau neuronal, rapprochant progressivement le réseau de la solution optimale. Grâce à la rétropropagation, le réseau neuronal peut automatiquement apprendre et ajuster les paramètres pour améliorer les performances et la précision du modèle.
Dans la rétropropagation d'erreur, nous utilisons la règle de la chaîne pour calculer le gradient.
Nous avons un réseau de neurones qui a une entrée x, une sortie y et une couche cachée. Nous calculons le gradient de chaque nœud dans la couche cachée par rétropropagation.
Tout d'abord, nous devons calculer l'erreur de chaque nœud. Pour la couche de sortie, l'erreur est la différence entre la valeur réelle et la valeur prédite ; pour la couche cachée, l'erreur est l'erreur de la couche suivante multipliée par le poids de la couche actuelle. Ces erreurs sont utilisées pour ajuster les pondérations afin de minimiser la différence entre les prévisions et les valeurs réelles.
Ensuite, nous utilisons la règle de la chaîne pour calculer le dégradé. Pour chaque poids, nous calculons sa contribution à l’erreur puis rétropropagons cette contribution à la couche précédente.
Plus précisément, supposons que notre réseau neuronal ait un poids w qui connecte deux nœuds. Alors la contribution de ce poids à l’erreur est le produit du poids et de l’erreur. On rétropropage cette contribution à la couche précédente en multipliant cette contribution par le produit de la sortie de la couche précédente et de l'entrée de la couche actuelle.
De cette façon, nous pouvons calculer le gradient de chaque nœud puis utiliser ces gradients pour mettre à jour les poids et les biais du réseau.
Supposons que nous ayons un réseau neuronal qui a une couche d'entrée, une couche cachée et une couche de sortie. La fonction d'activation de la couche d'entrée est une fonction linéaire, la fonction d'activation de la couche cachée est une fonction sigmoïde et la fonction d'activation de la couche de sortie est également une fonction sigmoïde.
1. Saisissez les données de l'ensemble d'entraînement dans la couche d'entrée du réseau neuronal et obtenez la valeur d'activation de la couche d'entrée.
2. Transmettez la valeur d'activation de la couche d'entrée à la couche cachée et obtenez la valeur d'activation de la couche cachée par transformation non linéaire de la fonction sigmoïde.
3. Transmettez la valeur d'activation de la couche cachée à la couche de sortie et obtenez la valeur d'activation de la couche de sortie par transformation non linéaire de la fonction sigmoïde.
L'erreur est calculée en utilisant la perte d'entropie croisée entre les activations de la couche de sortie et les étiquettes réelles. Plus précisément, pour chaque échantillon, l'entropie croisée entre l'étiquette prédite et l'étiquette réelle est calculée, puis cette entropie croisée est multipliée par le poids de l'échantillon correspondant (le poids de l'échantillon est généralement déterminé en fonction de l'importance et de la distribution de l'échantillon).
1. Calculez le gradient de chaque nœud de la couche de sortie
Selon la règle de la chaîne, pour chaque nœud, nous calculons sa contribution à l'erreur, puis rétropropagons cette contribution. l'étage précédent. Plus précisément, pour chaque nœud, nous calculons sa contribution à l'erreur (c'est-à-dire le produit du poids du nœud et de l'erreur), puis multiplions cette contribution par le produit de la sortie de la couche précédente et de l'entrée de la couche actuelle. De cette façon, nous obtenons le dégradé de chaque nœud de la couche de sortie.
2. Calculez le gradient de chaque nœud dans la couche cachée
De même, selon la règle de la chaîne, pour chaque nœud, nous calculons sa contribution à l'erreur, puis rétropropageons cette contribution à la couche précédente . Plus précisément, pour chaque nœud, nous calculons sa contribution à l'erreur (c'est-à-dire le poids du nœud multiplié par l'erreur), puis multiplions cette contribution par le produit de la sortie de la couche précédente et de l'entrée de la couche actuelle. De cette façon, nous obtenons le dégradé de chaque nœud de la couche cachée.
3. Mettre à jour les poids et biais du réseau de neurones
Selon l'algorithme de descente de gradient, pour chaque poids, on calcule son gradient sur l'erreur, puis on multiplie ce gradient par un taux d'apprentissage (soit un peut contrôler le paramètre de la vitesse de mise à jour) pour obtenir la quantité de mise à jour du poids. Pour chaque biais, nous devons également calculer son gradient sur l'erreur, puis multiplier ce gradient par un taux d'apprentissage pour obtenir le montant de mise à jour pour ce biais.
Répétez le processus ci-dessus (propagation avant, erreur de calcul, propagation arrière, paramètres de mise à jour) jusqu'à ce que le critère d'arrêt soit rempli (par exemple, le nombre maximum d'itérations prédéfini est atteint ou l'erreur atteint le valeur minimale prédéfinie).
Il s'agit du processus détaillé de rétropropagation des erreurs. Il convient de noter que dans les applications pratiques, nous utilisons généralement des structures de réseaux neuronaux et des fonctions d'activation plus complexes, ainsi que des fonctions de perte et des algorithmes d'apprentissage plus complexes pour améliorer les performances et la capacité de généralisation du modèle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!