Conception d'un système d'alerte et de surveillance des mesures

Par : Simardeep Singh, Statistique Canada

Introduction

La conception d'un système d'alerte et de surveillance des mesures est une étape cruciale pour assurer la santé et le rendement de tout système ou de toute application. Un système bien conçu peut aider à repérer les problèmes potentiels avant qu'ils ne deviennent très importants, ce qui permet leur résolution rapide et réduit au minimum le temps d'arrêt.

La première étape de conception d'un système d'alerte et de surveillance des mesures consiste à déterminer les principales mesures qui doivent faire l'objet d'une surveillance. Ces mesures doivent être choisies en fonction des buts et objectifs précis du système ou de l'application ainsi que de ses caractéristiques et de ses exigences uniques. Par exemple, un site Web peut devoir surveiller des mesures comme le temps de chargement des pages, la mobilisation des utilisateurs et le temps de réponse des serveurs, tandis qu'une application mobile peut devoir surveiller des mesures comme l'utilisation de la batterie et le rendement du réseau.

Une fois les principales mesures cernées, la prochaine étape consiste à déterminer la façon dont elles seront recueillies et stockées. Cela peut comprendre la mise en place d'outils de surveillance spécialisés ou l'utilisation d'outils et de services existants. Il est important de s'assurer que les données recueillies sont exactes, fiables et facilement accessibles.

La prochaine étape consiste à établir des alertes et des avis en fonction des mesures qui font l'objet d'une surveillance. Cela peut se faire au moyen de divers outils et méthodes, comme les courriels, les messages textes ou les notifications poussées. Les seuils d'alerte doivent être choisis avec soin afin de s'assurer qu'ils sont suffisamment sensibles pour détecter les problèmes potentiels, mais pas au point de générer des alertes erronées.

Enfin, il est important d'examiner et d'évaluer régulièrement le rendement du système d'alerte et de surveillance des mesures. Il peut s'agir d'analyser les données recueillies, de déterminer les points à améliorer et d'apporter les ajustements nécessaires au système. En améliorant continuellement le système, il peut demeurer efficace et fiable au fil du temps.

Quels sont les principaux éléments du système?

Un système d'alerte et de surveillance des mesures comprend cinq composantes :

  • Collecte de données : Sert à recueillir les données relatives aux mesures à partir de différentes sources.
  • Transmission des données : Sert à transférer les données depuis les sources vers le système de surveillance des mesures.
  • Stockage des données : Sert à organiser et à stocker les données entrantes.
  • Alerte : Sert à analyser les données entrantes, à détecter les anomalies et à générer des alertes. Le système doit pouvoir envoyer des alertes à différents canaux de communication configurés par l'organisation.
  • Visualisation : Sert à présenter les données sous forme de tableaux, de graphiques ou sous d'autres formes, car il est plus facile de cerner les tendances ou les problèmes lorsque les données sont présentées visuellement.

Façon de concevoir les mesures pour le système d'alerte et de surveillance des mesures

Nous examinerons dans la section qui suit certains principes fondamentaux de conception du système, du modèle de données et de la conception globale.

Modélisation de données : Les données relatives aux mesures sont généralement enregistrées sous la forme d'une série chronologique qui contient l'ensemble de valeurs et les estampilles temporelles connexes. La série elle-même peut être désignée par son nom et, sur le plan opérationnel, par un ensemble d'étiquettes. Chaque série chronologique comprend les éléments suivants :

Tableau 1 : Séries temporelles

Nom Type
Un nom de mesure Une chaîne
Un ensemble d’étiquettes Une liste des paires <key : value>
Un ensemble de valeurs et leurs estampilles temporelles  Une matrice de paires <value, timestamp>

Modèle d'accès aux données : Envisager une mise en situation réelle où le système d'alerte doit calculer la charge moyenne de l'unité centrale sur l'ensemble des serveurs Web dans une région précise. La moyenne des données doit être calculée toutes les 10 minutes, ce qui représente environ 10 millions de mesures opérationnelles écrites par jour, et de nombreuses mesures sont recueillies à fréquence élevée. Pour ces systèmes, la charge d'écriture est lourde et la charge de lecture est simultanément irrégulière. Les services de visualisation et d'alerte envoient les requêtes à la base de données et, selon les tendances d'accès et les alertes, le volume de lecture peut augmenter ou diminuer. Le système est soumis à une charge d'écriture constante et lourde, tandis que la charge de lecture est irrégulière.

Système de stockage de données : Une base de données à usage général, en théorie, pourrait prendre en charge les données chronologiques, mais elle nécessitera des ajustements importants pour qu'elle fonctionne à grande échelle. Une base de données relationnelle n'est pas optimisée pour les opérations couramment effectuées sur des données chronologiques.

De nombreux systèmes de stockage sont optimisés pour les données chronologiques. L'optimisation s'appuie sur un moins grand nombre de serveurs pour traiter d'énormes quantités de données. Bon nombre de ces bases de données ont des interfaces de requête sur mesure conçues pour l'analyse de données chronologiques qui sont beaucoup plus faciles à utiliser que le langage relationnel SQL.

Deux bases de données chronologiques très populaires, Influx DB (base de données) et Prometheus, ont été conçues pour stocker de grandes quantités de données chronologiques et effectuer des analyses en temps réel. Une autre caractéristique de la robuste base de données chronologiques est l'agrégation efficace. La base de données Influx DB crée des index sur les étiquettes pour faciliter la consultation rapide de séries chronologiques par étiquettes.

Conception globale

Figure 1 : Conception globale d'un système d'alerte et de surveillance des mesures

Figure 1 : Conception globale d'un système d'alerte et de surveillance des mesures

Figure 1 : Conception globale d'un système d'alerte et de surveillance des mesures

Différentes composantes du système d'alerte et de surveillance des mesures interagissent entre elles. La source des mesures génère les mesures qui sont recueillies par le système de collecte des mesures et qui sont transmises à la base de données de séries chronologiques. La base de données de séries chronologiques est interrogée par le système de visualisation pour afficher les éléments visuels et le système d'alerte pour aviser les développeurs.

  1. Source des mesures
    1. Envoi au Système de collecte des mesures
  2. Système de collecte des mesures
    1. Envoi au Bases de données chronologiques
  3. Bases de données chronologiques
    1. Retour au Source des mesures
    2. Retour au Services de requêtes
  4. Services de requêtes
    1. Retour au Système d’alerte (envoi de requêtes)
    2. Retour au Système de visualisation (envoi de requêtes)
  5. Système de visualisation
    1. Envoi au Services de requêtes
  6. Système d’alerte
    1. Envoi au Courriel
    2. Envoi au Message texte
    3. Envoi au PagerDuty
    4. Envoi au Points terminaux HTTPS
  7. Courriel
  8. Message texte
  9. PagerDuty
  10. Points terminaux HTTPS
  • Source des mesures :Il peut s'agir de serveurs d'applications, de bases de données SQL, de files d'attente de messages, etc.
  • Système de collecte des mesures : Recueille les données relatives aux mesures et les consignes dans la base de données chronologiques.
  • Base de données chronologiques : Sert à stocker les données relatives aux mesures sous forme de séries chronologiques. La base de données fournit habituellement une interface de requête personnalisée pour analyser et résumer une grande quantité de données chronologiques. Elle maintient des index sur les étiquettes pour faciliter la consultation rapide des données à l'aide des étiquettes.
  • Service de requêtes : Le service de requêtes facilite la recherche et l'extraction de données à partir des bases de données chronologiques.
  • Système d'alerte : Envoie des notifications d'alerte à diverses destinations d'alerte.
  • Système de visualisation : Les mesures sont présentées sous diverses formes de graphiques et de tableaux.

Conception en détail

Regardons les conceptions d'un peu plus près :

  • Collecte des mesures
  • Ajustement du pipeline de transmission de mesures
  • Service de requêtes
  • Système d'alerte
  • Système de visualisation

Collecte des mesures

Il y a deux façons de recueillir les données relatives aux mesures : par extraction ou par diffusion.

Figure 2 : Processus de collecte des mesures

Figure 2 : Processus de collecte des mesures
Figure 2 : Processus de collecte des mesures

La source des mesures et le système de collecte des mesures. Ces composantes sont décrites en détail dans les paragraphes suivants.

  1. Source des mesures
    1. Envoi au Système de collecte des mesures
  2. Système de collecte des mesures
    1. Envoi au Bases de données chronologiques
  3. Bases de données chronologiques
    1. Retour au Source des mesures
    2. Retour au Services de requêtes
  4. Services de requêtes
    1. Retour au Système d’alerte (envoi de requêtes)
    2. Retour au Système de visualisation (envoi de requêtes)
  5. Système de visualisation
    1. Envoi au Services de requêtes
  6. Système d’alerte
    1. Envoi au Courriel
    2. Envoi au Message texte
    3. Envoi au PagerDuty
    4. Envoi au Points terminaux HTTPS
  7. Courriel
  8. Message texte
  9. PagerDuty
  10. Points terminaux HTTPS

Modèle de collecte par extraction

Dans un modèle de collecte par extraction, le système de collecte des mesures extrait les mesures à partir des sources. Par conséquent, le système de collecte des mesures doit connaître la liste complète des points terminaux de services pour extraire les données. Nous pouvons utiliser un service fiable, évolutif et maintenable, comme la découverte de services fournie par ETCD et Zookeeper. Un module de découverte de services contient des règles de configuration concernant le moment et l'endroit où recueillir les mesures.

  • Le système de collecte des mesures récupère les métadonnées de configuration du point terminal de service à partir du module de découverte de services. Les métadonnées comprennent l'intervalle d'extraction, les adresses IP, les délais d'expiration ainsi que les paramètres de reprise.
  • Le système de collecte des mesures extrait les données relatives aux mesures au moyen du point terminal HTTP (par exemple, les serveurs Web) ou du point terminal TCP (protocole de contrôle de transmission) (pour les groupements de bases de données).
  • Le système de collecte des mesures enregistre une notification d'événement de changement dans le répertoire de services pour obtenir une mise à jour chaque fois que les points terminaux de services changent.

Figure 3 : Modèle détaillé de collecte par extraction

Figure 3 : Modèle détaillé de collecte par extraction
Figure 3 : Modèle détaillé de collecte par extraction

Le système de collecte des mesures extrait les mesures à partir de différentes sources. Les services de collecte des mesures obtiennent les renseignements des points terminaux de services à partir du répertoire de services qui comprend ETCD et Zookeeper.

  1. Système de collecte des mesures
    1. Envoi au Découverte de services – ETCD, Zookeeper (via Cibles de découverte)
    2. Envoi au Sources des mesures - Serveurs Web, Groupe de bases de données, Groupements de mise en cache, Groupements de files d’attente (via Requêtes)
  2. Découverte de services – ETCD, Zookeeper
  3. Sources des mesures – Serveurs Web, Groupe de bases de données, Groupements de mise en cache, Groupements de files d’attente

Modèle de collecte par diffusion

Dans un modèle de collecte par diffusion, un module de collecte est installé sur chaque serveur qui fait l'objet d'une surveillance. Un module de collecte est un logiciel de longue durée qui recueille les mesures à partir du service exécuté sur le serveur, et qui les transmet au système de collecte.

Pour éviter que le système de collecte des mesures ne prenne du retard dans un modèle de collecte par diffusion, le système de collecte doit toujours être en mode de mise à l'échelle automatique à l'aide d'un équilibreur de charge en première ligne (Figure 4). Le groupement de services doit être augmenté ou réduit en fonction de la charge de l'UCT (unité centrale de traitement) du système de collecte des mesures.

Figure 4 : Modèle détaillé de la collecte par diffusion

Figure 4 : Modèle détaillé de la collecte par diffusion
Figure 4 : Modèle détaillé de la collecte par diffusion

Le module de collecte recueille les mesures à partir des serveurs Web et les diffuse à un équilibreur de charge. L'équilibreur de charge équilibre la charge des mesures et les diffuse vers le groupement de services de collecte des mesures.

  1. Sources des mesures 
    1. Serveurs Web
      1. Envoi au Mesures 1
      2. Envoi au Mesures 2
      3. Envoi au Mesures 3
    2. Envoi à l’Équilibreur de charge
  2. Équilibreur de charge (via Messages diffuses instantanément)
    1. Envoi au Services de collecte des mesures
  3. Services de collecte des mesures

Quel modèle de collecte est préférable? Par extraction ou par diffusion

Alors, qu'est-ce qui est le mieux pour une grande organisation? Il est important de connaître les avantages et les inconvénients liés à chacune des approches. Une grande organisation doit prendre en charge les deux, en particulier dans le cas d'une architecture sans serveur.

Système de surveillance par diffusion :

Avantages :

  • Notifications en temps réel des problèmes et des alertes.
  • Peut alerter plusieurs destinataires en même temps.
  • Peut être personnalisé en fonction d'exigences et de besoins précis.
  • Peut être intégré à d'autres systèmes et applications.

Inconvénients :

  • Nécessite une connexion Internet constante et fiable pour fonctionner correctement.
  • Le nombre de notifications et d'alertes peut devenir trop lourd.
  • Peut être vulnérable aux cyberattaques et aux atteintes à la sécurité.

Système de surveillance par extraction :

Avantages :

  • Accessible à distance et à partir de plusieurs appareils.
  • Peut être configuré pour vérifier des mesures et des paramètres précis à intervalles réguliers.
  • Peut être facilement configuré et personnalisé.
  • Peut fournir des données détaillées et historiques aux fins d'analyse et de production de rapports.

Inconvénients :

  • Nécessite une intervention manuelle pour vérifier et examiner les données.
  • Peut ne pas fournir d'alertes et de notifications en temps réel.
  • Peut être moins efficace pour cerner les problèmes et les anomalies et y remédier.

Ajustement du pipeline de transmission de mesures

Que nous utilisions le modèle de collecte par diffusion ou par extraction, le système de collecte des mesures des serveurs et le regroupement de services reçoivent d'énormes quantités de données. Il y a un risque de perte de données si la base de données chronologiques n'est pas disponible. Pour gérer le risque de perte de données, nous pouvons utiliser un composant de mise en file d'attente, comme le montre la figure 5.

Figure 5 : Ajouter des files d'attente

Figure 5 : Ajouter des files d'attente
Figure 5 : Ajouter des files d'attente

Étapes pour ajuster le pipeline de transmission des mesures. La conception tire parti de l'utilisation du mécanisme de partition intégrée de Kafka pour ajuster le système. Kafka aide à catégoriser les mesures et à établir leur ordre de priorité afin que les mesures importantes soient traitées en premier par la base de données chronologiques.

  1. Source des mesures
    1. Envoi au Système de collecte des mesures
  2. Système de collecte des mesures
    1. Envoi au Kakfa
  3. Kafka
    1. Envoi au Consommateur
  4. Consommateur
    1. Envoi au Bases de données chronologiques
  5. Bases de données chronologiques
    1. Retour au Services de requêtes
  6. Services de requêtes
    1. Retour au Système d'alerte (envoi de requêtes)
    2. Retour au Système de visualisation (envoi de requêtes)
  7. Système de visualisation
    1. Envoi au Services de requêtes
  8. Système d’alerte
    1. Envoi au Courriel
    2. Envoi au Message texte
    3. Envoi au PagerDuty
    4. Envoi au Points terminaux HTTPS
  9. Courriel
  10. Message texte
  11. PagerDuty
  12. Points terminaux HTTPS

Dans cette conception, le système de collecte des mesures envoie des données relatives aux mesures à un système de file d'attente comme Kafka. Ensuite, les consommateurs ou les services de traitement en continu comme Apache Spark traitent les données et les diffusent vers la base de données chronologiques. Cette approche présente plusieurs avantages :

  • Kafka est une plateforme de diffusion de messagerie hautement fiable et évolutive.
  • L'application dissocie les services de collecte et de traitement des données les uns des autres.
  • Elle peut facilement prévenir la perte de données lorsque la base de données n'est pas disponible en conservant les données dans Kafka.

Service de requêtes

Le service de requêtes est constitué d'un groupement de serveurs de requêtes qui accèdent à la base de données chronologiques et traitent les requêtes provenant des systèmes de visualisation ou d'alerte. Une fois qu'un ensemble dédié de serveurs de requêtes est en place, il est possible de dissocier la base de données chronologiques des systèmes de visualisation et d'alerte. Cela permet la modification de la base de données chronologiques ou des systèmes de visualisation et d'alerte, au besoin.

Pour réduire la charge de la base de données chronologiques et rendre le service de requêtes plus performant, des serveurs cache peuvent être ajoutés pour stocker les résultats de la requête, comme le montre la figure 6.

Figure 6 : Couche de mise en cache

Figure 6 : Couche de mise en cache
Figure 6 : Couche de mise en cache

L'intégration du service de requêtes et de la couche de mise en cache. La couche de mise en cache réduit le temps de chargement de la base de données chronologiques et rend la requête plus performante.

  1. Source des mesures
    1. Envoi au Système de collecte des mesures
  2. Système de collecte des mesures
    1. Envoi au Kakfa
  3. Kafka
    1. Envoi au Consommateur
  4. Consommateurs
    1. Envoi au Bases de données chronologiques
  5. Bases de données chronologiques
    1. Retour au Services de requêtes
  6. Services de requêtes
    1. Envoi au Cache
    2. Retour au Système d'alerte (Envoi de requêtes)
    3. Retour au Système de visualisation (Envoi de requêtes)
  7. Cache
  8. Système de visualisation
    1. Envoi au Services de requêtes
  9. Système d'alerte
    1. Envoi au Courriel
    2. Envoi au Message texte
    3. Envoi au PagerDuty
    4. Envoi au Points terminaux HTTPS
  10. Courriel
  11. Message texte
  12. PagerDuty
  13. Points terminaux HTTPS

Couche de stockage

Optimisation de l'espace – afin d'optimiser le stockage, les stratégies suivantes peuvent être utilisées pour résoudre ce problème :

Codage et compression des données : Le codage des données est le processus de traduction des données d'un format à un autre, habituellement à des fins de transmission ou de stockage efficace. La compression des données est un processus connexe qui consiste à réduire la quantité de données requises pour représenter un élément d'information donné. Le codage et la compression des données peuvent réduire considérablement la taille des données. Il s'agit du processus de codage, de restructuration ou de modification des données pour en réduire la taille. Essentiellement, il s'agit de recodage de l'information en utilisant moins d'octets que la représentation originale.

Sous-échantillonnage : Le sous-échantillonnage est le processus qui consiste à réduire le nombre d'échantillons dans un ensemble de données en supprimant certains points de données. Le processus est souvent utilisé pour réduire la quantité de données qui doivent être traitées et pour simplifier l'analyse. Le sous-échantillonnage peut être effectué de diverses façons, notamment par la sélection aléatoire d'un sous-ensemble de points de données, l'utilisation d'un algorithme particulier pour sélectionner les points de données ou l'utilisation d'une fréquence d'échantillonnage précise pour réduire les données. Si la politique de conservation des données est établie à un an, il est possible d'échantillonner les données de la façon suivante.

  • Conservation : sept jours, pas d'échantillonnage
  • Conservation : 30 jours, sous-échantillonnage jusqu'à une résolution d'une minute
  • Rétention : un an, sous-échantillonnage à une résolution d'une heure

Système d'alerte

Bien qu'un système de surveillance soit très utile pour l'interprétation et l'examen proactifs, l'un des principaux avantages d'un système de surveillance complet est que les administrateurs peuvent être déconnectés du système. Les alertes permettent de définir des situations à gérer activement tout en s'appuyant sur la surveillance passive des logiciels pour surveiller l'évolution des conditions.

Le flux d'alerte fonctionne comme suit :

  1. Charger les fichiers de configuration sur les serveurs cache. Les règles sont définies comme des fichiers de configuration sur le disque, comme l'indique la figure 7.

Figure 7 : Système d'alerte

Figure 7 : Système d'alerte
Figure 7 : Système d'alerte

Les fichiers de configuration bruts sont mis en cache et transmis au gestionnaire d'alertes. Le gestionnaire d'alertes transmet ces fichiers à Kafka qui sont ensuite utilisés par les consommateurs d'alertes, y compris les courriels, les messages textes, PagerDuty et les points terminaux HTTP.

  1. Fichiers de configutation des règles
    1. Envoi au Cache
  2. Cache
    1. Envoi au Gestionnaire d’alertes
  3. Gestionnaire d’alertes
    1. Retour au Cache
    2. Envoi au Service de requêtes
    3. Lateral au Consommateur de l’alerte
    4. Envoi au Kafka
  4. Service de requêtes
    1. Retour au Consommateur de l’alerte
  5. Consommateur de l’alerte
    1. Retour au Gestionnaire d’alertes
  6. Kafka
    1. Envoi au Consommateur de l’alerte
  7. Consommateur de l’alerte
    1. Envoi au Courriel
    2. Envoi au Message texte
    3. Envoi au PagerDuty
    4. Envoi au Points terminaux HTTPS
  8. Courriel
  9. Message texte
  10. PagerDuty
  11. Points terminaux HTTPS
  1. Le gestionnaire d'alertes récupère les configurations relatives aux alertes à partir du cache.
  2. Sur la base des règles de configuration, le gestionnaire d'alertes appelle le service de requêtes à un intervalle prédéfini. Si la valeur dépasse le seuil, un événement d'alerte est créé. Le gestionnaire d'alertes a les responsabilités suivantes :
    1. Filtrer et fusionner les alertes, et éliminer les dédoublements. Voici un exemple d'alertes fusionnées qui sont signalées en une seule alerte dans un court délai.

Figure 8 : Alertes fusionnées

Figure 8 : Alertes fusionnées
Figure 8 : Alertes fusionnées

Fusion d'alertes par rapport aux différents événements.

  1. Événement 1, Occurence 1, disk usage > 90%
    1. Envoi au Fusion
  2. Événement 2, Occurence 1, disk usage > 90%
    1. Envoi au Fusion
  3. Événement 3, Occurence 1, disk usage > 90%
    1. Envoi au Fusion
  4. Fusion
    1. Envoi à l'1 alerte concernant l’occurrence 1
  5. 1 alerte concernant l'occurrence 1
  1. Contrôle de l'accès – pour éviter les erreurs humaines et assurer la sécurité du système, il est essentiel de limiter l'accès à certaines opérations de gestion des alertes aux personnes autorisées seulement.
  2. Réessayer – le gestionnaire d'alertes vérifie les états d'alerte et s'assure qu'une notification est envoyée au moins une fois.
  1. La base de stockage d'alertes est une base de données ayant une valeur essentielle comme Cassandra qui maintient l'état de toutes les alertes (active, en attente, déclenchée, résolue). Cela permet de s'assurer qu'une notification est envoyée au moins une fois.
  2. Les alertes admissibles sont insérées dans un système de messagerie et de mise en file d'attente comme Kafka.
  3. Les consommateurs d'alertes extraient les événements d'alerte à partir du système de messagerie et de mise en file d'attente.
  4. Les consommateurs d'alertes traitent les événements d'alerte à partir du système de messagerie et de mise en file d'attente, et envoient des notifications par différents canaux, comme le courrier électronique, la messagerie texte, PagerDuty ou les points terminaux HTTP.

Système de visualisation

Le système de visualisation est créé au-dessus la couche de données. Les mesures peuvent être présentées dans le tableau de bord des mesures sur diverses échelles de temps, et les alertes peuvent être affichées dans le tableau de bord. Un système de visualisation de haute qualité est difficile à concevoir. Il y a de bons arguments en faveur d'un système standard. Par exemple, Grafana peut être un très bon système à cette fin.

Récapitulation

Dans le présent article, nous avons discuté de la conception d'un système d'alerte et de surveillance des mesures. De façon générale, nous avons parlé de la collecte de données, de la base de données chronologiques, des alertes et de la visualisation. Nous nous sommes également penchés sur certaines des techniques et des composantes importantes, notamment :

  • Le modèle de collecte par extraction ou par diffusion pour les données relatives aux mesures.
  • L'utilisation de Kafka pour ajuster le système.
  • Le choix de la bonne base de données chronologiques.
  • Le recours au sous-échantillonnage pour réduire la taille des données.
  • Les options de conception ou d'achat en ce qui a trait aux systèmes d'alerte et de visualisation.

Nous avons procédé à quelques itérations pour affiner le diagramme, et notre conception finale ressemble à ceci :

Figure 9 : Conception finale

Figure 9 : Conception finale
Figure 9 : Conception finale

Conception affinée du système d'alerte et de surveillance des mesures

  1. Source des mesures
    1. Envoi au Système de collecte des mesures
  2. Système de collecte des mesures
    1. Envoi au Kakfa
  3. Kafka
    1. Envoi au Consommateur
  4. Consommateur
    1. Envoi au Bases de données chronologiques
  5. Bases de données chronologiques
    1. Retour au Services de requêtes
  6. Services de requêtes
    1. Retour au Système d'alerte (Envoi de requêtes)
    2. Retour au Système de visualisation (Envoi de requêtes)
  7. Système de visualisation
    1. Envoi au Services de requêtes
  8. Système d’alerte
    1. Envoi au Courriel
    2. Envoi au Message texte
    3. Envoi au PagerDuty
    4. Envoi au Points terminaux HTTPS
  9. Courriel
  10. Message texte
  11. PagerDuty
  12. Points terminaux HTTPS

En conclusion, la conception d'un système d'alerte et de surveillance des mesures est une étape cruciale pour assurer la santé et le rendement de tout système ou application. En sélectionnant soigneusement les mesures clés pour la surveillance, la collecte et le stockage des données avec exactitude, en établissant des alertes et des notifications efficaces et en examinant et en améliorant régulièrement le système, il est possible de créer un système robuste et fiable qui peut aider à cerner et à résoudre les problèmes potentiels avant qu'ils ne deviennent critiques.

Rencontre avec le scientifique des données

Inscrivez-vous à la présentation Rencontre avec le scientifique des données

Si vous avez des questions à propos de mon article ou si vous souhaitez en discuter davantage, je vous invite à une Rencontre avec le scientifique des données, un événement au cours duquel les auteurs rencontrent les lecteurs, présentent leur sujet et discutent de leurs résultats.

Jeudi, le 16 février
De 14 00 h à 15 00 h, HE
MS Teams – le lien sera fourni aux participants par courriel

Inscrivez-vous à la présentation Rencontre avec le scientifique des données.
À bientôt!

Abonnez-vous au bulletin d'information du Réseau de la science des données pour la fonction publique fédérale pour rester au fait des dernières nouvelles de la science des données.

Ressources additionnelles

  1. Datadog (en anglais seulement)
  2. Splunk (en anglais seulement)
  3. PagerDuty (en anglais seulement)
  4. Elastic stack (en anglais seulement)
  5. Dapper, a Large-Scale Distributed Systems Tracing Infrastructure (en anglais seulement)
  6. Distributed Systems Tracing with Zipkin (en anglais seulement)
  7. Prometheus (en anglais seulement)
  8. OpenTSDB-A Distributed, Scalable Monitoring System (en anglais seulement)
  9. Data model (en anglais seulement)
  10. MySQL (en anglais seulement)
  11. Schema design for time-series data | Cloud Bigtable Documentation (en anglais seulement)
  12. MetricsDB (en anglais seulement)
  13. Amazon Timestream (en anglais seulement)
  14. DB-Engines Ranking of time-series DBMS (en anglais seulement)
  15. InfluxDB (en anglais seulement)
  16. etcd (en anglais seulement)
  17. Service Discovery with Zookeeper (en anglais seulement)
  18. Amazon CloudWatch (en anglais seulement)
  19. Graphite (en anglais seulement)
  20. Push vs. Pull (en anglais seulement)
  21. Pull doesn't scale or does it? (en anglais seulement)
  22. Monitoring Architecture (en anglais seulement)
  23. Push vs. Pull in Monitoring Systems (en anglais seulement)
Date de modification :

Pallier les lacunes dans les données pour l'entraînement d'un algorithme d'apprentissage automatique à l'aide d'une application fondée sur l'approche participative généralisée

Par : Chatana Mandava et Nikhil Widhani, Statistique Canada

Introduction

La collecte de données par approche participative est un processus en ligne selon lequel une entreprise ou une organisation sollicite la contribution d'un grand groupe de personnes, que ce soit pour des idées, du contenu, des services ou du financement. Cette méthode permet aux entreprises de tirer parti du savoir collectif et de la créativité de personnes qui peuvent ne pas avoir de lien direct avec elles. Elle leur permet également d'accéder à des ressources auxquelles elles n'auraient pas accès autrement, comme de nouvelles technologies ou des compétences qui existent seulement à l'extérieur de leur organisation.

Dans le cadre de sa modernisation, Statistique Canada a adopté la collecte par approche participative comme méthode de pointe pour recueillir d'importantes données à des fins statistiques. Depuis, l'organisme a mis en œuvre de multiples projets de collecte par approche participative, dont les suivants.

  • Le projet pilote d'approche participative OpenStreetMap (OSM) — Ce projet pilote de collecte par approche participative a permis de recueillir des renseignements géographiques grâce à l'intégration des empreintes d'immeubles dans la région d'Ottawa (Ontario) et de Gatineau (Québec). Il a contribué au lancement de l'initiative Bâtir le Canada 2020, qui vise à cartographier tous les immeubles du Canada dans OMS d'ici 2020.
  • Le projet d'approche participative sur la COVID-19 — Dans le cadre de ce projet, un fichier de microdonnées à grande diffusion a été diffusé qui comprend des renseignements recueillis au moyen de questionnaires et qui peuvent servir à analyser les répercussions de la COVID-19 sur les expériences de discrimination des Canadiens, leur sentiment d'appartenance, leur confiance à l'égard des institutions et leur accès aux services de soins de santé. Ce produit est accessible au moyen du Service de transfert électronique de fichiers de Statistique Canada (voir : Approche participative : répercussions de la COVID-19 sur l'expérience de la discrimination des Canadiens fichier de microdonnées à grande diffusion)
  • La plateforme de collecte par approche participative StatsCannabis — Statistique Canada a entrepris ce projet novateur pour recueillir auprès des consommateurs de cannabis des renseignements au sujet de leur plus récent achat de cannabis, y compris sur le montant payé, la qualité du produit, l'emplacement et la raison de l'utilisation. Des questions ont également été posées sur la fréquence de consommation du cannabis et la quantité consommée en moyenne chaque mois (voir : Approche participative - Cannabis). Cette initiative est encore utilisée pour recueillir des renseignements sur un marché relativement nouveau et aide à surveiller les prix d'une manière confidentielle et non intrusive.

Au sein de Statistique Canada et dans d'autres organisations, on constate une demande croissante pour des données obtenues auprès de sources de rechange, notamment dans le cadre de projets de collecte par approche participative. La Division de la science des données de Statistique Canada a récemment mis sur pied un projet de validation de principe, en collaboration avec le Centre des projets spéciaux sur les entreprises (CPSE) et Nutrition Nord Canada, lequel a mené à la création d'un projet de collecte par approche participative des données de reçus d'épicerie dans les communautés autochtones du Nord du Canada, à l'aide de la reconnaissance optique de caractères (ROC). Dans le cadre de ce projet, des images des reçus d'épicerie sont recueillies, et des variables clés en sont extraites (nom du produit, prix, subvention) à l'aide de méthodes de ROC. De plus, le Centre de données sur la santé de la population de Statistique Canada a mené un projet de validation de principe, le projet Modélisation du contexte à l'aide de transformateurs : reconnaissance des aliments, pour explorer l'utilisation d'images d'aliments pour recueillir des données sur la nutrition, y compris sur la taille des portions et le nombre de calories consommées. Ces deux projets ont comme caractéristique commune la collecte de données par approche participative, mais les données recueillies pour chacun sont différentes. Dans de telles situations, la création d'une application généralisée aidera Statistique Canada à recueillir des données selon différents formats. Cette application unique pourra être réutilisée pour la collecte de données par approche participative dans le cadre de multiples projets, ce qui réduira le fardeau lié à la création de multiples applications pour la collecte de renseignements.

Ces projets exploratoires nous ont donné l'idée d'étendre les cas d'utilisation en appliquant les méthodes d'approche participative à la collecte de divers formats de données non structurées (p. ex. texte, PDF, images satellitaires) en vue de les transformer en données structurées au moyen de techniques d'apprentissage automatique.

Motivation et proposition de valeur

La motivation derrière l'investissement dans une telle application est de créer un guichet unique qui fournira aux organisations gouvernementales l'infrastructure minimale requise pour la réalisation de projets de collecte par approche participative. Cela permettra non seulement de générer un nouveau flux de collecte de données, mais aussi d'explorer diverses données au moyen de solutions non traditionnelles. Le bassin de données pourra servir à un plus grand nombre de cas d'utilisation lorsque les sources des données sont limitées, il accroîtra le rendement de nos modèles d'apprentissage automatique et il en améliorera l'évolutivité.

L'intérêt d'élaborer une application d'approche participative est double. Premièrement, il s'agira d'un outil efficace pour la collecte de données à partir d'un échantillon de grande taille, ce qui permettra de générer plus rapidement et à un coût moindre des statistiques fiables sur divers sujets, comme sur les tendances démographiques ou le développement économique. Deuxièmement, l'application pourrait être utilisée pour faciliter la collaboration entre le public et le milieu de la recherche, en favorisant le partage de connaissances et d'expériences pour mieux comprendre les enjeux importants au pays. En tirant parti du savoir collectif des Canadiennes et Canadiens de tous les groupes démographiques, Statistique Canada aurait accès à de précieux renseignements qui peuvent éclairer la prise de décision et améliorer les services publics.

Architecture

Diagramme du flux de données de l'application de collecte par approche participative
Figure 1 : Diagramme du flux de données de l'application de collecte par approche participative

Un survol de haut niveau des fonctionnalités de base et du flux de données de l'application.

  1. Base de données, Stockages Minio, Authentification de l'utilisateur, Élément dorsal
    1. envoi à l'Analyse des données, téléchargement de données au format structuré CSV, extraction pour l'apprentissage automatique
  2. Analyse des données, téléchargement de données au format structuré CSV, extraction pour l'apprentissage automatique
    1. retour au Base de données, Stockages Minio, Authentification de l'utilisateur, Élément dorsal
    2. envoi à l'Administrateur de données 1
    3. envoi à l'Administrateur de données 2
    4. envoi à l'Administrateur de données 3
  3. Administrateur de données 1
    1. retour à l'Analyse des données, téléchargement de données au format structuré CSV, extraction pour l'apprentissage automatique
    2. envoi à l'Approche participative 1
  4. Administrateur de données 2
    1. retour à l'Analyse des données, téléchargement de données au format structuré CSV, extraction pour l'apprentissage automatique
    2. envoi à l'Approche participative 2
  5. Administrateur de données 3
    1. retour à l'Analyse des données, téléchargement de données au format structuré CSV, extraction pour l'apprentissage automatique
    2. envoi à l'Approche participative 3
  6. Approche participative 1
    1. retour à l'Administrateur de données 1
    2. envoi à l'Utilisateurs
  7. Approche participative 2
    1. retour à l'Administrateur de données 2
    2. envoi à l'Utilisateurs
  8. Approche participative 3
    1. retour à l'Administrateur de données 3
    2. envoi à l'Utilisateurs
  9. Utilisateurs
    1. retour à l'Approche participative 1
    2. retour à l'Approche participative 2
    3. retour à l'Approche participative 3

La figure 1 peut être projetée dans trois sections de base :

Élément dorsal

Les tableaux ont été enregistrés dans une base de données SQLite, un système de gestion de base de données relationnel (SGBDR) contenu dans une bibliothèque C. Contrairement à d'autres systèmes de bases de données, le SGBDR n'a pas besoin d'être configuré ou installé pour être utilisé. Les données y sont stockées dans des tableaux comparables à ceux d'autres SGBDR, comme MySWL ou PostgreSQL, mais il nécessite moins de mémoire et d'espace sur le disque dur que ces derniers. Les bases de données SQLite peuvent être utilisées pour des applications allant de petits projets à un seul utilisateur à de grandes applications Web distribuées avec des millions d'utilisateurs simultanés. Les administrateurs des données obtenues par approche participative peuvent y accéder dans un format structuré. En outre, l'application authentifiera certains utilisateurs parmi les administrateurs ou les développeurs de l'application pour en gérer la sécurité et les fonctionnalités. Voici le schéma utilisé pour ce projet :

Schéma utilisé pour une application de collecte par approche participative
Figure 2 : Schéma utilisé pour une application de collecte par approche participative

Il y a trois tableaux dans la base de données. Le premier est le tableau des utilisateurs où sont conservés les renseignements des utilisateurs à des fins d'authentification. Il s'agit d'un tableau temporaire qui sera utilisé pendant la phase d'élaboration pour vérifier l'authentification mais, dans l'avenir, il sera remplacé par le répertoire actif d'Azure de Statistique Canada. Le deuxième tableau est celui de la collecte par approche participative où seront conservés le nom de l'application d'approche participative, et les données du questionnaire qui comprendront toutes les questions et les renseignements de l'interface utilisateur. Il sera apparié à un utilisateur ayant des droits d'administrateur de données. Enfin, le troisième tableau est celui des réponses. Il contiendra toutes les soumissions et réponses de l'utilisateur participant.

  • UTILISATEURS
  • ID_de_l'utilisateur : BIGINT (20)
  • Administrateur : BOOLEAN
  • Prénom : VARCHAR(50)
  • Nom_de_famille : VARCHAR(50)
  • ID_du_courriel : VARCHAR(50)
  • Compte_créé_le : DATEHEURE
  • APPROCHE PARTICIPATIVE
  • ID_du_projet_d'approche_participative : BIGINT(20)
  • Nom_du_projet_d'approche participative : VARCHAR(20)
  • Contenu_du_questionnaire : JSON
  • ID_de_l'utilisateur : BIGINT(20)
  • RÉPONSES
  • ID_de_l'utilisateur : BIGINT(20)
  • Réponse : TEXTE
  • Créé_le : DATEHEURE
  • Mis_à_jour_le : DATEHEURE
  • État : TEXTE

Générateur de projets d'approche participative

Le générateur de projets d'approche participative est une fonction qui comprend les interfaces existantes avec des modèles de conception qui peuvent être utilisés pour générer des applications de collecte par approche participative selon les cas d'utilisation. Les administrateurs de données peuvent utiliser le générateur de projets d'approche participative à partir de l'application elle-même pour générer des questionnaires sans écrire de code. Ces modèles personnalisés peuvent alors être hébergés et configurés dans l'application par les administrateurs de données. L'idée est de permettre aux utilisateurs de créer et d'héberger de nombreuses pages de collecte par approche participative à l'aide d'une application commune.

Élément frontal

La dernière fonctionnalité de l'application est l'élément frontal. Il s'agit de l'interface d'interaction entre l'utilisateur et le système. Il comprend les éléments graphiques tels que les boutons, les images, les menus et les questionnaires qui permettent aux utilisateurs de réaliser les tâches dans l'application. L'élément frontal offre également un repère visuel pour guider les utilisateurs dans leurs tâches. L'objectif d'un élément frontal bien conçu est d'aider les utilisateurs à comprendre la manière dont ils peuvent utiliser l'application et atteindre rapidement leurs objectifs. Par l'intermédiaire du système frontal, les utilisateurs finaux qui contribueront à une ou plusieurs applications d'approche participative pourront soumettre des données utiles non structurées aux fins d'analyse plus poussée.

Page d'accueil de l'application
Figure 3 : Page d'accueil de l'application.

La page d'accueil de l'application montre les différents types de projets d'approche participative qui ont été créés dans celle-ci. On y retrouve l'approche participative pour les aliments, les reçus d'épicerie, les images satellitaires, les cultures et les fichiers PDF, ainsi que la mise à l'essai de l'approche participative.

Texte de l'image

Tous les projets d'approche participative

  1. Approche participative pour les aliments
  2. Approche participative pour les reçus
  3. Approche participative pour les images satellitaires
  4. Approche participative pour les cultures
  5. Approche participative pour les PDF
  6. Mise à l'essai de l'approche participative
Page du générateur de projets d'approche participative
Figure 4 : Page du générateur de projets d'approche participative.

Cette page de l'application permet aux clients de créer un questionnaire pour la collecte de données par approche participative, grâce à la fonction glisser-déposer. Du côté droit de la fenêtre figure la liste des différentes composantes de l'application, lesquelles peuvent être glissées vers la gauche et réarrangées selon le format du questionnaire d'approche participative. Les étiquettes peuvent être modifiées pour mieux décrire les données qui seront recueillies au moyen du champ en question.

Page de sortie du projet d'approche participative
Figure 5 : Page de sortie du projet d'approche participative

Une fois le questionnaire créé au moyen du générateur de projet d'approche participative, un lien sera créé qui pourra être utilisé par les participants au projet pour transmettre leurs données. L'image ci-dessus correspond à ce que les utilisateurs verraient comme page de sortie de l'approche participative pour les cultures. L'application offre l'option d'indiquer le nom de la culture ou de télécharger une image de la culture avant de cliquer sur Soumettre.

Défis potentiels

  • Sécurité : Une des plus grandes difficultés rencontrées lors de l'élaboration d'une application d'approche participative généralisée est d'assurer la sécurité de toutes les données et interactions des utilisateurs. Cela comprend la protection des renseignements personnels des utilisateurs.
  • Convivialité de l'interface utilisateur (IU) : Pour toute application d'approche participative, il est essentiel que l'interface utilisateur soit intuitive et attrayante. Or il peut être difficile de créer une IU attrayante pour les utilisateurs nouveaux et existants. Les concepteurs doivent s'assurer que les fonctionnalités sont faciles à utiliser, tout en veillant à ce qu'elles soient suffisamment puissantes et souples pour répondre à leurs besoins.
  • Mesures de contrôle de la qualité : Il est important de mettre en œuvre des mesures de contrôle de la qualité pour s'assurer que seuls les tâches et résultats de grande qualité sont diffusés. Ces mesures comprennent la vérification croisée des données soumises par les utilisateurs en temps réel (vérification des normes de qualité des images, de la grammaire, de la nature délicate des données, de l'extension des fichiers téléchargés, etc.). Comme cette application généralisée est utilisée pour recueillir des données en multiples formats, il faut développer un algorithme extrêmement rapide qui peut effectuer une vérification croisée des mesures de qualité susmentionnées et indiquer à l'utilisateur que les résultats téléchargés sont jugés acceptables au contrôle de qualité.

Conclusions

Nous avons expliqué comment il est possible de créer une application unique aux fins de la collecte par approche participative de différents types de données structurées et non structurées. Une telle application permettrait à une organisation d'explorer des données provenant de sources de rechange, et d'utiliser des méthodes novatrices pour recueillir les données et mettre au point de nouvelles méthodes. Elle nous permettrait également de mobiliser le public pour nous aider à mieux comprendre les difficultés en jeu aux étapes de la planification ou de la conception de nouveaux projets. La collecte par approche participative est une méthode moderne de collecte de données auprès de personnes qui souhaitent contribuer aux changements et participer à l'amélioration des statistiques. En combinant cette méthode avec les technologies de l'apprentissage automatique, nous pouvons créer de nouvelles solutions qui n'auraient pas été possibles auparavant, compte tenu du coût des données et de leurs limitations.

Rencontre avec le scientifique des données

Inscrivez-vous à la présentation Rencontre avec le scientifique des données

Si vous avez des questions à propos de mon article ou si vous souhaitez en discuter davantage, je vous invite à une Rencontre avec le scientifique des données, un événement au cours duquel les auteurs rencontrent les lecteurs, présentent leur sujet et discutent de leurs résultats.

Jeudi, 16 février
De 14 h à 15 h, HE
MS Teams – le lien sera fourni aux participants par courriel

Inscrivez-vous à la présentation Rencontre avec le scientifique des données.
À bientôt!

Abonnez-vous au bulletin d'information du Réseau de la science des données pour la fonction publique fédérale pour rester au fait des dernières nouvelles de la science des données.

RÉFÉRENCES

Statistics Canada. (2008). Approche participative : répercussions de la COVID-19 sur l'expérience de la discrimination des Canadiens fichier de microdonnées à grande diffusion, (site consulté le 6 janvier 2023).

Statistics Canada. (s.d.-a). Approche participative – Cannabis, version mise à jour le 22 janvier 2020, (site consulté le 6 janvier 2023).

Statistics Canada. (s.d.-b). Stratégie des données de Statistique Canada, version mise à jour le 16 août 2022, (site consulté le 6 janvier 2023).

Date de modification :

Célébrer les femmes et les filles dans le domaine des sciences : entrevue avec Mme Sevgui Erman (PH. D.)

Par : Ainsley Sullivan et Nashveen Mendes, Statistique Canada; Sevgui Erman, Conseil national de recherches Canada

Introduction

En 2030, les Nations Unies doivent présenter les réalisations relatives aux 17 objectifs de développement durable, dont l'égalité entre les sexes fait partie. Le 11 février marque la Journée internationale des femmes et des filles de science visant à promouvoir l'égalité entre les genres dans le domaine des sciences, des technologies, du génie et des mathématiques, et l'élimination des stéréotypes fondés sur le genre. Dans le cadre de la promotion de cette journée particulière, nous nous sommes entretenus avec Mme Sevgui Erman, femme éminente dans le domaine de la science des données, dont la carrière couvre plusieurs secteurs du domaine de la science des données, des technologies numériques et de l'analytique.

Mme Sevgui Erman est entrée au Conseil national de recherches Canada (CNRC) au début de 2022 et dirige des programmes et services de recherche dans les domaines de la vision artificielle, du traitement du langage naturel, de l'analyse avancée et de l'informatique quantique, entre autres. Son objectif est de faire progresser la recherche et l'innovation au Canada, grâce à l'accélération de la découverte, la promotion de la modélisation et des jumeaux numériques, de l'analyse de textes multilingues, de la sécurité et de la protection de la vie privée. Avant d'entrer au CNRC, Mme Erman était scientifique en chef des données et directrice principale de la Division de la science des données à Statistique Canada. Elle a dirigé la Stratégie de la science des données de l'organisme et lancé le Réseau de la science des données pour la fonction publique fédérale qui, à ce jour, compte plus de 3 000 membres. Mme Erman est titulaire d'un doctorat de l'université Paris-Sud en traitement de signal et commande des systèmes, deux domaines étroitement liés à l'intelligence artificielle (IA).

Madame Erman, comment en êtes-vous venue à vous intéresser à la science des données et qu'est-ce qui a suscité votre passion pour ce domaine?

La science des données a toujours été présente tôt dans ma carrière et mes études. J'ai souvent souhaité optimiser des processus et des produits grâce aux données et à la technologie. Mon doctorat, en particulier, portait sur la conception technique robuste. J'ai eu recours à la modélisation pour relever les paramètres de conception menant à l'optimisation des performances d'un produit en atténuant les pires dégradations de performances dues à des facteurs environnementaux, de fabrication ou autres. Aujourd'hui, en principe, nous appliquons une approche similaire aux découvertes de nouveaux matériaux grâce à l'IA, en recherchant avec efficacité l'espace des paramètres permettant de trouver une nouvelle conception optimale.

En 2005, j'ai obtenu un brevet en télécommunications optiques. Je suis particulièrement attachée à ce brevet, car cet algorithme a permis une amélioration substantielle des performances de système, accroissant ainsi la portée de la transmission du signal. Cet algorithme traitait des mégadonnées en temps réel et a été mis en œuvre sur plusieurs plateformes Nortel Optical Metro à l'époque. Cet événement a éveillé ma passion.

À StatCan, je me souviens des défis liés à la manipulation des données de lecteurs optiques. En 2017, StatCan composait avec des dizaines de millions d'enregistrements à traiter chaque semaine. Nous avons pu régler cet enjeu en ayant recours à l'IA. Je me souviens également de l'enthousiasme lors de la conférence C2 à Montréal en juin 2017, où j'ai pris conscience de l'émergence de l'écosystème dynamique de l'IA au Canada. La science des données était en passe de devenir un outil puissant. Récemment, j'ai collaboré à la rédaction d'un document publié dans le Harvard Data Science Review, qui décrit la façon dont la science des données permet l'innovation et soutient l'élaboration de produits statistiques pertinents et de confiance.

Je suis toujours passionnée par le travail dans ce domaine. La science des données demeure un domaine très dynamique et en constante évolution. Le développement récent du modèle ChatGPT d'OpenAI illustre la croissance de ce secteur et démontre à quel point il est formidable d'être dans une époque où nous pouvons interagir avec de puissantes technologies et contribuer à des solutions dans le monde réel.

Selon vous, quelles sont les réussites du gouvernement du Canada dans le domaine de la science des données? Quels sont les principaux obstacles au sein des ministères empêchant la progression de leurs capacités?

Je pense qu'une des réussites est de faire progresser la science avec détermination. Tout au long de la pandémie, la méthodologie de la science des données a soutenu la fourniture de statistiques actuelles et de grande qualité. Collectivement, notre travail en science des données se concentre sur la résolution de problèmes concrets et l'atteinte de résultats pratiques. À StatCan, la science des données sert à soutenir la création de nouveaux produits et à permettre une prestation de services efficace grâce à l'automatisation. À titre d'exemple, extraire des renseignements de documents en format PDF et en d'autres formats peut prendre beaucoup de temps et StatCan a recours à des techniques de science des données pour automatiser ce processus d'extraction de renseignements. Un autre exemple est l'utilisation de la science des données en construction et en agriculture, afin de détecter le début de la construction de bâtiments ou de déterminer les superficies des serres à partir de l'imagerie satellite ou cartographique. L'objectif à long terme dans ces cas est de remplacer, en partie, une enquête existante et de réduire le fardeau de réponse.

Au CNRC, la science des données sert à contribuer à de nouvelles connaissances et propriétés intellectuelles, à la croissance économique et à un avenir plus sain pour le Canada. De nouvelles méthodes sont utilisées, par exemple, en bioinformatique pour la découverte de médicaments qui interrompent la croissance du cancer ou l'élaboration de diagnostics présymptomatiques de maladies liées à l'âge, comme la démence. La vision artificielle sert à la surveillance automatique de risques en matière d'ergonomie et de fatigue dans le secteur de la fabrication de pointe, ainsi que l'imagerie en temps réel dans le cadre de l'impression 3D de la fabrication additive volumétrique.

En matière d'obstacles, j'estime qu'il faut en faire plus pour accéder aux talents. Du fait de l'expansion de l'IA dans l'ensemble des secteurs d'activités, l'accès aux scientifiques des données et aux ingénieurs de données reste limité.

Il ne s'agit pas d'un blocage, mais d'un défi. Nous devons augmenter plus rapidement les rendements. Dans ce contexte, la collaboration est primordiale; nous ne pouvons pas faire cela seuls. Nous devons travailler avec d'autres innovateurs, le milieu universitaire, les entreprises et les partenaires internationaux. Au CNRC, par exemple, cela se fait par l'intermédiaire de réseaux pancanadiens portant sur des programmes de défis et par l'entremise de centres de collaboration dans les universités canadiennes. Nous travaillons de concert pour trouver des solutions créatives, pertinentes et durables en vue de résoudre les défis canadiens.

Il est également important de se concentrer vivement sur l'infrastructure de calcul, afin d'assurer de bons résultats au Canada. Les organisations continuent de progresser sur ce front, comme dans les domaines du développement de capacités infonuagiques et des grappes sur site. Nous avons besoin d'une infrastructure évolutive qui puisse soutenir des collaborations multipartites entre organisations.

Image de Sevgui Erman
Description : Image de Sevgui Erman

Texte dans l'image : sortez de votre zone de confort. Cela est important, car cela vous pousse à apprendre et, surtout, à accroître votre contribution personnelle.

Sevgui Erman, Directrice exécutive, Centre de recherche en technologies numériques, Conseil national de recherches Canada

En matière d'avenir, quelles occasions ou quels défis éventuels voyez-vous dans le domaine de la science des données au Canada?

Nous vivons une période palpitante et des occasions existent pour créer un meilleur avenir pour l'humanité. Dans le cas de la préservation de la santé de l'océan, par exemple, nous pouvons utiliser l'IA pour modéliser la contamination par des éléments pathogènes ou la visionique pour protéger et suivre les baleines. Au Canada, nous avons la possibilité de tirer parti de la diversité et de fournir aux organisations des perspectives uniques et des solutions créatives. Les équipes de la science des données sont d'excellents exemples de groupes hétérogènes en raison de la nature multidisciplinaire du travail. J'en ai été témoin à StatCan et j'en suis également témoin au CNRC. En technologies numériques, par exemple, des chercheurs ayant une formation en physique ont recours aux méthodes de traitement des signaux pour les recherches en biologie des systèmes aux fins de conception de nouvelles molécules et de nouveaux médicaments. Notre travail en synthèse vocale de langues autochtones rassemble une équipe diversifiée comprenant des chercheurs de collectivités autochtones. Leurs résultats démontrent à quel point la diversité contribue à l'innovation. Je pense qu'il s'agit d'une approche gagnante lors de l'établissement d'équipes : mettre sur pied des équipes diversifiées dont les antécédents professionnels sont variés, tout comme les origines, les cultures et les genres, ainsi que les personnes vivant avec un handicap, qui peuvent trouver des réponses uniques à des problèmes complexes.

L'IA éthique doit être au centre de notre travail, afin de fournir des solutions n'entraînant aucune discrimination, mais réduisant les préjugés. Il est important que les scientifiques des données passent en revue les résultats selon divers angles, afin de cerner d'éventuels préjudices et garantir les avantages pour la population canadienne. La transparence et la responsabilité vont de pair. Au Canada, des progrès substantiels ont été réalisés grâce à la directive du Secrétariat du Conseil du Trésor sur la prise de décisions automatisées. Les lignes directrices de StatCan concernant la qualité et l'apprentissage automatique sont un excellent outil pour les praticiens des données. Le projet de loi 27 récemment déposé sur le plan de mise en œuvre de la Charte du numérique permet de faire progresser l'engagement du Canada en matière d'IA responsable. Au CNRC, nous mettons sur pied un programme visant à faire progresser davantage les méthodes de transparence et d'explication, ainsi que la recherche en technologies de protection de la vie privée qui permettent de travailler sur des sources de données de nature plus délicates.

Quel conseil donneriez-vous aux personnes souhaitant poursuivre une carrière en science des données?

Maintenez le facteur humain au centre de tout ce que vous faites, votre équipe, vos collègues, vos partenaires. C'est ce qui compte le plus. L'écosystème au sein duquel vous évoluez détermine l'incidence que vous pouvez avoir. Le travail d'équipe est essentiel. Je suis très reconnaissante des occasions dont j'ai pu profiter et je continue à travailler avec des équipes et des collègues talentueux, intelligents et incroyables qui s'engagent à faire progresser la science et à créer une incidence positive pour la société.

Je crois également que des conversations directes et honnêtes sont un élément clé de notre réussite. Rien n'est plus précieux qu'une discussion ouverte, dès le départ, sur les défis potentiels et les risques dans toute entreprise et tout travail en commun, afin de trouver des solutions utiles et de tirer parti des expériences antérieures et de générer de nouvelles idées.

Mon conseil aux femmes en particulier est que même si la science des données est un domaine majoritairement masculin, les femmes devraient tout de même s'y investir. Leurs diverses perspectives et expériences de vie contribuent à un environnement plus riche, générant de nouvelles idées et favorisant la créativité. Je pense que nous avons besoin de sensibiliser les femmes aux occasions qui existent pour elles et j'encourage les filles à poursuivre des carrières et à aller jusqu'au bout de leur intérêt dans le domaine des sciences, des technologies, du génie et des mathématiques.

Au fil des années, quelle grande leçon (personnelle, pédagogique ou professionnelle) vous vient en tête que vous pourriez transmettre à nos lecteurs?

J'aimerais vous faire part de deux leçons. La première, c'est de sortir de sa zone de confort. Cela est important, car cela vous pousse à apprendre et, surtout, à accroître votre contribution personnelle. On peut commencer par se servir d'un nouvel outil, travailler dans un nouveau domaine spécialisé, utiliser un nouvel algorithme. Ce sont toutes des occasions de croissance et des éléments essentiels pour travailler dans un environnement à rythme rapide. J'ai travaillé dans les secteurs public et privé ainsi que dans le milieu universitaire, dans les domaines des télécommunications, de la production statistique et des technologies de l'information. À chaque étape de ce parcours, j'étais ouverte à l'idée d'apprendre des choses différentes et j'ai pu réellement apporter une contribution.

Chacune de ces expériences a contribué à me façonner en tant que professionnelle et à développer mon style de leadership. Elles m'ont permis d'avoir une écoute empathique, d'être inclusive et de rechercher des solutions consensuelles.

La deuxième leçon, c'est d'être motivée, de prendre des risques et de les assumer. En fait, c'est ce que de nombreux chercheurs sont invités à faire tôt dans leur carrière, lorsqu'ils utilisent de nouvelles technologies et travaillent pour faire évoluer la science. Je recommande une publication qui m'a inspirée lors de la création de l'Accélérateur de la science des données en 2017 et qui s'intitule The Lean Startup par Eric Ries. Ce livre fournit des conseils pratiques pour une expérimentation scientifique rapide intégrée au cycle de vie du développement de produits, en partant du principe que l'on puisse créer une « jeune entreprise » dans toute organisation ou tout environnement.

Avez-vous des mots inspirants à transmettre aux jeunes scientifiques des données?

Je pense qu'il est important d'être reconnaissant pour les petites choses qui nous rendent heureux. Il nous revient de faire de la place pour ces moments dans nos vies. Il y a trois ans, j'ai reçu un diagnostic de cancer du sein, qui a été décelé tôt. J'ai profité d'un excellent soutien médical ainsi que d'un soutien formidable de mes collègues. J'avais aussi ma famille aimante à mes côtés et j'ai donc été reconnaissante qu'une telle expérience s'avère positive. Le cancer m'a fait voir le monde sous un autre angle et m'a permis, en fait, de me concentrer sur ce qui compte le plus. J'ai cessé de m'inquiéter à savoir si j'étais bien équilibrée sur tous les fronts. J'ai plutôt appris à me faire une idée précise de ce à quoi je voulais consacrer du temps. Mon conseil est d'avoir le courage de ne pas entrer dans un quelconque moule et d'accepter d'être « en déséquilibre ». Je recommande également le livre Off Balance de Matthew Kelly.

Voici donc mes mots d'encouragement pour les jeunes scientifiques des données. Quelle est votre passion? Qu'est-ce qui vous stimule et qu'est-ce qui vous fait vraiment rêver? Je vous encourage à rêver grand, car votre passion est votre carburant. Vous faites partie de notre avenir. Vous apportez une nouvelle énergie et votre travail permettra la livraison de projets qui feront progresser la science et l'innovation. Par conséquent, autorisez-vous à tout bousculer et à être « en déséquilibre ».

Conclusion

Depuis mars 2022, Mme Erman dirige les programmes de recherche en technologies numériques, en se concentrant sur l'accélération de la découverte scientifique et l'innovation dans les domaines de la santé, de la fabrication de pointe, de l'économie bleue et de l'informatique quantique. Mme Erman est enthousiaste à l'idée de continuer à collaborer avec ses collègues, alors qu'ils utilisent la science des données pour créer une incidence significative au Canada et dans le monde.

Abonnez-vous au bulletin d'information du Réseau de la science des données pour la fonction publique fédérale pour rester au fait des dernières nouvelles de la science des données.

Date de modification :

Modélisation du contexte à l'aide de transformateurs : reconnaissance des aliments

Par : Mohammadreza Dorkhah, Sayema Mashhadi et Shannon Lo, Statistique Canada

Introduction

Notre équipe de chercheurs de la Division de la science des données et du Centre de données sur la santé de la population (CDSP) de Statistique Canada a mené un projet de validation de principe permettant de distinguer des aliments dans des images et de chercher une autre façon de recueillir des données sur la nutrition.

Étant donné que ce projet était le premier du genre à Statistique Canada, les équipes qui ont participé à la création de cette validation de principe devaient utiliser exclusivement des ensembles de données d'images d'aliments accessibles au public. Par conséquent, nous avons constitué un ensemble de données définitif contenant des images et des étiquettes qui correspondaient aux aliments et aux boissons consommés par les Canadiens à partir de trois autres ensembles de données. L'ensemble de données qui en a résulté a servi à concevoir un modèle d'apprentissage profond de reconnaissance des aliments qui peut prédire 187 catégories différentes d'aliments ou de boissons et discerner plusieurs produits dans une seule image.

Le modèle d'apprentissage profond de reconnaissance des aliments s'appuie sur un transformateur de vision à la fine pointe de la technologie comme encodeur, appelé « transformateur de segmentation » (segmentation transformer, ou SETR), et un modèle image-texte multimodal pour la modélisation du contexte, appelé « module d'apprentissage de recettes » (Recipe Learning Module, ou ReLeM). Dans le cadre du projet, les membres de l'équipe du CDSP ont testé et vérifié manuellement le rendement des modèles SETR et ReLeM, que nous expliquerons plus loin dans le présent article.

Ensembles de données

Les trois ensembles de données publiques que nous avons utilisés pour concevoir notre ensemble de données définitif convenaient à notre objectif de segmentation sémantique au niveau des ingrédients pour les images d'aliments. Cependant, étant donné que chaque ensemble de données comporte un ensemble différent de catégories d'aliments, nous avons dû les mettre manuellement en correspondance avec des catégories dérivées d'un guide de nutrition (Valeur nutritive de quelques aliments usuels). Les figures 1, 2 et 3 montrent des exemples d'images et de leurs étiquettes pour chacun des trois ensembles de données. Les étiquettes sont des masques de segmentation d'images utilisés pour annoter chaque pixel et distinguer des éléments tels que l'eau, le pain et d'autres aliments.

FoodSeg103

  • 7,118 images (4,983 images d'entraînement, 2,135 images de validation
  • 102 catégories d'aliments
Exemple d'image et de résultat tirés de l'ensemble de données FoodSeg103
Figure 1 : Exemple d'image et de résultat tirés de l'ensemble de données FoodSeg103

Une image d'un gâteau et de fraises tranchées à gauche. L'image de sortie à droite représente la forme du gâteau et des fraises dans leurs propres couleurs.

Résultat tirés de l'ensemble de données FoodSeg103
Couleur Nom de Colour Catégorie initiale Guide de nutrition
L'arrière-plan de la cellule du tableau est coloré "Saumon clair" Saumon clair Gâteau Gâteau
L'arrière-plan de la cellule du tableau est coloré "Magenta" Magenta Fraise Fraise

UECFoodPIX

  • 10,000 images (9,000 images d'entraînement, 1,000 images de validation)
  • 102 catégories d'aliments
Exemple d'image et de résultat tirés de l'ensemble de données UECFoodPIX
Figure 2 : Exemple d'image et de résultat tirés de l'ensemble de données UECFoodPIX.

Une image d'aliments composée de saumon, d'une omelette, de riz, d'une soupe et d'autres aliments à gauche. L'image de sortie à droite représente les formes des images d'aliments dans leurs couleurs correspondantes.

Résultat tirés de l'ensemble de données FoodSeg103
Couleur Nom de Colour Catégorie initiale Guide de nutrition
L'arrière-plan de la cellule du tableau est coloré "Lime" Lime Autres Autres
L'arrière-plan de la cellule du tableau est coloré "Bleu royal" Bleu royal Riz mélangé Céréales, riz
L'arrière-plan de la cellule du tableau est coloré "Bleu ardoise" Bleu ardoise Soupe de miso Soupe
L'arrière-plan de la cellule du tableau est coloré "Bleu ardoise moyen" Bleu ardoise moyen Boisson Boisson
L'arrière-plan de la cellule du tableau est coloré "Brique de feu" Brique de feu Saumon grillé Poisson
L'arrière-plan de la cellule du tableau est coloré "Lime" Lime Autres Autres

MyFoodRepo

  • 58,157 images (54,392 images d'entraînement, 946 images de validation et 2,819 images d'essai)
  • 323 catégories d'aliments
  • Nous avons utilisé des techniques de raffinement pour pallier le problème lié aux masques grossiers.
Exemples d'images tirés de l'ensemble de données MyFoodRepo
Figure 3 : Exemples d'images tirés de l'ensemble de données MyFoodRepo.

Une image d'aliments composée de pâtes à la crème, garnies de persil et de tomates à gauche. Deux images de sortie à droite représentent les formes des images d'aliments dans leurs couleurs correspondantes, l'une pour le masque initial et l'autre pour le masque raffiné.

l'ensemble de données MyFoodRepo.
Couleur Nom de Colour Catégorie initiale Guide de nutrition
L'arrière-plan de la cellule du tableau est coloré "Bleu acier clair" Bleu acier clair Sauce à la crème Sauce
L'arrière-plan de la cellule du tableau est coloré "Violet" Violet Persil Persil
L'arrière-plan de la cellule du tableau est coloré "Saumon foncé" Saumon foncé Tomate Tomate

Certaines catégories se chevauchent dans chaque ensemble de données étiquetées et ont été combinées en une seule dans notre ensemble de données définitif. Après la suppression de quelques étiquettes en raison du nombre insuffisant d'exemples d'images et après le regroupement d'autres étiquettes afin d'obtenir des groupes cohérents de types d'aliments similaires, 187 types différents d'aliments et de boissons ont été établis au total.

Segmentation d'images

La segmentation d'images constitue la base de nombreuses tâches de vision par ordinateur en aval, comme la détection d'objets et la classification d'images. C'est une méthode qui consiste à diviser une image en sous-groupes. Cette division s'effectue habituellement en fonction du contour ou des limites visibles des objets dans une image afin d'en réduire la complexité. La segmentation peut également signifier l'attribution d'étiquettes à chaque pixel d'une image dans le but de définir les éléments importants. La segmentation d'images a plusieurs utilités dans les domaines des véhicules autonomes, de l'analyse d'images médicales et d'images satellites, de la vidéosurveillance et d'autres tâches de reconnaissance et de détection. La segmentation d'images est également utilisée en imagerie médicale, comme l'indique un récent article du Réseau de la science des données intitulé « Segmentation d'images en imagerie médicale ». Les modèles de segmentation d'images basés sur un réseau neuronal contiennent presque toujours un encodeur et un décodeur. L'encodeur sert à l'apprentissage de la représentation des caractéristiques, et le décodeur sert à la classification en pixels des représentations des caractéristiques.
Trois grands types de techniques de segmentation d'images sont utilisés couramment dans le domaine de la vision par ordinateur :

  • Segmentation sémantique : Elle permet d'associer chaque pixel d'une image à une étiquette de catégorie, comme une voiture, un arbre, un fruit ou une personne. Elle traite plusieurs objets de la même catégorie comme une seule entité.
  • Segmentation d'instance : Elle ne permet pas d'associer chaque pixel d'une image à une étiquette de catégorie. Elle traite plusieurs objets de la même catégorie en tant qu'instances individuelles distinctes, sans nécessairement reconnaître les instances individuelles. Par exemple, la voiture 1 et la voiture 2 sont représentées par des couleurs différentes dans une image.
  • Segmentation panoptique : Elle permet de combiner les concepts de segmentation sémantique et de segmentation d'instance, et d'attribuer deux étiquettes à chaque pixel d'une image, à savoir l'étiquette sémantique et l'identificateur d'instance.
Exemple de segmentation sémantique, de segmentation d'instance et de segmentation panoptique à partir d'une seule image d'entrée.
Figure 4 : Exemple de segmentation sémantique, de segmentation d'instance et de segmentation panoptique à partir d'une seule image d'entrée.

Quatre images représentant une image d'entrée et trois types de segmentation utilisés sur l'image, à savoir la segmentation sémantique, la segmentation d'instance et la segmentation panoptique.

Pipeline de segmentation d'images d'aliments

Les modèles de segmentation sémantique ont été jugés appropriés pour notre modèle de reconnaissance des aliments. Cela s'explique principalement par la capacité du modèle à reconnaître le type de nourriture ou de boisson, puisque c'était le principal objectif de l'exercice. Les réseaux entièrement convolutifs (REC) sont des choix populaires pour la segmentation sémantique. Cependant, les modèles d'encodeurs basés sur la résolution spatiale des images d'entrée par sous-échantillonnage du REC entraînent la création de mises en correspondance des caractéristiques à basse résolution. Dans l'article intitulé « Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers », les auteurs ont proposé un nouveau modèle de segmentation basé sur l'architecture de transformateur pur, appelé « transformateur de segmentation » (SEgmentation TRansformer, ou SETR). Un encodeur SETR traite une image d'entrée comme une séquence de morceaux d'image représentés par la vectorisation de morceaux d'image acquis, puis transforme la séquence au moyen de la modélisation par autoattention globale pour l'apprentissage de la représentation discriminante des caractéristiques. Ce modèle a fourni davantage de contexte pour la tâche de reconnaissance des aliments à l'aide du module ReLeM, comme l'ont proposé les auteurs du rapport intitulé « A Large-Scale Benchmark for Food Image Segmentation ». Les modules SETR et ReLeM sont expliqués plus en détail ci-dessous.

Figure 5 : Diagramme du pipeline de segmentation d'images d'aliments. Source : A Large-Scale Benchmark for Food Image Segmentation.
Figure 5 : Diagramme du pipeline de segmentation d'images d'aliments. Source : A Large-Scale Benchmark for Food Image Segmentation.

Le diagramme du pipeline de segmentation d'images d'aliments montre l'interaction entre le module d'apprentissage de recettes et le module de segmentation d'images.

Texte dans l'image : Encodeur de vision, ec perte cosinoïdale/perte sémantique ec, Encodeur de texte, Ingrédients : ½ tasse A.1. Marinade classique, 1 bifteck de surlonge désossé. Instructions : Verser la marinade sur le bifteck dans un sac en plastique refermable. Sceller le sac : retourner le sac pour enrober uniformément le bifteck de marinade. Encodeur de vision (partage des poids), Décodeur de vision

Encodeur de vision (partage des poids) à Décodeur de vision

Module d'apprentissage de recettes

Le module ReLeM fournit des modèles contenant des renseignements contextuels sur les ingrédients tirés de recettes de cuisine. Dans l'article intitulé « A Large-Scale Benchmark for Food Image Segmentation », les auteurs décrivent le module ReLeM comme [traduction] « une approche de préentraînement multimodal […] qui permet de doter de manière explicite un modèle de segmentation de connaissances riches et sémantiques sur les aliments ».

Le module a été entraîné à l'aide d'un ensemble de données Recipe1M (voir Learning Cross-Modal Embeddings for Cooking Recipes and Food Images). Cet ensemble de données contient plus de 1 million de recettes et 800 000 images d'aliments. En étant exposé à des recettes et à des images d'aliments, le module ReLeM forme des associations entre les ingrédients, un peu comme les humains comprennent quels aliments se trouvent généralement ensemble.

Lors de l'entraînement d'un modèle de classification des images d'aliments, il est important d'utiliser des recettes comme données d'entraînement. Cela permet au module de créer des associations entre des ingrédients qui peuvent varier visuellement lorsqu'ils sont préparés différemment. Le module ReLeM apprend également les instructions de préparation des aliments dans des recettes. Par exemple, les aubergines en purée diffèrent visuellement des aubergines frites. En revanche, il peut y avoir différents ingrédients qui se ressemblent, comme le lait et le yogourt. Le module ReLeM a établi des associations entre les ingrédients et les aliments qui apparaissent souvent ensemble, ce qui est utile dans ces scénarios. Par exemple, si un verre contenant une substance blanche et une assiette de biscuits aux pépites de chocolat figurent dans l'image, le module ReLeM pourrait déduire que la substance blanche est plus probablement du lait que du yogourt, puisqu'il y a une association connue entre le lait et les biscuits. Le module ReLeM s'appuie sur la perte sémantique et cosinoïdale pour déterminer la similitude entre les aliments.

Modèle de transformateur de segmentation

Les transformateurs et les modèles d'autoattention ont permis d'améliorer la compréhension et le rendement du traitement du langage naturel. Les modèles GPT-3 (transformateur génératif préentraîné de troisième génération) et BERT (représentations de l'encodeur bidirectionnel à partir de transformateurs), très populaires dans le domaine du traitement du langage naturel, sont basés sur l'architecture du transformateur. La même architecture peut être utilisée pour les images, mais cet apprentissage de séquence à séquence suppose des séquences 1D en entrée. Le modèle d'encodeur SETR de pointe prétraite les images 2D avant de les alimenter dans l'architecture du transformateur. L'image 2D est décomposée en petits morceaux de taille fixe, puis chaque morceau est converti en une séquence 1D. Cette séquence de morceaux d'image est représentée par la vectorisation de morceaux d'images acquis dont il a été question dans le document mentionné précédemment sur la segmentation sémantique. Une fois cette séquence de vectorisation des caractéristiques fournie à l'entrée, le transformateur apprend la représentation discriminante des caractéristiques qui sont retournées à la sortie de l'encodeur SETR. Le modèle de l'encodeur est plus complexe que le modèle du décodeur, puisqu'il doit apprendre et produire une représentation de caractéristiques complexes pour différencier chaque catégorie avec précision.

Figure 6 : Encodeur SETR tiré de l'article « Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers »
Figure 6 : Encodeur SETR tiré de l'article « Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers »

Le diagramme illustre la conception du transformateur de segmentation (SETR).

Texte dans l'image : Vectorisation des morceaux d'image et Vectorisation de positions, Normalisation de la couche, Attention à plusieurs têtes, Perceptron multicouche. Projection linéaire, 24x, Couche du transformateur, Décodeur

Un décodeur est ensuite utilisé pour récupérer la résolution d'image d'origine au moyen d'une classification à l'échelon des pixels. Dans notre cas, nous avons utilisé le décodeur d'agrégation de caractéristiques à plusieurs niveaux (multi-level feature aggregation, ou MLA). Le décodeur MLA accepte les représentations des caractéristiques de chaque couche du SETR. Toutes ces représentations de caractéristiques ont en commun la même résolution (aucune perte de résolution comme au moyen d'un REC) et passent par une série de remodelage et de suréchantillonnage pour obtenir les étiquettes de pixels.

Figure 7 : Décodeur MLA tiré de l'article « Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers »
Figure 7 : Décodeur MLA tiré de l'article« Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers »

Le diagramme illustre l'agrégation des caractéristiques à plusieurs niveaux. Plus précisément, une variante de type SETR-MLA.

Texte dans l'image : Z24, Z18, Z12, Z6, remodelage-conv, conv-conv-4x, conv-4x

Résultats

Voici les résultats de validation fondés sur les mesures de la moyenne de l'intersection sur l'union (MIoU), de l'exactitude moyenne (mAcc) et l'exactitude globale (aAcc) :

Voici les résultats de validation fondés sur les mesures de la moyenne de l'intersection sur l'union (MIoU), de l'exactitude moyenne (mAcc) et l'exactitude globale (aAcc) :
Mesure Valeur
MIoU 40,74 %
mAcc 51,98 %
aAcc 83,21 %

Résultats de tests basés sur les mesures de la précision, du rappel et du score F1 :

Résultats de tests basés sur les mesures de la précision, du rappel et du score F1 :
Mesure Valeur
Précision 81,43 %
Rappel 80,16 %
Score F1 80,79 %

Sans l'initialisation de l'encodeur de vision selon les poids ReLeM entraînés :

Figure 8 : Exemple d'un masque prédit sans l'initialisation de l'encodeur de vision selon les poids ReLeM entraînés
Figure 8 : Exemple d'un masque prédit sans l'initialisation de l'encodeur de vision selon les poids ReLeM entraînés.

Une image de muffins à gauche et un exemple d'un masque prédit à droite sans initialisation de l'encodeur de vision selon les poids ReLeM entraînés.

Exemple d'un masque prédit sans l'initialisation de l'encodeur de vision selon les poids ReLeM entraînés.
Couleur Nom de Colour Catégorie prédite
L'arrière-plan de la cellule du tableau est coloré "Jaune Vert" Jaune Vert Pain, grains entiers (blé entier)
L'arrière-plan de la cellule du tableau est coloré "Turquoise" Turquoise Thé
L'arrière-plan de la cellule du tableau est coloré "Saumon foncé" Orchidée Pomme
L'arrière-plan de la cellule du tableau est coloré "Orchidée moyenne" Orchidée moyenne Patate douce
L'arrière-plan de la cellule du tableau est coloré "Magenta" Magenta Boulette de pâte (dumpling)

Au moyen de l'initialisation de l'encodeur de vision selon les poids ReLeM entraînés :

Figure 9 : Exemple d'un masque prédit au moyen de l'initialisation de l'encodeur de vision selon les poids ReLeM entraînés.
Figure 9 : Exemple d'un masque prédit au moyen de l'initialisation de l'encodeur de vision selon les poids ReLeM entraînés.

Une image de muffins à gauche et un exemple d'un masque prédit à droite au moyen de l'initialisation de l'encodeur de vision selon les poids ReLeM entraînés.

Exemple d'un masque prédit au moyen de l'initialisation de l'encodeur de vision selon les poids ReLeM entraînés.
Couleur Nom de Colour Catégorie prédite
L'arrière-plan de la cellule du tableau est coloré "Turquoise" Turquoise Gâteau
L'arrière-plan de la cellule du tableau est coloré "Vert foncé" Vert foncé Banane

Conclusion

Le modèle de reconnaissance des aliments permet de prédire avec exactitude plusieurs aliments et boissons figurant dans une image en moins d'une seconde, et il permet d'obtenir systématiquement de bons résultats avec certaines catégories, comme le pain. Cependant, il a plus de difficultés avec des catégories d'apparence semblable, comme le bœuf et l'agneau. Le rendement peut être amélioré en ajoutant plus de données étiquetées pour des catégories minoritaires, en effectuant une ronde supplémentaire de reclassification des aliments d'apparence semblable et en utilisant des techniques contre le déséquilibre des catégories.

Rencontre avec le scientifique des données

Inscrivez-vous à la présentation Rencontre avec le scientifique des données

Si vous avez des questions à propos de mon article ou si vous souhaitez en discuter davantage, je vous invite à une Rencontre avec le scientifique des données, un événement au cours duquel les auteurs rencontrent les lecteurs, présentent leur sujet et discutent de leurs résultats.

Mardi, le 17 janvier
14 h 00 à 15 h 00 HE
MS Teams – le lien sera fourni aux participants par courriel

Inscrivez-vous à la présentation Rencontre avec le scientifique des données. À bientôt !

Abonnez-vous au bulletin d'information du Réseau de la science des données pour la fonction publique fédérale pour rester au fait des dernières nouvelles de la science des données.

Date de modification :

Prévisions en matière de consommation d'énergie dans les collectivités éloignées du Nord canadien

Par : Alireza Rahimnejad Yazdi, Lingjun Zhou et Zarrin Langari, l'Accélérateur numérique, Ressources naturelles Canada; Ryan Kilpatrick, CanmetÉNERGIE Ottawa, Ressources naturelles Canada

Introduction

Ressources naturelles Canada (RNCan) aide les collectivités du Nord et des régions éloignées du Canada à effectuer la transition de l'énergie traditionnelle produite à partir de combustibles fossiles à l'énergie renouvelable et verte. La plupart de ces collectivités sont géographiquement isolées et alimentées par des génératrices à combustibles fossiles. Pour appuyer cette initiative, les chercheurs de RNCan devaient prévoir avec précision la consommation d'énergie annuelle de ces collectivités afin de déterminer le type d'énergie renouvelable qui serait le mieux adapté pour soutenir ces collectivités. Pour ce faire, ils ont utilisé des données historiques sur la consommation d'énergie par heure, ainsi que des données démographiques et météorologiques. En établissant un profil horaire type de consommation d'énergie pour n'importe quelle collectivité, nous pouvons raisonnablement estimer la consommation horaire d'énergie pour les collectivités qui ne disposent pas de données historiques.

Grâce aux données accessibles au public fournies par son client, CanmetÉNERGIE Ottawa (CE-O) de RNCan, l'équipe de l'Accélérateur numérique s'est concentrée sur l'analyse des données de consommation d'énergie de 11 collectivités éloignées situées dans la région du Nunavik, dans le nord du Québec. Les données ont été présentées selon un niveau de précision horaire pour les années 2013, 2014 et 2015. Étant donné que cette approche analytique repose sur la consommation d'énergie moyenne pour ces trois années disponibles, les données sur la consommation d'énergie d'une année donnée s'infiltrent donc dans le modèle utilisé pour faire une prédiction pour cette année, et cette fuite de données mine la validité de toute mesure de rendement effectuée.

Nous considérons que la consommation d'électricité dans les collectivités éloignées a une relation non linéaire avec des variables comme la météo, la population, l'âge et l'efficacité des appareils, l'âge du bâtiment et, dans le cas du chauffage électrique, avec les taux d'occupation et les habitudes. Cependant, comme la plupart des méthodes de prédiction traditionnelles ne comportent pas de mécanisme d'apprentissage, il est difficile de décrire la relation non linéaire entre la consommation d'électricité et les variables exerçant une influence, ce qui entraîne des prévisions à faible précision.

Notre analyse permettra de déterminer si les techniques d'apprentissage automatique (AA) peuvent produire une prédiction plus précise des charges électriques dans les collectivités éloignées par rapport à l'approche analytique de CE-O, ainsi que de déterminer quel type de techniques d'AA est le plus approprié pour cette application. Nous espérons également appliquer la technique d'AA choisie pour créer des profils typiques horaires de charge électrique synthétique produite par diesel à l'ensemble des collectivités éloignées pour lesquelles des données granulaires de consommation horaire d'énergie ne sont pas disponibles.
Avant d'effectuer l'analyse, nous avons supposé ce qui suit :

  • Les populations des collectivités demeurent constantes tout au long de l'année, ce qui signifie qu'en tout temps, une maison a le même nombre d'occupants et n'abrite pas de voyageurs hivernants, par exemple.
  • Il n'y a pas de fluctuations majeures de la température. Compte tenu de l'avènement du changement climatique, des phénomènes météorologiques extrêmes, comme de brèves périodes d'extrême chaleur ou d'extrême froid, pourraient conduire à une modélisation inexacte.
  • Il n'y a pas de changements majeurs dans les variables latentes qui pourraient contribuer à la consommation d'énergie qui ne sont pas incluses dans l'ensemble de données. Il s'agit d'une exigence très stricte, étant donné que nous ne savons pas quelles sont ces variables latentes.

Prétraitement des données et analyse exploratoire des données

Une analyse exploratoire des données (AED) a été effectuée pour étudier les données en découvrant des tendances, en repérant des anomalies et en vérifiant l'absence de certaines données à l'aide de statistiques sommaires et de représentations graphiques. Nous avons également cerné les caractéristiques typiques de la consommation d'énergie pour toute collectivité pendant l'AED afin d'aider à estimer la consommation d'énergie granulaire dans les collectivités qui ne disposent que de données sur la consommation d'énergie annuelle ou totale.

Divers modèles, comme la régression linéaire, LightGBM (light gradient-boosting machine), XGBoost, Theta Forecaster, Ensemble Forecaster, Auto-ARIMA, Auto-ETS, la prévision naïve, la transformation de Fourier rapide et les réseaux de neurones, ont été utilisés pour faire des prévisions et leurs performances ont été comparées.

Dans le cadre de la préparation des données, les données sur la population et la consommation d'énergie ont été combinées en calculant la consommation d'énergie par habitant. Ensuite, les données sur la consommation d'énergie par habitant ont été tracées au fil du temps. Les données sur la consommation d'énergie comportent trois composantes : les tendances, la saisonnalité et le bruit. On a supposé que les caractéristiques des données avaient une certaine puissance prédictive et on a donc choisi de les utiliser dans le modèle définitif.

Les renseignements sur la latitude et la longitude variaient trop peu pour fournir une contribution utile et ont été rejetés pour cette étape. Les représentations visuelles ont révélé les renseignements suivants :

Figure 1. L'axe des x pour les deux tracés ci-dessous correspond à la date et l'heure, la première heure étant minuit en date du 1er janvier 2013

Diagrammes à deux lignes illustrant la consommation d'énergie par habitant par rapport à la date et l'heure ainsi que la température par rapport à la date et l'heure. La consommation d'énergie par habitant connaît une baisse évidente durant les mois les plus chauds, comme le mois de juillet, et des sommets durant les mois les plus froids, comme en janvier. La température et la consommation d'énergie par habitant sont corrélées négativement.

Figure 2. Veuillez prendre note que l'axe des x ci-dessus représente l'heure, où minuit du 1er janvier 2013 est la première heure et 23 h du 31 décembre 2015 est la dernière heure.

Les calculs d'autocorrélation et d'autocorrélation partielle pour les données sur la consommation d'énergie par habitant. Les tracés d'autocorrélation et d'autocorrélation partielle montrent des sommets toutes les 24 heures, ce qui indique une forte corrélation toutes les 24 heures. Cela signifie qu'exactement la même heure d'une journée précédente et celle d'une journée en cours partagent des consommations d'électricité semblables.

Une période de trois ans comprend au total 26 280 heures. Tant l'autocorrélation (ACF) que l'autocorrélation partielle (PACF) montrent qu'il y a une forte corrélation toutes les 24 heures. Cela est logique parce que la consommation quotidienne d'énergie suit généralement une tendance répétitive. La PACF est l'ACF pour laquelle les corrélations intermédiaires ont été supprimées. Par exemple, la PACF du décalage 3 correspond à l'ACF du décalage 3 moins la PACF des décalages 1 et 2. L'autocorrélation et l'autocorrélation partielle dans les données des séries chronologiques (en anglais seulement) produisent une analyse détaillée de leurs différences. Grâce à la PACF, nous pouvons voir clairement que la consommation d'électricité est fortement corrélée avec sa propre valeur enregistrée 24 heures auparavant.

Figure 3. Une version agrandie des données historiques sur la consommation d'énergie. Ici, l'axe des x correspond à la date et l'heure, avec la précision des heures.

Une version agrandie de la consommation d'énergie par habitant par rapport à la date et l'heure. Nous pouvons voir un sommet dans la consommation environ toutes les 24 heures.

Voici un résumé des tendances que nous avons observées dans les images ci-dessus :

  • Il existe une relation inverse entre la température normalisée et la consommation d'énergie par habitant.
  • Il existe une faible tendance à la hausse de la consommation d'énergie, mais dans l'ensemble, il y a un modèle annuel répétitif.
  • En l'espace d'un an, l'utilisation d'électricité augmente pendant les mois froids et diminue pendant les mois chauds. Il convient de mentionner que l'ampleur de l'augmentation de l'électricité consommée pendant les mois froids et de sa diminution pendant les mois chauds diffère d'une collectivité à l'autre.
  • En l'espace d'une journée, la consommation d'énergie est plus élevée pendant les heures d'éveil que pendant les heures de sommeil, un sommet étant observé autour de midi. Il convient de mentionner que la valeur de pointe diffère d'une collectivité à l'autre.

Résultats

L'image suivante est une prévision fondée sur les réseaux de neurones. Les prévisions tirées d'autres algorithmes ont des apparences semblables.

Figure 4. L'axe des x représente les heures, à partir de minuit le 1er janvier 2013.

Une prévision simulée de la consommation d'énergie par habitant pour l'année suivante (en orange) comparée aux données réelles de la consommation d'énergie par habitant de l'année suivante (en bleu). Nous pouvons voir que la consommation d'énergie simulée correspond presque à la consommation d'énergie réelle.

Après avoir comparé le rendement de divers algorithmes avec l'erreur moyenne en pourcentage absolu (EMPA), nous avons obtenu les résultats indiqués dans le tableau ci-dessous.

Collectivité EMPA du réseau de neurones EMPA de LightGBM EMPA Linéaire EMPA Linéaire EMPA naïve Approche manuelle
2013 2014 2015
Inukjuak 7,1% 6,7% 6,5% 8,2% 7,7% 12,9% 7,5% 4,9%
Salluit 6,2% 6,8% 6,7% 6,7% 6,1% 7,7% 6,0% 5,0%
Quaqtaq 10,7% 8,8% 8,3% 11,5% 12,2% 16,1% 11,7% 5,7%
Aupaluk 7,9% 8,8% 8,8% 13% 7,8% 10,2% 9,5% 8,6%
Ivujivik 12,9% 14,9% 14,9% 14,9% 13,9% 14,3% 6,3% 6,3%
Kuujjuaq 4,4% 5,3% 5,4% 7,4% 5,4% 5,0% 4,7% 5,4%
Kangirsuk 8,1% 11,0% 10,8% 9,0% 8,8% 8,4% 8,4% 7,8%
Umiujaq 5,4% - - - - 10,9% 9,3% 7,1%
Kuujjuarapik 6,6% 4,8% 4,8% 4,9% 5,2% 98,9% 6,6% 7,4%
Kangiqsualujjuaq 7,9% 7,4% 7,5% 11,7% 7,1% 8,1% 9,0% 8,4%
Puvirnituq 6,2% - - - - 12,5% 7,5% 5,5%
  • Toutes les approches ci-dessus ont des procédures similaires. Nous avons d'abord effectué une séparation temporelle des données pour produire un ensemble de données d'essai et de données d'apprentissage. Ensuite, nous avons entraîné les modèles d'apprentissage automatique en utilisant les données d'apprentissage et mesuré le rendement au moyen de trois mesures différentes qui sont couramment utilisées pour les problèmes de régression : l'EMA (l'erreur moyenne absolue), la RCEQM (la racine carrée de l'erreur quadratique moyenne) et l'EMPA. Enfin, nous avons ajusté les hyperparamètres pour atteindre les meilleures performances pour chaque modèle.
  • Le modèle de réseau de neurones comporte quatre couches. Les trois premières couches ont 32 unités avec activation RELU (unité linéaire rectifiée) et la dernière couche a une unité avec activation linéaire. La fonction de perte et l'optimiseur sont les propagations EMQ (erreur quadratique moyenne) et RQM (racine quadratique moyenne), respectivement. Lors d'un arrêt anticipé, la perte de validation était utilisée pour arrêter l'entraînement et éviter le surapprentissage. Une EMAP de moins de 10 % a été atteinte dans 9 des 11 collectivités.
  • Pour les modèles de prévision LightGBM, linéaire et Theta, nous avons d'abord décomposé les données en supprimant la saisonnalité et la tendance pour arriver au résidu, puis avons entraîné le modèle en utilisant le résidu et inversé le processus pour arriver à une prédiction.
    • La différence :
      • LightGBM est un modèle basé sur un arbre de décision et permet un apprentissage rapide.
      • Le modèle linéaire est un modèle de régression linéaire et sa vitesse d'apprentissage est aussi rapide que celle du LightGBM.
      • Theta est un modèle de lissage exponentiel et son apprentissage prend un certain temps.
  • Pour les prévisions naïves, nous avons simplement déplacé la consommation d'énergie de l'année précédente et l'avons utilisée comme prédiction de la consommation d'énergie de l'année en cours.
  • La dernière colonne montre l'approche manuelle utilisée par CE-O qui illustre la différence entre les consommations d'énergie prévues et celles mesurées pour les années 2013, 2014 et 2015, respectivement. La raison pour laquelle il y a trois valeurs est liée à la façon dont fonctionne l'approche manuelle.

Voici nos observations fondées sur les résultats :

  • Dans plusieurs collectivités, les diverses approches et les divers modèles d'apprentissage automatique fournissent une précision semblable. Le modèle complexe de réseau de neurones n'est que légèrement meilleur; il ne donne pas des résultats nettement supérieurs à ceux de modèles plus simples comme LightGBM ou la régression linéaire.
  • Les prévisions naïves, c'est-à-dire l'utilisation du dossier de consommation d'énergie de l'année précédente pour la prévision de la consommation d'énergie de l'année en cours, peuvent donner un tout aussi bon résultat que tout autre modèle. Cela ne fonctionnerait pas si la tendance à la hausse était plus forte. Les prévisions naïves sont étonnamment difficiles à devancer. Cela est courant pour la prédiction des séries chronologiques et découle de l'observation qu'il existe une tendance annuelle répétitive évidente dans la consommation d'énergie.
  • Il existe d'autres algorithmes potentiellement utiles comme l'analyse de Fourier, MLCT (les réseaux de mémoire à long ou à court terme), Auto-ARIMA, mais ils sont tous inefficaces et coûteux en matière de calcul pour cerner les tendances reproductibles nécessaires pour produire des résultats significatifs. À un moment donné, les auteurs ont essayé d'utiliser Auto-ARIMA pour simuler la série chronologique, mais le processeur graphique de notre poste de travail spécialisé a planté après cinq heures et demie de calcul intense. Il y avait 260 G de mémoire vive qui étaient utilisés alors que l'UCT (unité centrale de traitement) fonctionnait à 100 %.

Ce que nous avons découvert

Comparativement à l'approche manuelle, les prévisions de l'AA et les prévisions naïves peuvent, en moyenne, obtenir des résultats qui sont de 2 % à 3 % supérieurs.

Le risque d'erreurs importantes découlant de l'approche manuelle (16,1 % et 98,9 %) est considérablement réduit. Les approches d'apprentissage automatique semblent être plus stables. Étant donné que les prévisions naïves peuvent être tout aussi efficaces qu'un algorithme d'apprentissage automatique, il serait sans doute plus efficace de considérer l'utilisation de la consommation d'énergie d'une année précédente comme notre prévision pour l'avenir. Cependant, nous devons nous assurer qu'il y a un modèle annuel reproductible dans les données en effectuant une AED approfondie.

L'objectif ultime est de créer un profil horaire «  typique  » de la consommation d'énergie pour les collectivités dont les seuls antécédents disponibles sont des variables externes, comme l'historique des données météorologiques. Par profil de consommation d'énergie «  typique  », nous entendons les résultats normalisés une fois que les variables externes sont données. Par exemple, si deux collectivités ont les mêmes données climatiques, elles auraient alors la même consommation d'énergie par habitant pour chaque heure de l'année. Nous n'avons pas pu atteindre cet objectif pour certaines raisons :

  • Nous remarquons que la consommation d'énergie par habitant s'affiche dans le même ordre de chiffres (entre 0,5 kW et 1,9 kW). Cependant, une personne moyenne de certaines collectivités utilise encore plus d'énergie que celles d'autres collectivités. Il sera difficile de créer un profil de consommation d'énergie «  typique  » pour un utilisateur moyen dans une collectivité «  typique  ». Une certaine normalisation pourrait être nécessaire.
  • Dans la collectivité d'Ivujivik, la consommation d'énergie pour l'année 2014 ne correspond pas aux tendances que nous avons déterminées en utilisant l'AED. Elle fluctue considérablement tout au long de l'année et ne correspond pas à la tendance de faible consommation d'énergie pendant les mois plus chauds et de forte consommation d'énergie pendant les mois plus froids. Une attention supplémentaire est nécessaire pour déterminer la raison pour laquelle cette anomalie existe.

L'avenir du présent projet

Le présent projet pourrait être élargi. Si nous décidons d'aller de l'avant, une nouvelle entente sera mise en place afin d'obtenir des données plus récentes auprès de collectivités plus diversifiées provenant d'un plus grand nombre de géolocalisations et de types de climat ou de régions climatiques, ainsi que pour recueillir des données plus détaillées et pour cerner les tendances universelles dans un plus grand nombre d'ensembles de données. Si un ensemble de données plus riche et plus diversifié était possible, nous tenterions d'élaborer de nouveaux modèles qui peuvent prédire la consommation d'énergie pour les collectivités qui ne disposent pas de dossiers sur la consommation d'énergie. Nous pourrions étudier la relation entre la consommation d'énergie et les variables externes.

Rencontre avec le scientifique des données

Inscrivez-vous à la présentation Rencontre avec le scientifique des données

Si vous avez des questions à propos de mon article ou si vous souhaitez en discuter davantage, je vous invite à une Rencontre avec le scientifique des données, un événement au cours duquel les auteurs rencontrent les lecteurs, présentent leur sujet et discutent de leurs résultats.

Mardi, 17 janvier
De 14 h à 15 h, HE
MS Teams – le lien sera fourni aux participants par courriel

Inscrivez-vous à la présentation Rencontre avec le scientifique des données.
À bientôt!

Abonnez-vous au bulletin d'information du Réseau de la science des données pour la fonction publique fédérale pour rester au fait des dernières nouvelles de la science des données.

Date de modification :

Technologies liées à la protection de la vie privée, partie trois : Analyse statistique confidentielle et classification de texte confidentiel fondées sur le chiffrement homomorphe

Par : Benjamin Santos et Zachary Zanussi, Statistique Canada

Introduction

Qu'est-ce qui est possible dans le domaine du chiffrement et quels cas d'utilisation peuvent être visés par le chiffrement homomorphe? Le premier article du Réseau de la science des données dans la série sur la protection de la vie privée, Une brève enquête sur les technologies liées à la protection de la vie privée, présente les technologies d'amélioration de la confidentialitéNote de bas de page 1 (TAC) et la façon dont elles permettent l'analyse tout en protégeant la confidentialité des données. Le deuxième article de la série, Technologies liées à la protection de la vie privéepartie deux : introduction au chiffrement homomorphe, a abordé plus en profondeur une des TAC, plus précisément le chiffrement homomorphe (CH). Dans cet article, nous décrivons les applications étudiées par les scientifiques des données de Statistique Canada en matière de traitement informatique à partir de données chiffrées.

Le CH est une technique de chiffrement qui permet d'effectuer des traitements informatiques à partir de données chiffrées ainsi que plusieurs paradigmes pour les traitements informatiques sécurisés. Cette technique comprend le traitement informatique sécurisé à l'externe, selon lequel un détenteur de données permet à un tiers (peut-être le nuage) d'effectuer des traitements informatiques à partir de données de nature délicate, tout en s'assurant que les données d'entrée sont protégées. En effet, si le détenteur de données veut que le nuage calcule une fonction f (polynomiale) à partir de ses données v, il peut les chiffrer sous forme de cryptogrammes, désignés [v], les envoyer de façon sécuritaire sur le nuage qui calcule f de façon homomorphe pour obtenir [f(v)] et renvoie les résultats au détenteur de données, qui peut déchiffrer et visualiser f(v). Le nuage n'a aucun accès aux valeurs des données d'entrée, de sortie ou intermédiaires.

Figure 1 : Illustration d'un flux de travail typique du CH
Figure 1 : Illustration d'un flux de travail typique du CH.

Une illustration d'un flux de travail typique du CH. Les données,v, sont chiffrées, donc elles sont placées dans une boîte verrouillée [v]. Cette valeur est envoyée au tiers qui effectuera le traitement informatique (le nuage). Les engrenages tournent et le chiffrement d'entrée[v] se transforme en chiffrement de sortie, [f(v)], comme souhaité. Ce résultat est renvoyé au propriétaire, qui peut le sortir de la boîte verrouillée et le visualiser. Le nuage n'a pas accès aux valeurs d'entrées, de sortie ou intermédiaires.

Des groupes internationaux envisagent actuellement la normalisation du CH. Le gouvernement du Canada ne recommande pas le CH ou l'utilisation des techniques cryptographiques avant que ce soit normalisé. Même si le CH n'est pas encore prêt à être utilisé sur des données de nature délicate, c'est un bon moment pour explorer ses capacités ainsi que d'éventuels cas d'utilisation.

Données de lecteurs optiques

Statistique Canada recueille des données en temps réel auprès des grands détaillants sur divers produits d'information. Ces données décrivent les opérations quotidiennes effectuées comme une description du produit vendu, le prix de vente et les métadonnées au sujet du détaillant. Ces données sont appelées « données de lecteurs optiques », d'après les lecteurs optiques utilisés lorsque les clients passent à la caisse. Une des utilisations des données optiques est d'augmenter la précision de l'Indice des prix à la consommation, qui mesure l'inflation et la vigueur du dollar canadien. Cette précieuse source de données est traitée comme des données de nature délicate – nous respectons la confidentialité des données et des détaillants qui les fournissent.

La première étape dans le traitement de ces données consiste à classer les descriptions de produits dans un système classificatoire normalisé de codification à l'échelle internationale, à savoir le Système de classification des produits de l'Amérique du Nord (SCPAN) Canada 2017 version 1.0. Ce système hiérarchique de codes à sept chiffres est utilisé pour classer les différents types de produits aux fins d'analyse. Il y a un code, par exemple, pour le café et ses produits. Chaque entrée de données scanographiques doit recevoir un de ces codes en fonction de la description du produit fournie par le détaillant. Ces descriptions ne sont toutefois pas normalisées et peuvent être très différentes d'un détaillant à l'autre ou d'une marque à l'autre de produits semblables. Ainsi, la tâche souhaitée est la conversion de ces descriptions de produit, qui comprennent souvent des abréviations et des acronymes, en codes correspondants.

Après avoir été classées, les données sont regroupées en fonction de leur code du SCPAN et les statistiques sont calculées à partir de ces groupes. Cela nous permet d'avoir une idée du montant dépensé pour chaque type de produit dans l'ensemble du pays, et de la façon dont cette valeur change au fil du temps.

Figure 2 : Aperçu de haut niveau du flux de travail des données de lecteurs optiques avec des données-échantillons
Figure 2 : Aperçu de haut niveau du flux de travail des données de lecteurs optiques avec des données-échantillons.

Aperçu de haut niveau du flux de travail des données de lecteurs optiques. D'abord, les descriptions de produit sont classées selon les codes du SCPAN. Des exemples sont fournis : « bonbons mochi à la crème glacée » se voit attribuer le code du SCPAN 5611121, alors que « sauce barbecue chipotle » se voit attribuer le code 5611132. L'application 2 consiste à attribuer ces codes aux descriptions. Les descriptions de produits sont liées à quelques identificateurs et à une valeur de prix. L'application 1 consiste à classer les données selon ces codes et identificateurs, et à calculer des statistiques sur les valeurs de prix.

Exemple d'ensembles de données 1
Description ID1 ID2 Valeur
« bonbons mochi à la crème glacée » 054 78 5.31 $
« sauce barbecue chipotle » 201 34 3.80 $

Application 2

Exemple d'ensembles de données 2
SCPAN ID1 ID2 Valeur
5611121 054 78 5.31 $
5611132 201 34 3.80 $

Application 1

Statistics (total, moyenne, variance)

Étant donné l'importance et la nature délicate des données, nous les avons ciblées comme domaine potentiel pour lequel les TAC pourraient préserver notre flux de travail des données tout en maintenant le niveau élevé de sécurité requis. Les deux tâches ci‑dessus ont, jusqu'à maintenant, été effectuées dans l'infrastructure sécurisée de Statistique Canada, où nous pouvons nous assurer que les données sont en sécurité au moment de l'ingestion et tout au long de leur utilisation. En 2019, quand nous avons commencé à étudier les TAC au sein de l'organisme, nous avons décidé de tenter d'utiliser le nuage à titre de ressource tierce de traitement informatique, sécurisé par le CH.

Nous avons créé un modèle infonuagique semblable à un tiers semi-honnête, ce qui signifie qu'il suivra le protocole que nous lui avons attribué, mais il essaiera de déduire tout ce qu'il peut au sujet des données pendant le processus. Cela signifie qu'il faut que les données de nature délicate soient toujours chiffrées ou masquées. Dans notre validation de principe, nous avons remplacé ces données par une source de données synthétiques, ce qui nous permet de procéder à des expériences sans craindre de nuire à la sécurité des données.

Application 1 : Analyse statistique confidentielle

Notre première tâche était de réaliser la dernière partie du flux de travail des données de lecteurs optiques – l'analyse statistique. Nous avons créé une version synthétique des données de lecteurs optiques pour assurer leur confidentialité. Ces données de lecteurs optiques fictives consistaient en 13 millions d'enregistrements, chacun comprenant un code du SCPAN, un prix de transaction et certains identificateurs. Cela représente environ une semaine de données de lecteurs optiques d'un seul détaillant. La tâche consistait à trier les données en listes, à les chiffrer, à les envoyer au nuage et à demander au nuage de calculer les statistiques. Le nuage nous enverrait ensuite les résultats toujours chiffrés, pour que nous puissions les déchiffrer et les utiliser aux fins d'analyse plus approfondie.

Supposons que notre ensemble de données est classé en listes ayant la forme v=(v1,,vl). Il est relativement simple de chiffrer chaque valeur vi en cryptogramme [vi], puis d'envoyer la liste de cryptogrammes ([v1],,[vl]) sur le nuage. Le nuage peut utiliser l'addition et la multiplication homomorphes pour calculer le total, la moyenne et la variance et nous retourner ces cryptogrammes (nous verrons de quelle façon la division est gérée pour la moyenne et la variance plus tard dans le présent article). Nous faisons cela pour chaque liste, puis déchiffrons et visualisons nos données. C'est simple, n'est-ce pas?

Le problème avec une mise en œuvre naïve de ce protocole est l'élargissement des données. Un seul cryptogramme CKKSNote de bas de page 2 représente une paire de polynômes de degré 214 avec des coefficients de 240-octets. Ensemble, cela peut prendre 1 Mo pour stocker un seul enregistrement. Pour l'ensemble de données complet de 13 millions, cela devient 13 To de données! La solution à ce problème s'appelle la mise en paquet.

Mise en paquet

Les cryptogrammes sont gros et nous avons beaucoup de petits éléments de données. Nous pouvons utiliser la mise en paquet pour stocker une liste complète de valeurs en un seul cryptogramme, et le procédé CKKS nous permet d'effectuer des opérations de type SIMD (instruction unique, données multiples) sur ce cryptogramme, donc nous pouvons calculer plusieurs statistiques en même temps! Cela représente une augmentation massive de l'efficacité pour de nombreuses tâches de CH, et une structure intelligente de mise en paquet des données peut faire la différence entre un problème insoluble et une solution pratique.

Supposons que nous avons une liste de valeurs l, v=(v1,v2,,vl). En utilisant la mise en paquet CKKS, nous pouvons mettre en paquet cette liste entière en un seul cryptogramme, désigné par [v]. Maintenant, les opérations d'addition et de multiplication homomorphes ont lieu par emplacement selon le principe du SIMD, c'est‑à‑dire que, si u=(u1,u2,,ul) est chiffré [u], nous pouvons alors calculer l'addition homomorphe pour obtenir

[u][v]=[u+v]

[u+v] est unNote de bas de page 3 chiffrement de la liste (u1+v1,u2+v2,,ul+vl). Cette addition homomorphe prend autant de temps à calculer que s'il y avait une seule valeur dans chaque cryptogramme; donc il est évident que nous pouvons obtenir un gain d'efficacité appréciable au moyen de la mise en paquet. L'inconvénient est que nous devons maintenant utiliser cette structure vectorielle dans tous nos calculs, mais avec un peu d'efforts, nous pouvons trouver un moyen de vectoriser les calculs pertinents pour profiter de la mise en paquet.

Figure 3 : Une illustration de la mise en paquet. Les quatre valeurs peuvent soit être chiffrées en quatre cryptogrammes séparés, ou être toutes mises en paquet en un seul cryptogramme
Figure 3 : Une illustration de la mise en paquet. Les quatre valeurs peuvent soit être chiffrées en quatre cryptogrammes séparés, ou être toutes mises en paquet en un seul cryptogramme.

Une illustration de la mise en paquet. Quatre valeurs, v1,v2,v3,v4 doivent être chiffrées. Dans un cas, elles peuvent toutes être chiffrées en cryptogrammes séparés, illustrés sous forme de boîtes verrouillées. Dans l'autre cas, nous pouvons mettre en paquet les quatre valeurs en une seule boîte. Dans le premier cas, cela prendra quatre boîtes, ce qui est moins efficace pour le stockage et les manipulations. Le dernier cas, la mise en paquet d'autant de valeurs que possible, est presque toujours préférable.

Je sais ce que vous pensez : la mise en paquet, qui stocke une série de valeurs dans un vecteur, ne rend-elle pas impossible le calcul des valeurs dans une liste? C'est-à-dire que, si nous avons v=(v1,v2,,vl), que ce passe-t-il si je voulais v1+v2? Nous avons accès à une opération appelée rotation. La rotation prend un cryptogramme qui représente le chiffrement de (v1,v2,,vl) et le transforme en Rot([v]), qui représente le chiffrement de (v2,v3,,vl,v1), c'est‑à‑dire qu'il déplace toutes les valeurs à gauche d'un emplacement, glissant la première valeur dans le dernier emplacement. Donc, en calculant [v]Rot([v]), nous obtenons

(v1+v2,v2+v3,,vl+v1)

et la valeur souhaitée est dans le premier emplacement.

Mathématiquement, la mise en paquet est réalisée en exploitant les propriétés du texte clair, du texte brut et des espaces du texte chiffré. Souvenez-vous que les fonctions de chiffrement et de déchiffrement sont des cartes entre les deux derniers espaces. La mise en paquet exige une autre étape appeléeencodage, qui code un vecteur (potentiellement complexe, mais dans notre cas, réel) de valeurs v à partir de l'espace du texte clair en un polynôme de texte brut p. Les données de p ne sont pas lisibles par un humain, mais elles peuvent être décodées en fonction du vecteur des valeurs par tout ordinateur sans avoir à recourir à des clés. Le polynôme de texte brut p peut être chiffré en cryptogramme [v] et utilisé pour calculer les statistiques sur les données de lecteurs optiques.Note de bas de page 4

Analyse statistique efficace au moyen de la mise en paquet

Pour revenir à l'analyse statistique des données de lecteurs optiques, souvenez‑vous que le problème était que le chiffrement de chaque valeur en cryptogramme était trop coûteux. La mise en paquet nous permettra de vectoriser ce processus, rendant ses ordres de grandeur plus efficaces en matière de communication et de calcul.

Nous pouvons maintenant commencer à calculer les statistiques désirées de notre liste v=(v1,v2,,vl). La première valeur d'intérêt est le total,Tv=i=1lvi, obtenu en additionnant toutes les valeurs dans la liste. Après avoir chiffré en un cryptogramme mis en paquet [v], nous pouvons simplement ajouter des rotations du cryptogramme [v] à lui‑même jusqu'à ce que nous ayons un emplacement avec la somme de toutes les valeurs. En fait, nous pouvons faire mieux que cette stratégie naïve de rotations et d'additions – nous pouvons le faire en étapes log2l en faisant d'abord une rotation d'un emplacement, puis de deux, puis de quatre, puis de huit jusqu'à ce que nous obtenions le total Tv dans un emplacement.

Ensuite, nous voulons la moyenne, Mv=Tv/l. Pour faire cela, nous chiffrons la valeur 1/l en cryptogramme [1/l] et l'envoyons avec la liste [v]. Nous pouvons ensuite simplement multiplier cette valeur par le cryptogramme que nous avons obtenu lorsque nous avons calculé le total. Il en va de même pour la variance, Vv=1/li=1l(vi-Mv)2, où nous soustrayons la moyenne par [v], multiplions le résultat par lui-même, calculons de nouveau le total, puis le multiplions de nouveau par le cryptogramme [1/ l].

Examinons les économies que la mise en paquet nous a permis de faire. Dans notre cas, nous avions environ 13 millions de points de données qui ont été séparés en 18 000 listes. En supposant que nous pourrions mettre en paquet chaque liste en un seul cryptogramme, cela réduit la taille des ensembles de données chiffrées de près de trois ordres de grandeur. Mais en réalité, les différentes listes avaient toutes des tailles différentes, certaines comptant des dizaines de milliers d'entrées et d'autres n'en comptant que deux ou trois, dont la majorité se situait dans la fourchette des centaines aux milliers. Au moyen d'une manipulation intelligente, nous avons été capables de mettre en paquet de multiples listes en cryptogrammes uniques et d'exécuter les algorithmes de total, de moyenne et de variance pour celles‑ci tous en même temps. En utilisant des cryptogrammes qui peuvent mettre en paquet 8 192 valeurs en même temps, nous avons pu réduire le nombre de cryptogrammes à seulement 2 124. À environ 1 Mo par cryptogramme, cela fait en sorte que l'ensemble de données chiffrées représente environ deux gigaoctets (Go). Comme les données en texte clair prennent 84 mégaoctets (Mo), cela a abouti à un facteur d'élargissement d'environ 25 fois. En tout, le traitement informatique chiffré a pris environ 19 minutes, ce qui est 30 fois plus long que le traitement informatique non chiffré.

Application 2 : Classification de texte confidentiel fondée sur le chiffrement homomorphe

Ensuite, nous avons attaqué la tâche d'entraînement pour l'apprentissage automatique. L'entraînement pour l'apprentissage automatique est une tâche réputée pour être coûteuse, donc nous ne savions pas exactement si nous serions capables de mettre en œuvre une solution pratique.

Souvenez‑vous de la première tâche dans le flux de travail des données de lecteurs optiques – les descriptions de produits pleines de bruit qui dépendant du détaillant doivent être classées par code du SCPAN. C'est une tâche de classification de textes comprenant de multiples catégories. Nous avons créé un ensemble de données synthétique à partir d'un répertoire en ligne de descriptions de produits et nous leur avons attribué un de cinq codes du SCPAN.

L'exécution d'un réseau neuronal représente essentiellement la multiplication d'un vecteur par une série de matrices, et l'entraînement d'un réseau neuronal demande des passages vers l'avant, ce qui consiste à évaluer les données d'entraînement dans le réseau, ainsi que des passages vers l'arrière, qui utilisent la descente de gradient (stochastique) et la règle de chaînage afin de trouver la meilleure façon de mettre à jour les paramètres du modèle pour améliorer la performance. Tout cela se résume à la multiplication de valeurs par d'autres valeurs, et en ayant accès à la multiplication homomorphe, l'entraînement d'un réseau chiffré est possible en théorie. En pratique, cela est entravé par une limite de base du procédé CKKS : la nature échelonnée des multiplications homomorphes. Nous discuterons d'abord de cet élément, puis nous étudierons les différents aspects du protocole désignés pour l'atténuer.

Niveaux des cryptogrammes dans CKKS

Afin de protéger vos données pendant le chiffrement, le procédé CKKS ajoute un peu de bruit à chaque cryptogramme. L'inconvénient est que ce bruit s'accumule avec les opérations consécutives et doit être modulé. Le CKKS a un mécanisme intégré pour cela, mais malheureusement il ne permet qu'un nombre limité d'opérations sur un même cryptogramme.

Supposons que nous avons deux cryptogrammes fraîchement chiffrés : [v1] et [v2]. Nous pouvons les multiplier de manière homomorphe pour obtenir le cryptogramme [v1v2]. Le problème est que le bruitNote de bas de page 5 dans le cryptogramme qui en résulte est beaucoup plus important que pour ceux nouvellement chiffrés, donc si nous le multiplions par le cryptogramme fraîchement chiffré [v3], le résultat serait touché par cette discordance.

Il faudrait d'abord remettre à l'échelle le cryptogramme [v1v2]. C'est géré de façon transparente par la bibliothèque de CH, mais sous le capot, le cryptogramme est déplacé dans un espace légèrement différent. Nous disons que [v1v2] a descendu d'un niveau, ce qui signifie que le cryptogramme a commencé au niveau L-1, et après la remise à l'échelle, il se trouve sur le niveau L-1. La valeur L est déterminée par les paramètres de sécurité que nous choisissons lorsque nous configurons le procédé de CH.

Nous avons maintenant [v1v2] qui a une quantité normale de bruit, mais qui se trouve au niveau L -1, et le [v3] fraîchement chiffré qui est toujours au niveau L. Malheureusement, nous ne pouvons pas effectuer d'opérations sur les cryptogrammes qui se trouvent sur différents niveaux, donc nous devons d'abord réduire le niveau de [v3] à L-1 par permutation modulée. Maintenant que les deux cryptogrammes sont au même niveau, nous pouvons enfin les multiplier comme souhaité. Il n'est pas nécessaire de remettre à l'échelle de résultat des additions, mais nous devons le faire pour chaque multiplication.

Figure 4 : Une illustration des niveaux
Figure 4 : Une illustration des niveaux.

Une illustration des niveaux. À gauche nous pouvons voir le niveau sur lequel chaque cryptogramme se trouve : de haut en bas, nous avons les niveaux L, L-1 et L-2. Les valeurs nouvellement chiffrées v1,v2 et v3 se trouvent toutes au niveau L tout en haut. Après la multiplication, v1v2 descend au niveau L-1. Si nous voulons multiplier v1v2 par v3, nous devons d'abord descendre v3 au niveau L-1. Le produit qui en résulte, v1v2v3, se trouve au niveau L-2.

Cette histoire de niveaux a deux conséquences. Premièrement, le développeur doit être conscient du niveau des cryptogrammes qu'il utilise. Deuxièmement, les cryptogrammes atteindront éventuellement le niveau 0 après de nombreuses multiplications consécutives; à ce moment‑là, ils sont épuisés et nous ne pouvons plus effectuer d'autres multiplications.

Il y a quelques options pour élargir les calculs au‑delà du nombre de niveaux disponibles. La première est un processus qui s'appelle le bootstrap, selon lequel le cryptogramme est déchiffré de manière homomorphe puis chiffré de nouveau, ce qui crée un nouveau cryptogramme. Ce processus peut en théorie permettre un nombre illimité de multiplications. Cependant, cette charge supplémentaire ajoute un coût au traitement informatique. Il est également possible d'actualiser les cryptogrammes en les renvoyant au détenteur de clé secrète, qui peut les déchiffrer et les chiffrer de nouveau avant de les renvoyer sur le nuage. Le va‑et‑vient des cryptogrammes ajoute un coût en communication, mais ça en vaut parfois la peine lorsqu'il n'y a pas beaucoup de cryptogrammes à envoyer.

Incidence des niveaux sur notre structure de réseau

Nous devions envisager cette contrainte fondamentale relative au CH lorsque nous avons conçu notre réseau neuronal. Le processus d'entraînement d'un réseau demande de réaliser une prédiction, d'évaluer la prédiction et de mettre à jour les paramètres du modèle. Cela signifie que chaque tour, ou époque, d'entraînement consomme des niveaux multiplicatifs. Nous avons essayé de réduire au minimum le nombre de multiplications nécessaires pour traverser le réseau d'un bout à l'autre afin de maximiser le nombre de tours d'entraînement disponibles. Nous décrirons maintenant la structure du réseau et la stratégie d'encodage.

L'architecture du réseau a été inspirée par la solution existante pour la production. Cela correspondait à un modèle d'ensemble d'apprenants linéaires. Nous avons entraîné plusieurs réseaux à couche simple et, au moment de la prédiction, nous avons fait en sorte que chaque apprenant vote pour chaque entrée. Nous avons choisi cette approche parce qu'elle réduisait la quantité de travail requis pour entraîner chaque modèle – moins de temps d'entraînement signifiait moins de multiplications.

Chaque couche dans un réseau neuronal est une matrice des poids des paramètres multipliée par des vecteurs de données pendant le passage vers l'avant. Nous pouvons adapter cela au CH en chiffrant chaque vecteur d'entrée en un seul cryptogramme et en chiffrant chaque rang de la matrice des poids en un autre cryptogramme. Le passage vers l'avant devient alors plusieurs multiplications vectorielles, suivies de nombreuses rotations et multiplications logarithmiques pour calculer la somme des extrants (souvenez‑vous que la multiplication matricielle est une série de produits scalaires, qui constitue une multiplication des composantes suivie d'un calcul de la somme des valeurs qui en résultent).

Le prétraitement est une partie importante de toute tâche de classification de texte. Nos données étaient constituées de courtes phrases, qui comportaient souvent des acronymes ou des abréviations. Nous avons choisi un encodage à caractère n-gramme, où n égale trois, quatre, cinq et six – « crème glacée » a été divisé en 3 grammes {« crè », « rèm », « ème », « vglav », « vlac », « vacé », « céev »}. Ces n-grammes ont été recueillis et dénombrés pour l'intégralité de l'ensemble de données et ont été utilisés pour chiffrer à chaud chaque entrée. Un vectoriseur de hachageNote de bas de page 6 a été utilisé pour réduire la dimension des entrées chiffrées.

De la même façon que nous avons mis en paquet de multiples listes dans l'analyse statistique, nous avons constaté que nous pouvions mettre en paquet de multiples paquets et les entraîner en même temps. L'utilisation d'une valeur N=215 signifiait que nous pouvions mettre en paquet 16 384 valeurs dans chaque cryptogramme, donc si nous hachions nos données en 4 096 dimensions, nous pourrions mettre quatre modèles dans chaque cryptogramme. Cela avait l'avantage supplémentaire de réduire le nombre de cryptogrammes requis pour chiffrer notre ensemble de données par un facteur de quatre. Cela signifie que nous pouvions entraîner quatre modèles simultanément.

Notre choix de paramètres de chiffrement signifiait que nous avions entre 12 et 16 multiplications avant de manquer de niveaux. À partir d'un réseau à une seule couche, le passage vers l'avant et le passage vers l'arrière nécessitaient chacun deux multiplications, ce qui nous laissait de la place pour trois à quatre époques avant que nos cryptogrammes modèles soient épuisés. Nos ensembles signifiaient que nous pouvions entraîner des modèles valant plusieurs cryptogrammes si désirés, ce qui signifie que nous pourrions avoir autant d'apprenants que souhaité au coût de temps supplémentaire d'entraînement. En modulant soigneusement quel modèle a appris au sujet de quelles données, cela nous a aidés à maximiser la performance globale de l'ensemble.

Notre ensemble de données représentait 40 000 exemples d'entraînements et 10 000 exemples de test qui ont tous été distribués également dans nos cinq classes. Entraîner quatre sous‑modèles en six époques a pris cinq heures et a permis d'obtenir un modèle qui a obtenu une précision de 74 % sur l'ensemble des essais. En utilisant la tactique d'actualisation des cryptogrammes précédemment décrite, nous pouvons hypothétiquement entraîner pendant autant d'époques que nous le voulons, bien que chaque actualisation ajoute des coûts de communication supplémentaires au processus.Note de bas de page 7 Après l'entraînement, le nuage renvoie le modèle chiffré à StatCan, et nous pouvons l'exécuter en texte clair sur les données en production. Ou nous pouvons conserver le modèle chiffré sur le nuage et exécuter une inférence de modèle chiffrée lorsque nous avons de nouvelles données à classer.

Conclusion

Cela conclut la série de Statistique Canada sur les applications CH pour les données de lecteurs optiques examinées à ce jour. Le CH a un certain nombre d'autres applications qui pourraient s'avérer intéressantes pour un organisme national de statistique comme l'intersection d'ensembles confidentiels, selon laquelle deux parties ou plus calculent ensemble l'intersection d'ensembles de données confidentielles sans les partager, ainsi que le couplage d'enregistrements préservant la confidentialité, selon lequel les parties effectuent des couplages, des partages et des traitements informatiques sur des microdonnées jointes à leurs ensembles de données confidentielles.

Il y a encore beaucoup de choses à explorer dans le domaine des TAC et StatCan travaille à tirer profit de ce nouveau domaine pour protéger les renseignements personnels des Canadiens tout en fournissant des renseignements de qualité qui compte.

Rencontre avec le scientifique des données

Inscrivez-vous à la présentation Rencontre avec le scientifique des données

Si vous avez des questions à propos de mon article ou si vous souhaitez en discuter davantage, je vous invite à une Rencontre avec le scientifique des données, un événement au cours duquel les auteurs rencontrent les lecteurs, présentent leur sujet et discutent de leurs résultats.

Jeudi, le 15 décembre
14 h 00 à 15 h 00 HE
MS Teams – le lien sera fourni aux participants par courriel

Inscrivez-vous à la présentation Rencontre avec le scientifique des données. À bientôt !

Bibliographie

Système de classification des produits de l'Amérique du Nord (SCPAN), Canada 2017, version 1.0

Cheon, J. H., Kim, A., Kim, M., et Song, Y. (2016). Homomorphic Encryption for Arithmetic of Approximate Numbers.(en anglais seulement). Cryptology ePrint Archive.

Gentry, C. (2009). A fully homomorphic encryption scheme. Thèse de doctorat, Stanford University. Craig Gentry's PhD Thesis (en anglais seulement)

Zanussi, Z., Santos B., et Molladavoudi S. (2021). Supervised Text Classification with Leveled Homomorphic Encryption. Dans Proceedings 63rd ISI World Statistics Congress (Vol. 11, p. 16). International Statistical Institute - Statistical Science for a Better World (en anglais seulement)

Date de modification :

Technologies d'amélioration de la protection de la vie privée : un survol de l'apprentissage fédéré

Par : Julian Templeton, Statistique Canada

Introduction

Les organismes nationaux de statistique (ONS) utilisent les données recueillies pour fournir des renseignements sur divers sujets, dans l'intérêt public. Malgré leur accès à de vastes quantités de données, il y a des limites à ce qui peut être recueilli ou présenté, quels qu'en soient les avantages. Les ONS doivent veiller à ce que les renseignements personnels restent privés, y compris les données diffusées. Au Canada, il existe des lois qui imposent la protection des données confidentielles, et Statistique Canada doit s'y conformer. Lorsque des données de nature délicate sont recueillies, tout le monde n'est pas convaincu qu'elles resteront privées et protégées, ce qui peut amener certaines personnes à hésiter à fournir leurs données.

Afin de renforcer la protection des données dans l'ensemble du secteur public et de permettre de nouvelles possibilités de collecte, de partage et d'utilisation des données, divers ONS explorent activement des moyens innovants d'utiliser et de recueillir des données de manière privée. Les technologies d'amélioration de la protection de la vie privée ou technologies liées à la protection de la vie privée (TPVP) constituent un nouvel ensemble de techniques actuellement à l'étude (voir : Une brève enquête sur les technologies liées à la protection de la vie privée).

Il existe de nombreux types de techniques d'amélioration de la protection de la vie privée, dont les suivantes.

  • Apprentissage fédéré : Permet de construire des modèles d'apprentissage automatique (AA) à partir de données distribuées, qui restent sur l'unité périphérique d'un client et ne sont pas recueillies. Les clients utilisent leurs données et leur unité périphérique pour entraîner des modèles d'AA locaux, qui sont ensuite recueillis et compilés dans un modèle central. Il s'agit d'un sous-ensemble de l'AA distribué, et nous en parlerons plus en détail dans le présent article.
  • Chiffrement homomorphe : Permet d'effectuer des opérations mathématiques sur des données chiffrées afin de préserver la protection de la vie privée pendant l'utilisation des données. Pour en savoir plus à ce sujet, voir le récent article du Réseau de la science des données : Technologies liées à la protection de la vie privée partie deux : introduction au chiffrement homomorphe.
  • Environnements d'exécution de confiance : Environnements virtuels isolés, également appelés enclaves sécurisées, qui peuvent exécuter du code sans être accessibles ailleurs.
  • Confidentialité différentielle : Ajoute du bruit aux données afin que des modifications puissent leur être occasionnellement apportées. Cela permet de protéger les données et de fournir un déni plausible, de sorte qu'une seule entrée de données peut avoir été modifiée par rapport à son état initial. La suppression d'un seul échantillon de formation de l'ensemble d'apprentissage ne devrait pas avoir d'incidence sur les résultats globaux.
  • Calcul sécurisé multi-parties : Permet à deux parties ou plus d'exécuter conjointement et en toute sécurité des fonctions sur leurs données.

Toutes les techniques d'amélioration de la protection de la vie privée énumérées ci-dessus offrent une méthode unique d'amélioration de la protection de la vie privée. Cependant, chaque technique présente ses propres inconvénients et doit être sélectionnée en fonction du cas d'utilisation dérivé. Bien qu'aucune technique d'amélioration de la protection de la vie privée ne soit une solution universelle aux problèmes de protection de la vie privée, différentes techniques peuvent être utilisées en conjonction les unes avec les autres pour assurer une meilleure protection de la vie privée dans l'ensemble. Statistique Canada est en phase de recherche sur les techniques d'amélioration de la protection de la vie privée. Il devient évident que l'adoption généralisée de techniques d'amélioration de la protection de la vie privée dans les secteurs public et privé sera nécessaire à mesure que la confidentialité des données deviendra plus courante et que de nouvelles lois sur la confidentialité des données seront adoptées.

L'une des méthodes d'exploration des statistiques consiste à utiliser des modèles d'AA, qui visent à apprendre des modèles par l'intermédiaire des données et à fournir des données de sortie cibles. Différents ONS utilisent déjà ou commencent à utiliser l'AA pour soutenir les processus internes, alléger la charge des analystes et améliorer l'efficacité globale. L'un des défis de l'AA est que la qualité des données utilisées est importante pour obtenir un modèle performant. D'après un dicton courant dans le domaine de l'intelligence artificielle, et même dans d'autres domaines de la science des données, on dit : « à données inexactes, résultats erronés ». Heureusement, les ONS détiennent des données de haute qualité qui peuvent être utilisées de manière appropriée et éthique pour entraîner des modèles d'AA de haute qualité (néanmoins, cet article traite uniquement de la confidentialité des données). Cependant, il peut s'avérer difficile d'acquérir des données de qualité sur des sujets de nature délicate ainsi que des données protégées par la loi pour explorer des statistiques sur des domaines précis.

De toutes les techniques d'amélioration de la protection de la vie privée présentées ci-dessus, l'apprentissage fédéré est l'approche qui permet de générer des modèles d'AA avec des données de nature délicate ou protégées par la loi, en supposant que les clients ou les collaborateurs soient d'accord. Le présent article traite de l'apprentissage fédéré et des cas potentiels de son utilisation dans le secteur public lorsque des recherches plus approfondies auront été menées.

Contexte de l'apprentissage fédéré

L'apprentissage fédéré est une technique d'apprentissage distribué qui vise à construire un modèle d'AA central à partir de sources de données distribuées, sans recueillir les données. Les données distribuées utilisées pour l'entraînement du modèle d'AA centralisé qu'une autorité centrale détiendra restent sur les unités périphériques des clients et n'en partent pas. Les réseaux neuronaux sont utilisés pour l'apprentissage fédéré, car ils utilisent des couches de facteurs de pondération numériques pour l'apprentissage qui sont faciles à regrouper et à partager. Dans le cadre du présent article, un client désigne une personne ou une organisation qui détient des données pertinentes qu'elle accepte d'utiliser dans le cadre du processus d'apprentissage fédéré, en collaboration avec l'autorité centrale. Parmi les exemples de clients, citons les participants à une collecte par approche participative qui utilisent leur ordinateur portatif, leur téléphone ou leur tablette et les organisations détenant des données pertinentes. Une autorité centrale fait référence à la personne ou à l'organisation (comme les ONS ou les entreprises privées) responsable de la détention, de la mise à jour et, possiblement, de la distribution du modèle d'AA central, entraînée sur les unités périphériques des clients avant que la collecte des facteurs de pondération du modèle des clients ne soit envoyée pour être regroupée.

Pour utiliser l'apprentissage fédéré afin d'entraîner un modèle d'AA détenu et initialisé par l'autorité centrale, sans visualiser les données d'entraînement du client, le modèle initial devrait d'abord être entraîné avec les données stockées par l'autorité centrale. Ensuite, l'autorité centrale soumettra des demandes à un sous-ensemble de clients pour entraîner le modèle. Si le client peut entraîner le modèle, il envoie le modèle et les instructions pour que son unité périphérique effectue l'entraînement. Les clients entraîneront ensuite le modèle d'AA fourni en utilisant les données stockées sur leur unité périphérique.

Une fois les modèles entraînés localement, les unités périphériques des clients renverront uniquement les facteurs de pondération du modèle d'AA mis à jour, sans les données utilisées pour l'entraînement. Ces facteurs de pondération sont des nombres ajustés pendant l'entraînement pour en apprendre plus sur les données. L'autorité centrale reçoit ensuite ces facteurs de pondération des clients et les regroupe pour les utiliser comme facteurs de pondération actualisés pour le modèle centralisé. Il en résulte un modèle d'AA entraîné détenu par l'autorité centrale sans recueillir ni apprendre les données détenues par ses clients. Le présent article ne portera pas sur tous les aspects techniques de ce processus ni sur les différentes options offertes, mais je mets en évidence le processus dans la figure ci-dessous.

 
Figure 1 : Vue d’ensemble du processus d’apprentissage fédéré
Figure 1 : Vue d'ensemble du processus d'apprentissage fédéré

Une vue d'ensemble du processus d'apprentissage fédéré. 1) L'autorité centrale dispose d'un modèle qui doit être entraîné. Une demande d'entraînement est fournie à deux clients qui acceptent la demande et reçoivent le modèle. 2) Les unités périphériques des clients utilisent leurs données locales pour entraîner le modèle reçu sur leur unité périphérique. 3) Après l'entraînement, chaque client renvoie ses facteurs de pondération à l'autorité centrale pour un traitement sans les données. 4) L'autorité centrale prend les facteurs de pondération mis à jour et calcule les données regroupées pour mettre à jour le modèle. La valeur w1,1 représente le premier facteur de pondération pour la première couche et la valeur wn,n représente le ne facteur de pondération pour la ne couche. 5) L'autorité centrale utilise les facteurs de pondération actualisés pour mettre à jour le modèle central. 6) Le modèle mis à jour est diffusé aux clients afin qu'ils puissent l'utiliser ou pour faire un entraînement complémentaire. Ce processus est répété au besoin.

Comme pour les autres techniques d'amélioration de la protection de la vie privée, l'apprentissage fédéré dispose de bibliothèques, de sorte que la technique peut être utilisée pour la recherche et la production. Toutefois, il reste encore beaucoup de choses à mettre en œuvre dans ces bibliothèques avant qu'une bibliothèque libre entièrement robuste soit accessible pour la production. D'autres bibliothèques sont créées en permanence, mais même les plus importantes ne sont pas assez sophistiquées pour traiter des problèmes complexes sans de solides compétences en programmation pour compléter les fonctionnalités.

Utilisation de l'apprentissage fédéré pour les organisations

Comme l'apprentissage fédéré permet d'entraîner des réseaux neuronaux dans un environnement distribué sans avoir accès aux données, des projets autrefois impossibles sont désormais envisageables. Un exemple de projet collaboratif de preuve de concept a été présenté au PET Lab des Nations Unies (le laboratoire des techniques d'amélioration de la protection de la vie privée) par divers ONS. Cette preuve de concept explique comment tirer des enseignements à partir de données distribuées sur l'activité physique à l'aide de l'apprentissage fédéré. Ce projet a utilisé et distribué un ensemble de données ouvertes sur l'activité physique parmi les ONS, où chaque ONS considère que ces données sont privées dans le cadre de son projet. Statistique Canada vise à tirer des enseignements à partir des données sur l'activité physique des autres ONS ainsi que de ses propres données privées sur l'activité physique, en construisant un modèle avec des données distribuées sans les recueillir (ce qui atténue les préoccupations juridiques et en matière de confidentialité de chaque ONS). Chaque ONS peut ensuite utiliser le modèle généré à ses propres fins statistiques.

Ce projet a permis de reproduire divers scénarios d'apprentissage fédéré dans lesquels les données distribuées ont généré un modèle détenu par l'autorité centrale sans accéder à aucune des données ni les recueillir. En outre, des expériences comportant l'utilisation d'un chiffrement homomorphe en plus de l'apprentissage fédéré, en chiffrant un sous-ensemble des facteurs de pondération du modèle pour les garder privés, ont également été couronnées de succès dans le cadre du projet.

Cela met en évidence une utilisation claire concernant l'apprentissage fédéré : les organisations qui ne peuvent généralement pas transmettre de données de nature délicate peuvent néanmoins générer des modèles à utiliser à des fins statistiques sans divulguer les données. Cela peut donner l'occasion de réaliser des projets comportant des domaines qui sont de nature délicate ou protégés par la loi et qui ne se produiraient pas autrement, comme certaines collaborations interorganismes. Bien entendu, les ONS et d'autres organisations gouvernementales étudient et expérimentent soigneusement les techniques d'amélioration de la protection de la vie privée et leurs faiblesses avant de prendre des mesures pour rendre ces techniques opérationnelles. Nous y reviendrons plus tard.

Une autre utilisation potentielle des techniques d'amélioration de la protection de la vie privée dans le cadre d'un ONS est celle des activités de collecte par approche participative. Cependant, pour certains sujets, les participants peuvent être réticents à fournir des renseignements, quelle que soit l'incitation. Par conséquent, en offrant une application ou une page Web sécurisée où les utilisateurs peuvent participer sans partager de données, le nombre d'utilisateurs qui hésitent à participer peut être moindre. Il reste néanmoins des défis à déterminer et à anticiper avant de pouvoir mettre en œuvre ces techniques, comme les attaques possibles et les stratégies de communication.

Les défis de l'apprentissage fédéré

Si l'apprentissage fédéré et les autres techniques d'amélioration de la protection de la vie privée peuvent sembler être des outils magiques capables de résoudre tous les problèmes majeurs en matière de protection de la vie privée, il y a des défis à prendre en compte. Une seule technique d'amélioration de la protection de la vie privée ne permet pas d'atténuer complètement tous les risques liés à la protection de la vie privée, mais fournira des mesures d'atténuation supplémentaires permettant de réaliser des projets qui seraient autrement impossibles. Les techniques d'amélioration de la protection de la vie privée à utiliser et la stratégie de communication qui explique la façon dont les données d'un client restent privées sont essentielles et varieront en fonction de chaque cas d'utilisation.

Les techniques d'amélioration de la protection de la vie privée font l'objet de recherches actives, et de nombreuses attaques et défenses contre les techniques d'amélioration de la protection de la vie privée sont à l'étude. Les attaques traditionnelles contre les modèles d'AA peuvent toujours être mises en œuvre contre certaines techniques d'amélioration de la protection de la vie privée et nécessitent toujours des défenses, ce qui fait que la technique d'amélioration de la protection de la vie privée agit comme une mesure de protection de la vie privée supplémentaire qui nécessite toujours des défenses contre les attaques. Par exemple, une attaque par inférence d'appartenance peut être effectuée pour déterminer si des données ont été utilisées pour entraîner un modèle. Comme l'apprentissage fédéré combine les facteurs de pondération des modèles recueillis auprès des clients, il y a un degré de défense supplémentaire contre certaines attaques, mais il existe des scénarios où les attaques peuvent encore être efficaces contre le modèle centralisé. Les ONS enquêtent sur ces questions afin de déterminer comment atténuer les attaques et se préparer à rendre les techniques d'amélioration de la protection de la vie privée opérationnelles en toute sécurité à l'avenir.

S'il existe des bibliothèques de programmation accessibles pour utiliser l'apprentissage fédéré, toutes ne sont pas prêtes à être utilisées dans des systèmes de production sans avoir de défis à relever ou en utilisant des logiciels payants (qui peuvent encore ne pas inclure toutes les fonctionnalités nécessaires à un cas d'utilisation). Par conséquent, l'un des principaux défis à relever par la communauté des techniques d'amélioration de la protection de la vie privée sera de continuer à développer des logiciels libres que les personnes ou les organisations pourront utiliser facilement et en toute confiance, au-delà des contextes de simulation.

Le dernier défi central à évoquer est celui des stratégies de communication entourant l'utilisation de l'apprentissage fédéré. Lorsque les organisations collaborent au moyen de l'apprentissage fédéré, elles peuvent procéder à un audit du code base et participer à son développement pour s'assurer qu'il est correctement mis en œuvre et qu'il peut être utilisé en toute sécurité avec leurs données. Il est donc plus facile à utiliser dans le cadre de collaborations professionnelles où des experts sont disponibles pour évaluer et développer les systèmes. Cependant, dans un cadre public, l'histoire est tout à fait différente. Chaque client devra être convaincu que l'approche fonctionne et que ses données ne quitteront jamais réellement son unité périphérique. Étant donné les difficultés générales entourant la confiance entre les utilisateurs et les organisations, il s'agit d'un obstacle important que les communautés et les organisations chargées des techniques d'amélioration de la protection de la vie privée devront surmonter.

Conclusions

L'apprentissage fédéré est un outil important qui peut conduire à des occasions qui ne sont pas possibles autrement. En générant des modèles d'AA sans avoir accès aux données utilisées pour l'entraînement, les ONS peuvent fournir au public des renseignements qu'il serait impossible de fournir autrement. Cette technique est actuellement utilisée par des organisations privées et fait l'objet de recherches actives. Les ONS étudient les techniques d'amélioration de la protection de la vie privée dans l'intention de favoriser les collaborations à l'échelle mondiale qui peuvent apporter un avantage à la société dans son ensemble. Ce travail de recherche peut également s'étendre à d'autres organisations publiques et permettre davantage de collaborations interorganismes au sein de la fonction publique. Bien qu'il reste encore beaucoup de travail à faire à Statistique Canada avant de rendre fonctionnel l'apprentissage fédéré, la poursuite de nos recherches permettra d'améliorer la protection de la vie privée et de produire davantage de statistiques.

L'apprentissage fédéré présente de nombreux défis qui doivent être relevés, mais les ONS et les communautés internationales des techniques d'amélioration de la protection de la vie privée continueront à collaborer et à utiliser la technique de manière sûre et efficace, en maintenant la protection de la vie privée au premier plan de toutes les initiatives. Chaque technique d'amélioration de la protection de la vie privée fera l'objet d'une analyse des attaques afin de prouver qu'il s'agit d'une méthode de protection de la vie privée solide. Tout cela devra être clairement communiqué au public et aux autres organisations.

Rencontre avec le scientifique des données

Inscrivez-vous à la présentation Rencontre avec le scientifique des données

Si vous avez des questions à propos de mon article ou si vous souhaitez en discuter davantage, je vous invite à une Rencontre avec le scientifique des données, un événement au cours duquel les auteurs rencontrent les lecteurs, présentent leur sujet et discutent de leurs résultats.

Jeudi, le 15 décembre
14 h 00 à 15 h 00 HE
MS Teams – le lien sera fourni aux participants par courriel

Inscrivez-vous à la présentation Rencontre avec le scientifique des données. À bientôt !

Date de modification :

Tirer des avantages pour le public à partir des données administratives : une méthode d’amélioration de l’analyse à l’aide de données couplées

Par : Sarry Zheng et Howard Swerdfeger, École de la fonction publique du Canada

La vie quotidienne des Canadiens est de plus en plus façonnée par de nouvelles technologies et de nouveaux services qui sont fondés sur les données. En utilisant ces technologies et ces services, le gouvernement du Canada est en mesure d'accéder à des données provenant de sources multiples afin de mieux répondre aux besoins des citoyens et d'éclairer la prise de décisions.

L'Environnement de fichiers couplables de Statistique Canada est l'un des moyens permettant d'améliorer l'analyse. Il s'agit d'un environnement au niveau des entreprises qui permet de coupler les données administratives aux renseignements sur les entreprises et les particuliers dans l'ensemble du Canada. Cet outil permet d'accéder à des renseignements plus précis et à des analyses plus complètes. Il permet également de réduire le fardeau d'enquête et de réponse des ministères et des industries privées.

Qu'entend-on par données couplées?

Les données couplées découlent d'un processus par lequel les enregistrements de différentes sources de données sont réunis en un seul fichier à l'aide d'identificateurs comme le nom, la date de naissance, l'adresse et d'autres caractéristiques. Ce processus est également connu sous le nom de couplage d'enregistrements, d'appariement de données et de résolution d'entités, entre autres termes. L'idée initiale du couplage de données remonte aux années 1950. Cette technique est utilisée dans de nombreux domaines tels que l'entreposage de données, les renseignements organisationnels et la recherche médicale.

Types de couplage

Il existe deux types de couplage : l'appariement statistique et l'appariement exact.

  1. L'appariement statistique permet de créer un fichier qui reflète la répartition de la population sous-jacente. Les enregistrements qui sont combinés ne correspondent pas nécessairement à la même entité, comme une personne ou une entreprise. On suppose que la relation des variables dans la population sera semblable à la relation dans le fichier. Cette méthode est fréquemment utilisée dans les études de marché.
  2. L'appariement exact consiste à coupler les renseignements relatifs à un enregistrement particulier dans un fichier aux renseignements d'un autre fichier afin de créer un seul fichier contenant les renseignements exacts pour chaque enregistrement. Il en existe deux sous-types : le couplage d'enregistrements déterministe et le couplage d'enregistrements probabiliste.Note de bas de page 1
    • Le couplage d'enregistrements déterministe permet de coupler des enregistrements à partir d'identificateurs communs entre les sources de données.
    • Le couplage d'enregistrements probabiliste permet de coupler des enregistrements lorsque leurs colonnes ne sont pas toutes identiques, selon la probabilité que les enregistrements correspondent.

Couplage d'enregistrements probabiliste

Le couplage d'enregistrements probabiliste est une méthode pouvant servir à coupler des fichiers de données et à créer un ensemble de paires potentielles lorsqu'un ensemble de données ne contient pas d'identificateur unique, qu'il est incomplet ou qu'il comporte des erreurs. Comme nous pouvons le voir à la figure 1, les premiers enregistrements sont identiques, tandis que les deuxièmes et les troisièmes enregistrements correspondent, mais ne sont pas identiques. L'objectif de tout algorithme de couplage d'enregistrements probabiliste est de reproduire la capacité d'un être humain d'affirmer avec une grande certitude que ces entités sont les mêmes.

Figure 1 Exemple d'ensembles de données à joindre pour effectuer un couplage probabiliste
Description - Figure 1 Exemple d'ensembles de données à joindre pour effectuer un couplage probabiliste
Exemple d'ensembles de données 1
Nom de l'entreprise Adresse Ville Prov. Code postal No de permis Nombre de produits
ABC inc. 1072, rue Booth Saskatoon Sask. S5P 1E4 1111 50
XYZ ltée 118, Hammer Way Richmond C.-B. V7A 5E5 1112 3
613 Canada inc. 210, rue Glasgow Ottawa Ont. K1A 0E4 1113 500

Appariement des identificateurs identiques, seuil de 97 %

Exemple d'ensembles de données 2
Nom_entreprise Addr. Ville Prov. C.P.
ABC inc. 1072, rue Booth Saskatoon Sask. S5P 1E4
XYZ limitée 118, Hammer Way Richmond C.-B. V7A 5E5
613 Canada Incorporated 10200 - 210, rue Glassgow Ottawa ON K1A 0E4

Pratiques normalisées

L'un des outils que Statistique Canada utilise pour effectuer des couplages d'enregistrements probabilistes est le logiciel SAS appelé G-Coup. Ce logiciel représente une mise en œuvre directe de l'algorithme de couplage d'enregistrements de Fellegi-Sunter, qui est offert comme application Windows.

À mesure que la puissance de calcul s'accroît, ce qui permet de coupler de plus grands ensembles de données en moins de temps et de les rendre accessibles sur des ordinateurs de bureau, la mise au point de nouveaux modèles théoriques et l'amélioration des méthodologies et des logiciels existants sont de plus en plus répandues. Par exemple, la trousse d'outils de couplage d'enregistrements dans Python (anglais seulement) et l'outil reclin (anglais seulement) dans R sont deux exemples de logiciels ouverts faciles à utiliser qui s'intègrent bien à la méthode de couplage d'enregistrements de Fellegi-Sunter.

Algorithme de Fellegi-Sunter

Depuis sa publication, l'algorithme de Fellegi-Sunter (1969)Note de bas de page 2 est devenu l'approche utilisée de facto pour faire le couplage d'enregistrements probabiliste. Ce modèle consiste à estimer les poids d'appariement pour chaque colonne individuelle et à combiner ces poids d'appariement en une probabilité d'appariement globale. En supposant que les variables doivent être indépendantes étant donné l'état de l'appariement, on peut combiner le modèle avec le théorème de Bayes et le quantifier à l'aide de deux paramètres clés pour chaque colonne, soit les probabilités m et u, où :

  • m est la probabilité que les valeurs d'une colonne donnée ne correspondent pas, mais que les enregistrements soient les mêmes.
  • u est la probabilité que les valeurs d'une colonne donnée soient les mêmes, mais pas les enregistrements.

Selon le théorème de Bayes

PR|D=PD|R*PRPD

où :

  • PR est la probabilité d'un appariement d'enregistrements.
  • PD est la probabilité d'appariement de certains éléments d'information.

En développant le dénominateur,

PR|D=PD|R*PRPD|R*PD+PD|R¯*PR¯

où :

  • PR¯ est la probabilité que deux enregistrements ne correspondent pas, ou 1-PR.

Comme nous avons plusieurs colonnes ou plusieurs lignes de données disponibles, nous pourrions utiliser mi et ui pour calculer les probabilités m et u de la ie colonne.

PR|D=i=1Ncolmi*PRi=1Ncolmi*PR+i=1Ncolui*1-PR

Dr. Yvan P. Fellegi

M. Yvan P. Fellegi a été statisticien en chef de Statistique Canada de 1985 à 2008. Au cours de son mandat, il a mis en application de nouvelles méthodes de collecte et de compilation de statistiques nationales. Il a aussi défendu haut et fort l'indépendance de l'organisme par rapport à la politique. En juin 2008, à la retraite de M. Fellegi, le Gouvernement canadien l'a nommé statisticien en chef émérite.

Comparaisons de chaînes

L'algorithme de Fellegi-Sunter a au moins un désavantage qui se règle habituellement lors des applications pratiques. Dans la pratique, pour de nombreuses colonnes, les probabilités m et u ne sont souvent pas fondées sur la probabilité que deux colonnes soient identiques, mais plutôt sur l'utilisation d'une fonction de distance appropriée pour mesurer la similarité entre deux colonnes, puis pour calculer le seuil. Les probabilités m et u seraient alors fondées sur ces seuils.

Pour les chaînes, il existe plusieurs fonctions de distance courantes, chacune pouvant être utile pour combiner des données et tenir compte des différences prévues (fautes d'orthographe) dans l'ensemble de données. Certaines de ces fonctions sont résumées ci-dessous :

Exemple d'ensembles de données 3
Fonctions de distance Nom de l'entreprise Nom_entreprise
Jaro-Winkler La société Odyssée d'Homère La société Odyssée d'Homer
Sous-chaîne commune la plus longue La société Nain tracassin Société Nain tracassin et fils
Distance de Levenshtein Quasimodo et Esmeralda inc.  Quazimodo et Ezmeralda inc.
Cosinus Les entreprises William « Bill » S. Preston et Ted « Theodore » Logan Les entreprises Ted « Theodore » Logan et William « Bill » S. Preston
Couplage d'unités lexicales Cabinet d'avocats Legal Eagle Legal Eagle (2017) avocats

Couplage d'unités lexicales

Bien que la combinaison de l'algorithme de Fellegi-Sunter et de mesures traditionnelles de la distance des chaînes soit très utile, elle présente plusieurs lacunes possibles :

  • Pour les colonnes qui comportent des niveaux catégoriques et qui ne sont pas réparties uniformément, seul le taux d'appariement moyen est pris en compte pour le paramètre u. Il faut penser à apparier la colonne de la ville avec la valeur « Williamstown », ce qui est bien plus porteur de renseignements que l'appariement de la valeur « Toronto ».
  • La plupart des algorithmes de distance des chaînes fonctionnent sur le plan des caractères. Ils partent du principe que les distances sémantiques sont des fonctions des caractères qui composent une chaîne, tandis que, en français comme en anglais, l'information est transmise aux lecteurs par les mots.

L'algorithme de couplage d'unités lexicales et le progiciel R permettent de corriger ces problèmes. L'algorithme peut aider à relever les enregistrements où plusieurs niveaux catégoriques sont présents. Il permet également d'indiquer les colonnes comportant plusieurs mots à la fois, comme le nom ou l'adresse d'une entreprise.

L'algorithme de base consiste à accomplir les étapes suivantes :

  1. Segmentez en unités lexicales les mots dans la colonne et comptez les occurrences de chaque unité lexicale dans l'ensemble de données.
    Figure 2 : Mots segmentés en unités lexicales dans chaque colonne
    Description - Figure 2 : Mots segmentés en unités lexicales dans chaque colonne
    Mots segmentés en unités lexicales dans chaque colonne
    id Addresse
    1 742, Evergreen Terrace Springfield
    2 19, rue Plympton, Springfield
    3 744, Evergreen Terr, Springfield
    4 100, Industrial Way Springfield

    Nettoyez et segmentez

    Nettoyez et segmentez - Unités lexicales
    id Unité lexicale
    1 742
    1 Evergreen
    1 Terrace
    1 Springfield
    2 19
    2 Pympton
    2 Rue
    2 Springfield
    3 744
    3 Evergreen
    3 Terrace

    Dénombrez les unités lexicales

    Dénombrez les unités lexicales
    Unité lexicale N
    Springfield 24
    Evergreen 12
    Terrace 12
    Plympton 6
    Industrial 4
  2. Répétez la procédure de segmentation en unités lexicales et de dénombrement pour un autre ensemble de données.
  3. Créez une jointure externe complète pour les unités lexicales à deux mots.
    Jointure externe complète pour les unités lexicales
    Unité lexicale N_a N_b U_prob
    Springfield 24 7 500 3,7%
    Evergreen 12 2 0,0005%
    Terrace 12 500 0,12%
    Plympton 6 1 0,00013%
    Industrial 4 8 0,00067%
  4. Utilisez cette option pour estimer la probabilité U pour chaque unité lexicale, où nta et ntb représentent le nombre d'occurrences de l'unité lexicale t dans l'ensemble de données a ou b, et Na et Nb représentent le nombre d'enregistrements dans l'ensemble de données a et b.
    Ut=nta*ntbNa*Nb
  5. Estimez la probabilité m dans son ensemble ou indépendamment pour chaque unité lexicale.
  6. Joignez le fichier fusionné des unités lexicales dénombrées aux deux ensembles de données originaux, en calculant la probabilité PR|Ti-1Nt que deux enregistrements soient identiques étant donné qu'ils ont une unité lexicale en commun.
    PR|Ti-1Nt=t=1Ntmt*PRt=1Ntmt*PR+t=1Ntut*1-PR

Voici quelques-unes des limites de la technique de couplage d'unités lexicales :

  • Comme toutes les méthodes liées à l'algorithme de Fellegi-Sunter, cette technique présuppose que les éléments d'information sont indépendants. Le couplage d'unités lexicales part du principe que les mots sont indépendants. Par exemple, alors que les mots « recherche et développement » apparaissent souvent ensemble et ne devraient pas être traités indépendamment, cet algorithme traiterait ces mots comme des unités indépendantes et distinctes.
  • Cet algorithme ne tient pas compte de l'ordre des mots. Ainsi, la combinaison « Bill et Ted » serait considérée comme identique à « Ted et Bill ».
  • L'algorithme a de la difficulté à trouver des correspondances si une simple faute d'orthographe se trouve dans un mot d'identification important. Par exemple, cet algorithme pourrait avoir plus de difficulté à trouver la paire d'enregistrements « café Starbucks » et « Café Starbacks » que la paire d'enregistrements « café Starbucks coffee » et « Cofé Starbucks ».

Pour en savoir plus sur cette technique, consultez TokenLink sur GitHub (en anglais).

Pour commencer

L'Environnement de fichiers couplables (EFC) de Statistique Canada offre un soutien aux utilisateurs et aux partenaires pour leurs recherches et leurs rapports selon le principe du recouvrement des coûts. Pour en savoir plus sur ce service offert, communiquez avec l'équipe de l'EFC.

Les ministères qui souhaitent extraire de la valeur des données sur leurs parties réglementées en utilisant des données couplées doivent tenir compte de trois choses.

Identificateurs uniques

Songez à recueillir des identificateurs uniques, comme le numéro d'entreprise, auprès de vos parties réglementées. Bien qu'il soit possible de coupler des données sans identificateurs uniques au moyen de caractéristiques comme le nom ou l'adresse de l'entreprise, cela peut entraîner des erreurs dans le processus de couplage. Le taux d'erreur est souvent lié à la qualité des données et au mécanisme de collecte des données.

Statistiques sommaires

Déterminez quelle mesure sommaire demander. S'il existe un risque d'erreur dans le processus de couplage, certaines mesures sommaires sont plus efficaces que d'autres pour prévenir les valeurs aberrantes. Comme mesures de la tendance centrale et de la variation, pensez à demander la médiane et l'intervalle interquartile plutôt que la moyenne arithmétique et l'écart-type, car les deux premières mesures sont plus efficaces que les deux dernières pour prévenir les valeurs aberrantes.

Granularité et taille des données

Tenez compte des éventuelles suppressions de données. Si un ministère demande que les données soient résumées à un niveau très détaillé et qu'il n'y a pas un grand nombre de parties réglementées, il se pourrait qu'on supprime les cellules d'un tableau sommaire pour protéger la confidentialité des entités et se conformer à la Loi sur la statistique. En général, plus les ensembles de données sont grands, plus le niveau d'agrégation des données peut être affiné.

Remerciements

L'Environnement de fichiers couplables de Statistique Canada; Zhuo (Sarah) Zhang, Robert Dorling, Ministre des pêches et océans Canada

Inscrivez-vous à la présentation Rencontre avec le scientifique des données

Si vous avez des questions à propos de mon article ou si vous souhaitez en discuter davantage, je vous invite à une Rencontre avec le scientifique des données, un événement au cours duquel les auteurs rencontrent les lecteurs, présentent leur sujet et discutent de leurs résultats.

Jeudi, le 17 novembre
14 h 00 à 15 h 00 HNE
MS Teams – le lien sera fourni aux participants par courriel

Inscrivez-vous à la présentation Rencontre avec le scientifique des données. À bientôt !

Date de modification :

Segmentation d'image en imagerie médicale

Par Loïc Muhirwa, Statistique Canada

Introduction

Étant donné que de nombreuses applications nécessitent l'identification des substructures des images numériques, la segmentation est une procédure fondamentale de prétraitement. La segmentation binaire entre l'avant-plan et l'arrière-plan d'une image, d'application très large, est un exemple canonique de segmentation d'image. En imagerie médicale, il peut être nécessaire de segmenter des images de résonance magnétique (RM) ou de tomodensitométrie (TDM) d'un organe en structures anatomiques distinctes ou de segmenter différents types de tissus. Dans le domaine de la neuroimagerie particulièrement, il est possible de segmenter le cerveau humain selon le tissu principal (matière blanche et grise) ou selon l'état de santé d'un tissu, c'est-à-dire sain ou avec lésion.

Pour mettre en forme ces idées, il nous faut une représentation mathématique d'une image. Il existe plusieurs manières de représenter les images, selon les applications; certaines sont plus pratiques que d'autres. Comme le décrit l'article, en raison de la multiplicité des méthodes de segmentation d'image, il est difficile de trouver une représentation mathématique unique d'une image. Malgré cela, nous adopterons une représentation primaire, de laquelle nous pourrons nous écarter aux fins de simplification de la notation ou pour régler les cas dans lesquels une image est un objet discret, par opposition à un objet continu. Formellement, une image peut être représentée comme une table de pixels d'un domaine d'image à un domaine d'intensité, comme suit :

I Ω  R

où le domaine d'image Ω est un espace compact et un sous-ensemble simplement connexe de Rdford2, 3 pour des images en 2D ou 3D, également appelé volumes (voir : la définition de simplement connexe – le contenu de cette page est en anglais). Par ailleurs, sans perte de généralité, l'article étudie seulement les images aux valeurs d'intensité unidimensionnelles, telles que les images en niveaux de gris. Il s'agit d'une définition implicite étant donné que l'image est mise en correspondance avec R. Dans cette représentation d'image, nous pouvons définir conceptuellement une segmentation Z de l'image I comme étant la carte suivante :

ZΩ0,...,K-1,

K est le nombre de segments d'image distincts.

Figure 1 : Segmentation d'une coupe axiale du cerveau. Le rouge, le vert et le bleu correspondent respectivement à la matière blanche, à la matière grise et au liquide céphalorachidien. (Source de l'image : A review of medical image segmentation: methods and available software.Footnote 21)

Figure 1 : Segmentation d'une coupe axiale du cerveau. Le rouge, le vert et le bleu correspondent respectivement à la matière blanche, à la matière grise et au liquide céphalorachidien. (Source de l'image : A review of medical image segmentation: methods
Description - Figure 1: Segmentation d'une coupe axiale du cerveau. Le rouge, le vert et le bleu correspondent respectivement à la matière blanche, à la matière grise et au liquide céphalorachidien. (Source de l'image : A review of medical image segmentation: methods and available software.

Imagerie cérébrale d'une coupe axiale à gauche en noir et blanc, et segmentation des tissus représentée par les couleurs rouge, vert et bleu à droite. Les couleurs de l'image de droite correspondent respectivement à la matière blanche, à la matière grise et au liquide céphalorachidien, de l'image de gauche.

En gros, la segmentation des images numériques peut être classée en deux catégories : la segmentation manuelle et la segmentation automatique. Dans la segmentation manuelle, un être humain annote manuellement les différents segments dans une image numérique, tandis que dans la segmentation automatique, un algorithme automatisé segmente l'image. La segmentation manuelle présente plusieurs difficultés, notamment en matière de coût, de temps et d'uniformité. Premièrement, dans de nombreuses applications, la personne qui annote les images doit être spécialiste du domaine, ce qui rend la segmentation manuelle difficile et coûteuse sur le plan opérationnel.

Si l'on prend l'exemple de la neuroimagerie médicale, certains des types de segmentation les plus courants consistent en une segmentation selon le type de tissu, qui classe le tissu cérébral en trois grands types : matière blanche, matière grise et liquide céphalorachidien (voir la figure 1). L'annotation manuelle du volume d'images neurologiques d'un seul patient nécessite beaucoup de temps et des connaissances de radiologue. Deuxièmement, le traitement d'image peut nécessiter l'annotation de centaines d'images, ce qui est ingérable en cas de traitement manuel. Troisièmement, les segmentations manuelles varient considérablement d'une personne à l'autre, y compris quand elles sont réalisées par des spécialistesFootnote 1. Certains tomodensitomètres peuvent produire des images facilement segmentables par un procédé automatique. À titre d'exemple, comme une image neurologique de tomodensitométrie a des intensités ayant une correspondance physique fixe, la segmentation automatisée ne pose pas de difficulté. Pour ces raisons et bien d'autres, il faut privilégier la segmentation automatique.

Dans les sections suivantes, nous classerons les méthodes de segmentation automatique en deux catégories : les méthodes fondées sur un modèle génératif et les méthodes d'apprentissage profond.

Segmentation automatique – Méthodes fondées sur un modèle génératif

Dans les méthodes fondées sur un modèle génératif, la segmentation d'une image est modélisée comme un problème d'inférence statistique. Plus précisément, on spécifie un modèle génératif de l'image, dans lequel la segmentation est une variable latente et la segmentation d'une image correspond à l'inférence de cette variable.

Modèles univariés

Pour ce qui est des points, la méthode univariée modélise les intensités d'image de différents segments en tant que sous-populations à partir d'un modèle par mélanges finis (MMF) avec des distributions d'intensité différentes décrivant les processus de génération de données de différents segments. Dans le cadre de cette modélisation, les intensités d'image appartenant à des segments donnés sont tirées de mélanges distincts. Un des cas particuliers de MMF souvent utilisé dans la segmentation d'image est un modèle de mélange gaussien (MMG) dans lequel les distributions de mélange sont gaussiennes.Footnote 2Footnote 3Footnote 4 Au moyen d'un MMG, nous montrerons comment un modèle génératif peut servir à segmenter une image. L'image est représentée par une variable aléatoire I qui est un ensemble de variables aléatoires indépendantes I(x)   avec un support R et l'on suppose que Z(x)  est une variable aléatoire avec un support 0,1k représentant la valeur d'intensité et l'affectation de mélange pour un élément de domaine d'image xΩ respectivement. Soit π un vecteur de variable aléatoire avec un support [0,1]k comme probabilités de mélange, où la ke entrée πk indique la probabilité d'appartenance au ke segment d'image. En supposant une configuration bayésienne,  Z(x)| π ~ Categorical(π) est une variable latente telle que cet événement Z(x)k=1 indique que x appartient au ke segment d'image et qu'il existe une loi a priori de Dirichlet sur les probabilités de mélange, à savoir π ~ Dirichlet(β) La fonction de densité conjointe de probabilité d'affectation de segment et d'intensité à une valeur xΩ donnée a la forme suivante :

Ix=x,Zx=z|π,μ,σ k=1KƝ(μ,σ2)zkk=1KπkzkΓ(Kβ)Γ(β)k=1Kπkβ-1

μ et σ sont des ensembles de paramètres de moyenne et de variance, respectivement, pour chaque mélange et β représente des paramètres de parcimonie de Dirichlet.

Modèles multivariés

Contrairement aux méthodes univariées, les méthodes multivariées modélisent la distribution d'intensité sur l'ensemble d'un domaine d'image, tout en tenant compte des dépendances à long terme entre pixels. Les champs aléatoires de Markov (CAM) sont une classe de modèles qui spécifient une distribution dans le domaine de l'image en commençant par discrétiser le domaine de manière à ce que

Ω=1,...,Md

pour certains M N and d2,3. Après cette discrétisation, la segmentation et les intensités sont indexées par les sommets d'un graphe non orienté et par les sommets adjacents correspondant aux pixels adjacents.Footnote 5 Supposons d'abord que les estimations d'intensité moyenne pour chaque classe de segments sont données, puis soit μk et σ2k be the mean and variance intensity estimate for the ke segment d'image. Nous pouvons alors définir une fonctionnelle qui correspond à la probabilité log négative du modèle et qui a la forme suivante :

HZ=k=1Kx  ΩlZx=kI(x)-μkσk2+λx  Ωly  NxlδZx,y

N(x)  est l'ensemble de sommets adjacents à x, l()  est une fonction indicatrice et δZ(x,y) est un terme de pénalité qui pénalise les emplacements voisins dans le domaine d'image qui n'ont pas en commun les étiquettes de segment. En pratique μk σ2k sont généralement obtenus par un étiquetage partiel (semi-supervisé) effectué par un spécialiste du domaine. Dans l'équation précédente, la première double sommation pénalise un Z()  qui étiquette les pixels dont les intensités s'écartent considérablement de l'intensité moyenne dans cette classe de segments. Pour la classe de segments, la distance par rapport à la moyenne est normalisée par l'écart-type afin que la proximité de la moyenne entre classes de segments soit comparable. La deuxième sommation double favorise un Z qui donne aux pixels voisins la même étiquette, et λ est un paramètre qui équilibre les deux sommations doubles.

Inférence et apprentissage

Comme cela a été dit plus haut, dans le contexte des modèles génératifs, la segmentation d'image est un problème statistique dans lequel la segmentation est inférée et les paramètres qui régissent le modèle génératif sont appris. Dans cette sous-section, nous donnons des exemples de problèmes d'inférence qui se posent couramment dans la segmentation d'image.

Maximum de vraisemblance et estimation du maximum a posteriori

Si nous avons accès à une distribution a posteriori ou une vraisemblance soluble, cette inférence est réalisable au moyen d'une estimation par la méthode du maximum de vraisemblance (EMV) ou d'une estimation du maximum a posteriori (MAP) de l'affectation des segments. De façon plus formelle, dans l'hypothèse d'un contexte bayésien, supposons que nous avons accès à une distribution a posteriori soluble et au comportement raisonnable p(Z|I) Z et I sont respectivement le MAP de la segmentation et l'image. L'estimation par le MAP du MAP de la segmentation aurait la forme suivante :

ZMAP=argmaxzp(Z|I).

Il n'est pas toujours facile de tirer un échantillon en cas de distribution a posteriori d'une segmentation; cela est particulièrement vrai pour les CAM. Dans ces scénarios, on utilise généralement des méthodes Monte Carlo par chaînes de Markov (MCMC) fondées sur des graphes. Plus précisément, un échantillonnage de Gibbs est généralement utilisé pour les CAMFootnote 6 puisqu'il s'agit d'un cas particulier de champ aléatoire conditionnel (CAC), ce qui permet de relativement facilement spécifier chaque affectation de segment comme une probabilité conditionnelle.

Inférence variationnelle

Plutôt que d'échantillonner une distribution a posteriori insoluble, on peut utiliser une méthode dite d'inférence variationnelle (IV) pour estimer la distribution a posteriori au moyen d'une distribution issue d'une famille de distributions solubles. Cette famille de distributions solubles est celle des distributions variationnelles, d'après le calcul des variations ou calcul variationnel. Après spécification de la famille de distributions, on peut estimer la distribution a posteriori en trouvant la distribution variationnelle qui optimise certaines mesures entre la distribution a posteriori vraie et elle-même. L'indicateur le plus couramment utilisé pour mesurer la similarité entre deux distributions est la divergence Kullback-Leibler (KL), définie comme suit :

KLq||p=Ez[logq(z)p(z|x)]

q()  est une densité approximative et p() est une densité vraie sur le même support. L'inférence de la segmentation latente au moyen de cette approximation de distribution peut être formulée comme un problème d'inférence d'espérance-maximisation bayésienne variationnelle (EMBV).Footnote 7 Une analyse plus approfondie de l'inférence variationnelle peut se trouver dans la section 4 de Variational Inference.Footnote 8

Méthodes d'apprentissage profond

Depuis quelques années, les méthodes d'apprentissage profond (AP) ont été appliquées avec succès à de nombreuses tâches d'apprentissage. Il a été démontré qu'elles surpassent des techniques antérieures d'apprentissage automatique de pointe, en particulier dans le domaine de la vision par ordinateur.Footnote 9 Vaguement inspirées des modèles informatiques d'apprentissage biologique, les méthodes d'AP donnent des modèles informatiques efficaces et extrêmement parallélisables de couches de traitement multiples qui apprennent implicitement des représentations de données.Footnote 10 Les configurations structurelles de ces couches de traitement sont connues sous le nom d'architectures. Certaines des architectures prédominantes dans la vision par ordinateur comprennent les réseaux antagonistes génératifs (ou GAN pour l'anglais)Footnote 11 les réseaux de neurones récurrents (ou RNN en anglais)Footnote 12 et les réseaux neuronaux convolutifs Footnote 13 ces derniers affichant des performances particulièrement bonnes en segmentation d'image. Un réseau neuronal convolutif en 3D appliqué à la segmentation des lésions cérébralesFootnote 14 a permis d'améliorer le modèle précédent pour obtenir les meilleures performances des ensembles de données de référence publics BRATS 2015Footnote 15 et ISLES 2015Footnote 16 (ensembles de données publics utilisés dans les défis sur la segmentation des lésions cérébrales).

Réseaux neuronaux convolutifs

Figure 2 : Processus typique de segmentation par apprentissage profond avec un réseau neuronal convolutif. Source de l'image : Going Deep in Medical Image Analysis: Concepts, Methods, Challenges and Future DirectionsFootnote 17

Figure 2 : Processus typique de segmentation par apprentissage profond avec un réseau neuronal convolutif. Source de l'image : Going Deep in Medical Image Analysis: Concepts, Methods, Challenges and Future Directions
Description - Figure 2 : Processus typique de segmentation par apprentissage profond avec un réseau neuronal convolutif. Source de l'image : Going Deep in Medical Image Analysis: Concepts, Methods, Challenges and Future Directions.

Le processus typique de segmentation par apprentissage profond avec un modèle fondé sur un réseau neuronal convolutif consiste d'abord à comprimer l'image source avec une pile de couches de convolution, d'activation et de regroupement différentes.

À l'heure actuelle, les réseaux neuronaux convolutifs sont considérés comme les réseaux les plus à la pointe de la technologie pour les problèmes de segmentation d'image par AP supervisé.Footnote 18 Leur architecture s'inspire d'un modèle de champ récepteur hiérarchique du cortex visuel et comprend généralement la composition de trois types de couches :

  1. couches de convolution, où un noyau (filtre) est convolué sur des entrées pour extraire une hiérarchie de caractéristiques;
  2. couches non linéaires, qui permettent de mapper les entrées aux espaces de caractéristiques;
  3. couches de regroupement, qui réduisent la résolution spatiale en agrégeant les informations locales.

Chaque couche est constituée d'unités de traitement connectées localement. Ces connexions locales sont appelées champs récepteurs. Les couches sont généralement composées pour former une pyramide multirésolution dans laquelle les couches de niveau supérieur apprennent les caractéristiques de champs récepteurs plus larges. Les paramètres du modèle sont généralement appris au moyen d'une version stochastique de l'algorithme de rétropropagationFootnote 19 qui est une routine d'optimisation par gradient propageant efficacement le gradient du résidu à travers le réseau.

Méthodes d'évaluation

En général, les méthodes d'évaluation de la segmentation supervisée tentent de quantifier le degré de chevauchement entre une segmentation estimée et la segmentation réelle sur le terrain. En utilisant la notation cartographique d'une segmentation de l'expression (2), nous pouvons comprendre de façon équivalente la segmentation comme un ensemble avec l'image de sa carte, c'est-à-dire Z(Ω). 

Le coefficient de Dice (D) est l'une des méthodes d'évaluation de la segmentation les plus populaires et les plus faciles à comprendre sur le plan conceptuel. Pour deux segmentations A et B, le coefficient de Dice est calculé comme suit

DA,B= 2|AB||A| + |B|

Le coefficient de Jaccard (J) — une autre méthode d'évaluation de la segmentation — est lié au coefficient de Dice par l'expression suivante

D= 2J1+J

D est connu pour produire des valeurs plus grandes pour des volumes plus élevés. Une autre méthode d'évaluation de la segmentation est la distance de Hausdorff moyenne, qui est particulièrement recommandée pour les tâches de segmentation présentant des limites complexes et de petits segments minces. Comparativement au coefficient de Dice, la distance de Hausdorff moyenne a l'avantage de tenir compte de la localisation quand on considère les performances de la segmentationFootnote 20 Pour deux segmentations A et B, qui sont des sous-ensembles non vides d'un espace métrique (S,d), la distance de Hausdorff moyenne est calculée comme suit :

HA,B=121|A|xAmindyBx,y+1|B|xAmindyBx,y.

Pour connaître d'autres méthodes d'évaluation, se reporter à Metrics for evaluating 3D medical image segmentationFootnote 22

Conclusion

En conclusion, la segmentation d'image est une technique cruciale dans le traitement d'image en général et en imagerie médicale en particulier. Ce processus est une partie essentielle d'un pipeline de traitement d'image qui nécessite des analyses d'images en aval, dans lesquelles sont identifiées les sous-structures sémantiques d'une image. L'apprentissage automatique nous permet d'automatiser cette procédure et de conserver la qualité d'exécution d'une annotation par un spécialiste, pour un coût nettement moindre.

Inscrivez-vous à la présentation Rencontre avec le scientifique des données

Si vous avez des questions à propos de mon article ou si vous souhaitez en discuter davantage, je vous invite à une Rencontre avec le scientifique des données, un événement au cours duquel les auteurs rencontrent les lecteurs, présentent leur sujet et discutent de leurs résultats.

Jeudi, le 17 novembre
14 h 00 à 15 h 00 HNE
MS Teams – le lien sera fourni aux participants par courriel

Inscrivez-vous à la présentation Rencontre avec le scientifique des données. À bientôt !

Date de modification :

MLflow Tracking : Une façon efficace de suivre les essais de modélisation

Par : Mihir Gajjar, Statistique Canada
Collaborateurs : Reginald Maltais, Allie Maclsaac, Claudia Mokbel et Jeremy Solomon, Statistique Canada

MLflow (le contenu de cette page est en anglais) est une plateforme en source ouverte qui permet de gérer le cycle de vie d'apprentissage automatique, notamment l'expérimentation, la reproductibilité, le déploiement et un registre de modèles central. MLflow propose quatre composantes :

  • MLflow Tracking : enregistrement et interrogation d'essais : code, données, paramètres de configuration et résultats.
  • MLflow Projects : assemblage de code de science des données en un format permettant de reproduire les passages sur n'importe quelle plateforme.
  • MLflow Models : déploiement de modèles d'apprentissage automatique dans divers environnements d'utilisation.
  • Model Registry : stockage, annotation, découverte et gestion de modèles au sein d'un répertoire central.

Cet article se concentre sur MLflow Tracking. Le site Web de MLflow détaille les trois autres composantes.

Avantages de MLFlow

MLflow Tracking offre une solution pouvant être adaptée de votre machine locale à l'entreprise entière. Cela permet aux scientifiques des données de commencer sur leur machine locale, alors que les organisations peuvent mettre en œuvre une solution veillant à la maintenabilité à long terme et à la transparence au sein d'un répertoire central.

MLflow Tracking fournit des capacités de suivi cohérentes et transparentes en :

  • effectuant le suivi programmatique des paramètres et des résultats correspondants pour les essais de modélisation et en les comparant à l'aide d'une interface utilisateur;
  • récupérant le modèle présentant les meilleurs résultats ainsi que son code correspondant, pour diverses mesures d'intérêt pour tous les essais de différents projets;
  • regardant temporellement en arrière, afin de relever des essais effectués avec certaines valeurs de paramètres;
  • permettant aux membres de l'équipe de procéder à des essais et de faire part des résultats en collaboration;
  • exposant à l'intention de la direction l'état d'avancement de plusieurs projets au sein d'une seule interface ainsi que tous les détails (paramètres, tracé des résultats, mesures, etc.);
  • permettant le suivi pour tous les passages et paramètres au moyen d'un simple carnet; ce qui réduit le temps passé à gérer du code et diverses versions de carnet;
  • fournissant une interface permettant le suivi d'essais basés sur Python et R.

Comment passer d'un essai à un autre avec MLflow?

Cet article se concentre sur l'utilisation de MLflow avec Python. Le document QuickStart (le contenu de cette page est en anglais) relatif à MLflow présente des exemples de son utilisation avec R pour une installation locale sur une seule machine. Les organisations souhaitant déployer MLflow entre des équipes peuvent également se reporter à ce document QuickStart.

Le présent article explore un exemple d'utilisation de MLflow avec Python; toutefois, pour bien comprendre le fonctionnement de MLFlow, il est utile d'effectuer chaque étape sur votre machine.

Installation de MLflow

MLflow peut s'installer comme progiciel Python standard en entrant la commande suivante dans une fenêtre de terminal :

$ pip install mlflow

Une fois l'exécution de la commande terminée, vous pouvez entrer mlflow sur votre terminal et explorer les options disponibles. Vous pouvez essayer, par exemple : mlflow –version , pour vérifier la version installée.

Lancement du serveur MLflow

Il est recommandé de disposer d'un serveur MLflow centralisé pour une personne, une équipe ou une organisation, afin que les passages pour différents projets puissent être journalisés à un emplacement central, en les isolant par essai (différents essais pour différents projets). Nous discutons plus en détail de ces questions plus loin dans le présent article. Pour commencer rapidement à utiliser l'outil, vous pouvez ignorer le lancement du serveur et journaliser tout de même les passages. Ce faisant, les passages sont enregistrés dans un répertoire intitulé « MLruns », dans le même répertoire que le code. Vous pouvez plus tard ouvrir l'interface utilisateur de MLflow en suivant le même chemin d'accès et visualiser les passages journalisés.

Les passages peuvent être journalisés sur un serveur MLflow exécuté localement ou à distance en configurant l'adresse URI (identifiant uniforme de ressource) adéquate de suivi. La configuration de l'emplacement de journalisation adéquat est expliquée plus bas.

Si vous préférez toutefois lancer le serveur immédiatement, vous pouvez le faire en entrant la commande suivante :

$ mlflow server

Le terminal affichera des renseignements similaires à ceux présentés ci-dessous, qui montrent que le serveur écoute au port de serveur local 5000. Cette adresse est utile pour accéder à l'interface utilisateur (IU) de MLflow. N'hésitez pas à explorer la différence subtile entre l'IU de MLflow et le serveur de MLflow dans les documents relatifs à MLflow Tracking (le contenu de cette page est en anglais).

[2021-07-09 16:17:11 –0400] [58373] [INFO] Starting gunicorn 20.1.0
[2021-07-09 16:17:11 –0400] [58373] [INFO] Listening at: http://127.0.0.1:5000 (58373)
[2021-07-09 16:17:11 –0400] [58373] [INFO] Using worker: sync
[2021-07-09 16:17:11 –0400] [58374] [INFO] Booting worker with pid: 58374
[2021-07-09 16:17:11 –0400] [58375] [INFO] Booting worker with pid: 58375
[2021-07-09 16:17:11 –0400] [58376] [INFO] Booting worker with pid: 58376
[2021-07-09 16:17:11 –0400] [58377] [INFO] Booting worker with pid: 58377

Journalisation des données dans MLflow

Deux principaux concepts sous-tendent le suivi avec MLflow : les essais et les passages. Les données journalisées au cours d'un essai sont enregistrées sous forme de passage dans MLflow. Ces passages peuvent être organisés en essai; ce qui regroupe les passages pour une tâche particulière. On peut alors visualiser, rechercher, comparer et télécharger les artéfacts et métadonnées de passages pour les passages journalisés dans le cadre d'un essai MLflow.

Les données d'un essai peuvent être journalisées comme passage dans MLflow à l'aide de progiciels MLflow Python, R ou Java ou au moyen de l'IPA (interface de programmation d'applications) REST.

Le présent article fait la démonstration de la modélisation d'un des concours de mise en route de TLN (traitement du langage naturel) sur Kaggle intitulé « Natural Language Processing with Disaster Tweets (le contenu de cette page est en anglais) ». On utilise un carnet Jupyter et l'IPA Python de MLflow pour journaliser des données dans MLflow. Nous mettrons l'accent sur la démonstration de la façon de journaliser des données dans MLflow au cours de la modélisation, plutôt que sur l'obtention des meilleurs résultats de modélisation.

Tout d'abord, commençons par le processus de modélisation habituel, qui inclut des importations, la lecture de données, le prétraitement de texte, les caractéristiques de pondération rtf-idf (term frequency-inverse document frequency) et le modèle de machine à vecteurs de support (SVM). À la fin, une section sera intitulée « Journalisation dans MLflow ».

Note : Nous maintenons le pipeline TLN aussi simple que possible, afin de porter l'accent sur la journalisation dans MLflow. Certaines des étapes habituelles, comme l'analyse exploratoire des données, ne s'appliquent pas à cet objectif et nous ne les mentionnons donc pas. La façon préférable de journaliser des données dans MLflow est en laissant une portion de code à la fin de la journalisation. Vous pouvez également configurer MLflow au début du code et journaliser les données tout au long du code, lorsque les données ou variables sont disponibles à la journalisation. Un avantage de journaliser toutes les données ensemble à la fin à l'aide d'une seule cellule est que le pipeline entier se termine avec succès et le passage journalise les données (tant que le code de journalisation dans MLflow ne comporte aucun bogue). Si les données sont journalisées tout au long du code et que l'exécution du code est interrompue pour une raison ou une autre, la journalisation des données sera alors incomplète. Toutefois, en cas de scénario où un code comporte plusieurs portions de code (ce qui entraîne une longue exécution), la journalisation tout au long du code, à de multiples emplacements, peut en fait être bénéfique.

Importation des bibliothèques

Commencez par importer toutes les bibliothèques requises par l'exemple :

# To create unique run name.
import time
# To load data in pandas dataframe.
import pandas as pd

# NLP libraries

# To perform lemmatization
from nltk import WordNetLemmatizer
# To split text into words
from nltk. tokenize import word_tokenize
# To remove the stopwords
from nltk.corpus import stopwords

# Scikit-learn libraries

# To use the SVC model
from sklearn.svm import SVC
# To evaluate model performance
from sklearn.model_selection import cross_validate, StratifiedkFold
# To perform Tf-idf vectorization
from sklearn.feature_extraction.text import TfidfVectorizer
# To get the performance metrics
from sklearn.metrics import f1_score, make_scorer
# For logging and tracking experiments
import mlflow

Création d'un nom de passage unique

MLflow permet de suivre plusieurs passages d'un essai grâce à un paramètre de nom de passage. Le nom du passage peut être défini comme toute valeur, mais devrait être unique, afin de pouvoir être identifié ensuite parmi les différents passages. Ci-dessous, un horodatage est utilisé comme nom unique.

run_name = str(int(time.time()))
print('Run name: ', run_name)

On obtient :

Nom de passage : 1625604741 

Lecture des données

Chargez la formation et les données de test à partir des fichiers CSV fournis pour l'exemple.

# Kaggle competition data download link: https://www.kaggle.com/c/nlp-getting-started/data
train_data = pd.read_csv("./data/train.csv")
test_data = pd.read_csv("./data/test.csv")

En exécutant la portion de code suivant dans une cellule :

train_data

La figure 1 présente un exemple de données de formation venant d'être chargées.

Figure 1 : Aperçu des données de formation chargées

Figure 1 : Aperçu des données de formation chargées

Figure 1 : Aperçu des données de formation chargées

Cinq premières et dernières entrées du fichier CSV. Il contient les colonnes id, mot clé, emplacement, texte et cible. Les colonnes de texte contiennent le tweet en tant que tel et la colonne cible, la catégorie.

Figure 1: A preview of the training data that was loaded.
  id Mot clé Emplacement Texte Cible
0 1 NaN Nan Our Deeds are the Reason of this #earthquake M… 1
1 4 NaN Nan Forest fire near La Ronge Sask. Canada 1
2 5 NaN Nan All residents asked to 'shelter in place' are… 1
3 6 NaN Nan 13,000 people receive #wildfires evacuation or… 1
4 7 NaN Nan Just got sent this photo from Ruby #Alaska as… 1
... ... ... ... ... ...
7608 10869 NaN Nan Two giant cranes holding a bridge collapse int… 1
7609 10870 NaN Nan @aria_ahrary @TheTawniest The out of control w… 1
7610 10871 NaN Nan M1.94 [01:04 UTC] ?5km S of Volcano Hawaii. Htt… 1
7611 10872 NaN Nan Police investigating after an e-bike collided… 1
7612 10873 NaN Nan The Latest: More Homes Razed by Northern Calif… 1

7613 lignes x 5 colonnes

Les données de formation représentent environ 70 % des données totales.

print('The length of the training data is %d' % len(train_data))
print('The length of the test data is %d' % len(test_data))

Produit :

The length of the training data is 7613
The length of the test data is 3263

Prétraitement de texte

Selon la tâche à réaliser, différents types d'étapes de prétraitement peuvent être nécessaires pour que le modèle d'apprentissage automatique apprenne de meilleures caractéristiques. Le prétraitement peut normaliser les intrants, supprimer certains mots courants, le cas échéant, de sorte que le modèle ne les apprenne pas comme des caractéristiques, et apporter des modifications logiques et utiles pouvant mener à une amélioration du rendement et de la généralisation du modèle. La section suivante montre comment des étapes de prétraitement peuvent aider le modèle à capturer les caractéristiques pertinentes au cours de l'apprentissage.

def clean_text(text):
    # split into words
    tokens = word_tokenize(text)
    # remove all tokens that are not alphanumeric. Can also use .isalpha() here if do not want to keep numbers.
    words = [word for word in tokens if word.isalnum()]
    # remove stopwords
    stop_words = stopwords.words('english')
    words = [word for word in words if word not in stop_words]
    # performing lemmatization
    wordnet_lemmatizer = WordNetLemmatizer()
    words = [wordnet_lemmatizer.lemmatize(word) for word in words]
    # Converting list of words to string
    words = ' '.join(words)
    return words
train_data['cleaned_text'] = train_data['text'].apply(clean_text) 

Lors de la comparaison du texte d'origine et du texte nettoyé, les pseudo-mots ont été supprimés :

train_data['text'].iloc[100]

'.@NorwayMFA #Bahrain police had previously died in a road accident they were not killed by explosion https://t.co/gFJfgTodad (en anglais seulement)'

train_data['cleaned_text'].iloc[100]rain_data['text'].iloc[100]

'NorwayMFA Bahrain police previously died road accident killed explosion http'

À la lecture du texte ci-dessus, on peut dire qu'il contient des renseignements sur une catastrophe et devrait donc être classé comme tel. Pour confirmer cela avec les données, imprimez l'étiquette présente dans le fichier CSV relatif à ce tweet :

train_data['target'].iloc[100]

Produit :

1

Caractéristiques Tf-idf

Ensuite, nous convertissons une collection de documents bruts vers une matrice de caractéristiques TF-IDF en vue d'alimenter le modèle. Pour de plus amples détails sur tf-idf, reportez-vous aux documents TF–IDF - Wikipédia and scikit-learn sklearn.feature_extraction.text (le contenu de cette page est en anglais).

ngram_range=(1,1)
max_features=100
norm='l2'
tfidf_vectorizer = TfidfVectorizer(ngram_range=ngram_range, max_features=max_features, norm=norm)
train_data_tfidf = tfidf_vectorizer.fit_transform(train_data['cleaned_text'])
train_data_tfidf

Produit :

<7613x100 sparse matrix of type '<class 'numpy.float64'>'
with 15838 stored elements in Compressed Sparse Row format>
tfidf_vectorizer.get_feature_names()[:10]

Produit :

['accident',
'amp',
'and',
'as',
'attack',
'back',
'best',
'body',
'bomb',
'building']

Modèle SVC

L'étape suivante de la modélisation est d'ajuster un modèle et d'évaluer son rendement.

On utilise un programme de validation croisée K-Folds stratifié pour évaluer le modèle. Voir scikit learn sklearn.model_selection (le contenu de cette page est en anglais) pour de plus amples détails.

strat_k_fold = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)

Faire fonctionner un programme de calcul de résultat à l'aide de la mesure f1-score pour l'utiliser comme paramètre dans le modèle SVC.

scoring_function_f1 = make_scorer(f1_score, pos_label=1, average='binary')

Vient ensuite une étape importante pour adapter le modèle aux données. Dans cet exemple, le classificateur SVC est utilisé. Voir scikit learn sklearn.svm.svc (le contenu de cette page est en anglais) pour de plus amples détails.

C = 1.0
kernel='poly'
max_iter=-1
random_state=42
svc = SVC(C=C, kernel=kernel, max_iter=max_iter, random_state=random_state) 
cv_results = cross_validate(estimator=svc, X=train_data_tfidf, y=train_data['target'], scoring=scoring_function_f1, cv=strat_k_fold, n_jobs=-1, return_train_score=True)
cv_results

Produit :

{'fit_time': array([0.99043322, 0.99829006, 0.94024873, 0.97373009, 0.96771407]),
'score_time': array([0.13656974, 0.1343472 , 0.13345313, 0.13198996, 0.13271189]),
'test_score': array([0.60486891, 0.65035517, 0.5557656 , 0.5426945 , 0.63071895]),
'train_score': array([0.71281362, 0.76168757, 0.71334394, 0.7291713 , 0.75554698])}
def mean_sd_cv_results(cv_results, metric='F1'):
    print(f"{metric} Train CV results: {cv_results['train_score'].mean().round(3)} +- {cv_results['train_score'].std().round(3)}")
    print(f"{metric} Val CV results: {cv_results['test_score'].mean().round(3)} +- {cv_results['test_score'].std().round(3)}")

mean_sd_cv_results(cv_results)
F1 Train CV results: 0.735 +- 0.021
F1 Val CV results: 0.597 +- 0.042

Note : Le code ci-dessous est exécuté comme une commande d'interface système en ajoutant le point d'exclamation : « ! » au début du code dans une cellule Jupyter.

! Jupyter nbconvert --to html mlflow-example-real-or-not-disaster-tweets-modeling-SVC.ipynb
[NbConvertApp] Converting notebook mlflow-example-real-or-not-disaster-tweets-modeling-SVC.ipynb to html
[NbConvertApp] Writing 610630 bytes to mlflow-example-real-or-not-disaster-tweets-modeling-SVC.html

Journalisation dans MLflow

Tout d'abord, configurez le serveur URI. Le serveur s'exécutant localement, définissez l'URI de suivi comme port de serveur local 5000. L'URI de suivi peut être configurée pour un serveur distant également (voir : Where Runs are Recorded [le contenu de cette page est en anglais]).

server_uri = 'http://127.0.0.1:5000'
mlflow.set_tracking_uri(server_uri)

Pour organiser les passages, un essai a été créé et défini à l'emplacement où les passages seront journalisés. La méthode « set_experiment » créera un nouveau passage avec le nom de chaîne fourni et le définira comme l'essai en cours pour lequel les passages seront journalisés.

mlflow.set_experiment('nlp_with_disaster_tweets')

Enfin, lancez un passage et journalisez les données dans MLflow.

# MLflow logging.
with mlflow.start_run(run_name=run_name) as run:

    # Logging tags
    # run_name.
    mlflow.set_tag(key='Run name', value=run_name)
    # Goal.
    mlflow.set_tag(key='Goal', value='Check model performance and decide whether we require further pre-processing/hyper-parameter tuning.')
    # Modeling exp.
    mlflow.set_tag(key='Modeling technique', value='SVC')

    # Logging parameters
    mlflow.log_param(key='ngram_range', value=ngram_range)
    mlflow.log_param(key='max_features', value=max_features)
    mlflow.log_param(key='norm', value=norm)
    mlflow.log_param(key='C', value=C)
    mlflow.log_param(key='kernel', value=kernel)
    mlflow.log_param(key='max_iter', value=max_iter)
    mlflow.log_param(key='random_state', value=random_state)

    # Logging the SVC model.
    mlflow.sklearn.log_model(sk_model=svc, artifact_path='svc_model')
   
    # Logging metrics.
    # mean F1-score - train.
    mlflow.log_metric(key='mean F1-score - train', value=cv_results['train_score'].mean().round(3))
    # mean F1-score - val.
    mlflow.log_metric(key='mean F1-score - val', value=cv_results['test_score'].mean().round(3))
    # std F1-score - train.
    mlflow.log_metric(key='std F1-score - train', value=cv_results['train_score'].std().round(3))
    # std F1-score - val.
    mlflow.log_metric(key='std F1-score - val', value=cv_results['test_score'].std().round(3))
   
    # Logging the notebook.
    # Nb.
    mlflow.log_artifact(local_path='real-or-not-disaster-tweets-modeling-SVC.ipynb', artifact_path='Notebook')
    # Nb in HTML.
    mlflow.log_artifact(local_path='real-or-not-disaster-tweets-modeling-SVC.html', artifact_path='Notebook')

Selon le code ci-dessus, vous commencez un passage avec un nom de passage (run_name), puis journalisez ce qui suit :

  1. Balises : paire clé-valeur. La clé et la valeur sont toutes deux des chaînes; par exemple, cela peut servir à journaliser l'objectif du passage pour lequel la clé serait « Goal: » et la valeur peut être « To try out the performance of Random Forest Classifier with default parameters » (mettre à l'essai le rendement d'un classificateur de forêt aléatoire avec des paramètres par défaut).
  2. Paramètres : également une paire clé-valeur pouvant servir à journaliser les paramètres du modèle.
  3. Modèle : peut servir à journaliser le modèle. Vous journalisez ici un modèle scikit-learn comme artéfact MLflow, mais nous pouvons également journaliser un modèle pour d'autres bibliothèques d'apprentissage automatique pris en charge à l'aide du module MLflow correspondant.
  4. Mesures : paire clé-valeur. Le type de données de clé est « string » (chaîne) et peut avoir le nom de la mesure. Le paramètre de valeur est de type de données « float ». Le troisième paramètre facultatif est « step » qui est un nombre entier représentant toute mesure de progression de la formation : nombre d'itération de formation, nombre d'époques, etc.
  5. Artéfacts : un fichier ou répertoire local peut être journalisé comme artéfact pour le passage en cours. Dans cet exemple, nous journalisons à l'aide du carnet, de sorte que ces informations sont accessibles pour des passages futurs. Ce faisant, il est possible d'enregistrer un tracé comme « courbe de perte » ou « courbe de précision » dans le code et le journaliser comme artéfact dans MLflow.

Voilà, vous avez journalisé avec succès les données pour un passage dans MLflow! L'étape suivante est de visualiser les données journalisées.

IU de MLflow

Si vous retournez à la figure 1, vous vous souviendrez que vous avez lancé le serveur et qu'il écoutait au port de serveur local 5000. Ouvrez cette adresse dans votre navigateur préféré pour accéder à l'IU de MLflow. Une fois l'IU de Mlflow visible, vous pouvez utiliser l'interface pour consulter les données d'essai journalisées. Les essais créés s'affichent dans la barre latérale de l'IU et les balises, paramètres, modèle et mesures journalisés figurent dans les colonnes.

Figure 2 : IU de MLflow

Figure 2 : IU de MLflow

Figure 2 : IU de MLflow

La figure 2 présente l'IU de MLflow. L'essai configuré ci-dessus, c.-à-d. nlp_with_disaster_tweets est ouvert ainsi que le passage précédemment journalisé avec les détails comme le nom du passage, les paramètres et les mesures. Il indique également l'emplacement où sont enregistrés les artéfacts. Vous pouvez cliquer sur le passage journalisé pour l'explorer plus en détail.

Text in image: Modèles MLflow

Nlp_with_disaster_tweets (1. Cliquez sur cet essai)

ID de l'experience : 1. Emplacement de l'artéfact : ./miruns/1 (Emplacement des artéfacts journalisés)

Notes : Aucun

2. Exploration des données journalisées

Figure 2: MLflow UI
  Paramètres Mesures Étiquettes
Heure de début Nom de l'exécution Utilisateur Source : Version Modèles C Noyau max_feature Score moyen Score moyen Std F1-scor Technique :
2021-07-13 15:54:45 1626206076 Mihir ipykerne - sklearn 1.0poly            

3. Passage journalisé à l'aide de l'IPA Python. Cliquez sur le lien pour ouvrir le passage

Pour explorer un passage particulier plus en détail, cliquez sur le passage pertinent dans la colonne Heure de début. Cela permet d'explorer un passage journalisé en détail. Le nom du passage s'affiche et vous pouvez ajouter des notes relatives au passage, comme les paramètres, mesures, balises et artéfacts journalisés. Les données journalisées à l'aide de l'API Python pour ce passage figurent ici.

Les fichiers journalisés comme artéfacts peuvent être téléchargés; ce qui peut être utile si vous souhaitez extraire le code ultérieurement. Puisque le code ayant généré des résultats pour chaque passage est enregistré, vous n'avez pas à créer plusieurs copies du même code et pouvez expérimenter avec un seul carnet-cadre en changeant le code entre les passages.

Le modèle formé journalisé peut être chargé dans un essai futur à l'aide de l'IPA Python pour le passage journalisé.

Figure 3: Exploration des artéfacts journalisés dans un passage

Figure 3: Exploration des artéfacts journalisés dans un passage 

Figure 3: Exploration des artéfacts journalisés dans un passage

La figure 3 explore les artéfacts journalisés. Les fichiers journalisés (carnet et modèle) sont présentés. La description du modèle fournit également le code permettant de charger le modèle journalisé dans Python.

Texte de l'image :

Figure 4: Exploring the logged artifacts in a run
Nom Valeur Actions
Objectif Vérifier les performances du modèle et décidez si nous avons besoin d'un prétraitement/réglage hyperparamètres supplémentaire. Vérification : supprimer les icônes
Technique de modélisation SVC Vérification : supprimer les icônes 
Nom de passage  16525862471 Vérification : supprimer les icônes

Ajouter une balise

Nom – Valeur – Ajout

Artéfacts
Carnet

  • Real-or-not-disaster-tweets-modeling-SVC.html
  • Real-or-not-disaster-tweets-modeling-SVC.ipynb

svc_model

  • Modèle ML
  • conda.yaml
  • model.pkl

Chemin complet : ./miruns/1/b4af92528b1o4552b45231edeb6fe782/artefacts/Carnet
Taille : 0B

Modèle MLflow
Les extraits de code ci-dessous montrent comment faire des prédictions à l'aide du modèle enregistré.

Schéma du modèle
Schéma d'entrées et de sortie pour votre modèle. En savoir plus
Nom – Type
Pas de schéma

Pour démontrer la fonctionnalité de comparaison de passages, d'autres essais de modélisation ont été effectués et journalisés dans MLflow en changeant quelques paramètres dans le même carnet jupyter. N'hésitez pas à modifier certains paramètres et à journaliser davantage de passages dans MLflow.

La figure 4 présente les différents passages journalisés. Vous pouvez appliquer un filtre, conserver les colonnes souhaitées et comparer les paramètres ou les mesures entre les différents passages. Pour procéder à une comparaison détaillée, vous pouvez sélectionner les passages que vous souhaitez comparer et cliquer sur le bouton « Comparer » encerclé dans la figure ci-dessous.

Figure 4 : Personnalisation et comparaison de différents passages à l'aide de l'IU de MLflow

Figure 4 : Personnalisation et comparaison de différents passages à l'aide de l'IU de MLflow

Figure 4 : Personnalisation et comparaison de différents passages à l'aide de l'IU de MLflow

Dans l'IU de MLflow, on peut personnaliser les colonnes affichées, appliquer un filtre et rechercher différents passages en fonction des données journalisées et facilement comparer les différents passages journalisés en fonction des colonnes visibles. On peut également comparer les différents passages journalisés plus en détail en les sélectionnant et en cliquant sur le bouton « Comparer ».

Texte de l'image : 
1. Peut filtrer et conserver les colonnes d'intérêt.
Colonnes : Heure de début, Nom de l'exécution, Utilisateur, Source, Version, Modèles, Paramètres, Mesures, Balises
2. Peut comparer différents passages
3. Différents passages journalisés. Sélectionnez les passages que vous souhaitez comparer.
Affichage de 5 passages correspondants. Comparer, Supprimer, Télécharger, CSV
4. Cliquez sur comparer

Figure 5: Customizing and comparing different runs using MLflow UI
  Parameters Mesures
Heure de début Nom du passage Utilisateur Source Version Modèles C Noyau max_features Score mo Score mo Std F1-s
2021-07-13 16:08:50 1626115725 Mihir Ipykerne_laun - sklearn 1.0pol...          
2021-07-13 16:08:35 1626115688 Mihir Ipykerne_laun - sklearn 1.0pol...          
2021-07-13 16:08:21 1626115602 Mihir Ipykerne_laun - sklearn 1.0pol...          
2021-07-13 16:08:07 1626115552 Mihir Ipykerne_laun - sklearn 1.0pol...          
2021-07-13 15:54:45 1625002471 Mihir Ipykerne_laun - sklearn 1.0pol...          

Après avoir cliqué sur le bouton « Comparer », une comparaison sous forme de tableau entre différents passages est générée (comme le présente la figure 5), permettant de facilement comparer les données journalisées pour différents passages. Les paramètres qui diffèrent entre les passages sont surlignés en jaune. Cela fournit à l'utilisateur une idée de la façon dont le rendement du modèle a varié au fil du temps en fonction des paramètres modifiés.

Figure 5 : Comparaison détaillée de passages journalisés dans l'IU de MLflow

Figure 5 : Comparaison détaillée de passages journalisés dans l'IU de MLflow

Figure 5 : Comparaison détaillée de passages journalisés dans l'IU de MLflow

La figure 5 compare en détail différents passages journalisés dans MLflow. Les balises, paramètres et mesures figurent sur différentes lignes et les passages, dans différentes colonnes. Cela permet à un utilisateur de comparer les détails d'intérêt pour différents passages dans une seule fenêtre. Les paramètres qui diffèrent entre les passages sont surlignés en jaune. Par exemple, dans les essais, les paramètres max_features et ngram_range ont été modifiés pour différents passages et sont donc surlignés en jaune dans l'image ci-dessus.

Texte de l'image :
Nlp_with_disaster_tweets > Comparaison de 5 passages

Figure 6: Comparing logged runs in MLflow UI in detail
ID d'exécution : 7a1448a5f88147c093
c357d787dbe3
264533b107b04be3
bd4981560bad0397
7670578718b3477abb
798d7e404fed6c
D2372d5873f2435c
94dc7e633a611889
Fdc8362b2f37432f9
a4128fa522d80cb
Nom du passage 1626115725 1626115688 1626115602 1626115552 16265862471
Heure de début 2021-07-12 14:48:54 2021-07-12 14:48:16 2021-07-12 14:48:50 2021-07-12 14:46:01 2021-07-09 16:27:58
Paramètres
C 1.0 1.0 1.0 1.0 1.0
Noyau Poly Poly Poly Poly Poly
Max_features 500 500 500 500 500
Max_iter -1 -1 -1 -1 -1
Ngram_range (1.3) (1.2) (1.1) (1.1) (1.1)
Norm 12 12 12 12 12
random_state 42 42 42 42 42
Mesures
Mean f1-score-train 0.93 0.931 0.933 0.876 0.735
Mean f1-score-val 0.694 0.693 0.694 0.649 0.597
std f1-score-train 0.001 0.001 0.002 0.002 0.021
std f1-score-val 0.008 0.009 0.01 0.013 0.042

Des changements dans les paramètres et dans les mesures pour différents passages peuvent également être présentés dans un diagramme de dispersion. Les valeurs des axes des x et des y peuvent être définies comme tout paramètre ou toute mesure permettant à l'utilisateur d'analyser les changements. Dans la figure 6, le lecteur peut analyser la variation de la validation; dans ce cas, le F1-score moyen pour différentes valeurs du paramètre « max_features ». Si vous passez le curseur sur un point de donnée, les détails relatifs à ce passage s'affichent.

Figure 6 : Configuration du diagramme de dispersion pour visualiser les effets des différentes configurations de paramètres dans les passages journalisés

Figure 6 : Configuration du diagramme de dispersion pour visualiser les effets des différentes configurations de paramètres dans les passages journalisés

Figure 6 : Configuration du diagramme de dispersion pour visualiser les effets des différentes configurations de paramètres dans les passages journalisés

Démonstration des capacités de MLflow de produire un diagramme à l'aide des détails de différents passages. Vous pouvez sélectionner un paramètre particulier sur l'axe des X ainsi qu'une mesure que vous souhaitez surveiller sur l'axe des Y; cela crée immédiatement un diagramme de dispersion fournissant les détails sur l'axe correspondant et permet de visualiser les effets des paramètres sur la mesure, afin de vous faire une idée de la manière dont le paramètre influe sur la mesure.

Texte de l'image :
Parcelle de dispersionPlot – de contourParallèles – de coordonnées Parallèles
Axe des X : max_features
Axe des Y : score moyen F1 - val

Figure 7: Configuring the scatter plot to visualize the effects of different parameter configurations in the logged runs
1626115552
État_aléatoire : 42
Norme : 12
Max_iter :  -1
Max_features :  300
C : 1.0
Noyeau :  Poly
Ngram_range :  (1.1)
   
Mean f1-score-val 0.649
Mean f1-score-train 0.876
std f1-score-val 0.002
std f1-score-train 0.013

Le diagramme à coordonnées parallèles est également utile, car il présente à l'utilisateur d'un seul coup d'œil l'effet de certains paramètres sur les mesures souhaitées.

Figure 7 : Configuration du diagramme à coordonnées parallèles pour visualiser les effets de différents paramètres sur les mesures d'intérêt

Figure 7 : Configuration du diagramme à coordonnées parallèles pour visualiser les effets de différents paramètres sur les mesures d'intérêt

Figure 7 : Configuration du diagramme à coordonnées parallèles pour visualiser les effets de différents paramètres sur les mesures d'intérêt

Dans cette image, un diagramme à coordonnées parallèles est configuré. Vous pouvez sélectionner différents paramètres et différentes mesures à l'aide des fenêtres d'intrants fournies; le diagramme à coordonnées parallèles est mis à jour en conséquence. Ce diagramme peut donner une idée des résultats obtenus à l'aide de différentes configurations dans les essais. Il peut aider à comparer les différentes configurations et à sélectionner les paramètres fournissant un meilleur rendement.

Texte de l'image :
Parcelle de dispersionPlot – de contourParallèles – de coordonnéesParallèles
Paramètres : état_alléatoire, norme, max_iter, max_features, C, noyeau, ngram_range
Mesures : score moyen F1 - val

Figure 8: Configuring the parallel coordinates plot to visualize the effects of different parameters on the metrics of interest
état_aléatoire norme Max_iter Max_features C noyeau ngram_range Score moyen F1-val  
46.20000   -1.10000 500.00000 1.10000     0.69400  
46.0000   -1.10000 500.00000 1.10000   (1.3) 0.68000 0.68
45.0000     450.00000          
44.0000   -1.05000 400.00000 1.05000     0.66000 0.66
43.0000     350.00000          
42.0000   -1.0000 300.00000 1.00000 poly (1.2) 0.64000 0.64
41.0000     250.00000          
40.0000   -0.95000 200.00000 0.95000     0.62000 0.62
39.0000     150.00000          
38.0000   -0.9000 100.00000 0.90000   (1.1) 0.60000 0.6
37.80000   -0.90000 100.0000 0.9000     0.59700  

Autres aspects intéressants du suivi avec MLflow Tracking

Autres éléments importants à noter relativement à MLflow Tracking :

  • Les passages peuvent être directement exportés dans un fichier CSV à l'aide de l'IU de MLflow.
  • Il est possible d'accéder à l'aide d'un programme à toutes les fonctions de l'IU de suivi; vous pouvez interroger et comparer les passages avec du code, charger des artéfacts de passages journalisés ou exécuter une recherche automatisée de paramètre en appliquant une requête sur les mesures de passages journalisés pour décider des nouveaux paramètres. Vous pouvez également journaliser de nouvelles données sur un passage déjà journalisé dans un essai après l'avoir chargé à l'aide d'un programme (consultez Querying Runs Programmatically pour de plus amples détails - le contenu de cette page est en anglais).
  • En utilisant l'IU de MLflow, les utilisateurs peuvent rechercher des passages présentant des valeurs de données particulières à partir de la barre de recherche. Un exemple de cela serait d'utiliser metrics.rmse < 1 et params.model='tree'. Cela est très utile lorsque vous avez besoin de trouver un passage à paramètres particuliers exécuté par le passé.
  • Le carnet Jupyter utilisé comme exemple dans ce billet de blogue est accessible sur GitHub (le contenu de cette page est en anglais).

N'hésitez pas à communiquer avec nous à l'adresse statcan.dsnfps-rsdfpf.statcan@statcan.gc.ca pour nous faire part d'autres fonctionnalités intéressantes ou cas d'utilisation que vous aimez utiliser qui auraient pu être mentionnés selon vous. Nous vous offrirons également l'occasion de rencontrer le scientifique des données pour discuter de MLFlow plus en détail. Trouvez de plus amples détails ci-dessous.

Inscrivez-vous à la présentation Rencontre avec le scientifique des données

Si vous avez des questions à propos de cet article ou si vous souhaitez en discuter, nous vous invitons à notre nouvelle série de présentations Rencontre avec le scientifique des données où le(s) auteur(s) présenteront ce sujet aux lecteurs et aux membres du RSD.

Mardi, le 18 octobre
14 h 00 à 15 h 00 HAE
MS Teams – le lien sera fourni aux participants par courriel

Inscrivez-vous à la présentation Rencontre avec le scientifique des données. À bientôt !

Date de modification :