La capacité de détecter les anomalies devient importante dans le monde actuel axé sur les données et constitue un composant clé pour diverses industries telles que la finance, la santé, la cybersécurité et la fabrication. Les anomalies peuvent être des signes de fraude, de défaillances systèmes, d’incidents de sécurité ou d’autres événements importants nécessitant une attention immédiate. Le volume, la vitesse et la variété des données en cours de flux sont difficiles à gérer pour les techniques traditionnelles de détection d’anomalies. D’autre part, les dernières avancées dans les Grands Modèles de Langue (LLMs) offrent une nouvelle voie pour effectuer une détection d’anomalies en temps réel. Dans ce billet de blog, nous discutons en détail de la manière dont les LLMs peuvent être utilisés pour détecter les anomalies dans les données en cours de flux, avec quelques exemples.
Détection d’Anomalies
Les anomalies sont des schémas dans vos données qui ne conforment pas à une idée bien définie de comportement normal.
Détection d’Anomalies
C’est littéralement de trouver le point dans les données qui diffère significativement du reste de son type. Cela peut révéler des événements rares ou des cas limites qui ne conviennent pas au profil global du jeu de données. Ces anomalies peuvent être généralisées en trois types :
- Anomalies de table : Ce sont des anomalies de points, à savoir les cellules individuelles qui sortent nettement dans le tableau.
- Outils avec contexte : Des points de données qui peuvent être considérés comme des outliers dans un contexte.
- Anomalies d’espace : Un groupe de points apparaît comme anormal seulement lorsqu’il est examiné ensemble.
Le problème avec les données en flux
Données en flux est un terme utilisé pour décrire des données générées en continu ou produites en temps réel en cours d’exécution. Celles-ci se présentent sous forme de données de capteurs, de transactions financières, de flux de médias sociaux et de journaux de réseau. Les principaux défis liés à la détection d’anomalies sur des données en flux sont les suivants :
- Volume : Nous avons des montagnes de données.
- Vitesse : Le flux rapide de données exige une approche en temps réel pour traiter le flux.
- Diversité : Les données arrivent sous de nombreuses formes et variétés.
- Validité : Assurer que les données sont exactes et fiables.
Il existe de nombreuses raisons pour lesquelles les méthodes traditionnelles de détection d’anomalies (comme les tests statistiques et les modèles d’apprentissage automatique) ne peuvent souvent pas répondre à ces défis. C’est là que les Grands Modèles de Langue (LLMs) entrent en scène.
Les Grands Modèles de Langue
Les modèles linguistiques (par exemple GPT-4 d’OpenAI) sont des machines à apprentissage profond d’entraînement avec une grande quantité de texte. Ces modèles peuvent comprendre et générer du texte comme les humains, ce qui les rend des outils excellents pour une variété de tâches de traitement du langage naturel (TLN). Les LLMs démontrent des capacités impressionnantes sur des tâches telles que la génération de texte, la traduction, la résumé et même le codage.
Les GIM peuvent être utilisés de la meilleure manière en leur demandant de déchiffrer le contexte et les patrons dans les données. Cela les rend très pertinents pour la détection des anomalies, car ces algorithmes peuvent détecter même les petites déviations que les méthodes traditionnelles pourraient ignorer.
Utilisation des GIM pour la détection des anomalies
Les GIM peuvent être employés de diverses manières pour servir de détecteurs d’anomalies pour un événement entrant donné et le transmettre à un système externe. Voici quelques méthodes :
- Analyse contextuelle : Les GIM détectent les anomalies en apprenant le contexte autour de points de données spécifiques. Dans le contexte d’une suite de transactions financières, un GIM peut détecter des habitudes d’achat anormales.
- Identification de patrons : Les GIM identifient des patrons complexes et complets dans les données. Un GIM peut détecter des trafics anormaux qui pourraient indiquer une violation de la sécurité dans la protection du réseau.
- Données étiquetées : Le but principal des arbres de modèles logistiques est de prédire l’un des deux résultats discrets, souvent comparés de manière supervisée pour laquelle ils peuvent nécessiter des données étiquetées.
- Apprentissage non supervisé : Les GIM peuvent également être utilisés de manière non supervisée pour détecter des anomalies sans données étiquetées. Cela est particulièrement pratique dans les applications qui présentent des anomalies rares et/ou des données étiquetées rarement.
- Traitement économie de temps : Comme les GIM peuvent traiter les données en temps réel, ils sont adaptés pour les applications de données en cours. Ils peuvent le faire en direct, de manière continue, en surveillance des données en cours de fluide.
Exemples pratiques
Avant cela, voyons quelques exemples simples de comment nous pouvons utiliser les GLL dans le temps réel pour la détection d’anomalies dans différents domaines.
Exemple d’utilisation 1 : Détection de fraude financier
Les institutions financières traite des volumes énormes de données de transactions avec un nombre considérable de transactions quotidiennes (de diverses formes, tant en temps réel qu’hors ligne). Du point de vue financier, identifier la fraude est essentiel pour minimiser les pertes et maintenir la confiance des clients. De plus, les systèmes traditionnels basés sur des règles ne reconnaissent souvent pas les schémas de fraude plus complexes.
Une GLL facilite le traitement en temps réel du flux de transactions. En fonction du montant de la transaction, de la géolocalisation et de l’heure, ces facteurs peuvent également être appliqués au comportement d’achat historique. Par exemple, si une carte de crédit d’un client est utilisée pour effectuer un achat coûteux dans un autre pays soudainement, ce comportement serait anormal en fonction de l’historique de dépenses passé et pourrait likely déclencher une sortie d’anomalie par la GLL.
Exemple d’utilisation 2 : Moniteur de santé
La surveillance continue et la détection précoce des problèmes médicaux jouent un rôle clé dans les soins de santé. Ces appareils collectent une stream continue de données — la fréquence cardiaque, les niveaux de pression sanguine et les patrons d’activité.
Une GLL peut être utilisée pour l’analyse en temps réel de ces données. Par exemple, si la fréquence cardiaque d’un patient s’envole de manière atypique pour une raison inconnue, nous pouvons étiqueter cette anomalie. La GLL peut également tenir compte de diverses informations contextuelles, telles que l’historique du patient et son activité à un moment donné, pour avoir une meilleure détection d’anomalies.
Exemple d’utilisation 3 : Sécurité réseau
La sécurité réseau nécessite un suivi actif et une compréhension des trafics réseau normaux. Les anomalies de trafic réseau peuvent entraîner des problèmes tels que des infections de malware, des breaches de données ou des attaques de service interrompu.
Nous pouvons utiliser un LLM pour examiner les journaux de trafic réseau pour les déviations des patterns habituels, qui pourraient signaler un risque de sécurité. Par exemple, si il y a une brusque augmentation du trafic vers un serveur particulier ou un pattern inhabituel de transfert de données, l’LLM peut identifier ces anomalies possibles. Le modèle peut même tenir compte des patterns de trafic historiques et des signets d’attaque connus pour améliorer davantage la précision de la détection.
Comment implémenter la détection d’anomalies à l’aide de LLM
Collecte de données
Rassemblez les données à partir de sources en flux. Il peut s’agir de journaux de transactions, de données de capteurs ou de connectivité réseau.
Nettoyage des données
Le nettoyage des données est une étape cruciale pour qu’elles puissent être utilisées dans notre analyse de prétraitement. Cela peut inclure la suppression du bruit, le traitement des valeurs manquantes et la normalisation des données.
Entraînement du modèle
Entraînez l’LLM avec des données historiques pour établir des lignes de base. Cette étape pourrait inclure un entraînement supplémentaire d’un LLM entraîné sur les données du domaine.
Déploiement pour l’analyse en temps réel
Utilisez le modèle entraîné pour analyser les données en flux. Le modèle doit surveiller le flux de données et lever une alarme si il trouve des anomalies.
Alertage et action
Créez un système d’alerte pour aviser l’autorité compétente si des anomalies sont détectées. Définissez les tâches à exécuter en fonction de certains types d’anomalies.
Configuration de l’environnement
Pour commencer, installez les bibliothèques requises.
pip install transformers torch
Exemple de modèle 1 : Détection de fraude financière
Supposons que nous souhaitions expérimenter la méthode LLM pour la détection d’anomalies dans les transactions financières.
Étape 1 : Simulation des données
Nous envoyerons une stream de transactions financières.
import random
import time
def generate_transaction():
transactions = [
{"user_id": 1, "amount": random.uniform(1, 100), "location": "New York"},
{"user_id": 2, "amount": random.uniform(1, 1000), "location": "San Francisco"},
{"user_id": 3, "amount": random.uniform(1, 500), "location": "Los Angeles"},
{"user_id": 4, "amount": random.uniform(1, 2000), "location": "Chicago"},
]
return random.choice(transactions)
def stream_transactions():
while True:
transaction = generate_transaction()
yield transaction
time.sleep(1) # Simulating real-time data stream
# Exemple d'utilisation
for transaction in stream_transactions():
print(transaction)
Étape 2 : Détection d’anomalies basée sur LLM
Nous utiliserons un LLM pré-entraîné pour cela, via Hugging Face.
from transformers import pipeline
# Charger un modèle de sentiment analysis pré-entraîné à titre d'exemple
# Dans une scénario réel, vous entraîneriez un modèle sur votre tâche spécifique de détection d'anomalies
model = pipeline("sentiment-analysis")
def detect_anomaly(transaction):
# Convertir la transaction en une forme de chaine de caractères pour l'LLM
transaction_str = f"User {transaction['user_id']} made a transaction of ${transaction['amount']} in {transaction['location']}."
# Utiliser l'LLM pour analyser la transaction
result = model(transaction_str)
# Pour simplifier, considérer le sentiment négatif comme une anomalie
if result[0]['label'] == 'NEGATIVE':
return True
return False
# Exemple d'utilisation
for transaction in stream_transactions():
if detect_anomaly(transaction):
print(f"Anomaly detected: {transaction}")
else:
print(f"Normal transaction: {transaction}")
Exemple 2 : Surveillance de la santé
Nous utiliserons la méthode LLM pour construire des modèles de détection d’anomalies dans une stream de données de santé des patients.
Étape 1 : Simulation des données
def generate_health_data():
health_data = [
{"patient_id": 1, "heart_rate": random.randint(60, 100), "blood_pressure": random.randint(110, 140)},
{"patient_id": 2, "heart_rate": random.randint(60, 120), "blood_pressure": random.randint(100, 150)},
{"patient_id": 3, "heart_rate": random.randint(50, 110), "blood_pressure": random.randint(90, 130)},
{"patient_id": 4, "heart_rate": random.randint(70, 130), "blood_pressure": random.randint(100, 160)},
]
return random.choice(health_data)
def stream_health_data():
while True:
data = generate_health_data()
yield data
time.sleep(1) # Simulating real-time data stream
# Exemple d'utilisation
for data in stream_health_data():
print(data)
Étape 2 : Détection d’anomalies basée sur LLM
def detect_health_anomaly(data):
# Convertir les données de santé en une forme de chaine de caractères pour l'LLM
health_data_str = f"Patient {data['patient_id']} has a heart rate of {data['heart_rate']} and blood pressure of {data['blood_pressure']}."
# Utiliser l'LLM pour analyser les données de santé
result = model(health_data_str)
# Pour simplifier, considérer le sentiment négatif comme une anomalie
if result[0]['label'] == 'NEGATIVE':
return True
return False
# Exemple d'utilisation
for data in stream_health_data():
if detect_health_anomaly(data):
print(f"Anomaly detected: {data}")
else:
print(f"Normal health data: {data}")
Exemple 3 : Sécurité des réseaux
Génération de journaux de réseau et détection d’anomalies avec un LLM.
Étape 1 : Simulation de données
def generate_network_log():
network_logs = [
{"ip": "192.168.1.1", "request": "GET /index.html", "status": 200},
{"ip": "192.168.1.2", "request": "POST /login", "status": 401},
{"ip": "192.168.1.3", "request": "GET /admin", "status": 403},
{"ip": "192.168.1.4", "request": "GET /unknown", "status": 404},
]
return random.choice(network_logs)
def stream_network_logs():
while True:
log = generate_network_log()
yield log
time.sleep(1) # Simulating real-time data stream
# Exemple d'utilisation
for log in stream_network_logs():
print(log)
Étape 2 : Détection d’anomalies basée sur le LLM
def detect_network_anomaly(log):
# Convertir les journaux de navigateur en format de chaîne pour le LLM
log_str = f"IP {log['ip']} made a {log['request']} request with status {log['status']}."
# Utiliser le LLM pour analyser les journaux de navigateur
result = model(log_str)
# Pour simplifier, considérer le sentiment négatif comme une anomalie
if result[0]['label'] == 'NEGATIVE':
return True
return False
# Exemple d'utilisation
for log in stream_network_logs():
if detect_network_anomaly(log):
print(f"Anomaly detected: {log}")
else:
print(f"Normal network log: {log}")
Les exemples montrent comment les Grands Modèles de Langue (LLM) peuvent être utilisés pour la détection d’anomalies en streaming dans différents domaines. Le modèle d’analyse de sentiment est utilisé uniquement à des fins illustratives dans les exemples, mais vous pourriez le finesser pour qu’il s’agisse d’un LLM sur votre tâche de détection d’anomalies.
Utilisation en temps réel des LLM
Comme vous surveillez toujours les données à leur arrivée en utilisant l’API de streaming et effectuez des recherches approfondies en fonction de patrons pour évaluer le contexte (mesures statistiques), la détection d’anomalies en temps réel permet de réagir rapidement aux éventuels problèmes.
Défis et considérations
En dehors des avantages de détection d’anomalies que les LLM offrent, il est nécessaire de se rapporter à leurs défis et limitations.
- Ressources : Les LLM requièrent des ressources importantes pour l’entraînement et le traitement en temps réel. Il est nécessaire de s’assurer qu’il y ait une infrastructure suffisante disponible.
- Confidentialité des données : Des données sensibles telles que les transactions bancaires et les dossiers de soins de santé sont soumises à des règlements où la confidentialité est critique.
- Interprétabilité : Les GMT sont souvent appelés des « boîtes noires » en raison de leur complexité. Pour inspirer confiance et comprendre pourquoi les anomalies ont été détectées, l’interprétabilité et l’explicabilité du modèle sont importantes.
- Apprentissage continue : L’information en cours de streaming est imprévisible, et les tendances peuvent fluctuer au fil du temps. Les modèles doivent être mis à jour pour un apprentissage continu et une meilleure précision de détection.
Direction future
Le domaine de détection d’anomalies avec les GMT est toujours en développement, et certaines directions sont novatrices pour une exploration ultérieure que nous considérons prometteuses pour les recherches futures et l’innovation :
- Modèles hybrides : Intégrer des algorithmes de séries temporelles ou de clustering avec les GMT peut renforcer la détection d’anomalies.
- Calcul en périphérie : En tant que partie de l’exécution des GMT, vous pouvez les déployer sur des appareils périphériques ; cela permet une détection en direct au niveau de la source, ce qui conduit ainsi à une latence plus basse et une réactivité accrue.
- IA explicable : Concevoir des techniques pour améliorer l’interprétabilité des GMT afin que les parties prenantes puissent comprendre et accepter les fondements des décisions du modèle.
- Modèles spécialisés : Réfinir les GMT pour des domaines spécifiques (finance, santé ou cybersécurité) peut améliorer la précision de détection et la pertinence.
Conclusion
La détection d’anomalies est un cas d’utilisation commun dans toutes les industries pour les données en cours de streaming. Cependant, les grands modèles de langage peuvent être utilisés comme une méthode puissante et complète pour traiter ce problème. L’utilisation de MLL pour l’analyse contextuelle et la reconnaissance de patrons, associée à un traitement en temps réel, peut aider significativement les organisations à identifier rapidement les anomalies. Il existe quelques défis à relever avant de pouvoir complètement exploiter le pouvoir des MLL pour la détection d’anomalies. Nous pouvons envisager d’autres améliorations à la détection d’anomalies en temps réel à mesure que la technologie progresse dans ce domaine.
Source:
https://dzone.com/articles/realtime-anomaly-detection-using-large-language