La Solution type du Propulseur « Détection des anomalies dans les données chronologiques par l’IA » montre comment Chillwall AI a recouru à des modèles d’apprentissage profond et à des autoencodeurs pour résoudre le problème que soulève la détection des anomalies.
Le Propulseur illustre comment les technologies de pointe simplifient une solution complexe et onéreuse applicable aux mégadonnées souvent négligée mais qui reste cruciale au bon fonctionnement d’une entreprise.
La solution proposée s’inspire de celles élaborées par Chillwall AI qui exploitent la puissance de l’intelligence artificielle (IA) pour formuler des prévisions quotidiennes dans une situation précise.
Énoncé du problème
Le monde des mégadonnées évolue constamment. Pour conserver sa stabilité, une entreprise doit donc absolument détecter les opérations anormales.
Importance de la détection des anomalies
Votre solution utilise-t-elle des mégadonnées? Toutes les industries, ou presque, s’appuient sur des données. Or, si on ne les identifie pas, les données anormales pourront entraîner de sérieuses perturbations, rendre des produits moins sûrs, ouvrir la porte à des cyberattaques, engendrer des pertes d’argent et empêcher l’optimisation des processus.
Faire fonctionner normalement une entreprise : un défi
Dans la masse des données opérationnelles qui permettent à l’entreprise de fonctionner normalement se dissimulent des aberrations : variations inattendues, modifications subtiles ou évènements inhabituels. Or, chacune pourrait bouleverser le déroulement normal des opérations.
Une solution complexe –souvent négligée par les PME
Les organisations recourent à des solutions perfectionnées comme des logiciels pour détecter les problèmes de sécurité. Pourtant, la détection la plus efficace s’effectue au départ, soit au niveau du code ou du système. Malheureusement, les PME canadiennes n’ont ni le savoir-faire, ni le temps de bâtir les algorithmes complexes qui détecteront les anomalies (encore moins si elles ne se spécialisent pas dans l’apprentissage automatique ou la science des données). C’est pourquoi elles percent plus lentement sur le marché et la conception d’un prototype de leur solution novatrice exige plus de temps. Pour déceler les anomalies dans un but précis, elles devront recourir à des scientifiques des données, à des ingénieurs de réseaux et à des développeurs qui mettront jusqu’à six mois pour élaborer la solution désirée.
L’apprentissage profond – une solution évoluée au bout des doigts
La Solution type utilise les réseaux neuronaux artificiels (autoencodeurs) pour repérer les schémas anormaux dans les données chronologiques sur les activités. Un autoencodeur comprime les données d’entrée pour les maîtriser sans supervision, puis les reconstruit avec un minimum d’erreurs. Dans une telle situation, la difficulté consiste à entraîner l’autoencodeur avec un jeu de données normales représentatif pour qu’il en comprenne la structure sous-jacente. Une fois formé, on laisse l’autoencodeur reconstruire de nouvelles instances dans lesquelles les anomalies correspondent aux variations par rapport à la normale survenant durant la reconstruction. La Solution type utilise un jeu de données ECG pour montrer comment les données sont structurées et comment fonctionne le modèle.
Le Propulseur s’avèrera d’une grande utilité pour les PME.
Solution clé en main ne nécessitant que peu de connaissances techniques
Plateforme virtuelle en nuage déjà configurée
Téléversement de jeux de données brutes sans supervision
Modèle IA organisant automatiquement les données
Solution rapide et peu coûteuse respectant les limites du budget alloué par l’ATIR
La détection d’anomalies dans les données chronologiques par l’IA sur le Nuage de l’ATIR – Solution type
Diagramme de la Solution type
Le diagramme ci-dessous illustre la structure de la Solution type.
Composant
Explication
Épuration
Détection et rectification ou suppression des valeurs personnelles, corrompues ou inexactes dans le jeu de données
Conversion des données et structuration des fonctionnalités
Transformation des valeurs du jeu de données en fonction d’une échelle commune
Construction du modèle
Construction et formation du modèle d’apprentissage profond avec les données pour détecter les anomalies.
Résultats de la formation
Vérification de l’exactitude de anomalies détectées
Choix du modèle
Sélection du modèle fonctionnant le mieux
Inférence du modèle
Essai du modèle retenu
Signalement des anomalies
Détection et signalement des anomalies
Démonstration de la technologie
Cette partie vous apprend à configurer et à déployer l’application utilisant les réseaux neuronaux artificiels (RNA).
Déploiement et configuration
Si vous détenez un compte de l’ATIR, vous pouvez déployer la Solution type en parcourant le répertoire de Propulseurs jusqu’à celui intitulé « Détection des anomalies dans les données chronologiques par l’IA »et en suivant les instructions sur la façon d’en déployer une nouvelle instance. La solution configurera automatiquement votre plateforme virtuelle.
1. Cliquez Deploy (Déployer), puis connectez-vous à votre compte ATIR pour ouvrir l’URL du Propulseur. Ensuite, cliquez Next (suivant) sur la page Create Stack (créer une pile).
2. Sur la page Specify stackdetails (précisions sur la pile), procédez comme suit :
dans l’encadré IpAddress, saisissez l’adresse IP publique de l’entreprise;
dans la case KeyName, saisissez la biclé EC2 qui vous donne accès à l’instance avec le protocole SSH;
cliquez Next (suivant).
3. Sur la page d’options Configure stack (configurer la pile), cliquez Next (suivant).
4. Sur la page Review and create (vérifier et créer), sélectionnez Submit (soumettre).5. Une pile sera créée et déployée comme on peut le voir sur l’illustration ci-dessous. Vous pouvez cliquer le bouton de rafraîchissement pour suivre la progression de la pile.
Configuration et lancement de l’application
1. Après avoir créé la pile, cliquez l’onglet Outputs (résultats) pour voir l’adresse IP de l’instance sous Value (valeur). Servez-vous de cette adresse pour accéder à l’instance GPU avec la commande SSH.
2. Une fois que vous aurez accédé à l’instance GPU, attendez que le message DAIR BoosterPack Installing Complete (installation du Propulseur de l’ATIR terminée) s’affiche sur la console. Ensuite, enfoncez la touche Entrée pour passer à l’étape suivante.
Un échantillon de code et un jeu de données conférant une grande précision au modèle seront chargés à l’avance. Vous pourrez modifier les paramètres du modèle afin de vous familiariser avec lui. Lisez la partie Démonstration de la technologie et la partie Architecture des données plus bas pour en savoir plus sur le paramétrage et comment téléverser votre propre jeu de données.
3. Exécutez les trois commandes ci-dessous pour activer la plateforme virtuelle!
Cette partie vous guide dans la démonstration du Propulseur. L’apprentissage profond avec des réseaux neuronaux artificiels (autoencodeurs) est intéressant en ce sens qu’il permet de déceler les anomalies opérationnelles au niveau le plus bas.
Le cas servant d’exemple vous montrera comment modéliser les activités.
Jeu de données ECG (électrocardiogrammes)
Comprendre le jeu de données
Le jeu de données original consiste en 20 heures d’électrocardiogrammes téléchargées de Physionet. Il s’agit du dossier « chf07 » de la base de données sur les insuffisances cardiaques congestives (chfdb) du BIDMC. Nous utiliserons 5 000 électrocardiogrammes. Les colonnes 0 à 139 présentent les données chronologiques de l’ECG d’un patient. Chaque valeur a été étiquetée « rythme anormal » ou « rythme normal ».
La Solution type illustre les capacités transformatrices d’un modèle d’apprentissage profond à autoencodage. Grâce à des mécanismes complexes de codage et de décodage, le système apprend les complexités associées aux valeurs chronologiques de l’ECG, ce qui lui permet de discerner les irrégularités du rythme et de la fréquence cardiaques. Voir le jeu de données ECG comme référence.
1.Former le modèle. Pour entraîner le modèle, vous aurez besoin des deux commandes que voici.
cd anomaly_detection/src/
python3 train_model.py
2.Établir un seuil. Après avoir entraîné le modèle à autoencodage avec le jeu de données ECG, on calcule la perte résultant de la reconstruction de chaque valeur et trace un histogramme qui sera sauvegardé dans /reports/ training_MAE_loss.jpg.
Bien que certaines valeurs anormales semblent échapper à l’autoencodeur, on les différencie clairement des valeurs normales. On établira donc un seuil auquel ces deux types de valeurs seront distinguées. Cela fait, on pourra contrôler la part de faux positifs, tout en captant le maximum de points de données anormaux. Pour le jeu de données ECG, la valeur par défaut a été fixée à 0,3. Vous devrez établir un autre seuil si vous utilisez votre propre jeu de données et modifier ce seuil en conséquence dans les scripts.
3.Vérifier la précision du modèle. Après avoir fixé un seuil, on teste la précision du modèle avec le jeu de données d’essai. Le rapport obtenu indiquera l’exactitude, la précision et le taux de rappel du modèle, comme on peut le voir ci-dessous.
Rapport sur la précision du modèle
Évaluation de la précision du modèle
Description
Exactitude
Mesure dans laquelle le modèle de classification AA est exact dans l’ensemble
Précision
Rapport entre le nombre de vrais positifs et le nombre total de valeurs positives, soit dans le cas actuel, nombre de patients chez qui on a correctement identifié une cardiopathie comparativement au nombre total de patients qui en sont vraiment atteints
Taux de rappel
Mesure dans laquelle le modèle a identifié les vrais positifs; indique combien de patients souffrant effectivement d’une cardiopathie ont été identifiés comme tels
4.Procéder à l’inférence du modèle. Une fois que le modèle a été bâti et a été retenu, on exécutera la commande ci-dessous pour en vérifier l’inférence :
python3 predict_model.py
Résultat
Le résultat sera sauvegardé dans /result/predicting.csv
Conclusion
1. Une fois la démonstration achevée, allez à Services > Management & Governance > CloudFormation
2. Cochez la case qui correspond à votre pile, cliquez Delete (supprimer). La pile, l’instance EC2 et le groupe de sécurité seront automatiquement supprimés de votre compte.
Facteurs à prendre en considération
Autres possibilités de déploiement
La Solution type du Propulseur utilise une instance GPU g4dn.2xlarge peu coûteuse qui satisfera les besoins de la majorité des cas d’utilisation.
Autres technologies
Principales raisons expliquant le choix des réseaux neuronaux artificiels (autoencodeurs)
Une des principales décisions techniques à l’origine de la solution proposée concerne le choix de l’autoencodage, une technologie qui se prête bien à la détection des anomalies.
L’autoencodeur saisit les liens non linéaires entre les données et leurs schémas, ce qui lui permet de repérer les anomalies dans les jeux de données complexes, comportant de multiples dimensions.
L’autoencodeur identifie aussi les schémas globaux et locaux dans les données. Cette polyvalence lui permet de déceler les anomalies à diverses échelles, d’un léger écart local à l’aberration générale qui affectera les données dans leur ensemble.
L’autoencodeur peut apprendre à partir de données déséquilibrées ou non étiquetées, d’où son utilité lorsque les données sur les anomalies étiquetées sont rares ou qu’on ne peut y accéder.
Autres solutions
Repérer les anomalies n’est pas compliqué si le jeu de données n’est pas volumineux ou si on se fie fortement aux possibilités d’interprétation du modèle. Dans une telle situation, d’autres solutions peuvent être envisagées.
Employer des méthodes de modélisation statistique comme les modèles de mélange gaussien qui modélisent les propriétés statistiques des données et identifient les points de donnée qui s’écartent de la tendance prévue, donc constituent une anomalie
Classer les données avec un algorithme classique d’apprentissage automatique comme les machines à vecteurs de support (SVM) ou les forêts aléatoires, puis relever les points de données qui ont été mal classés, donc peuvent être qualifiés d’anormal
Appliquer des méthodes reposant sur des règles comme un moteur de règles qui exploite les connaissances particulières à un domaine, donc peut déceler les anomalies à partir de règles spécifiques au domaine reposant sur l’expérience
Architecture des données
Formatage des données de la Solution type
Téléversement de données –Jeu de données préinstallé servant d’exemple
Le jeu de données ECG de la Solution type, sauvegardé dans le référentiel Github, est téléchargé automatiquement après la création de la pile/instance, ce qui permet à l’utilisateur qui en est à sa première expérience de se familiariser avec le modèle et de le tester.
Téléversement de données – Nouveau jeu de données
L’utilisateur peut téléverser son propre jeu de données dans l’instance avec la commande SCP. Pour savoir comment procéder étape par étape, on lira le document Transferring Files between your laptop and Amazon instance (transfert de fichiers de l’ordinateur portable à l’instance Amazon). Gardez le nom de fichier existant quand vous remplacez l’ancien jeu de données.
Format des données d’entrée
Jeu de données servant d’exemple
Le jeu de données ECG est organisé en format CSV. Il comprend 140 colonnes correspondant aux électrocardiogrammes (ECG) et une colonne d’étiquettes codées 0 ou 1 indiquant que l’ECG est normal ou pas. En voici un exemple pour vous guider lors du formatage d’un nouveau jeu de données.
Nouveau jeu de données
Voici comment formater votre propre jeu de données.
Formatez-le en fichiers CSV, sans en-tête ni index. Les fonctions pd.read_csv in train_model.py et predict_model.py peuvent toutefois être modifiées pour accepter un index et le titre des colonnes, s’il le faut. Dans ce cas, lisez le Pandas Read pour en savoir plus.
Le modèle n’accepte que les points de données numériques. S’il existe des données d’un autre genre, convertissez-les en leur donnant une valeur numérique. Lisez Label Encoders (codage d’étiquettes) pour en savoir plus.
Chaque rangée correspond à une période dans les données chronologiques. La dernière colonne est celle contenant les étiquettes.
Aucune colonne n’est nécessaire pour l’horodatage.
Vérification de la qualité des données d’entrée
La qualité des prévisions dépend de la qualité du jeu de données qui forme le modèle. La qualité du jeu de données est l’un des facteurs les plus importants pour l’apprentissage automatique. Essayez d’éviter ce qui suit quand vous choisirez un jeu de données.
Données inexactes
Elles réduiront passablement la performance de l’apprentissage automatique. Il est important de bien comprendre les données pour identifier celles qui ne conviennent pas lors du prétraitement.
Données déséquilibrées
Évitez les jeux de données qui renferment très peu d’anomalies, comparativement aux instances normales. Une tel déséquilibre faussera le modèle, qui aura tendance à se comporter normalement et détectera mal les aberrations. (Lisez Imbalanced Data, à la partie « Tutoriels » du Plan de vol, pour en savoir plus)
Données mal documentées
Le manque de documentation peut déboucher sur une mauvaise interprétation des données, donc une analyse erronée.
Format des données de sortie
Les données de sortie sont exprimées sous forme de fichiers CSV avec en-tête et index. La première colonne correspond à l’index et la deuxième prédit le résultat, codé 0 ou 1, ce qui indique que l’ECG est anormal (0) ou normal (1).
Sécurité
La détection des anomalies par autoencodage est une solution conçue pour servir de cadre général et accélérer l’élaboration d’une solution. Sur le plan de la sécurité, il conviendrait de prendre en compte ce qui suit et d’envisager des mesures d’atténuation.
Préoccupation
Mesure d’atténuation
Les données transmises aux instances EC2 ou venant de celles-ci pourraient être interceptées, ce qui dévoilerait des informations sensibles.
Transmettre les données avec le protocole SSH pour plus de sûreté
Un accès non autorisé aux instances EC2 pourrait entraîner la fuite de données ou permettre à quelqu’un d’altérer le système.
Contrôler l’accès aux instances EC2 avec le service de gestion des identités et des accès (GIA) d’AWS afin que les utilisateurs et les services autorisés soient les seuls à accéder au modèle. Utiliser des groupes de sécurité pour restreindre le trafic sur le réseau
Connexion avec un mot de passe d’AWS
Changer toujours le mot de passe par défaut pour un mot de passe personnel plus complexe
Réseautique
Ne s’applique pas à ce Propulseur.
Mise à l’échelle
Par « mise à l’échelle », on entend la capacité de la technologie à traiter un volume croissant de données et à rester aussi efficace. Des techniques de traitement en parallèle comme l’usage de flux multiples ou le traitement multiple pourraient faciliter l’évolution du système de détection des anomalies par l’usage simultané de nombreuses ressources de calcul. Pour les activités servant à entraîner le modèle, nous préconisons le traitement multiple avec Tensorflow et des cœurs CUDA. Plateforme de calcul parallèle, CUDA sert aussi de modèle aux interfaces de protocole d’application (API), ce qui permet à TensorFlow d’effectuer des calculs en parallèle sur des unités de traitement graphique (GPU). Pour en savoir plus sur l’usage de flux multiples ou le traitement multiple, on lira Thread-based parallelism et Process-based parallelism.
Disponibilité
La Solution type se déploie sur l’instance EC2 de l’ATIR d’AWS. Les instances EC2 sont déployées sur de nombreux serveurs physiques dans une zone de disponibilité (AZ). Quand un serveur tombe en panne, l’instance peut donc être transférée rapidement à un autre. En sauvegardant régulièrement les données, on atténuera les risques de perte éventuels.
Interface utilisateur (IU)
Ne s’applique pas à ce Propulseur.
API
Ne s’applique pas à ce Propulseur.
Coût
Ce Propulseur est une solution qui ne vous coûtera guère. Vous pourrez vous en servir de nombreuses fois par mois sans dépasser le budget alloué par l’ATIR. L’application se déploie sur une instance g4dn.2xlarge à la demande de Linux coûtant 0,835 $US/heure.
Licence
Les codes rédigés par Chillwall AI sont tous couverts par la licence MIT.
Accélérateur technologique pour l’innovation et la recherche. Si rien ne le qualifie, dans ce document, l’acronyme désigne la plateforme pilote des Propulseurs de l’ATIR (un nuage hybride constitué d’un nuage public et d’un nuage privé, et non l’ancien service privé d’infonuagique de l’ATIR). Plateforme hybride en nuage
Apprentissage profond
Apprentissage automatique recourant aux réseaux neuronaux artificiels
ECG
Électrocardiogramme
GPU
Unité de traitement graphique
Hyperparamètre
Paramètre préétabli servant à entraîner le modèle, comparativement aux paramètre dérivés durant la formation de ce dernier
Instance
Machine virtuelle exploitée sur une plateforme d’infonuagique
LSTM
Ménoire à long et à court terme (réseau)
Apprentissage automatique
Cadre employé pour bâtir un modèle sans programmation
Surapprentissage
Production d’une analyse qui correspond trop étroitement ou exactement à un jeu particulier de données, donc n’autorisera pas l’analyse d’autres données ou une prévision fiable d’autres observations
Données chronologiques
Séquence de données prises à un même intervalle, à différents moments dans le temps