Régularisation à des fins de parcimonie : régularisation L₁

Les vecteurs creux contiennent souvent de nombreuses dimensions qui sont encore plus nombreuses en cas de croisement de caractéristiques. En conséquence, le modèle peut devenir immense et nécessiter une grande quantité de RAM.

Dans un vecteur creux de grande dimension, il est judicieux de favoriser des pondérations exactement égales à 0 lorsque c'est possible. Une pondération exactement égale à zéro supprime la caractéristique correspondante du modèle. La mise à zéro des caractéristiques permet d'économiser de la RAM et de réduire le bruit dans le modèle.

Supposons que nous ayons un ensemble de données sur le logement non seulement en Californie, mais sur la Terre entière. Le binning des latitudes mondiales par minute (1 degré = 60 minutes) produit environ 10 000 dimensions avec un encodage creux. Le binning des longitudes mondiales par minute donne environ 20 000 dimensions. Le croisement de ces deux caractéristiques produit environ 200 000 000 dimensions. Or un grand nombre de ces dimensions correspond à des zones où l'habitation est si limitée (en plein milieu de l'océan, par exemple) que les données ne permettraient pas une généralisation efficace. Il serait dommage de gaspiller de la RAM pour stocker ces dimensions sans intérêt. Par conséquent, il serait souhaitable de ramener les pondérations des dimensions inutiles à exactement zéro. Nous éviterions ainsi les frais associés au stockage de ces coefficients du modèle lors de l'inférence.

Nous pourrions intégrer un encodage à cet effet dans l'optimisation effectuée lors de l'apprentissage, en ajoutant un facteur de régularisation approprié.

La régularisation L2 remplirait-elle cet objectif ? Malheureusement, non. La régularisation L2 réduit les pondérations, mais elle ne les oblige pas à être exactement égales à 0,0.

Une autre solution consisterait à créer un facteur de régularisation qui pénaliserait le nombre de valeurs de coefficient différentes de zéro dans le modèle. L'augmentation de ce nombre ne serait justifiée que dans la mesure où elle permettrait au modèle de mieux apprendre les données. Cette approche basée sur le nombre est séduisante au premier abord, mais elle transformerait notre problème d'optimisation convexe en problème d'optimisation non convexe NP-dur. (On peut effectuer un rapprochement avec le fameux problème du sac à dos.) En pratique, cette méthode nommée régularisation L0 n'est donc pas efficace.

Toutefois, il existe un facteur de régularisation, nommé L1, qui se rapproche de la régularisation L0, mais en ayant l'avantage d'être convexe et donc de permettre des calculs efficaces. Nous pouvons utiliser la régularisation L1 pour ramener un grand nombre de coefficients non informatifs du modèle à exactement zéro, et ainsi économiser de la RAM lors de l'inférence.

Différence entre régularisation L1 et L2

Les régularisations L2 et L1 ne pénalisent pas les pondérations de la même manière :

  • La pénalisation L2 porte sur pondération2.
  • La pénalisation L1 porte sur |pondération|.

Par conséquent, L2 et L1 ont des dérivées différentes :

  • La dérivée de L2 est 2 * pondération.
  • La dérivée de L1 est k (une constante, dont la valeur est indépendante de la pondération).

La dérivée de L2 est comparable à une force qui retire x % de la pondération à chaque fois. Comme le savait Zénon, même si vous retirez x % d'un nombre plusieurs milliards de fois, le nombre ainsi réduit ne sera jamais égal à zéro. (Zénon n'était pas conscient de la précision limitée des calculs en virgule flottante, qui peuvent produire un résultat exactement égal à zéro.) Quoi qu'il en soit, la régularisation L2 ne ramène généralement pas les pondérations à zéro.

La dérivée de L1 est comparable à une force qui soustrait une constante de la pondération à chaque fois. Toutefois, grâce aux valeurs absolues, L1 présente une discontinuité à zéro, si bien que les résultats de la soustraction qui sont inférieurs à zéro sont mis à zéro. Par exemple, si la soustraction fait passer une pondération de +0,1 à -0,2, L1 définit cette pondération sur exactement zéro. L1 met donc la pondération à zéro, ce qui correspond exactement au but recherché.

En pénalisant la valeur absolue de toutes les pondérations, la régularisation L1 s'avère particulièrement efficace pour les modèles larges.

Sachez que cette description est applicable à un modèle à une seule dimension.

Cliquez sur le bouton de lecture (play_arrow) ci-dessous pour comparer les effets qu'ont les régularisations L1 et L2 sur un réseau de pondérations.

Envoyer des commentaires concernant…

Cours d'initiation au machine learning