Introduction à l'apprentissage fédéré
Pourquoi entraîner un modèle sans centraliser les données ? Un tour d'horizon de FL, de FedAvg aux défis de la non-IID-ité.
Le problème de fond
Le machine learning classique repose sur une hypothèse simple : toutes les données sont accessibles en un seul endroit. On agrège les données, on entraîne un modèle, on déploie. Mais dans la réalité, cette hypothèse s'effondre rapidement.
Imaginez un hôpital qui souhaite entraîner un modèle de détection précoce du cancer à partir de scanners. Les données sont sensibles, soumises au RGPD, et chaque établissement refuse — à juste titre — de les centraliser. Résultat : chaque hôpital a trop peu de données pour entraîner un modèle performant seul, mais partager les données est impossible.
Le paradoxe : les données les plus précieuses sont souvent les plus difficiles à centraliser. Données médicales, financières, comportementales — toutes contraintes par la vie privée, la régulation, ou la compétition.
C'est exactement le problème que l'apprentissage fédéré cherche à résoudre.
Qu'est-ce que l'apprentissage fédéré ?
L'apprentissage fédéré (Federated Learning) est un paradigme d'entraînement distribué introduit par Google en 2017. L'idée centrale : le modèle va aux données, pas l'inverse.
Voici comment fonctionne un round d'entraînement fédéré classique :
- Un serveur central diffuse le modèle global actuel à un sous-ensemble de clients.
- Chaque client (hôpital, téléphone, institution) entraîne le modèle localement sur ses propres données.
- Les clients renvoient leurs mises à jour (gradients ou poids) — pas leurs données.
- Le serveur agrège ces mises à jour pour améliorer le modèle global.
- On répète jusqu'à convergence.
Les données ne quittent jamais le client. C'est la promesse fondamentale du paradigme.
L'algorithme FedAvg
L'algorithme de référence est FedAvg (Federated Averaging), proposé par McMahan et al. (2017). Son principe d'agrégation est d'une simplicité élégante : la mise à jour globale est la moyenne pondérée des mises à jour locales, pondérée par la taille du dataset de chaque client.
Formellement, à chaque round , le serveur sélectionne un sous-ensemble de clients et diffuse le modèle courant . Chaque client résout localement :
puis le serveur agrège via une moyenne pondérée par la taille des datasets locaux :
# Pseudocode simplifié de FedAvg
for round t in 1..T:
clients = sample(all_clients, fraction=C)
for each client k in clients:
w_k = local_SGD(w_global, data_k, epochs=E)
# Agrégation pondérée
w_global = sum(n_k / n * w_k for k in clients)
# où n_k = nb samples client k, n = total
La beauté de FedAvg réside dans sa généralité : il fonctionne avec n'importe quel modèle différentiable. En pratique, le nombre de rounds , le taux de participation et le nombre d'époques locales sont les principaux leviers.
Le défi de la non-IID-ité
En statistique classique, on suppose que les données sont i.i.d. (indépendantes et identiquement distribuées). En apprentissage fédéré, cette hypothèse est systématiquement violée.
Les données de chaque client reflètent ses usages propres, sa démographie, son environnement. Un téléphone utilisé à Paris a une distribution de données très différente d'un téléphone utilisé à Lomé.
"Non-IID data is arguably the most fundamental challenge in federated learning." — Li et al., 2020
Cette hétérogénéité crée plusieurs problèmes concrets :
- Client drift : les mises à jour locales s'éloignent de l'optimum global , car chaque client optimise pour sa propre distribution .
- Convergence lente ou instable : la moyenne de gradients qui "tirent" dans des directions très différentes converge mal.
- Performances inégales : le modèle global peut très bien fonctionner en moyenne mais être mauvais pour certains clients.
Au-delà de FedAvg : quelques réponses
Depuis 2017, la communauté a proposé de nombreuses variantes pour adresser ces problèmes. En voici quelques-unes qui jalonnent ma recherche :
- FedProx — ajoute un terme de proximalité à la loss locale, limitant le drift. Le client minimise :
- SCAFFOLD — utilise des variables de contrôle pour corriger le biais introduit par la variance des gradients locaux.
- FedNova — normalise les mises à jour locales pour tenir compte du nombre d'étapes effectuées par chaque client.
- Per-FedAvg / pFedMe — approches de méta-apprentissage pour obtenir un modèle personnalisé par client, pas seulement un modèle global.
Ce que j'explore dans ma recherche : comment l'hétérogénéité des données (distribution des labels, quantité de données, features drift) affecte-t-elle la convergence de ces algorithmes, et dans quelles conditions chacun excelle ?
Limites et questions ouvertes
L'apprentissage fédéré est loin d'être un problème résolu. Quelques tensions majeures :
- Communication : envoyer des mises à jour de modèle à chaque round est coûteux. Sur des réseaux lents ou des modèles larges, c'est un vrai goulot d'étranglement.
- Confidentialité réelle : partager des gradients n'est pas anodin. Des attaques d'inversion de gradient peuvent reconstruire des données privées à partir des mises à jour.
- Robustesse : des clients malveillants peuvent envoyer des mises à jour empoisonnées pour dégrader le modèle global.
- Équité : minimiser la perte moyenne peut nuire aux clients minoritaires. Comment garantir un modèle équitable pour tous ?
Conclusion
L'apprentissage fédéré n'est pas une solution miracle — c'est un compromis. Un compromis entre performance et confidentialité, entre centralisation et distribution, entre modèle global et personnalisation locale.
Ce qui le rend fascinant, c'est qu'il force à repenser des hypothèses profondes du machine learning : qu'est-ce qu'un modèle "bon" quand les données sont intrinsèquement disparates ? Comment garantir l'équité dans un système décentralisé ? Ces questions, à l'intersection des mathématiques, de l'informatique et de l'éthique, sont celles qui guident ma recherche.
Dans un prochain article, je présenterai un benchmark comparatif de FedAvg et FedProx sur des données MNIST partitionnées de façon non-IID — avec du code, des courbes, et des conclusions concrètes.