Comprendre la Regularization (L1, L2) en Deep Learning rapidement !

Un modèle de Deep Learning doit à la fois optimiser son entraînement et généraliser sa prédiction à l’ensemble des données. Un outil est là pour ça : la Regularization.

La Regularization est un ensemble de méthode qui permet à la fois d’optimiser l’apprentissage d’un modèle de Deep Learning et de contrer l’overfitting (manque de généralisation).

Il existe plusieurs outils pour faire de la Régularisation :

C’est donc de ce dernier dont on va parlé dans cet article !

Qu’est-ce que la Regularization ?

Diminution des poids

La Regularization Weight Decay, en français Diminution des Poids permet d’améliorer la généralisation lors de l’apprentissage du modèle.

De la sorte, le modèle va être performant à la fois sur les données d’entraînements mais aussi sur toutes les autres données.

Comme expliqué dans cet article, lors de l’apprentissage, certaines poids du modèle augmentent tandis que d’autres diminuent.

Le but du Weight Decay est de diminuer la valeur des poids trop important.

C’est une sorte de handicap que l’on donne au poids qui augmentent trop vite. Grâce à cet handicap, le modèle doit performer ailleurs que sur les neurones associés à ces poids. Ainsi, d’autres poids vont pouvoir progresser pour transmettre de l’information.

Voyez le comme ça : si un joueur de tennis est ultra-performant pour envoyer la balle avec son coup droit mais qu’il n’est pas bon sur son revers. Eh bien l’idée de la Regularization serait de lui interdire d’utiliser son coup droit pendant l’entraînement de tel sorte qu’il soit obligé d’améliorer son revers pour atteindre son objectif : battre son adversaire.

Cette technique lui permet au tennisman de généraliser son apprentissage, de tel sorte qu’il pourra jouer les balles venant de sa gauche aussi bien que celle venant sur sa droite.

De la même manière, cette technique permet au modèle de mieux généraliser son apprentissage et donc améliore ses performances sur les données non observées.

L1 & L2 Regularization

En pratique, la Regularization s’effectue après avoir calculé la loss function. On applique la fonction de régularisation qui :

  • pour la L1-Regularization la somme des poids en valeur absolue multiplié par une constante α
  • pour la L2-Regularization la somme des poids au carré multiplié par une constante α

Écrit sous forme mathématique :

Laquelle utiliser et quand ?

Les avis différent selon la source : livre, kaggle, blog internet.

L’avantage des deux techniquement :

  • L1-Regularization permet d’effectuer une feature selection plus précise (trouver des sous-ensembles de données pertinents)
  • L2-Regularization permet d’effectuer un apprentissage plus rapide

Mais pour être honnête, sur le plan pratique, les deux sont tout aussi puissant et fiable ! 🙂


CRÉER TON APPLICATION IA !

Reçois tes 5 JOURS De Formation GRATUITE Pour Apprendre À Créer Ton APPLICATION d’INTELLIGENCE ARTIFICIELLE !

Tous les fondamentaux de la création d’Application IA : les approches, les outils et techniques, les librairies et framework, et bien d'autres ! Découvres étape par étape la création d’application de Deep Learning (tu apprendras même à trouver des idées d’appli !). En bonus, tu recevras notre Guide Ultime du Deep Learning !


Chez Inside Machine Learning, nous préférons avoir une approche pragmatique qui est plus adapté au Deep Learning. Testez sur votre dataset les deux Regularizations, celle qui vous minimise le plus l’overfitting et le temps de calcul sera la meilleure !

Photo by Jørgen Håland on Unsplash

Comment utiliser la Regularization ?

Sur Keras & TensorFlow

Ici, on utilise la L2 Regularization, le processus est le même pour la L1.

L’approche par défaut est de simplement indiquer la régularisation à utiliser :

tf.keras.layers.Dense(32, kernel_regularizer='l2')

Une autre approche consiste à indiquer la valeur des biais à utiliser :

tf.keras.layers.Dense(32, kernel_regularizer=l2(0.01), bias_regularizer=l2(0.01))

Il y a 3 argument que l’on peut modifier (ou laisser par défaut) :

  • kernel_regularizer : applique une pénalité sur le noyau de la couche.
  • bias_regularizer : applique une pénalité sur le biais de la couche
  • activity_regularizer : Rapplique une pénalité sur la sortie de la couche.

On peut même utiliser la régularisation L1 et L2 en même temps avec simplement :

tf.keras.layers.Dense(32, kernel_regularizer=l1_l2(l1=0.01, l2=0.01))

Sur PyTorch

Avec PyTorch l’approche est similaire à l’équation vue plus haut.

On choisit la valeur de α puis on fait la somme des poids au carré :

l2_alpha = 0.001
l2_norm = sum(p.pow(2.0).sum() for p in model.parameters())

Ensuite on ajoute ce biais après avoir calculer la loss function :

loss = loss + l2_alpha * l2_norm 

Voilà ! Vous avez vu comment appliquer une régularisation sur votre modèle.

À noter la Regularization s’applique uniquement de l’entraînement du modèle. Il n’est plus en marche lors de l’évaluation et l’utilisation du modèle.

C’est une méthode à ne pas confondre avec le Dropout qui lui aussi très utilisé mais qui ne s’applique pas de la même manière.

On en parle dans un article juste ici !

Photo by Erik-Jan Leusink on Unsplash

sources :


CRÉER TON APPLICATION IA !

Reçois tes 5 JOURS De Formation GRATUITE Pour Apprendre À Créer Ton APPLICATION d’INTELLIGENCE ARTIFICIELLE !

Tous les fondamentaux de la création d’Application IA : les approches, les outils et techniques, les librairies et framework, et bien d'autres ! Découvres étape par étape la création d’application de Deep Learning (tu apprendras même à trouver des idées d’appli !). En bonus, tu recevras notre Guide Ultime du Deep Learning !


Tom Keldenich
Tom Keldenich

Data Engineer & passionné d'Intelligence Artificielle !

Fondateur du site Inside Machine Learning

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.