Réseaux neuronaux hybrides. - page 17

 

Qui l'a essayé ?

...........................................................

Combinaison de la rétropropagation avec l'apprentissage de Cauchy

La correction des poids dans l'algorithme combiné utilisant la rétropropagation et l'apprentissage de Cauchy consiste en deux composantes : (1) une composante directionnelle calculée à l'aide de l'algorithme de rétropropagation, et (2) une composante aléatoire définie par la distribution de Cauchy.

Ces composantes sont calculées pour chaque poids, et leur somme est le montant de la variation du poids. Comme dans l'algorithme de Cauchy, une fois la modification du poids calculée, la fonction cible est calculée. Si une amélioration est constatée, la modification est enregistrée. Sinon, il est sauvegardé avec la probabilité déterminée par la distribution de Boltzmann.

La correction du poids est calculée à l'aide des équations présentées précédemment pour chacun des algorithmes :

wmn,k(n+1) = wmn,k(n) + η [aΔwmn,k(n) + (1 - a) δ n,k OUT m,j ] + (1 - η) xc,

où η est le coefficient contrôlant les quantités relatives de Cauchy et de rétropropagation dans les composantes de l'étape de poids. Si η est égal à zéro, le système devient une machine de Cauchy complète. Si η est égal à un, le système devient une machine à propagation arrière.

........................................................

 
gumgum >> :

Pouvez-vous nous parler plus en détail du quasi-newtonien et du LMA ?

LMA = algorithme de Levenberg-Marquardt

Méthode Quasi-Newton

Méthodes de gradient du second ordre


Beaucoup de choses à écrire, en bref :


L'algorithme de Newton,
xk+1 = xk - sk*H^(-1)(xk)grad f(xk),où
H^(-1)(xk) est l'inverse de la matrice de Hesse au point xk,
sk est la valeur de l'étape,
gradf(xk) est le gradient de la fonction au point xk.

Ainsi, la méthode quasi-newtonienne utilise la matrice H(xk) au lieu de H^(-1)(xk) qui est construite à partir des dérivées partielles du second ordre,
Dans la méthode quasi-newtonienne, les dérivées secondes sont calculées par la méthode des différences extrêmes. Par conséquent, nous avons les deux plus fréquemment utilisés

Formules de calcul du CR :


Broydon-Fletcher-Goldfarb-Shanno (BFGS)

Devidon - Fletcher - Powell(DFP).


LMA :


Fait également référence aux méthodes du second ordre, c'est-à-dire que les dérivées partielles du second ordre doivent être calculées,


xk+1 = xk - sk*H^(-1)(xk)grad f(xk),où

donc H^(-1)(xk)est calculé comme H= J^t*J où J est le Jacobien

respectivement gradf(xk) = J^t*E, J^t est le jacobien de la transposition, E est le vecteur d'erreur du réseau, alors

xk+1 = xk - [J^t*J + mu*I]^(-1)*J^t*E, où mu est un scalaire, si mu est 0, on a la méthode de Newton avec approximation hessienne, si mu -> + Inf,

méthode du gradient avec un petit pas.


Il y a plus de discussion ici :


Neuro-synthétiseur, constructeur+labo

 
rip писал(а) >>

LMA = algorithme de Levenberg-Marquardt

Méthode Quasi-Newton

Méthodes de gradient du second ordre

Beaucoup de choses à écrire, en somme :

L'algorithme de Newton,
xk+1 = xk - sk*H^(-1)(xk)grad f(xk),où
H^(-1)(xk) est l'inverse de la matrice de Hesse au point xk,
sk est la valeur de l'étape,
gradf(xk) est le gradient de la fonction au point xk.

Ainsi, la méthode quasi-newtonienne utilise la matrice H(xk) au lieu de H^(-1)(xk) qui est construite à partir des dérivées partielles du second ordre,
Dans la méthode quasi-newtonienne, les dérivées secondes sont calculées par la méthode des différences extrêmes. Par conséquent, nous disposons de deux systèmes les plus fréquemment utilisés

Formules de calcul du CR :

Broydon-Fletcher-Goldfarb-Schanno (BFGS)

Devidon-Fletcher-Powell(DFP)


LMA :

Fait également référence aux méthodes du second ordre, c'est-à-dire que les dérivées partielles du second ordre doivent être calculées,

xk+1 = xk - sk*H^(-1)(xk)grad f(xk),où

donc H^(-1)(xk)est calculé comme H= J^t*J où J est le Jacobien

respectivement gradf(xk) = J^t*E, J^t est le jacobien transposé, E est le vecteur d'erreur du réseau, alors

xk+1 = xk - [J^t*J + mu*I]^(-1)*J^t*E, où mu est un scalaire, si mu est 0, on a la méthode de Newton avec approximation hessienne, si mu -> + Inf,

méthode du gradient avec un petit pas.

Il y a plus de discussion ici :


Neuro-synthétiseur, constructeur+labo

Merci.

La question reste... Où est la vérité ?

Coin supérieur gauche (RProp). Pourquoi DE/DW=0 lorsque DE/DW(t-1)*DE/DW<0 ?

 
gumgum >> :

Merci.

La question reste... Où est la vérité ?

Coin supérieur gauche. Pourquoi DE/DW=0 lorsque DE/DW(t-1)*DE/DW<0 ?

Un produit négatif des gradients indique que l'algorithme a "sauté" l'extremum requis. C'est pourquoi la cellule de mémoire où est stockée la valeur du gradient à l'étape actuelle (notez que c'est la cellule de mémoire, pas le gradient lui-même) est mise à zéro, pour que la troisième condition fonctionne à l'étape suivante. Il s'agit d'une caractéristique intéressante de l'algorithme si vous lisez l'article dans son intégralité.

 
alsu писал(а) >>

Un produit négatif des gradients indique que l'algorithme a "dépassé" l'extremum requis. C'est pourquoi la cellule de mémoire où est stockée la valeur du gradient à l'étape actuelle (attention, il s'agit de la cellule de mémoire, pas du gradient lui-même) est mise à zéro, afin que la troisième condition soit déclenchée à l'étape suivante. Il s'agit d'une astuce de l'algorithme, si vous avez lu l'article en entier.

Mais alors vous avez besoin de de/dw(t-1)=0

 
gumgum >> :

Mais alors vous avez besoin de de/dw(t-1)=0

dans cette étape, c'est de/dw(t), dans la suivante, ce sera de/dw(t-1)

 
alsu писал(а) >>

dans cette étape, c'est de/dw(t), dans la suivante, ce sera de/dw(t-1)

Merci. Pouvez-vous indiquer avec JRprop q est individuel pour chaque poids ou quoi ?

 

Je suis déjà confus par certains qui écrivent deltaW=n*DE/DW d'autres deltaW=n*DE/DW d'autres etc. etc. ......

 
gumgum >> :

Merci. Pouvez-vous me dire avec JRprop q est individuel pour chaque poids ou quoi ?

D'après ce que j'ai compris, q est le même pour tout

 
gumgum >> :

Je suis déjà confus certains écrivent deltaW=-n*DE/DW d'autres deltaW=n*DE/DW d'autres etc. etc. ......

Commençons par le début, l'algorithme heuristique RProp, il utilise l'analyse du signe de la dérivée première de la fonction d'erreur par le poids des synapses.

Si le signe de la dérivée est positif, dEdW(t)*dEdW(t-1) > 0, c'est-à-dire que la minimisation des erreurs est mise en œuvre, nous allons dans la bonne direction.

Si le signe a changé, c'est-à-dire que dEdW(t)*dEdW(t-1) < 0, nous avons manqué le minimum (minimum local) et nous devons faire deux pas en arrière. Tout d'abord, pour compenser le minimum que nous venons de manquer - dans votre exemple, DELTAij(t) est calculé à partir de la valeur précédente de delta et -eta. Il n'est pas nécessaire de corriger Wij(t) à cette étape, nous reviendrons uniquement à la valeur précédente de Wij, mais la façon dont vous le faites signifie que nous revenons deux fois en arrière à partir du point de changement du signe de la dérivée.


En ce qui concerne <deltaW=-n*DE/DW other deltaW=n*DE/DW>, cela n'a pas d'importance, il suffit de comprendre quelle étape fait quoi, dans quelle direction et à quel moment.


Comme il s'agit d'une heuristique, le respect exact des formules n'est pas important, c'est le principe qui compte.