feat(ml): replace Autoencoder with RealNVP Normalizing Flow and add SessionTransformer embeddings
Replace TrafficAutoEncoder (MSE reconstruction scoring) with TrafficNormalizingFlow (RealNVP via FrEIA, 4 affine coupling blocks, anomaly score = -log p(x)) for mathematically rigorous density estimation. Add SessionTransformer module producing 32-dimensional sequence embeddings from raw HTTP request sequences (path, method, timing) via a lightweight TransformerEncoder, replacing path_transition_entropy and cadence_cv features. Update thesis documentation sections 2.4.2b and 3.8 accordingly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@ -344,28 +344,29 @@ Deux modèles EIF s'exécutent en parallèle à chaque cycle de 300 secondes :
|
||||
|
||||
La bifurcation est justifiée par le fait que les features TCP/TLS ne sont disponibles que lorsque ja4ebpf a corrélé la connexion réseau avec la requête HTTP. Imputer ces features à zéro pour le trafic non corrélé créerait un signal artificiel (zéro n'est pas neutre pour un EIF — il est interprété comme une valeur réelle).
|
||||
|
||||
#### 2.4.2b Autoencoders (AE) et détection d'anomalies
|
||||
#### 2.4.2b Normalizing Flows (NF) et détection d'anomalies par vraisemblance
|
||||
|
||||
**Principe des autoencoders**
|
||||
**Limites de l'erreur de reconstruction MSE**
|
||||
|
||||
Un autoencodeur est un réseau de neurones entraîné à reconstruire son entrée après compression à travers un espace latent de dimension réduite (bottleneck). Architecture :
|
||||
L'approche par autoencodeur, bien que répandue, repose sur un postulat fragile : qu'un réseau entraîné uniquement sur des données normales reconstruira mal les anomalies. En pratique, les autoencodeurs à capacité suffisante peuvent généraliser et reconstruire correctement des échantillons hors distribution, rendant le score MSE peu fiable comme mesure d'anomalie. De plus, l'erreur de reconstruction n'a pas d'interprétation probabiliste — elle ne permet pas de quantifier dans quelle mesure un échantillon est improbable sous la distribution des données normales.
|
||||
|
||||
**Normalizing Flows : estimation de densité par changement de variable**
|
||||
|
||||
Un Normalizing Flow est une bijection apprise $f_\theta : \mathcal{X} \to \mathcal{Z}$ qui transforme l'espace des données $\mathcal{X}$ vers un espace latent $\mathcal{Z}$ de même dimension, typiquement muni d'une distribution simple (gaussienne standard $\mathcal{N}(0, I)$). La log-vraisemblance exacte d'un échantillon $x$ s'obtient par la formule du changement de variable :
|
||||
|
||||
```
|
||||
Encodeur : x (dim D) → z (dim d, d << D)
|
||||
Décodeur : z (dim d) → x̂ (dim D)
|
||||
log p(x) = log p_z(f_θ(x)) + log|det J_fθ(x)|
|
||||
```
|
||||
|
||||
Entraîné à minimiser l'erreur de reconstruction :
|
||||
où $J_{f_\theta}(x)$ est la matrice jacobienne de $f_\theta$ en $x$. Cette formule fournit une estimation de densité exacte (pas de borne inférieure variationnelle comme dans les VAE), ce qui est mathématiquement plus rigoureux pour l'estimation de densité.
|
||||
|
||||
```
|
||||
MSE = (1/n) × Σ(xi - x̂i)²
|
||||
```
|
||||
**Architecture RealNVP** : 4 blocs de couplage affine (Dinh et al., 2017), chacun utilisant un sous-réseau MLP (2 couches, 64 neurones, ReLU). Chaque bloc divise les dimensions en deux groupes, transforme la moitié via une fonction affine paramétrée par l'autre moitié, et alterne. Le log-déterminant jacobien se calcule en complexité O(D) (produit des dérivées des facteurs d'échelle), rendant l'entraînement tractable.
|
||||
|
||||
Le bottleneck (espace latent dimension 16 << dimension d'entrée 45–59) force le réseau à apprendre la représentation la plus compacte du trafic normal. L'erreur de reconstruction est le score d'anomalie : les échantillons normaux se reconstruisent bien (MSE faible) ; les anomalies se reconstruisent mal (MSE élevé) car le réseau n'a jamais été entraîné sur des patterns de bot.
|
||||
**Score d'anomalie** : $-\log p(x)$. Les échantillons normaux ont une forte vraisemblance (score faible) ; les anomalies tombent dans les régions de faible densité de $p(x)$ (score élevé). Contrairement au MSE, ce score est une mesure probabiliste directement interprétable.
|
||||
|
||||
**Avantage fondamental sur EIF** : l'AE capture les corrélations non-linéaires entre features. Un bot utilisant httpcloak peut imiter individuellement chaque feature Chrome (JA4 correct, ALPN correct, en-têtes HTTP corrects) mais leurs inter-corrélations inhabituelles (tcp_jitter_variance × sec_fetch_absence_rate × asset_ratio) trahissent l'imitation dans l'espace de reconstruction de l'AE. EIF détecte les anomalies ponctuelles (points isolés dans l'espace des features) ; l'AE détecte les anomalies distributionnelles (corrélations inter-features anormales).
|
||||
**Avantage fondamental sur EIF** : le NF estime la densité de probabilité jointe $p(x_1, \ldots, x_D)$ sur toutes les features, capturant les corrélations non-linéaires entre features. Un bot utilisant httpcloak peut imiter individuellement chaque feature Chrome (JA4 correct, ALPN correct, en-têtes HTTP corrects) mais leurs inter-corrélations inhabituelles (tcp_jitter_variance × sec_fetch_absence_rate × asset_ratio) correspondent à une région de faible densité sous $p(x)$. EIF isole les points extrêmes dans l'espace des features ; le NF quantifie directement leur improbabilité jointe.
|
||||
|
||||
**Implémentation** : PyTorch, espace latent 16 dimensions, arrêt précoce sur la loss de validation, score d'anomalie = erreur de reconstruction MSE.
|
||||
**Implémentation** : PyTorch + FrEIA (Framework for Easily Invertible Architectures), 4 blocs AllInOneBlock, perte = NLL moyenne, Adam + early stopping.
|
||||
|
||||
**Kitsune**
|
||||
|
||||
@ -385,16 +386,16 @@ Pour un VAE, la régularisation KL(q(z|x) || p(z)) pénalise l'encodeur si sa di
|
||||
|
||||
La complémentarité entre IF et AE est un résultat bien établi en détection d'anomalies :
|
||||
|
||||
| Critère | Isolation Forest (EIF) | Autoencoder (AE) |
|
||||
|---------|------------------------|------------------|
|
||||
| Type d'anomalie détecté | Points isolés dans l'espace des features | Corrélations non-linéaires anormales |
|
||||
| Interprétabilité | ExIFFI (profondeur d'isolation par feature) | Erreur par dimension |
|
||||
| Dimensionnalité | Optimal jusqu'à ~100 features | Robuste, compresse l'espace |
|
||||
| Détection d'imitation | Partielle | Plus forte (corrélations inter-features) |
|
||||
| Espace pour clustering | Non adapté | Espace latent 16D idéal pour HDBSCAN |
|
||||
| Critère | Isolation Forest (EIF) | Normalizing Flow (NF) |
|
||||
|---------|------------------------|------------------------|
|
||||
| Type d'anomalie détecté | Points isolés dans l'espace des features | Régions de faible densité jointe |
|
||||
| Interprétabilité | ExIFFI (profondeur d'isolation par feature) | Log-vraisemblance par dimension |
|
||||
| Dimensionnalité | Optimal jusqu'à ~100 features | Robuste, même dimension que l'entrée |
|
||||
| Détection d'imitation | Partielle | Plus forte (densité jointe inter-features) |
|
||||
| Espace pour clustering | Non adapté | Espace latent (bijection) idéal pour HDBSCAN |
|
||||
| Coût computationnel | Faible (arbres) | Modéré (réseau de neurones) |
|
||||
|
||||
**Espace latent AE pour HDBSCAN** : les 16 dimensions latentes de l'AE capturent la variance la plus discriminante du comportement des bots. Le clustering HDBSCAN dans cet espace regroupe les sessions dont le comportement compressé est similaire — c'est-à-dire les bots utilisant le même outil ou la même configuration — identifiant ainsi les campagnes coordonnées.
|
||||
**Espace latent NF pour HDBSCAN** : la bijection $f_\theta$ du Normalizing Flow transforme l'espace des features en un espace latent où la distribution est $\mathcal{N}(0, I)$. Le clustering HDBSCAN dans l'espace latent $z = f_\theta(x)$ regroupe les sessions dont la structure (après transformation) est similaire — c'est-à-dire les bots utilisant le même outil ou la même configuration — identifiant ainsi les campagnes coordonnées.
|
||||
|
||||
#### 2.4.2c Ensembles hybrides supervisé + non-supervisé
|
||||
|
||||
@ -540,7 +541,7 @@ où F est l'ensemble de toutes les features, S est un sous-ensemble, et f(S) est
|
||||
|
||||
L'importance des features par profondeur d'isolation (approche de type ExIFFI) est une méthode native d'importance des features pour EIF, basée sur la profondeur moyenne d'isolation par feature. Principe : une feature ayant une profondeur d'isolation moyenne faible (isole rapidement les anomalies) est plus importante pour la détection. Activé comme fallback lorsque SHAP n'est pas disponible. Comparé aux top-5 SHAP dans l'interface SOC.
|
||||
|
||||
**Erreur de reconstruction AE par dimension** : `(xi - x̂i)²` par dimension d'entrée identifie quelles features contribuent à l'anomalie AE. Cela fournit une explicabilité locale pour chaque session anormale : les features dont la reconstruction est la plus dégradée sont les plus discriminantes.
|
||||
**Log-vraisemblance NF par dimension** : via la décomposition du log-déterminant jacobien par bloc de couplage, il est possible d'identifier quelles dimensions contribuent le plus à la faible vraisemblance d'un échantillon. Cela fournit une explicabilité locale pour chaque session anormale : les dimensions dont le log-déterminant est le plus négatif correspondent aux features les plus anormales sous la distribution apprise.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user