Skip to the content.

Sur Apprentissage et Sous Apprentissage

(niveau 1)

Pour vous expliquer cela, commencons par voir les choses d’un peu loin : Un algo d’apprentissage automatique va produire une fonction de prédiction. Cette fonction doit normalement capturer toutes les propriétés de chaque caractéristique et les corrélations entre caractéristiques.

Ce que l’algorithme extrait est spécifique au Training Set. Une condition nécessaire pour que notre algorithme fonctionne bien dans le cas général est que cette base d’apprentissage soit représentative du problème général.

Mais cette condition n’est pas suffisante.

Commencons par le sous apprentissage, c’est plus simple.

Sous Apprentissage

Imaginons les données suivantes :

donnees regression quadratique

Comme d’habitude, vous trouverez le code ayant permis de générer cette courbe ainsi que toutes celles de cette page dans un fichier exécutable en ligne en cliquant ici.

Si l’on tente une régression linéaire sur ces données, évidemment, ca ne marche pas très bien…

regression underfitting

La régression linéaire cherche la meilleure droite correspondant aux données. Dans ce cas, même la meilleure des droites ne peut avoir que des performances très mauvaises.

On dit que notre modèle souffre de sous apprentissage. Il est incapable de s’adapter correctement aux données de la base (l’équivalent dans un problème de classification, serait un modèle avec une accuracy faible en apprentissage).

Dit autrement, notre modèle n’est pas suffisamment complexe pour s’adapter aux données. C’est le sens du sous apprentissage.

Il faudrait disposer d’un modèle plus complexe.

Si l’on est confronté à un problème de sous apprentissage dans le cas des réseaux de neurones, il faudrait par exemple (et au choix) :

Voyons donc son frère…

Sur Apprentissage

Reprenons de nouveaux exemples, ce sera plus parlant… Imaginons les données suivantes :

donnees regression linéaire

Echaudé par l’histoire de l’underfitting, je décide de créer un modèle de régression qui cherche le meilleur polynome de degré 5 qui fit mes données…

Le résultat est la courbe bleue de la figure qui suit

illustration overfitting

Que voit on dans ces courbes :

Voyons ceci plus en détail : En fait, la courbe bleue commet une erreur beaucoup plus faible sur la base d’apprentissage que la droite verte.

L’algorithme a quasiment appris par coeur chaque exemple de la base d’apprentissage, au détriment de sa capacité à généraliser. On voit par exemple que sa prédiction pour x= 12 est pour le moins fantaisiste (y_pred = -9)

Ici, notre modèle est trop complexe (en particulier pour un nombre d’exemples aussi faible)

Il est donc primordial de disposer de modèles dont la complexité n’est :

Une note d’espoir tout de même : voyons notre polynome de degré 5 sur la premiere base d’exemples…

illustration fitting ok

On voit que notre polynome de degré 5 arrive a fitter nos données correctement, alors qu’elles suivent un polynome de degré 2. Ce qui nous sauve du sur apprentissage, c’est le nombre d’exemples assez élevé pour que le modèle ne puisse pas “apprendre par coeur” ces exemples.

Implications pour l’apprentissage automatique, et règles actuelles

Prenons un problème actuel de classification.

Vous êtes dans un cas de :

Si par exemple, votre accuracy vaut :

c’est du sur apprentissage.

Si votre accuracy vaut 0.75 en apprentissage, c’est du sous apprentissage.

Actuellement, on considère, pour les réseaux de neurones, qu’il faut commencer par créer un modèle capable de sur apprentissage.

On utilise alors des techniques telles que :

pour lutter contre ce sur apprentissage et obtenir un algorithme qui soit aussi près que possible des performances optimales compte tenu de la difficulté intrinsèque du probleme.

Ces techniques ne seront pas détaillées dans ce cours, mais je vous invite a chercher sur le net si vous en sentez l’envie ou le besoin.