Réseaux de neurones artificiels «la rétropropagation du gradient» S. Canu, laboratoire psi, insa de Rouen
tarix 29.10.2017 ölçüsü 445 b. #19622
Réseaux de neurones artificiels « la rétropropagation du gradient » S. Canu, équipe « systèmes d’information pour l’environnement » asi.insa-rouen.fr/~scanu
Histoire … 1940 : La machine de Turing 1943 : Le neurone formel (McCulloch & Pitts) 1948 : Les réseaux d'automates (Von Neuman) 1949 : Première règle d’apprentissage (Hebb) 1958-62 : Le perceptron (Rosenblatt) 1960 : L'adaline (Widrow & Hoff) 1969 : Perceptrons (Minsky & Papert) les limites du Perceptron besoin d'architectures + complexes, Comment effectuer l'apprentissage ? On ne sait pas ! 1974 : Rétropropagation (Werbos) pas de succès !?!?
Histoire … (suite) 1986 : Rétropropagation (Rumelhart & McClelland) nouvelles architectures de Réseaux de Neurones applications : - reconnaissance de l’écriture - reconnaissance/synthèse de la parole - vision (traitement d’images) 1990 : « Société de l’Information » nouvelles applications - recherche/filtrage d’information dans le Web - extraction d’information / veille technologique - multimedia (indexation, …) - data mining besoin de combiner différents modèles
Plan Rappels : Moindres carrés stochastiques Algorithmes de gradient Perceptron Multicouches Principe de la rétropropagation Algorithmes de rétropropagation
Moindres carrés « stochastiques » ADALINE (Widrow Hoff 1960) impossible (’ ! ) méthode itérative : winit Répéter wnew = wold - Tant qu ’il reste des mals classés ou que le coût n’évolue plus
Algorithme de gradient Illustration dans le plan (w1 ,w2 )
Algorithme de gradient Illustration dans le plan (J(w),w ) : la « descente » de gradient
Le gradient : Approximation linéaire (Adaline) Perceptron : ’=1 Neurone formel : on remplace par une fonction dérivable ex : (x)=th(x) fonction sigmoïde
Perceptron Multi-Couches Réseau feedforward (1986) Fonction de transfert tanh(.) (sauf couche de sortie linéaire) Méthode d’apprentissage (supervisé) usuelle : rétropropagation du gradient
Notations Biais : avec x0=1 idem pour toutes les couches (ex : PMC à une couche cachée) W1=[wji] W2=[wkj]
Propagation Calcul des sorties du réseau en propageant les valeurs de x de couche en couche :
Function y = propag(x,w1,w2) a1 = [x ones(n,1)]*W1; x1 = tanh(a1); a2 = [x1 ones(n,1)]*W2; y = a2;
Calcul de l ’erreur Fonction de coût : on présente un exemple x=[x1... xn0] (avec ydes sortie désirée) on calcule la sortie correspondante y =[y1... yn2] erreur : coût associé à l ’exemple : coût global :
Calcul du gradient Mise à jour de wji et wkj selon une règle delta:
Couche de sortie Calcul de pour un exemple fixé
Couche cachée Calcul de pour un exemple fixé
Algorithme de rétropropagation Function grad = retropropag(x,yd,w1,w2) ... a1 = [x ones(n,1)]*W1; x1 = tanh(a1); a2 = [x1 ones(n,1)]*W2; y = a2; ERRk = -(yd-y).*(1-y.*y); GradW2 = [x1 ones(n,1)] '* ERRk ; ERRj = (w2(1:n2-1,:)*ERRk')'.*(1-x1.*x1); GradW1 = [x ones(n,1)] '* ERRj ; w1 = w1 - pas1 .* GradW1; w2 = w2 - pas2 .* GradW2;
Exemple 1/4 x = [0.5 1] ydes = [0.5 1] W1=[0.5 0.5 ; 0.5 0.5] (pas de biais) W2=[1 1 ; 1 1]
Exemple 2/4
Exemple 3/4 MAJ de W1 et W2 Nouvelle propagation, etc...
Exemple 4/4
Gradient batch / séquentiel 2 façons d ’appliquer l’algorithme de rétropropagation : « batch » : mise à jour des poids après la présentation de tous les exemples calculs et stockage plus lourds si trop d ’exemples séquentiel : (on-line, stochastique) mise à jour des poids après chaque exemple
Gradient batch / séquentiel 2 façons d ’appliquer l’algorithme de rétropropagation : « batch » : mise à jour des poids après la présentation de tous les exemples calculs et stockage plus lourds si trop d ’exemples séquentiel : (on-line, stochastique) mise à jour des poids après chaque exemple besoin de tirer l ’exemple au hasard problèmes de convergence
Pas d’apprentissage Pas d’apprentissage : trop petit = convergence « lente » vers la solution trop grand = risque d’oscillations… heuristiques courantes : diminuer le pas d’apprentissage au fur et a mesure « à la main » en fonction de la forme de la surface d ’erreur approximations : premier ordre Rétropropagation avec un moment d’inertie Delta-Bar-Delta, Rprop, ... second ordre Quickprop Levenberg Marquard
Premier ordre 1/2 Moment d’inertie (Rumelhart et al. 1986) Delta-Bar-Delta (Jacobs 1988) calcul d ’un « gradient moyen » modification du pas d’apprentissage selon la direction du gradient par rapport au gradient moyen
Premier ordre 2/2 Rprop (Riedmiller and Braun 1993) modification du pas d’apprentissage selon la direction du gradient par rapport au gradient précédent on borne le pas d ’apprentissage un poids n’est modifié que s ’il va « dans le bon sens »
Second ordre 1/2 Développement de Taylor de la fonction de coût : H = matrice Hessienne , « le Hessien » de du coût Calcul du gradient : on cherche h / le gradient soit nul
Second ordre 2/2 Approximation du Hessien : hessien = matrice diagonale Quickprop (Fahlman 1988) Il existe d’autres méthodes qui calculent (partiellement) les informations du 2nd ordre méthodes de gradient conjugué
Conclusion La rétropropagation est une méthode de gradient on a un problème d’optimisation à résoudre,….. …. Et tous les coups sont bon ! On a un problème d’optimisation non linéaire convexe si la fonction coût est quadratique Soft : matlab (petits problèmes) - SN (gros problèmes)
Bibliographie Neural Networks : a comprehensive foundation - S. Haykin (Prenctice Hall) Neural Networks : a systematic introduction R. Rojas (Springer) The Handbook of Brain Theory and Neural Networks - M.A. Arbib (MIT Press) Self-Organizing Maps - T. Kohonen (Springer) Réseaux Neuronaux et Traitement du Signal - J. Hérault & C. Jutten (Hermès) Backpropagator ’s review : des informations sur la rétropropagation http://www.dontveter.com/bpr/bpr.html un petit tutoriel : http://www.dontveter.com/bpr/public2.html
Dostları ilə paylaş: