Arthur Leroy
MAP5, Université de Paris
Projet de 3 ans (2017-2020), dans le cadre d’un doctorat de mathématiques appliquées, portant sur le développement de méthodes d’apprentissage automatique pour le sport de haut-niveau.
Une problématique:
Une opportunité :
Performances de membres de la FFN, au cours de leur carrière, sur 100m nage libre :
Performances de membres de la FFN, au cours de leur carrière, sur 100m nage libre :
Performances de membres de la FFN, au cours de leur carrière, sur 100m nage libre :
Existe-t-il des profils de progressions spécifiques parmi les nageurs ?
Leroy et al. - Functional Data Analysis in Sport Science: Example of Swimmers’ Progression Curves Clustering - Applied Sciences - 2018
Est-il possible de prédire des performances futures (et quantifier nos certitudes) ?
Leroy et al. - Magma: Inference and Prediction with Multi-Task Gaussian Processes - Under submission in Statistics and Computing - 2020 - https://github.com/ArthurLeroy/MAGMA
Est-ce-que former des groupes d’individus permet d’améliorer les prédictions ?
Leroy et al. - Cluster-Specific Predictions with Multi-Task Gaussian Processes - Under submission in JMLR - 2020 - https://github.com/ArthurLeroy/MAGMAclust
Existe-t-il des profils de progressions spécifiques parmi les nageurs?
Pour pouvoir comparer les individus il est nécessaire de définir une représentation commune, et de reconstruire des données fonctionnelles à partir des points d’observations.
L’utilisation d’algorithmes de clustering de courbes permet d’identifier différents profils de progression, correspondant bien à ce qui est observé par les experts de la natation en pratique.
Mais au fait, comment fait on pour apprendre ?
Le travail présenté ici se concentre sur deux grands problèmes de machine learning :
\[y = \color{green}{f}(x) + \epsilon\]
où :
Tout le problème de l’apprentissage supervisé consiste à trouver la bonne fonction \(\color{green}{f}\), en s’aidant de données observées \(\{(x_1, y_1), \dots, (x_n, y_n) \}\), pour pouvoir effectuer des prédictions lorsque l’on observe une nouvelle donnée \(x_{n+1}\).
L’exemple le plus simple est celui de la régression linéaire, où l’on fait l’hypothèse que :
\[\color{green}{f}(x) = a x + b\]
Trouver la meilleure fonction \(\color{green}{f}\) revient à estimer la bonne valeur de \(a\) et \(b\) pour nos données.
Cette simple formule a de grandes implications sur la façon d’apprendre à partir de données.
\[\mathbb{P}(\color{red}{T} \mid D) = \dfrac{\mathbb{P}(D \mid \color{red}{T}) \times \mathbb{P}(\color{red}{T})}{\mathbb{P}(D)}\]
avec :
La formule de Bayes indique comment mettre à jour ce que l’on pense de \(\color{red}{T}\) en tenant compte des données D :
Illustrons ce résultat avec un exemple classique. Si il existe une maladie telle que :
Alors, si vous avez un résultat positif au test, la formule de Bayes vous informe que vous avez en réalité une probabilité d’être malade égale à :
\[\mathbb{P}(\color{red}{M} \mid D) = \dfrac{\mathbb{P}(D \mid \color{red}{M}) \times \mathbb{P}(\color{red}{M})}{\mathbb{P}(D)} = \dfrac{0.99 \times 0.001}{0.99 \times 0.001 + 0.01 \times 0.999} \simeq 0.09\]
Ainsi, on aurait seulement 9% de chance environ d’être effectivement malade malgré un résultat positif au test.
Bien que la formule de Bayes soit connue depuis longtemps, il est général très difficile de calculer certains termes.
Cependant, les récents développements de l’informatique et les grandes puissances de calcul ont permis de le développement de la statistique Bayésienne, qui au coeur de nombreux algorithmes d’apprentissage.
Cette approche permet de raisonner en terme de probabilités, et de quantifier l’incertitude de nos prédictions.
En particulier, un algorithme très populaire pour apprendre notre fonction d’apprentissage \(\color{green}{f}\) et effectuer des prédictions probabilistes repose sur l’utilisation des processus gaussiens.
Pas de restrictions sur \(\color{green}{f}\) mais des probabilités a priori parmi toutes les fonctions possibles.
Les processus gaussiens offrent un cadre de modélisation idéal mais restent insuffisants pour faire des prédictions (surtout à long terme).
Est-il possible de prédire des performances futures (et quantifier nos certitudes) ?
Partant du constat que tous les nageurs partagent de nombreuses caractéristiques communes, pourquoi ne pas introduire un processus gaussien \(\mu_0\), commun à tous les individus ?
\[y_i(t) = \mu_0(t) + f_i(t) + \epsilon_i\]
avec :
Cette équation est appelé le modèle génératif de nos données. On fait l’hypothèse que les données réelles sont issues d’un phénomène qui fonctionne selon cette formule.
Une telle approche, de partage d’information entre plusieurs individus, est généralement appelée apprentissage multi-tâches.
Un nouvel algorithme, appelé Magma, est développé pour apprendre les valeurs probables de \(\mu_0\) sachant nos données, en utilisant la formule de Bayes :
\[\mathbb{P}(\mu_0 \mid y_i) = \dfrac{\mathbb{P}(y_i \mid \mu_0) \mathbb{P}(\mu_0)}{\mathbb{P}(y_i)}\]
Ainsi, tous les individus déjà observés vont servir à estimer la loi de probabilité du processus commun \(\mu_0\).
Une fois que l’on a appris \(\mu_0\), il est très difficile de savoir comment utiliser les informations qu’il contient. Même si cette étape aura été (de loin) la plus longue à accomplir, la solution à ce problème s’écrit finalement en quelques lignes. Il faut pour cela :
\[\begin{align} p(y_* (\textbf{t}_*^{p}) \mid \textbf{y}) &= \int p\left(y_* (\textbf{t}_*^{p}) \mid \textbf{y}, \mu_0(\textbf{t}_*^{p})\right) p(\mu_0 (\textbf{t}_*^{p}) \mid \textbf{y}) \ d \mu_0(\mathbf{t}^{p}_{*}) \\ &= \int \underbrace{ p \left(y_* (\textbf{t}_*^{p}) \mid \mu_0 (\textbf{t}_*^{p}) \right)}_{\mathcal{N}(y_*; \mu_0, \Psi_*)} \ \underbrace{p(\mu_0 (\textbf{t}_*^{p}) \mid \textbf{y})}_{\mathcal{N}(\mu_0; \hat{m}_0, \hat{K})} \ d \mu_0(\mathbf{t}^{p}_{*}) \\ &= \mathcal{N}( \hat{m}_0 (\mathbf{t}^{p}_{*}), \Gamma) \end{align}\]
Quelques étapes supplémentaires seront nécessaires pour achever notre algorithme :
Est ce que former des groupes d’individus permet d’améliorer les prédictions?
Encore une fois, la problèmatique sportive nous offre une perspective d’amélioration du modèle.
En identifiant différents groupes, le partage d’information pourrait être plus pertinent entre les individus qui se ressemblent.
On peut ainsi definir une procédure de clustering au sein de notre algorithme, simplement en définissant un processus \(\mu_k\) spécifique pour chaque groupe.
\[y_i(t) = \mu_{\color{red}{k}}(t) + f_i(t) + \epsilon_i\]
Et il est toujours possible d’apprendre tous les \(\mu_k\), mais aussi les probabilités d’appartenance à chacun des groupes, pour tous les individus.
Un aspect important de tout algorithme, notamment pour l’apprentissage automatique, réside dans sa complexité algorithmique
Cette mesure nous indique dans quel ordre de grandeur le nombre d’opérations (et donc le temps de calcul) augmente en fonction de la dimension des données d’entrées du modèle. Dans notre cas de figure, nous avons :
avec :