• Aucun résultat trouvé

Partie II : Expérimentations 57

6.2 Construction d’un modèle neuronal bout-en-bout

6.2.3 Régularisation

6.2.3.1 Sur-apprentissage du réseau

Lorsque le nombre des paramètres du réseau est trop important, la minimisation de l’erreur de prédiction conduit à un réseau qui s’ajuste très bien aux données qu’on lui présente. Il s’est peu à peu spécialisé mais le problème est qu’il n’est plus capable de généraliser. Si on lui présente des nouvelles données, il n’est pas capable de modéliser l’information qu’ils véhiculent même si la tâche de prédiction est la même que ces premières données. On parle alors de « sur-ajustement »ou de « sur-apprentissage ». Il y a sur-apprentissage lorsque le réseau apprend à recon-naître parfaitement les données de l’ensemble d’apprentissage dans les moindres détails (y compris les défauts, en particulier le bruit), mais n’est pas capable de gé-néraliser de manière pertinente pour des données qui sont éloignées de l’ensemble d’apprentissage. Le réseau s’est en quelque sorte trop spécialisé, et ne sait pas généraliser.

Il est assez facile de reconnaître le phénomène de sur-apprentissage dans un réseau. Sur les courbes d’entraînement, le réseau présente un score très haut avec l’ensemble d’entraînement, alors que le score de l’ensemble de validation reste bas en comparaison.

Le sur-apprentissage reste un bon indicateur de capacité du réseau lorsque l’ex-périmentateur cherche une architecture adaptée à sa tâche de classification. Certes il n’est pas désirable d’avoir un réseau qui sur-apprenne. En revanche, passer par la phase de sur-apprentissage est un bon indicateur pour savoir si on est sur la bonne voie pour trouver une architecture adéquate qui permettra à terme de généraliser.

L’une des stratégies pour dépasser la phase de sur-apprentissage dans les expé-rimentations est de limiter l’influence de la quantité de paramètres pour obtenir un réseau plus pertinent. C’est la technique de régularisation du réseau.

6.2.3.2 Régularisation L2 pour la fonction d’erreur

Au niveau du module convolutif de notre réseau CNN+BLSTM bout-en-bout, nous choisissons de ne pas mettre de couches de regroupement (pooling) entre les couches convolutives. En effet, même si ce type de couche réduit la quantité de paramètres et donc de calcul dans le réseau, cela réduit assez brutalement la taille des représentations, notamment temporelles, et donc on a une perte d’information associée. Ce que nous ne voulons pas. Cependant, nous avons bien conscience que le risque de sur-apprentissage est accru et c’est pourquoi le réseau est régularisé.

La régularisation contraint le modèle afin de limiter l’influence de la quantité de paramètres. Deux méthodes de régularisation sont largement utilisées :

— la régularisation L1 (Lasso Regression pour Least Absolute Shrinkage and

Selection Operator),

— la régularisation L2 (Ridge Regression).

La différence principale entre ces deux régulations est le terme de pénalité. La régulation L2 ajoute à la fonction d’erreur C(x) l’amplitude au carré des poids synaptiques β comme terme de pénalité :

nouvelle C(x) = C(x) + λPp j=1β2 j avec λPp j=1β2 j : l’élément de régularisation L2.

La régularisation L1, quant à elle, ajoute à la fonction d’erreur C(x) la valeur absolue de l’amplitude des poids synaptiques β comme terme de pénalité.

nouvelle C(x) = C(x) + λPp

j=1 | βj | avec CPp

j=1 | βj | : l’élément de régulari-sation L1.

Dans les deux cas de régularisation, si λ = 0, alors on a la fonction de coût de base. Si λ est très grand, les poids synaptiques β sont trop augmentés et cela peut conduire à un sous-apprentissage. Choisir le mieux possible λ est donc très important.

Dans les deux cas de régularisation L1 et L2, le but est de pénaliser les grands poids synaptiques [Nielsen 15]. Mais la façon dont les poids diminuent est diffé-rente. Dans la régularisation L1, les poids diminuent d’une valeur constante vers 0. Dans la régularisation L2, ils diminuent de manière proportionnelle au poids. Et donc, lorsqu’un poids particulier a une grande amplitude, la régularisation L1 ré-duit considérablement le poids, contrairement à la régularisation L2. En revanche, quand le poids est petit, la régularisation L1 réduit le poids beaucoup plus que la régularisation L2. Le résultat final est que la régularisation L1 tend à concentrer les poids du réseau sur un très petit nombre de connexions de haute importance, tandis que les autres poids sont ramenés à zéro. Nous choisissons donc plutôt la

6.2 Construction d’un modèle neuronal bout-en-bout régularisation L2 plutôt que la régularisation L1 car en reconnaissance de motifs sur des images, cette sparsité n’a pas vraiment de sens (le fait de mettre pas mal de poids à zéro). Donc nous préfèrons la régularisation L2 qui apporte juste un effet de réduction. Autrement dit la régularisation L2 est invariante.

De plus, nous choisissons d’appliquer une régularisation différenciée en fonction du module de l’architecture neuronal profond bout-en-bout. Le réseau est en effet deux fois plus régularisé au niveau du module convolutif (λ = 0, 02) qu’au niveau du module récurrent (λ = 0, 01). Ainsi, les couches CNN sont deux fois plus contraintes que les couches LSTM.

6.2.3.3 Initialisation

Pour rappel, la convolution est au coeur du réseau de neurones à convolution. À l’origine, une convolution est un outil mathématique (produit de convolution) très utilisé en retouche d’image car il permet d’en faire ressortir des caractéristiques sous réserve d’appliquer le bon filtre. En fait, une convolution prend simplement en entrée une image et un filtre (qui est une autre image), effectue un calcul, puis renvoie une nouvelle image (généralement plus petite). Les filtres d’un réseau de neurones à convolution sont définis par :

— un noyau (kernel), — un pas (stride),

— et un remplissage (padding).

Mais leurs valeurs sont générées aléatoirement à l’initialisation. Ensuite, lorsque le réseau apprend, les valeurs des filtres sont mises à jour pour améliorer les résultats du CNN : les valeurs des filtres font donc parties des variables (poids, biais. . . ) que le réseau change en apprenant [Rosique 19].

Le choix des poids initiaux des couches cachées du réseau est un point fondamen-tal de la phase d’apprentissage. Pourquoi ? L’initialisation avec les poids appropriés peut faire la différence entre un réseau convergent dans un délai raisonnable et un réseau non convergent malgré un nombre d’itérations qui implique plusieurs jours voire semaines d’entraînement. Pour choisir les valeurs de poids, il faut savoir que : — si les poids sont trop faibles, la variance du signal d’entrée risque de chuter à une valeur très basse en raison de son passage dans chaque couche du réseau profond. On peut illustrer cette observation avec la fonction sigmoïde comme fonction d’activation. Aux environs de zéro, cette fonction est linéaire ce qui signifie pas de non-linéarité ! Donc l’intérêt d’avoir un réseau profond, donc à plusieurs couches, disparaît.

— si les poids sont trop importants, la variance du signal d’entrée augmente rapidement quand il s’approche des couches les plus profonds du réseau. Or, pour de grandes valeurs, la fonction sigmoïde est à l’horizontale donc les activations tendent vers une saturation. Cela a pour conséquence de figer les

poids vers zéro.

En 2010, Glorot et Bengio publient une méthode de convergence du gradient plus rapide que celles utilisées à cette période [Glorot 10]. À cette période, l’initialisa-tion peut prendre plusieurs formes. Par exemple il peut s’agir de :

— donner des valeurs aléatoires aux poids,

— ou d’obtenir des valeurs de poids à l’aide d’un pré-entraînement d’apprentis-sage non-supervisé.

Glorot et Bengio proposent une initialisation appelée initialisation de Xavier (ou de Glorot, respectivement prénom et nom du chercheur) qui proposent d’attribuer aux poids du réseau les valeurs d’une distribution caractérisée par :

— une moyenne nulle,

— et une variance à valeur fixée.

Deux distributions peuvent être utilisées, la distribution uniforme et la distribution Gaussienne. Dans notre cas, nous choisissons de garder la méthode par défaut de la bibliothèque logicielle qui est la distribution uniforme donc l’intervalle d’existence est : r

6

(nombre d0unit´es d0entr´ee du tenseur + nombre d0unit´es de sortie du tenseur)



.

6.2.3.4 Patience et arrêt prématuré de la phase d’apprentissage

Au cours de nos expérimentations, nous avons testé plusieurs valeurs de patience et nous avons observé qu’une patience de 100 itérations laissait le temps à la phase d’apprentissage de se dérouler (cf Figure 6.2.2).

Figure 6.2.2 – Évolution des scores WA et UA pour l’ensemble d’entraînement et l’ensemble de validation (évaluation) au cours de la phase d’ap-prentissage pour un réseau de neurones à 4 CNN et 1 BLSTM sur la base de données IEMOCAP [Busso 08].