DeepAR, champion d’Amazon pour l’analyse prédictive

DeepAR, champion d’Amazon pour l’analyse prédictive

2019-05-05

La prédiction de séries temporelles est un outil indispensable à de nombreux acteurs économiques aujourd’hui. Prédire l’évolution de ventes, d’utilisation d’un service ou de fonctionnement d’un mécanisme sont autant d’exemples évidents et pouvant changer radicalement l’efficacité d’une approche stratégique. Assez ironiquement, ces méthodes ne sont pas tant que cela à la pointe des recherches en Deep Learning, et les outils statistiques usuels restent à date la solution préférée de nombreux acteurs. Nous proposons de nous intéresser à DeepAR d’Amazon, une publication récente proposant une solution globale et intéressante à ce problème. Comme pour les derniers articles, la première partie vise plutôt le grand public, là où la seconde est destinée aux data-scientist désireux de comprendre les rouages internes, voire d’appliquer cette solution.

Publication : [https://arxiv.org/abs/1704.04110]

Présentation globale.

Prédiction de séries temporelles

La prédiction joue un rôle central dans l’automatisation ou l’optimisation de processus opérationnels dans un grand nombre de buisnesses. Prévoir l’évolution des ventes d’un produit, sa fourniture ou sa demande, sont au cœur du travail des équipes de recherche d’Amazon. Plus généralement, quand l’immense majorité des problèmes sont observés par des séries numériques temporalisées, prédire l’évolution d’une telle série représente un enjeu crucial stratégique pour un acteur.

Le sujet n’est pas apparu avec le Deep Learning, et jusqu’à assez récemment, peu de solutions à base de réseaux de neurones adressaient correctement ce sujet. Les approches étaient majoritairement statistiques. Notamment, un grand nombre d’approches existantes visent à prédire l’évolution d’une un d’un petit groupe de séries. Dans ces approches, il est nécessaire de sélectionner manuellement un certain nombre de données supplémentaires (features) à fournir aux algorithmes, comme la saisonnalité, les structures d’autocorrélation ou toute autre variable pouvant faciliter le travail de l’algorithme. Cette nécessité de sélectionner « à la main » les bonnes variables supplémentaires rend ces approches très spécialisées à chaque problème rencontré.

D’autre part, de nombreuses approches statistiques font un certain nombre de postulats de départ qui peuvent vite s’avérer faux. Face à une donnée erratique, intermittente, contenant des erreurs, ou déviant rarement d’un comportement moyen, ces approches montrent vite leurs limites.

Ces dernières années, un nouveau sujet est apparu. Au lieu de prédire une ou un petit nombre de séries, on voudrait pouvoir prédire l’évolution du plusieurs milliers, voire millions, de séries temporelles qui chacune décrit une partie d’un phénomène plus global. Entre autres exemples, prédire la consommation électrique de chaque foyer dans une région, la charge de chaque serveur dans un datacenter, etc. L’enjeu est ici d’intégrer au système prédictif chaque série temporelle et de disposer d’un modèle susceptible d’apprendre un fonctionnement global lié au phénomène décrit par ces séries.

Ce nouveau sujet pose un problème notable : en analysant un grand nombre de séries temporelles liées à un phénomène, ces séries sont souvent très différentes les unes des autres. Leur magnitude peut évoluer dramatiquement d’une série à l’autre. L’illustration ci-dessous montre, pour un grand ensemble de produits en vente sur Amazon, le nombre moyen de ventes par semaine. On remarque que celle-ci ressemble à une loi de puissance statistique, soit, que ce nombre peut changer radicalement entre un produit très vendu et un produit rarement commandé. L’enjeu d’utiliser les ventes de chaque produit pour un modèle global présente dès lors une forte complexité, à savoir, la capacité à prendre en compte ces différences lors d’un apprentissage unique pour un modèle prédictif de qualité.

fig1p2

Deep AR

L’approche d’Amazon, nommé DeepAR, a pour principale qualité qu’elle prend en compte l’ensemble des séries temporelles disponibles pour la création d’un modèle global. Elle permet donc l’apprentissage d’un modèle prédictif en utilisant toute la donnée à disposition, tout en gérant les différences entres les séries disponibles : fréquence de la série, temporalité, nombre de points, etc.

L’autre avantage de cette approche est qu’au-delà d’une simple prédiction, elle se présente sous une forme probabiliste. On dispose donc, en plus d’une valeur prédite, d’une marge d’incertitude qui permet de pondérer la prédiction et notamment de faire la différence entre une prédiction à forte variance et une prédiction plus « concentrée » sur une valeur donnée.

Quatre avantages principaux sont mis en avant par les auteurs de DeepAR :

• Le besoin d’ajouter « manuellement » des features spécialisées est fortement limité, dans la mesure où le modèle apprend de lui-même la saisonnalité des données ou les dépendances entre séries

• L’approche probabiliste permet d’estimer la distribution cible prédite.

• En apprenant sur des produits similaires, le modèle est capable d’effectuer des prédictions pour des séries ayant peu, voire pas d’historique.

• Cette approche permet à un data-scientist de choisir la forme de la distribution de sortie et ainsi de l’adapter au problème étudié.

Nous reviendrons plus en détail sur ce point dans la partie pour Data Scientists, mais il convient de préciser que l’architecture DeepAR n’est pas révolutionnaire. Elle reprend une architecture classique (RNN Encoder Decoder) additionnée d’une approche probabiliste, mais présente surtout un certain nombre d’astuces ou de précisions d’entraînement spécifiques qui permettent de gérer efficacement les problèmes de prédiction.

Résultats

Les auteurs testent leur algorithme sur un certain nombre de sujets. Certains d’entre eux sont basés sur des datasets publics, et peuvent donc être reproduits pour validation de l’approche :

• Parts : 1046 séries temporelles alignées, contenant chacune 50 entrées, représentant les ventes mensuelles d’une compagnie américaine de vente de voitures

• Electrictiy : Consommation à l’heure en électricité pour 370 foyers

• Traffic : Occupation à l’heure de segments routiers de la ville de San Francisco

Deux derniers datasets sont présentés, mais ces derniers resteront privés : Ec et Ec-sub représentent les ventes hebdomadaires d’un certain nombre de produits présents sur la plateforme d’Amazon.

On précise à ce stade que vérifier les datasets utilisés pour démontrer l’efficacité d’une méthode est indispensable à tout acteur voulant étudier l’opportunité d’utiliser une approche. En Machine Learning, la donnée définit une majorité du modèle qui sera créé. Aussi est-il conseillé, si vous désirez demain vous lancer dans une approche prédictive, de vérifier s’il existe un dataset le plus proche possible de vos données, et d’analyser en profondeur les différences entre le dataset de référence et vos datas. Ces travaux préliminaires restent un des principaux moyens d’éviter de perdre son temps sur un outil non adapté à vos besoins.

Les résultats exploitent une métrique particulière, la η-risk metric. Cette métrique analyse la distance sur un quantile entre la distribution cible et la distribution obtenue par le modèle. Les résultats ci-dessous montrent les 0.5-risk et 0.9-risk, normalisés par rapport à la meilleure approche constatée précédemment (un chiffre plus bas est un meilleur résultat) :

table1p7

Un autre point d’importance est qu’ici, nous ne prédisons pas uniquement la valeur, mais sa distribution. Autrement dit, nous obtenons une forme d’incertitude sur la valeur prédite, avec un intervalle de prédiction plus ou moins large selon la « certitude » donnée par l’algorithme. Le schéma ci-dessous montre cette prédiction (trait bleu) avec l’intervalle d’incertitude de 80% (zone bleue) :

fig3p6

Présentation pour data-scientists.

Architecture

Comme précisé plus haut, l’architecture n’est pas nécessairement révolutionnaire, mais donne une approche cohérente et complète pour ce type de problèmes. Le réseau combine une approche par réseaux récurrents (RNNs) et une approche probabiliste. Là où usuellement, en prédiction par RNN, on ira réutiliser la sortie du réseau sur un instant comme entrée du réseau pour prédire l’instant suivant, une étape supplémentaire a ici été rajoutée.

En effet, l’architecture récurrente génère ici un état caché (dans le schéma, valeur [h] ) qui est ensuite utilisé pour définir une distribution dans laquelle on pourra échantillonner un élément (schéma : [z]) qui sera ensuite ré-utilisé comme entrée du réseau récurrent pour la valeur temporelle suivante. Le schéma ci-dessous montre à gauche, l’entraînement, et à droite, la mise en place de prédictions :

fig2p3

On parle ici d’autoregressive recurrent neural network. La distribution du modèle est un produit de vraisemblances :

eq1p4

Où la sortie du réseau récurrent est auto-regressive :

eq1 2p4

Ici :

• L’indice i spécifie une des séries temporelles parmi la collection disponible

• t présente l’instant dans la série.

• Les séries x sont les séries complémentaires (appelées covariates dans la publication), contenant des informations supplémentaires disponibles pouvant enrichir l’approche de la série et donc sa prédiction.

Likelihood Model

Si vous êtes habitué des modèles récurrents, vous aurez remarqué que l’ajout le plus intéressant est la modélisation de la distribution à partir de l’état caché du réseau récurrent. Noté l (likelihood) dans le schéma, cette étape permet de modéliser la forme de la donnée recherchée. Pour chaque point temporel, on prédit l’intégralité des paramètres de la distribution pour ensuite échantillonner dans celle-ci.

Deux approches sont proposées dans la publication :

eqLgp4

Une modélisation gaussienne. Cette modélisation permet la prédiction de valeurs réelles. On détermine alors à partir de l’état caché la moyenne et la variance de la distribution. On note que les opérations déterminant moyenne et variance restent simples, à savoir, deux transformations affines dont les paramètres sont appris par le modèle.

eqLNBp4

Une modélisation par distribution binomiale négative pour prédire des valeurs entières. Les deux paramètres définissant cette distribution sont générés par une couche totalement connectée unique suivi d’une non-linéarité.

Entrainement

L’entraînement se fait par descente de gradients stochastique à partir de le la log-vraisemblance observée du modèle :

eq2p5

À noter, de nombreuses instances d’entraînement sont générées par sélection de fenêtres temporelles différentes. Si la longueur totale des séquences reste constante, le modèle est aussi entrainé sur des séries et des fenêtres temporelles telles que la série ne soit pas définit sur une partie de la fenêtre, remplacée par un padding de 0. Cette approche permet au modèle d’apprendre à appréhender de « nouvelles » séries apparaissant au cours du fonctionnement observé.

On note aussi qu’une normalisation des échelles de valeur est mise en place par application de moyennes ou d’autres estimations afin de limiter au sein du modèle la nécessité de devoir transposer les valeurs dans un domaine particulier.

Autre point d’intérêt : lors de l’apprentissage, nous disposerons de séries déséquilibrées, certaines étant très fournies avec de nombreux points, d’autres n’ayant qu’un nombre limité de points avec une fréquence très basse (et donc sur un large domaine temporel). Afin d’éviter un underfit sur ces séries pouvant pourtant être importantes, une pondération des fenêtres temporelles utilisées lors de l’entraînement est fait pour favoriser les fenêtres à large domaine temporel et ainsi ré-équilibrer l’apprentissage.

Enfin, les features présentées peuvent dépendre du temps ou non, et sont supposées apporter des informations supplémentaires sur chaque série temporelle. Cela peut impliquer des données « métier » comme par exemple pour une prédiction de vente la présence d’une campagne de promotion. Dans leurs expériences, les auteurs ont à chaque fois ajouté une donnée d’ « age » représentant la distance temporelle au premier élément, ainsi que des données calendaires (jour de la semaine, mois).

Implémentation et code en ligne

Les exemples donnés dans la publiation ont tous été entraînés avec MXNet (ce qui nous change de Tensorflow) sur une machine avec 4 CPUs et 1 GPU (p2.xlarge sur AWS). Sur ce matériel, l’apprentissage le plus long prend une dizaine d’heures.

ADAM est utilisé pour l’optimisation de l’apprentissage. Les cellules RNN sont des LSTMs classiques. Une tristement classique recherche par grille est utilisée pour trouver à chaque fois les meilleurs hyper-paramètres :

table3p9

Une implementation Tensorflow est disponible ici : [https://github.com/arrigonialberto86/deepar]. L’implémentation originale est dissimulée au sein du produit SageMake ce qui peut être intéressant ou rédhibitoire selon vos habitudes. À noter qu’une utilisation sur le dataset electricity est directement disponible : [https://github.com/awslabs/amazon-sagemaker-examples/blob/master/introduction_to_amazon_algorithms/deepar_electricity/DeepAR-Electricity.ipynb]

Dernier point d’attention : la manière dont cette approche condense les différentes séries pour la prédiction reste assez flou. Cela peut venir de l’incompétence de l’auteur de cet article (pardon) ou d’une forme de flou artistique comme on voit régulièrement dans ce type de travaux. Nous essaierons d’amender cet article quand nous aurons la réponse exacte à cette question…