• Aucun résultat trouvé

CHAPITRE III Apprentissage machine et réseaux de neurones artificiels

3.6 Apprentissage dans les RNA (cas du perceptron multicouche)

Le perceptron multicouche (MLP : Multi Layer Perceptron) est un réseau de neurones composé de plusieurs couches de Perceptron : typiquement 3 couches. La couche d’entrée, une couche intermédiaire dite cachée et une couche de sortie.

▪ La couche d’entrée : elle est connectée aux données brutes ou prétraitées : 𝑥̂. Chaque caractéristique est généralement connectée à un neurone de la couche d'entrée.

▪ La couche cachée : pour composer les relations entre les variables reçues de la couche d’entrée.

▪ La couche de sortie : retourne la prédiction de la cible 𝑡̂ associée à 𝑥̂ effectuée par le réseau.

Formellement, chaque couche du MLP est donc constituée de neurones (Perceptron) que nous allons indicer 𝑎𝑗, avec j ∈ 1,2, … , n, qui prennent en entrée les valeurs de sortie de la couche précédente comme présenté à la figure 10. Il n’y pas de connexions d’un neurone vers lui-même ou entre les neurones d’une même couche.

Figure 9 : Le perceptron multicouche

Phase d'apprentissage (ajustement des poids)

L'apprentissage correspond à l'ajustement des poids 𝑤𝑖,𝑗 du réseau à partir des données fournies durant la phase d'entraînement pour ajuster les réponses obtenues aux réponses désirées. Ainsi, en utilisant le MLP pour une tâche de classification, nous aurons : une entrée 𝑥̂ , la matrice des poids actuels 𝑤𝑖,𝑗 et la prédiction ℎ𝑤(𝑥̂) pour la cible 𝑡̂ effectuée grâce aux valeurs 𝑤𝑖,𝑗. Différents algorithmes sont utilisés pour trouver les valeurs des poids 𝑤𝑖,𝑗 qui minimisent la fonction de perte durant le processus d'apprentissage. Le mécanisme est composé de deux phases :

1. Une propagation-avant (feed-forward propagation) : la fonction d'activation de chaque neurone est calculée à l'aide d'une fonction logistique appliquée à la combinaison linéaire pondérée des sorties des neurones de la couche précédente. Le calcul se fait couche par couche, de l’entrée à la sortie d’où le nom propagation-avant. Pour une entrée 𝑥̂, à la fin de la propagation-avant, nous obtenons la prédiction 𝑡̂ . Cette prédiction peut être égale à la sortie désirée ou non. Une fonction de perte est calculée. La fonction de perte vaut 0 dans le cas d'une prédiction parfaite (aucun ajustement des poids n'est alors requis), sinon un ajustement des poids est nécessaire.

2. Une rétropropagation : le gradient de la perte est calculé par rapport à l'activation cible du neurone de sortie, puis cette valeur est rétropropagée à travers le réseau suivant le graphe de flot pour ajuster le poids des connexions.

𝐿𝑜𝑠𝑠(𝑡̂, ℎ𝑤(𝑥̂)) = −(𝑡̂, ℎ𝑤(𝑥̂))𝑤 ⋅ 𝑥̂ = −(𝑡̂, ℎ𝑤(𝑥̂)) ∑ 𝑛

𝑖=1

(𝑤𝑖⋅ 𝑥̂ ) 𝑖 Équation : Exemple de fonction de perte

𝑤 ⋅ 𝑥̂ : correspond au produit scalaire entre le vecteur des poids 𝑤 et le vecteur des données de l'entrée 𝑥̂.

Les paramètres de la fonction de perte ne sont pas connus. Cependant la valeur en un point donné peut être calculée. Pour minimiser cette fonction de perte, des techniques basées sur une approche générique par la descente de gradient sont utilisées. Par la suite, une rétropropagation des gradients est faite en suivant le graphe de flot.

Méthode de descente du gradient

Le gradient d'une fonction permet de savoir s'il faut augmenter ou diminuer la valeur de chaque variable si l'on souhaite maximiser ou minimiser cette fonction. Le calcul du gradient est présenté ci-dessous :

𝛻𝑓(𝑥, 𝑦) = [𝜕𝑓(𝑥, 𝑦) 𝜕𝑥 ,

𝜕𝑓(𝑥, 𝑦) 𝜕𝑦 ]

Équation : Gradient d'une fonction à deux variables x et y

Étant donné un modèle ℎ(𝑥, 𝜃), avec un vecteur de paramètres 𝜃 de longueur 𝑚, la méthode de la descente du gradient peut être utilisée pour chercher à identifier le maximum de vraisemblance, noté 𝜃∗. Elle fonctionne de façon itérative pour trouver un minimum de la fonction de perte sans avoir à calculer explicitement la valeur de 𝜃∗.

Le vecteur des paramètres 𝜃 sera mis à jour de manière itérative comme présenté ci- dessous.

𝜃𝑖𝑡+1 = 𝜃𝑖𝑡 − 𝜆

𝜕𝐿(𝜃𝑖𝑡) 𝜕𝜃𝑖

Cette procédure de mise à jour sera répétée un certain nombre d'itérations en recalculant le gradient de la fonction de perte pour le nouveau vecteur de paramètres, ou encore jusqu'à ce que toutes les composantes de 𝛻𝐿(𝜃′) soient inférieures à un certain seuil très petit 𝜖 > 0. Il s’agit donc d’une méthode d’optimisation supervisée, itérative et de premier ordre (c’est-à-dire n’utilisant pas de dérivée du second degré).

À terme, la descente du gradient vise à atteindre un minimum local pour la fonction de perte 𝐿(𝜃). Lorsque la fonction de perte 𝐿 du problème considéré est convexe, le minimum local identifié est nécessairement global, 𝜃∗ sera donc bien identifié au bout d'un certain nombre d'itérations. Comme illustré à la figure 11, un élément déterminant pour atteindre le minimum après un nombre raisonnable d'itérations est l’hyperparamètre 𝜆 appelé taux d’apprentissage (Learning rate). Avec une grande valeur de 𝜆 , les pas des itérations de mis-à-jour risquent de passer un éventuel minimum intéressant et augmenter l’erreur au lieu de la diminuer. Avec une valeur trop petite, la convergence des poids va prendre très longtemps. On cherchera donc à trouver le ‘meilleur’ 𝜆 tout au long de l’entraînement. Il existe des heuristiques qui sont utilisées comme :

▪ L’heuristique de recuit (annealing), qui correspond à une décroissance de 𝜆 proportionnelle à l’inverse du nombre d’itérations 𝜆𝑡, à partir d’une itération λ0 donnée :

λ𝑡= min (λ0,   τ0 1 + τ𝑡

)

▪ L’heuristique ADAGRAD, qui calcule un taux d’apprentissage scalaire 𝜆𝑡,𝑖 à l’itération 𝑡 pour le paramètre 𝜃𝑖en divisant un taux d’apprentissage de départ par la somme, depuis 𝑡0, de la norme 2 du gradient de la perte 𝐿(𝑓𝜃𝑖, 𝑧𝑗)par 𝜃𝑖: 𝜆𝑡,𝑖 = 𝜆0 √𝛼𝑡, { 𝛼𝑡 =𝛼𝑡−1+∑𝑗=𝑡0𝑡 (𝜕𝐿(𝑓𝜃𝑖,𝑧𝑗) 2 𝜕𝜃𝑖 ) 𝛼−1 = 1,

▪ Les heuristiques de sélection de variables ont souvent une influence critique sur la forme et la taille de l’arbre de recherche. Certaines heuristiques observent le principe first-fail énoncé par Haralick et Elliott : « To succeed, try first where you are most likely to fail » (Pour réussir, essaie d’abord là où il est le plus

probable d’échouer). Les heuristiques dynamiques exploitent souvent les informations sur les domaines et degrés des variables. On retrouve entre autres les heuristiques suivantes : lex, random, Min-domain, dynamic-degree, weighted-degree, etc.

Lors de la phase d'entraînement, le terme « itération » désigne l’application de l’algorithme sur une unité d’entraînement (un 𝑥𝑖 de 𝒟𝑡𝑟𝑎𝑖𝑛), et « époque » son application sur tout 𝒟𝑣𝑎𝑙𝑖𝑑 . L’entraînement dure donc un nombre d’époques : nepochs. Quelle que soit l’heuristique utilisée, il faudrait également adopter une stratégie de mise à jour de la valeur des paramètres.

▪ Si la mise à jour est faite pour chaque 𝑥𝑖 de 𝒟𝑡𝑟𝑎𝑖𝑛 , on parlera de descente de gradient stochastique. Théoriquement, les données d’entraînement seront considérées indépendantes et uniformément distribuées. Pour un 𝒟𝑡𝑟𝑎𝑖𝑛 très grand, ce processus pourrait s’avérer très coûteux.

▪ Si la mise à jour est faite selon la moyenne des gradients de f sur tout 𝒟𝑡𝑟𝑎𝑖𝑛 , on parlera de descente de gradient par lot (batch gradient descent).

▪ Un compromis entre ces deux méthodes serait des mises à jour des poids qui seront calculées à partir de « mini-lots » (mini-batches). Ce compromis offre plusieurs avantages. Par rapport à la descente stochastique, il y a d’une part l’avantage computationnel et d’autre part la moyenne des gradients atténue le bruit que pourrait engendrer un exemple unique. Par rapport à la descente avec un unique lot, la fréquence plus élevée de mises à jour atténue les biais. Finalement, les mini-lots permettent de profiter de caractéristiques matérielles permettant une exécution des calculs en parallèle.

Mis à part le choix judicieux de l’hyperparamètre 𝜆 du taux d’apprentissage et d’une bonne stratégie pour les mises à jour des paramètres, des facteurs intrinsèques aux données peuvent influencer la vitesse de convergence.