Mis à jour le 14/05/2018
  • 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Comment se passe l'apprentissage d'un modèle ?

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Maintenant que nous avons posé les bases du machine learning et que vous avez une meilleure idée de quand et comment l'utiliser... et bien, il est temps de rentrer dans le concret. 🤓 Que diriez-vous d'entraîner vos premiers algorithmes ? C'est précisément ce que nous allons attaquer dans cette deuxième partie du cours. Mais avant de nous lancer dans le code, développons dans ce chapitre notre intuition de la notion d’apprentissage et ce qu’elle représente lorsqu’on parle de machine learning... c’est à dire d’algorithmes qui peuvent améliorer leur performances à partir d’expériences

Construire un modèle statistique

Qu'est-ce qu'on essaie de faire déjà ?

Rappelez-vous, l’objectif du machine learning est de trouver un modèle qui effectue une approximation de la réalité (le phénomène à l’origine des données), à l’aide de laquelle on va pouvoir effectuer des prédictions.

Et forcément, parce qu’on fait une approximation, on a une perte d’information qui est un bruit non modélisé, qu’on estime indépendant (c’est à dire non représentatif du phénomène).

La formule se résume ainsi à l'équation suivante :

données = modèle sous-jacent + bruit indépendant

Ici on voit facilement qu'on peut approximer le modèle à l'origine des données par un cercle
Ici on voit facilement qu'on peut approximer le phénomène à l'origine des données par un cercle

Le modèle sous-jacent (statistique) représente une contrainte de “forme” non dépendante des données.

Par exemple, si je décide d’effectuer une régression linéaire, je contrains mon modèle à avoir la forme d’une droite, pas d’un cercle. Malgré tous mes efforts, je ne pourrais alors pas obtenir d’autres formes qu'une droite pour modéliser mes données, c’est donc un choix très important ! Cette notion de complexité/contrainte/flexibilité est primordiale dans votre travail de modélisation. 🙂

Comme on peut le voir sur ce genre de données, c'est difficile de faire fitter une droite!
Comme on peut le voir sur ce genre de données, c'est difficile (impossible) de faire fitter une droite ! Le type de modèle est mal choisi.

Une fois ce choix effectué et les contraintes posées, la question d’apprentissage est alors équivalente à construire le fameux modèle qui se rapprochera le plus des données d’exemples.

Utiliser la fonction loss, ou la perte d’information

En apprentissage supervisé, la notion principale est celle de perte d’information (loss en anglais) due à l'approximation dont je viens de parler. Elle détermine à quel point notre modélisation du phénomène, qui est une approximation de la réalité, perd de l’information par rapport à la réalité observée à travers les données d’exemple.

La grande majorité des algorithmes d’apprentissage supervisés utilisent cette fonction de perte ! L'apprentissage se résume en fait souvent à une méthode itérative qui converge vers un minimum de cette fonction. Plus la perte d'information diminue, plus on se rapproche de la réalité, et meilleur est notre modèle.

On peut retrouver beaucoup de types de perte. Je vais vous en présenter deux ici, pour vous donner une idée des types d'approches qu'on peut avoir.

Minimiser l’erreur du modèle

Une première manière de représenter cette perte se fait par ce qu’on appelle l’erreur ou le risque, qui traduit l’éloignement des données par rapport à la prédiction effectuée par le modèle considéré.

A gauche, on ne perd pas trop d'information. A droite on est trop éloignée de la réalité représentée par les points
À gauche, on ne perd pas trop d'information. À droite par contre, on est trop éloigné de la réalité représentée par les points.

La distance la plus utilisée pour mesurer cet éloignement est l’erreur quadratique (la distance euclidienne entre un point et le modèle).

Souvent, on ne peut pas calculer directement l’erreur mais on va utiliser une approximation à partir des données qui sont notre seule ressource. 😐  On va ainsi sommer sur toutes nos données d’exemples l’erreur effectuée du modèle. On appelle cette erreur le risque empirique.

Lors de l'apprentissage de notre modèle, on cherche alors à converger vers le minimum de risque empirique.

Maximiser la vraisemblance du modèle

Un autre type de fonctionnement des algorithmes qu’on retrouve beaucoup en machine learning sur des modèles paramétriques, et qui nous vient des statistiques, est la maximisation de la vraisemblance (maximum likelihood estimation). 

Dans ce cas là, l’objectif pour l’algorithme sera de converger vers le maximum de la fonction de vraisemblance du phénomène considéré, en trouvant le bon $\(\theta\)$, toujours à partir de nos observations de départ.

$\(\hat{\theta} = \text{argmax}_{\theta} L(\theta)\)$

Mais c’est une maximisation, pas une minimisation ! Elle est où la fonction de perte dont tu parlais dans ce cas là ?

En effet, elle est un peu cachée, mais on peut trouver mathématiquement que maximiser la vraisemblance est en fait équivalent à minimiser une fonction de perte. Et c’est une approche très souvent utilisée, qui représente des familles d’algorithmes à part entière.

Une histoire d'optimisation numérique

Au final, l'apprentissage c'est souvent une histoire d'optimisation numérique ! Les fonctions de perte que je viens de vous présenter sont des exemples illustratifs de l'approche qu'on développe pour construire un algorithme de machine learning. Une grande partie des algorithmes s’appuient donc sur des méthodes d’optimisation numérique, c’est à dire des méthodes qui vont rechercher un maximum ou un minimum d’une fonction déterminée (vous entendrez parler de loss, entropy, energy, likelihood, etc.) de manière exacte ou approximée.

D'accord mais en pratique, qu'est-ce que j'aurais à faire en tant que data scientist ?

En pratique, les algorithmes d’optimisation sont déjà implémentés dans les librairies que vous utiliserez (par exemple dans scikit-learn que j'utilise dans ce cours), et sont intégrés au modèle que vous voudrez créer. Toute les notions abordées dans ce chapitre sont donc encapsulées dans des fonctions, que vous aurez juste à appeler en leur passant vos données d’entraînement.

Cependant, vous aurez souvent besoin de paramétrer ces algorithmes d’optimisation, ou même les hyperparamètres du modèle, c’est donc important de savoir dans quoi on met les mains. 😉

En résumé

  • Pour construire un modèle, on part d'une hypothèse de départ qui représente l'ensemble des formes que peut prendre notre modélisation (une courbe par exemple, mais ça peut être bien d'autres choses encore).

  • En apprentissage supervisé, on cherche ensuite à trouver le modèle optimal à l'aide des données d'entraînement. Cela consiste à faire converger une mesure appelée loss function (fonction de perte) en utilisant des techniques d'optimisation numérique.

  • Deux exemples de fonctions de perte souvent utilisées en apprentissage supervisé sont le risque empirique et le maximum de vraisemblance.

  • Les algorithmes de machine learning sont en fait une combinaison de plusieurs domaines d'études : les statistiques (statistical learning theory), l'optimisation numérique, l'informatique théorique, etc.  

Exemple de certificat de réussite
Exemple de certificat de réussite