Quelle que soit la qualité de vos données et de votre modèle d'apprentissage automatique, même les meilleurs modèles ne sont pas capables de donner des réponses parfaites en permanence. Dans tout contexte suffisamment stimulant, le fait d'être limité à une quantité finie de données d'apprentissage, quelle qu'en soit la qualité, et d'être confronté au caractère aléatoire inhérent au monde réel les empêche de parvenir à une modélisation et à une prédiction parfaites.
Cela signifie que nous devons nous intéresser au moment et à la manière dont les résultats de ces modèles diffèrent des processus réels qu'ils sont censés modéliser. La validation du modèle est une approche possible, par exemple sous la forme d'un ensemble de tests ou d'une validation croisée, mais elle ne vous renseigne que sur les performances statistiques globales de votre modèle. Que faire si nous voulons en savoir plus sur la fiabilité d'une prédiction unique ? Les modèles de régression se contentent souvent de donner une estimation ponctuelle de votre résultat, et si les classificateurs produisent une "confiance", il s'agit généralement d'une transformation non calibrée des logits du modèle, et non d'une mesure statistique solide ; il n'est pas rare de voir un classificateur produire une confiance de 99 % sur un faux positif évident. Il n'est pas rare de voir un classificateur afficher un taux de confiance de 99 % pour un faux positif évident. Ce manque de transparence dans les prédictions individuelles peut rendre difficile la tâche de donner aux parties prenantes de l'entreprise les informations et la confiance dont elles ont besoin pour monter à bord du train de la ML.
Heureusement, il existe un nombre croissant d'approches et de bibliothèques qui répondent au besoin d'un traitement plus quantifié de l'incertitude des modèles. Dans ce billet de blog, nous jetons un coup d'œil sur ce paysage et discutons de quelques approches intéressantes de l'incertitude que nous avons adoptées dans des projets antérieurs. Nous divisons la discussion en trois domaines : la prévision, la régression et la classification [1].
L'analyse des séries temporelles est un candidat évident pour quantifier l'incertitude, car nous sommes souvent intéressés par la prédiction de l'avenir, qui n'est bien sûr jamais certain. Dans de nombreuses applications commerciales, il ne suffit pas d'extrapoler une série temporelle vers l'avenir, car il peut être essentiel d'avoir une idée des limites inférieures et supérieures de la valeur que vous essayez de prédire, qu'il s'agisse d'un prix, d'un chiffre d'affaires, d'un mouvement d'actions ou d'autre chose.
Prophet est une bibliothèque développée par Facebook pour couvrir les prévisions à grande échelle d'événements commerciaux [2]. Elle produit un modèle additif généralisé, ce qui signifie que la prédiction finale du modèle est faite en additionnant trois modèles individuels : les vacances, la tendance et la saisonnalité. Dans ce cas, l'incertitude n'est pas nécessairement saisie dans les paramètres du modèle (ceux-ci peuvent être représentés comme des distributions de probabilité a posteriori, mais sont des estimations ponctuelles MAP par défaut), mais également dans la manière dont les prédictions sont générées. Cela permet de simuler de nombreuses prévisions potentielles, à partir desquelles des intervalles d'incertitude pour la prévision peuvent être calculés. Cela tient compte de l'incertitude dans les modèles de tendance et, éventuellement, de saisonnalité, et permet en outre de modéliser le bruit d'observation. Malheureusement, cette simulation ajoute également des frais de calcul supplémentaires, ce qui signifie qu'elle n'est pas réalisable dans tous les contextes.
Nous avons utilisé cette approche de l'incertitude dans les prévisions pour mieux informer nos clients de la demande à venir pour leurs produits, ce qui leur a permis d'optimiser les niveaux de stock de leurs entrepôts. Nous l'avons fait à la fois dans des contextes business-to-business et business-to-consumer, pour des produits individuels et en agrégat.
Un autre package pour la modélisation probabiliste des séries temporelles est proposé par TensorFlow Probability sous la forme du package tfp.sts. Celui-ci ramène également la modélisation des séries temporelles structurées à un modèle additif généralisé, mais vous laisse une certaine flexibilité à partir de là, contrairement à Prophet, qui est plus difficile à personnaliser. Vous pouvez définir et combiner différents modèles avec différentes hypothèses de la manière la plus adaptée à votre contexte de modélisation. En prime, tfp.sts prend également en charge l'accélération GPU et vous permet de choisir entre l'inférence variationnelle et le MCMC. Ce billet de blogpar les auteurs fournit une bonne introduction.
D'une manière générale, les problèmes de régression concernent la prédiction d'une valeur numérique à partir d'un ensemble de variables d'entrée. Les approches de régression standard ne donnent qu'une estimation ponctuelle comme prédiction, c'est-à-dire un seul chiffre, sans aucune indication de confiance ou d'incertitude. Néanmoins, il peut être très utile de tenir compte de l'incertitude pour les objectifs de régression. Par exemple, une prédiction du prix d'un logement de 300 000 euros avec une marge d'incertitude de 100 000 euros est très différente d'une prédiction du même prix avec une marge de 2 000 euros. Un autre cas d'utilisation pourrait être celui de la fabrication : si vous devez effectuer une coupe précise pour séparer deux tapis, un intervalle d'incertitude de 2 mm sur la coordonnée est acceptable, mais un intervalle de 20 cm pourrait être un déclencheur pour demander une intervention humaine. L'estimation de la durée des différentes tâches à des fins de planification est un autre domaine où les informations sur l'incertitude peuvent être cruciales.
L'incertitude dans la régression peut provenir de deux sources principales : l'incertitude inhérente au problème lui-même (incertitude aléatoire) et l'incertitude due au manque de données disponibles (incertitude épistémique). Par exemple, si vous souhaitez prédire les prix des maisons sur le marché sur la base d'un petit échantillon de maisons vendues, l'erreur sur la prédiction du prix d'une maison individuelle sera influencée à la fois par l'opinion personnelle du vendeur individuel (effet aléatoire inhérent) et par la mesure dans laquelle ce type de maison (emplacement, fourchette de prix,...) est couvert par l'ensemble des données.
Ces deux effets peuvent être modélisés. L'incertitude aléatoire peut essentiellement être représentée par un facteur de bruit dans votre modèle de génération, tandis que l'incertitude épistémique est modélisée en remplaçant les paramètres fixes du modèle (par exemple, les poids et les biais de la régression linéaire ou du MLP) par des distributions de probabilité. Une fois celles-ci estimées via l'inférence variationnelle ou le MCMC, elles peuvent être échantillonnées pour générer la distribution de sortie pour une entrée donnée. Ceci peut être modélisé dans plusieurs frameworks probabilistes, comme Tensorflow Probability, Pyro, PyMC4,... Cette série d'articles de blog se construit gentiment vers un modèle probabiliste complet dans Tensorflow. En utilisant cette méthodologie, l'utilisateur obtient finalement un résultat contenant des intervalles de confiance (incertitude aléatoire) sur plusieurs échantillons (incertitude épistémique).
Jetez également un coup d'œil à MAPIE. Il s'agit d'un paquetage basé sur scikit-learn qui met en œuvre des estimations d'incertitude pour la régression et la classification (voir ci-dessous).
Comme nous l'avons mentionné dans l'introduction, les modèles de classification produisent généralement des valeurs de score de classe qui ne sont pas calibrées, c'est-à-dire que lorsqu'on examine un échantillon représentatif d'entrées de modèle qui aboutissent toutes à un résultat de confiance de 0,95 pour une classe, il n'est pas garanti (et il ne faut pas s'attendre) à obtenir 95 % de vrais positifs et 5 % de faux positifs. Une façon de mieux quantifier l'incertitude ici est d'utiliser la calibration du modèle. Sklearn comprend une fonctionnalité à cet effet.
En ce qui concerne les réseaux neuronaux plus complexes, en particulier dans le domaine de la vision et du langage naturel, il existe certainement des méthodes probabilistes(1,2,3) mais, à notre connaissance, elles ne sont pas encore largement utilisées dans l'industrie.
Enfin, une autre approche intéressante dans le domaine de la classification est appelée processus gaussien neuronal normalisé par le spectre (SNGP). Cette méthodologie permet à un réseau neuronal normal de se rapprocher d'une approche entièrement bayésienne de l'incertitude sans le coût de calcul supplémentaire lié à l'application de cette méthode à de vastes espaces d'entrée, en ajoutant une normalisation des poids basée sur la distance par rapport aux exemples d'apprentissage et un processus gaussien à la sortie.
Ceci conclut notre bref tour d'horizon des applications de l'incertitude dans l'apprentissage automatique. Bien que ces méthodes puissent s'accompagner d'un coût de modélisation supplémentaire ou d'une surcharge de calcul, elles peuvent également fournir des informations commerciales pertinentes qui sont importantes pour contextualiser vos prédictions avec des estimations d'incertitude. Nous espérons que ces exemples vous inciteront à commencer à explorer cette méthode dans le cadre de vos propres projets ou à l'envisager pour une application que vous possédez. Si vous pensez avoir un cas d'utilisation qui pourrait bénéficier d'une telle approche, n'hésitez pas à nous contacter.
[1] On peut dire que la prévision est un type particulier de régression. Pour les besoins de cet article, il est intéressant de l'examiner séparément, car elle dispose de ses propres approches et progiciels spécialisés
[Il existe également une variante de Prophet qui utilise un réseau profond pour la composante autorégressive, appelée NeuralProphet.