Le dilemme Robustesse vs. Adaptabilité est un problème bien connu dans la recherche académique qui produit les modèles de Data Science. Un algorithme de Machine Learning très puissant, mais pas « implémentable », est inutile dans un milieu industriel. Trop d’adaptabilité peut donner des modèles trop superficiels qui ne profitent pas de la complexité des données. À l’inverse, un algorithme trop optimisé pour un certain contexte peut être difficilement utilisable dès que les données changent un peu. Dans cet article, vous comprendrez en détails ce problème, en partant d’un bref historique jusqu’à nos jours, tout en ayant des conseils pour améliorer une solution existante sans perdre sa capacité d’adaptation.
Pourquoi ce dilemme robustesse vs. adaptabilité ?
Le dilemme Adaptabilité vs. Robustesse a toujours été présent dans le développement des algorithmes. Il s’agit en effet d’un sujet qui fait partie de l’histoire-même de l’apprentissage automatique ou statistique, une branche de l’intelligence artificielle qui s’occupe de construire des algorithmes qui apprennent à faire certaines tâches à partir d’une base de données d’apprentissage.
Les spécialistes de l’apprentissage statistique utilisent les notions de biais et variance liées à celles de la robustesse et de l’adaptabilité. De façon très schématique, une variance trop élevée implique une hypersensibilité aux données, c’est-à-dire des résultats très dépendants des données d’apprentissage, donc pas de robustesse.
On parle également de surapprentissage – ou overfitting. Concernant le biais, s’il est trop élevé, l’algorithme risque au contraire de trop généraliser les données, et donc de ne pas utiliser leurs spécificités.
Un peu d'histoire
Il est curieux de savoir que les caractéristiques d’un bon système d’apprentissage dépendent des époques. Dans les années 1980, on voit émerger des « systèmes experts », un type de système composé d’un ensemble de règles prédéfinies et créées par l’expert informaticien. La robustesse et l’adaptabilité dépendent par conséquent exclusivement des règles, donc du travail manuel préalable fait par l’utilisateur. À cette époque, pour trouver une bonne robustesse sans perdre l’adaptabilité, on utilise la fuzzy logic, ou logique floue.
Les réseaux de neurones sont ensuite largement utilisés dans les années 1990. La communauté IA fait beaucoup d’efforts pour ce type de système d’apprentissage, mais les limites arrivent vite : il y a trop de paramètres, et obtenir une bonne robustesse et adaptabilité est bien trop complexe à une époque où les données ne sont pas encore riches et abondantes comme aujourd’hui.
C’est ensuite au SVM (Support Vector Machine) d’entrer en jeu : un système « boîte noire » avec très peu de paramètres qui fonctionne très bien pour des problèmes non linéaires. Autant on obtient un système très robuste facilement, autant l’adapter à d’autres types de données ou le réutiliser dans un autre contexte requiert un réapprentissage qui est souvent très coûteux en termes de données et de temps.
Enfin, à partir de la fin des années 2000, l’apprentissage profond (Deep Learning) est capable d’utiliser la masse de données de notre époque pour avoir des systèmes d’apprentissage qui sont en même temps très précis et facilement adaptables, avec une facilité d’interaction entre algorithme et utilisateur.
Actuellement, beaucoup d’efforts sont faits pour faciliter l’utilisation du software de Data Science à tous les utilisateurs, peu importe le niveau de compréhension des algorithmes sous-jacents. Les interfaces user-friendly facilitent le dernier point abordé précédemment : les utilisateurs peuvent interagir avec le système en temps réel.
Ce dernier point est essentiel dans les solutions de Data Science actuelles : faire que l’utilisateur devienne également un élément important pour améliorer les algorithmes.
L’utilisateur au centre de l’algorithme
C’est là que l’on arrive au point clé du dilemme Robustesse vs. Adaptabilité : aucun système artificiel ne peut savoir mieux que la personne qui le modélise et ses utilisateurs quels sont les critères à apprendre pour obtenir une bonne robustesse et adaptabilité (si c’était le cas, on parlerait d’une « vraie » intelligence, ce qui n’existe pas pour l’instant…).
Vous allez trouver des notions telles que « incremental learning » ou « active learning ». Il s’agit des méthodes qui ajoutent une flexibilité aux modèles d’apprentissage. Dans le premier cas, l’amélioration d’un algorithme est possible à travers l’ajout de nouvelles données d’entraînement sur plusieurs étapes, une donnée ayant servi de test pouvant devenir une source d’apprentissage. Dans le deuxième cas, les métiers sont impliqués dans l’étiquetage de données et la vérification de la qualité de l’algorithme, en corrigeant la prédiction s’il le faut.
C’est important de comprendre la nature du problème pour pouvoir l’affronter. Gardez en tête que l’optimisation de la robustesse et de l’adaptabilité se jouent à plusieurs niveaux :
- Niveau algorithme : il s’agit de bien choisir un algorithme en fonction de la problématique à résoudre. Supervisé ou non supervisé, avec beaucoup de paramètres ou très simple, mais pas très adaptable…
- Niveau données : il s’agit de bien choisir la base d’apprentissage à partir de laquelle on va faire apprendre notre modèle d’apprentissage automatique. Ici, il faudra faire attention aux problèmes de biais et variance ainsi qu’au surapprentissage.
- Niveau application : des outils software trop spécialisés peuvent être performants sur certaines tâches, mais attention au passage à l’échelle quand il faudra les réutiliser dans d’autres contextes d’application.