Skip to content

Le perceptron multi-couche (MultiLayerPerceptron)

Programme

Dans ce chapitre nous allons voir :

  • un résumé des bases mathématiques pour le deep learning
  • étudier la brique de base des réseaux de neurone profond: le perceptron multi-couches
  • apprendre a entraîner et optimiser un perceptron avec Tensorflow

Leçon: condensé des bases de mathématiques pour le deep learning

Nous allons voir (en résumé) deux notions essentielles à la compréhension de cette leçon:

Si vous n'avez pas suivi le cours de Machine Learning avancé

Pour approfondir avec plus de détails les mathématiques pour le deep learning, je vous invite à consulter, en fonction de vos besoins, la page de cours dédiée aux mathématiques pour le machine learning

Leçon: Fondamentaux du deep learning

Points essentiels pour savoir évaluer la qualité de l'apprentissage d'un réseau de neurone

Diagnostiquer le comportement de son modèle

Revoyez, avec ce court article, les différents types de courbes d'apprentissage.votre principal indicateur pour diagnostiquer le comportement de votre modèle. Grâce à cet inidcateur vous allez apprendre à reconnaître plusieurs situations caractéristiques :
- Le sous apprentissage
- Le sur apprentissage
- Le bon compromis
- Un échantillon du data set d'entainement peu représentatif de la population - Un échantillon du data set de test peu représentatif de la population

Contrôler la stabilité de son entraînement en choisissant un batch size adapté
  • Découvrez, en lisant ce court article les avantages et inconvénients, des différentes variantes de la descente de gradient : Batch Gradient Descent, Stochastic Gradient Descent, Mini-Batch Gradient Descent

  • En lisant ce court article vous allez voir :

  • pourquoi un batch size = 32 est une bonne valeur par défaut
  • des simulations de courbe d'apprentissage d'un MLP avec ces différentes variantes de la descente de gradient
Choisir son optimiseur : la descente de gradient et ses variantes

Descente de gradient classique

De manière itérative, on met a jour les poids \(\theta\) pour chaque batch:

\(\theta = -LearningRate*gradient\)

Moments

--> idée des moments empruntée à la physique (ex pour des particules massives, le moment d'ordre 1 correspond à leur barycentre, celui d'ordre 2 à l'inertie)

On ajoute au calcul de le 1er moment d'ordre supérieur (inertie) : \(\theta = -LearningRate*gradient + PreviousDelta * DecayRate\)

Intutition:

Intutivement, ce terme supplémentaire peut être vu comme l'inertie d'une particule massive (garde en mémoire le la quantité de mouvement de l'itération précédante) qui oscille dans un trou avec une coefficient de friction (le decay rate) affectant son mouvement

Avantages

  • L'accumulation des moments rend le mouvement du gradient plus rapide
  • Le gradient peut potentiellement échapper à un minimum local

Pour plus de détails, voir cet article

AdaGrad

Cette variante garde en mémoire la somme des carré des gradients (plutot que la somme simple) de l'itération précédente et adapte le gradient avec cette valeur

\(\theta = \frac{-LearningRate*gradient}{\sqrt{SumOfGradientSquared}}\)

avec \(SumOfGradientSquared = PreviousSumOfGradientSquared + gradient^2\)

Intuition

Plus une feature a été mise à jour récemment, le moins elle aura de chances d'être mise à jour dans le futur, pour donner une chance aux autres features de se mettre à jour plus vite (en particulier les sparses features qui ont tendance a produire un gradient plus petit)

Inconvénient

  • le calcul d'AdaGrad est très lent (la somme des carrés des gradients augmente le temps de calcul)

RMSprop (Root Means Square propagation)

il s'agit d'une amélioration d'Adagrad dans laquelle on rajoute un decay factor à la somme des carré des gradients :

\(SumOfGradientSquared = PreviousSumOfGradientSquared*DecayRate + gradient^2(1-DecayRate)\)

Adam (Adaptative Moment Estimation)

Cette version combine tous les avantages des méthodes vues plus haut : un learning rate adaptatif, la mise a jour des poids par les moments (inertie) et la mémoire des gradients précédents (avec un decay rate)

En pratique

Il est efficace et le plus souvent utilisé avec les paramètres suivants

DecayRate_moment1 = 0.9

DecayRate_moment2 = 0.999

Adamax

Il s'agit d'une variante de l'algorithme adam (basé sur la norme infinie) qui possède la capacité de bien ajuster son learning rate en fonction des caractéristiques de données, ce qui le rend adapté aux tâches contenant des processus variant dans le temps (par exemple, des données sur la parole avec un bruit qui changeant) avec des changement)

Sources

Comprendre les effets de la régularisation L1 et L2

Intuition : Un modèle plus flexible aura tendance avoir des valeurs de paramètres élevés. L'idée de la régularisation est d'introduire un terme additif dans la loss function, au moment de l'apprentissage, pour contraindre l'optimiseur à sélectionner des valeurs des paramètres plus faible. Il en résulte alors un modèle moins flexible avec des valeurs de coefficients moins élevées. En deep learning, le dropout et la batch normalisation sont aussi des méthodes de régularisation spécifiques au réseaux de neurones et à l'apprentissage par batch.

  • La régularisation L1 affecte plutôt les petits coefficients (généralement ceux qui on un effet sur le fait d'ajuster les 'détails') --> aide à éliminer les features les moins importantes (feature sélection plus fine)

  • La régularisation L2 affecte plus les coefficients importants. Attention : elle n'est pas robuste aux outliers !

  • Le dropout "éteint" aléatoirement à chaque epoch une proportion de neurone des couches cachées, forçant l'entrainement d'un réseau moins complexe

  • La batch normalisation: en normalisant les données dans chaque batch, elle agit comme une forme de régularisation

--> Pour plus de détails concernant les régularisation L1 et L2, voir ce tableau de comparaison

Démos : entraînement d'un MLP avec Tensorflow

  • Découvrons de manière interactive l'influence des paramètres et hyper paramètres avec Playground
  • Découvrons comment implémenter notre premier perceptron multi-couche dans un exemple simple sur une tâche de régression. Nous allons suivre ce tutoriel de Keras, un module du framework Tensorflow pour apprendre à prendre en main la chaîne de traitement

Exercice

Vous pouvez prendre connaissance de l'exercice noté Entraînement d'un Perceptron multi-couche qui sera à rendre à la fin du chapitre consacré au Workflow