• Aucun résultat trouvé

Les réseaux de neurones : fonctionnement et apprentissage

Chapitre 4 -Contrainte de l'environnement et prédiction de trajectoire des vé-

4.2 Les réseaux de neurones : fonctionnement et apprentissage

des autres usagers. Étant donné la complexité de ces situations, les méthodes d'apprentissage articiel, et notamment les réseaux de neurones, sont une approche séduisante. En eet, ces situations peuvent être diciles à modéliser et interpréter par des méthodes classiques. On peut penser qu'avec une base de données importante, les réseaux de neurones soient capables de représenter ces scénarios correctement et d'anticiper les futures positions des autres véhicules. Pour pouvoir représenter correctement les comportements des exo véhicules, il faut une base de données conséquente. Cependant, les prototypes du Groupe PSA, au moment de cette étude, n'ont pas eectué susamment de roulage en ville pour utiliser des réseaux de neurones. An de dénir une stratégie de détection d'intention et de prédiction de trajectoire, nous avons donc utilisé une base de données créée à partir de roulages sur autoroute. Cela va permettre de confronter plusieurs méthodes et de les valider pour ensuite les adapter en environnement urbain. Pour avoir un scénario transposable de l'autoroute à l'urbain, les stratégies développées se concentrent alors sur les man÷uvres de changement de voie.

Pour la détection d'intention, une méthode classique à base de règles probabilistes et de prédiction de trajectoire est comparée à un réseau de neurones MLP pour déterminer si un véhicule de l'environnement est en train de changer de voie. Pour la prédiction de trajectoire, plusieurs structures de réseaux de neurones de type RNN sont comparées.

4.2 Les réseaux de neurones : fonctionnement et apprentissage

La deuxième méthode de détection de changement de voie utilise des réseaux de neurones. Au début du chapitre, nous avons expliqué de manière macroscopique le principe de fonctionnement d'un réseau de neurones. Ici, nous allons détailler comment une sortie d'un réseau de neurones est calculée et comment celui-ci est entraîné pour un problème de classication.

4.2.1 Fonctionnement d'un neurone

Un neurone seul a pour entrée un vecteur de données d = [d1 d2 · · · dn]T. Ces données sont pondérées par un vecteur de paramètres Θ = [θ0 θ1 · · · θn]T. La somme pondérée des paramètres du neurone et des données d'entrée est utilisée pour calculer la sortie hΘ grâce à une fonction d'activation. Les fonctions d'activation sont généralement la fonction d'Heaviside, la tangente hyperbolique ou la sigmoïde. Nous utilisons ici cette dernière.

...

d1 d2 d3 dn d0 h (d)θ Sortie Données d'entrée Biais d'entrée Input wires h (d)

Figure 4.6  Représentation d'un neurone

4.2. Les réseaux de neurones : fonctionnement et apprentissage [d1 d2 · · · dn]T, la sortie se calcule par :

hΘ(db) = 1

1 + e−ΘTdb. (4.1)

avec db l'entrée d avec un biais d0 = 1 telle que : db = " d0 d # . (4.2)

L'ajout d'un biais rend le neurone plus exible. En eet, si les poids représentent la  forme  du modèle, le biais positionne son zéro. L'intérêt du biais et le fonctionnement d'un neurone pour un problème de classication sont illustrés dans l'exemple suivant.

L'objectif est de déterminer, pour une entrée d = [d1 d2]T si cette classe appartient à la classe+ou la classeo dont la répartition est représentée sur la Figure 4.7 (a). Avec un neurone pondéré comme sur la Figure 4.7 (b), il est possible d'identier la classe de d.

0 2 4 6 8 10 d 1 0 2 4 6 8 10 d2 Biais d'entrée d1 d2 1 h (d)θ -4 -0.5 1 (a) (b)

Figure 4.7  Répartition des classes (a) et représentation du neurone pour la classication (b) Pour d, la sortie vaut :

hΘ(d) = 1

1 + e−ΘTdb, (4.3)

avec db = [1 dT]T et

ΘTdb = θ0+ θ1d1+ θ2d2, (4.4) sachant qu'ici θ0 = −4, θ1= −0.5 et θ2 = 1.

Si hΘ(d) > 0, 5, cela signie que ΘTdb > 0 et que, sur la Figure 4.7 (a), d est au-dessus de la droite noire et donc appartient à la classe +. À l'inverse, si hΘ(d) < 0, 5, d appartient à la classeo.

4.2.2 Propagation de l'information dans le réseau

En général, un réseau est constitué de plusieurs couches de neurones et chaque couche contient plusieurs neurones. On appelle couche d'entrée la couche du vecteur d'entrée et couche de sortie la couche contenant les neurones calculant les sorties. Les couches intermédiaires constituent la couche cachée du réseau. Pour illustrer comment l'information se propage du vecteur d'entrée à la sortie, prenons l'exemple d'un réseau à n entrées, une seule couche cachée composée de trois

4.2. Les réseaux de neurones : fonctionnement et apprentissage

...

d1 d2 d3 dn d0 h (d)θ Unité de biais

Couche d'entrée Couches cachées Couche de sortie N(2)0

N(2)1 N(2)2 N(2)3

N1(3)

Figure 4.8  Représentation d'un neurone neurones et une sortie, comme illustré sur la Figure 4.8.

On appelle N(j)

i le ième neurone de la couche j. Ainsi, pour la première couche cachée : N1(2)= gθ10(1)d0+ θ(1)11d1+ θ(1)12d2+ · · · + θ(1)1ndn N2(2)= gθ20(1)d0+ θ(1)21d1+ θ(1)22d2+ · · · + θ(1)2ndn N3(2)= g  θ30(1)d0+ θ(1)31d1+ θ(1)32d2+ · · · + θ(1)3ndn  , (4.5)

avec g(z) la fonction d'activation sigmoïde qui s'écrit : g(z) = 1

1 + e−z, (4.6)

et θ(l)

ij la pondération de la jème entrée du ième neurone de la couche l à la couche l + 1. La couche de sortie donne alors :

hθ(d) = g 

θ(2)10N0(2)+ θ(2)11N1(2)+ θ(2)12N2(2)+ θ(2)13N3(2) 

. (4.7)

Le fait d'augmenter la hauteur du réseau en ajoutant des neurones dans chaque couche et d'augmenter la profondeur du réseau en ajoutant des couches permet d'accroitre et de complexi-er les relations entre les paramètres d'entrée. Le modèle entrée/sortie du réseau aura donc plus de possibilités combinatoires entre les diérentes entrées et permettra donc la représentation de modèles très variés. Ainsi, si un neurone permet la classication d'une fonction linéaire du premier ordre comme vu précédemment, un réseau de neurones avec plusieurs couches cachées et un grand nombre de neurones par couche peut permettre par exemple la classication d'image, voir Figure 4.9. Pour la classication du type d'objet dans l'environnement à partir d'une image, chaque donnée d'entrée correspond à un pixel de l'image et chaque sortie indique si oui ou non, l'image appartient à la classe considérée. Pour les problèmes de classication d'image, les réseaux de neurones convolutifs sont cependant plus performants que les réseaux MLP.

4.2. Les réseaux de neurones : fonctionnement et apprentissage

Figure 4.9  Réseau de neurones profond pour la classication d'images 4.2.3 Entraînement du réseau : la rétropropagation

La phase d'apprentissage des paramètres Θ du réseau utilise une méthode appelée rétro-propagation [71, 162]. L'objectif de l'apprentissage est de trouver les paramètres du réseau qui minimisent une fonction de coût J(Θ). Il existe plusieurs fonctions de coût utilisées dans la littérature, nous utiliserons celle de la forme :

J (Θ) = 1 m m X i=1 2 X k=1 

c(i)[k]log(bc(i)[k])+(1 − c(i)[k])log(1 −bc(i)[k]) 

, (4.8)

avec m le nombre d'exemples dans la base de données, c(i)[k] la keme ligne de la sortie réelle correspondant au ieme vecteur d'entrée d de la base de données etbc(i)[k]la kemeligne de la sortie calculée par le réseau avec le même vecteur d'entrée d et les paramètres Θ.

Pour pouvoir mettre à jour les paramètres en fonction de l'erreur de sortie, il faut calculer le gradient de la fonction de coût J(Θ). C'est cette étape qui est eectuée par la méthode de rétropropagation. Intuitivement, la rétropropagation consiste à propager l'erreur de sortie vers l'entrée, conduisant au calcul du gradient. Une fois le gradient calculé, une méthode d'optimi-sation telle que la descente de gradient est utilisée pour mettre à jour les paramètres Θ du réseau. Dans ce paragraphe, nous allons uniquement expliquer comment calculer le gradient de la fonction de coût par rétropropagation.

Les notations utilisées ici sont identiques à celles de l'exemple précédent. Ainsi la matrice Θ de paramètres est une matrice à trois dimensions composée d'éléments θ(l)

ij correspondant à la pondération de l'entrée j du neurone i de la couche l. La sortie du neurone i de la couche l est notée N(l)

i et N(l) correspond au vecteur de sortie de la couche l. Pour la couche d'entrée, à savoir l = 1, on a : N(l)

i = di. On note δ(l)

i l'erreur de propagation du noeud i de la couche l et δ(l) le vecteur d'erreur de la couche l. En prenant l'exemple de la Figure 4.10 avec deux couches cachées, ces paramètres sont calculés par les relations suivantes. Pour la couche de sortie, l'erreur pour la sortie i est :

δi(4)= Ni(4)− c[i], (4.9)

ou pour toute la couche de sortie :

δ(4) = N(4)− c. (4.10)

4.2. Les réseaux de neurones : fonctionnement et apprentissage

Ensuite, la propagation de l'erreur dans les autres couches donne récursivement : δ(3) = θ(3)Tδ(4)◦ g0(2)N(2))

δ(2) = θ(2)Tδ(3)◦ g0(1)N(1)), (4.11) avec g0(z) la dérivée de la fonction d'activation (4.6). L'opérateur ◦ indique la multiplication terme à terme des matrices.

(2) (3) (4)

Figure 4.10  Schématisation de la propagation de l'erreur

Le fait que la méthode soit récursive nécessite donc une initialisation des paramètres Θ. Ici, ces valeurs sont choisies aléatoirement, proches de 0 (inférieures à 0,1), an d'empêcher la symétrisation des paramètres.

Remarque. Dû à l'ajout de biais sur la couche d'entrée et les couches cachées, les vecteurs δ(2)

et δ(3) calculés avec l'équation (4.11) ont une valeur en trop : la première. Il faut donc l'enlever pour que les multiplications matricielles suivantes soient de la bonne dimension.

Avec m données d'entraînement, l'algorithme utilisant la rétropropagation pour le calcul du gradient de la fonction de coût ∂J (Θ)

∂θ(l)ij est le suivant : Pour k allant de 1 à m faire

Pour l allant de 2 à L faire

Calculer N(l) par propagation avant Fin Pour

Pour l allant de L à 2 faire

Calculer δ(l) par rétropropagation Fin Pour

Pour l allant de 1 à L − 1 faire

Pour chaque entrée j et sortie i faire Mise à jour Λ(l) ij = Λ(l)ij + Nj(l)δi(l+1) Fin Pour Fin Pour Fin Pour Calculer le gradient : ∂J (Θ) ∂θij(l) = 1 mΛ (l) ij

L'obtention du gradient de la fonction de coût en fonction des paramètres permet ensuite la mise à jour de ces derniers par la méthode de descente de gradient, illustrée par la Figure 4.11.

4.2. Les réseaux de neurones : fonctionnement et apprentissage

Cette méthode consiste à trouver le paramètre qui minimise une fonction en se déplaçant sur la courbe de celle-ci. Pour cela, l'algorithme se déplace de manière itérative jusqu'à atteindre un minimum. Le déplacement se fait en ajoutant au paramètre une pondération du gradient de la fonction en ce point. Lorsque le gradient du point est nul, l'algorithme s'arrête, un minimum a été trouvé. De manière générale, plusieurs itérations de rétropropagation sont nécessaires pour trouver Θ optimal.

Point de départ

Minimum à trouver

Figure 4.11  Schématisation de la méthode de descente de gradient [Source : adapté dehttps: //www.neural-networks.io/fr/single-layer/gradient-descent.php

Le phénomène de sur-apprentissage

Un problème récurrent dans l'apprentissage des réseaux de neurones est le sur-apprentissage. Ce phénomène apparaît lorsque le réseau est trop spécique à la base de données utilisée pour l'entraînement. Le réseau est alors très ecace pour les données qu'il connaît, mais fait beaucoup d'erreurs pour les nouvelles entrées. Pour éviter ce problème, un terme de régularisation γ est ajouté dans la fonction de coût :

J (Θ1, Θ2, γ) = 1 m m X i=1 2 X k=1 

c(i)[k]log(bc(i)[k])+(1 − c(i)[k])log(1 −bc(i)[k])  + γ 2m La−1 X l=1 sl[1] X j=1 sl[2] X k=1 Θl[j][k], (4.12)

avec La = 3 le nombre de couches, sl = [pl ql] le vecteur de taille des matrices Θl avec pl le nombre de lignes et ql le nombre de colonnes. Le paramètre de régularisation γ pénalise les pa-ramètres du réseau d'ordres importants pour simplier le réseau et améliorer sa généralisation. Ceci peut s'illustrer à l'aide du problème de classication des classes + et o précédent. Par exemple, avec un réseau trop grand et sans régularisation, au lieu de modéliser une fonction linéaire (courbe noire), le réseau pourrait plutôt représenter la courbe bleue de la Figure 4.12 (a). La régularisation permet aussi de limiter le phénomène d'augmentation de l'erreur avec un nombre de neurones trop important.

4.2. Les réseaux de neurones : fonctionnement et apprentissage J( , ) J( , ) : données de test J( , ) : données d'entraînement optimal (a) (b)

Figure 4.12  Illustration du phénomène de sur-apprentissage (a) et variation de la fonction de coût en fonction du paramètre de régularisation

La base de données est divisée en deux : une base d'entraînement réservée pour la rétropropa-gation et l'apprentissage des paramètres du réseau et une base de test utilisée pour la validation du réseau. La valeur de γ est déterminée de telle sorte qu'elle minimise la fonction de coût (4.8) de la base de test. Les réseaux sont entraînés avec plusieurs valeurs de γ avec la fonction de coût (4.12), puis (4.8) est calculé avec les bases d'entraînement et de test. La Figure 4.12 (b) montre l'allure des variations de la fonction de coût des réseaux entraînés pour les deux bases en fonction de γ.

4.2.4 Méthodologie de construction du réseau

Il n'y a pas de règles précises pour l'entraînement d'un réseau de neurones. C'est l'expé-rience du concepteur qui va primer dans l'analyse des entrées/sorties et des résultats obtenus. Cependant, même sans règles pour le nombre de couches cachées et de neurones, il est possible de mettre en place une démarche pour la conception et l'entraînement d'un réseau. La métho-dologie mise en place ici est illustrée Figure 4.13.

4.2. Les réseaux de neurones : fonctionnement et apprentissage

Figure 4.13  Méthodologie pour l'élaboration et l'analyse des résultats d'un réseau de neurones Cette méthodologie est découpée en trois phases : une phase d'initialisation, une phase d'entraînement et une phase d'analyse du réseau.

L'initialisation passe par la dénition des entrées, des sorties et d'une première architecture du réseau, déterminée par le nombre de couches cachées et de neurones par couche.

Pour la phase d'entraînement, les paramètres du réseau sont dans un premier temps initia-lisés. Puis, pour chaque donnée de la base d'entraînement, les paramètres sont modiés avec la méthode de rétropropagation. La boucle d'entraînement est répétée un nombre xe de fois ou s'arrête lorsque le coût ne diminue plus.

Enn, une phase d'analyse du réseau, avec une base de données de test, vérie si le réseau a été entraîné correctement. La base de données de test est totalement décorrélée de la base d'en-traînement. L'objectif est de vérier si le réseau est représentatif des nouvelles entrées. Un phé-nomène souvent rencontré lors d'apprentissage de réseaux de neurones est le sur-apprentissage, ou  overtting . Cela signie que le réseau est devenu trop spécique à la base d'entraînement, il n'arrive pas à représenter correctement de nouvelles entrées. Ainsi, la précision du réseau sera très élevée pour les données d'entraînement et plus faible pour celles de test. En cas de sur-apprentissage, une première solution est d'ajouter un paramètre de régularisation dans la fonction de coût, une seconde consiste à augmenter la base de données.

Quand les données d'entraînement ont une précision faible en sortie, cela veut dire que la forme du réseau n'est pas adaptée au problème à modéliser. Les interactions entre les paramètres d'entrée sont potentiellement trop simples pour représenter correctement les comportements entrées/sorties. Il faut donc changer l'architecture du réseau pour voir si cela permet d'améliorer la précision. Une autre solution au problème de faible précision de la base d'entraînement est l'ajout d'autres types de données en entrée. En eet, il manque peut-être des informations au réseau pour pouvoir correctement estimer les sorties.