Backgound

Le Deep Learning pour détecter les périodes pluvieuses (partie 2)

February 25, 2022
10+ min

La dernière fois, nous avions amorcé la problématique de la détection des périodes pluvieuses via des méthodes de Deep Learning dans une première partie.

Les modèles de Deep Learning sont complexes et difficiles à entraîner. Avec de nombreux paramètres à ajuster, ils nécessitent par conséquent un grand nombre de données d’entraînement avant de devenir opérationnels. Ces données d’entraînement doivent être labellisées correctement pour que la phase d’apprentissage soit efficace et non contre-productive.

Pour la détection des périodes pluvieuses, nous disposons d’une très grande quantité de données suite aux nombreux capteurs installés en France et à l’étranger (cf déploiement de l’arc méditerranéen). Les mesures des RainBox sont alors labellisées, soit à la main, soit à l’aide des données radars de Météo France.

De là, nous avons d’ores et déjà réalisé la première étape, et ô combien importante, pour la mise en place d’un modèle de Deep Learning. À présent, il nous reste à déterminer le squelette du modèle en question en choisissant entre autres le nombre de paramètres et leur interaction les uns avec les autres.

Préparation des données

Pour l’instant les données sont de longues séries temporelles de plusieurs mois contenant les mesures brutes et les labellisations associées (voir figure 1).

Figure 1 : Séries temporelles - en bleu la puissance en dB mesurée par le capteur (input) - en orange les labellisations associées (output)

La première étape consiste à découper les séries temporelles en petites portions que l’on appelle fenêtres temporelles (voir figure 2). Ces fenêtres temporelles ne doivent être :

  • Ni trop grandes pour d’une part éviter d’alourdir l’analyse de la dite fenêtre mais également pour éviter de donner des informations non pertinentes qui feraient de l’ombre aux information plus pertinentes et pénaliseraient les performances du modèle. Trop d’information tue l’information.
  • Ni trop petites pour contenir un maximum d’informations utiles

Typiquement la longueur de la fenêtre temporelle est de l’ordre de quelques heures.

Figure 2 : Découpage des données en fenêtres temporelles

Suite à cela, on réalise plusieurs étapes dont le but est de faciliter et d’accélérer l’apprentissage. On peut entre autres citer les quelques exemples suivants :

  • Nettoyage des données en supprimant les données aberrantes
  • Modifications des labellisations inexactes
  • Redimensionner les données pour faciliter leur traitement

Réseaux de neurones convolutifs et récurrents

Dans la famille des réseaux de neurones les plus connus sont les réseaux de neurones denses, c’est ceux qui ont été décrits dans l’article consacré aux réseaux de neurones. On les qualifie de dense car les couches sont densément connectées les unes aux autres. Chaque neurone de la couche d’entrée est connecté à l’ensemble des neurones de la couche de sortie. Ainsi l’état d’un neurone est influencé par l’ensemble des neurones de la couche précédente.

En pratique il n’est pas toujours utile que tous les neurones de la couche d’entrée influencent l’état des neurones de la couche de sortie. Or chaque connexion est paramétrée et caractérisée par un poids à déterminer lors de la phase d’apprentissage, ce qui peut rendre le modèle inutilement plus complexe et nuire à ses performances.

Les réseaux de neurones convolutifs permettent de ne relier qu’une partie des neurones de la couche d’entrée à un neurone de la couche de sortie. De plus, les paramètres régissant ces connexions sont les mêmes pour chaque neurone de sortie, réduisant significativement le nombre de paramètres à déterminer. L’apprentissage est alors facilité car on limite le modèle à apprendre uniquement les connexions significatives.

Par exemple sur la figure 3, la couche d’entrée est constituée des 25 neurones bleus et la couche de sortie des 9 neurones verts. Un réseau dense nécessiterait 25 x 9 = 225  paramètres pour pouvoir déterminer l’état des neurones en sortie à partir des neurones en entrée. Un réseau convolutif n’a besoin que des paramètres représentés par le carré gris qui se déplace le long des neurones bleus soit 9 paramètres, c’est-à-dire 25 fois moins que le réseau dense.

Figure 3 : Principe d’un réseau convolutif

Ces réseaux sont particulièrement adaptés au traitement d’images. Pour détecter si une image représente un chat ou un chien par exemple on peut imaginer que le modèle va chercher à détecter des yeux, des pattes, une moustache, une queue, etc. La réalité est beaucoup plus abstraite mais le principe reste le même, détecter des propriétés locales de l’image qui peuvent se trouver n’importe où sur l’image (en haut, au milieu, à droite). On peut imaginer que les paramètres représentés en gris sur la figure 3 permettent de mettre en évidence la présence d’une moustache et qu’ils vont défiler sur toute l’image, pour savoir d’une part s’il y a des moustaches sur l’image et d’autre part où elles se trouvent. L’explication est un peu simplifiée mais assez proche de la réalité.

Alors que les réseaux convolutifs sont particulièrement bien adaptés aux données spatiales, les réseaux récurrents conviennent spécialement bien aux données séquentielles comme les séries temporelles ou les données textuelles. En quelque sorte, un bloc de neurones est appliqué à chaque élément de la séquence. Ce bloc reçoit en entrée cet élément ainsi qu’un état de mémoire censé représenter l’ensemble des éléments de la séquence passée. Le bloc renvoie alors une valeur en sortie et l’état de mémoire mis à jour. Cet état de mémoire est une donnée supplémentaire permettant d’avoir une information sur les éléments de la séquence passée.

Prenons l’exemple d’un traducteur de l’anglais vers le français que l’on utiliserait pour traduire la : “I told my mother, you look happy”. Les blocs du réseau de neurones vont être appliqués mot à mot tout en mettant à jour l’état de mémoire. Au début l’état de mémoire ne contient rien, au milieu de la phrase lorsqu’il a traduit “I told my mother” par “J’ai dit à ma mère”, l’état de mémoire contient l’information importante le genre et le nombre (féminin singulier) puis cet état de mémoire se propage jusqu’au moment où l’on traduit “happy” par “heureuse”. Pour finalement avoir la traduction complète : “J’ai dit à ma mère, tu as l’air heureuse”.

Parmi les réseaux récurrents, les plus connus sont les LSTM (Long Short Term Memory - à mémoire court terme et long terme) représentés sur la figure 4. Chaque bloc reçoit en entrée :

  • L’élément de la séquence courant 𝑥𝑡 (le mot à traduire dans le cas d’un traducteur)
  • La mémoire 𝑐𝑡-1 représentant les informations contenus dans les éléments précédents de la séquence et utiles à la réalisation de notre problème (le genre et le nombre pour un traducteur par exemple)
  • La sortie du bloc précédent ℎ𝑡-1 (le mot précédemment traduit pour un traducteur)

À partir de toutes ces informations, le bloc met à jour l’état de mémoire 𝑐𝑡-1 → 𝑐𝑡 et retourne l’état de la nouvelle sortie ℎ𝑡 et 𝑜𝑡.

Figure 4 : Principe d’un bloc LSTM

Détecter les périodes pluvieuses

Pour détecter les périodes pluvieuses, le modèle mis en place repose sur une succession de ces trois type de réseaux de neurones :

  • Des couches convolutives pour mettre en évidence des caractéristiques spatiales pertinentes pour les couches récurrentes (augmentation de la variabilité du signal, baisse du signal, augmentation du signal, etc.)
  • Des couches récurrentes permettant de traiter correctement les relations temporelles présentes dans les données (une baisse du signal suivi d’une augmentation a de bonnes chances de correspondre à de la pluie mais pas l’inverse ; si en plus la variabilité a augmenté alors les chances augmentent)
  • Des couches denses

Finalement ce réseau complexe permet, pour chaque donnée contenant le signal mesuré sur une certaine fenêtre temporelle de quelques heures, de ressortir une série temporelle de probabilité de pluie (voir figure 5).

Figure 5 : Mesure du signal électromagnétique (en bleu) et probabilité de pluie (en rouge)

Au delà d’un certain seuil on considère qu’il pleut, en deçà qu’il ne pleut pas.

En résumé

À partir de la grande quantité de données labellisées obtenues, un travail de découpage et de pré-traitement est réalisé afin d’obtenir un jeu de données facilement exploitable par le futur réseau de neurones. En l’occurrence nous avons découpé les longues séries temporelles en fenêtre de quelques heures, puis nettoyé, corrigé et redimensionné nos données.

En plus des réseaux de neurones denses décrits dans cet article, on utilise des réseaux convolutifs et des réseaux récurrents.

Les premiers sont utilisés pour traiter des données spatiales et mettre en évidence des propriétés locales utiles à la résolution du problème en question. Pour la détection des périodes pluvieuses ces propriétés pourraient être de détecter que le signal baisse, augmente ou encore a une variabilité importante. Et de manière générale de nombreuses autres propriétés locales, que nous ignorons, mais nécessaires pour la détection des périodes pluvieuses.

Les réseaux récurrents quant à eux sont utilisés pour traiter des données séquentielles, comme les séries temporelles dans notre cas. Ils permettent de traiter efficacement les données temporelles et sont ainsi particulièrement bien adaptés à notre problème.

Finalement la mise en place d’un réseau complexe de type Deep Learning nous a permis de construire un modèle ressortant une probabilité de pluie. Ce critère continu est comparé à une valeur seuil pour en déduire la classification binaire pluie / non pluie.

Dans les prochains articles nous verrons, à partir de cette information qualitative (pluie / non pluie) et ponctuelle (par station), comment obtenir une information quantitative (pluviométrie ou quantité de pluie) et spatialisée (sous forme de cartes).