## Applications Modernes et Rigueur Méthodologique

Même le moteur le plus puissant devient inutile si on lui met du mauvais carburant : les RNN avancés (Bi-LSTM, multi-tâches) peuvent performer remarquablement, à condition de ne pas contaminer les données de test avec des informations venues du futur.

L'évolution des RNN vers des modèles hybrides permet d'atteindre une précision remarquable dans des domaines critiques. Deux directions de recherche marquent l'état de l'art : l'extension **bidirectionnelle** des architectures récurrentes, et l'intégration dans des frameworks multi-tâches. Mais leur puissance computationnelle est vaine sans une rigueur méthodologique absolue sur les données [@Zhu2024; @Ji2023; @Albelali2025].

### Contexte Bidirectionnel

Une Bi-LSTM lit la séquence deux fois : une fois dans l'ordre normal et une fois à l'envers, puis combine les deux lectures — comme un correcteur qui relit un texte dans les deux sens pour détecter des incohérences.

L'architecture Bi-LSTM (*Bidirectional LSTM*) traite la séquence simultanément dans les deux directions temporelles : une LSTM avance de $t=1$ vers $t=T$, une autre recule de $t=T$ vers $t=1$. Les états cachés des deux passes sont concaténés à chaque pas de temps :

$$
\mathbf{h}_t^{\text{Bi}} = \left[\overrightarrow{\mathbf{h}}_t \;\|\; \overleftarrow{\mathbf{h}}_t\right]
$$

Cette architecture capture des dépendances contextuelles que les modèles unidirectionnels manquent : pour la reconstruction de données de capteurs manquantes, la Bi-LSTM peut utiliser à la fois les mesures antérieures et les mesures postérieures d'une lacune pour l'interpoler avec précision [@Zhu2024].

**Application : surveillance de santé structurelle (SHM)** — Le framework VMD-SSA-Bi-LSTM illustre la puissance de cette approche [@Zhu2024] :

1. La **Décomposition en Modes Variationnels** (VMD) segmente les signaux périodiques irréguliers en fonctions de modes intrinsèques (IMF), séparant les composantes fréquentielles.
2. L'algorithme **SSA** (*Sparrow Search Algorithm*) optimise automatiquement les hyperparamètres (unités cachées, taux d'apprentissage).
3. La **Bi-LSTM** modélise les corrélations spatio-temporelles avec une fidélité bien supérieure aux méthodes d'interpolation classiques.

### Apprentissage multi-tâches et Temporal Fusion Transformer

L'apprentissage **multi-tâches** (*Multi-Task Learning*, MTL) impose au modèle de prédire simultanément plusieurs horizons temporels (court, moyen, long terme). Cette contrainte agit comme un puissant régularisateur en forçant l'extraction de caractéristiques robustes et généralisables [@Ji2023; @Arik2021].

Le modèle **MTLTFT** (Multi-Task Learning + Temporal Fusion Transformer) pousse cette logique plus loin : le Transformer gère l'attention globale sur la séquence, tandis que le MTL optimise conjointement des têtes de prédiction sur plusieurs horizons. La génération multi-tâches force le modèle à extraire des représentations partagées invariantes à l'horizon temporel, ce qui améliore significativement les performances en situation de pénurie de données [@Ji2023].

### Danger du Data Leakage

Le **Data Leakage** est l'erreur la plus insidieuse sur les séries temporelles : si on mélange les données d'entraînement et de test **avant** de construire les fenêtres d'observation, le modèle "voit le futur" pendant son entraînement et semble perfomer à tort très bien — avant de échouer complètement en production.

La puissance de calcul de ces architectures est vaine si elle repose sur un protocole d'évaluation biaisé. Le **Data Leakage** (fuite de données) constitue la faille méthodologique la plus insidieuse en séries temporelles [@Albelali2025; @PMC2024].

**Le mécanisme du leakage :** Si les fenêtres glissantes (*sliding windows*) sont générées **avant** la séparation entraînement/test (*pre-split*), des informations temporellement futures peuvent s'infiltrer dans l'ensemble d'entraînement via les chevauchements entre fenêtres adjacentes. Une fenêtre centrée sur un point de la zone de test peut inclure des données antérieures issues du futur relatif à l'entraînement.

$$
\text{RMSE Gain} = \frac{\text{RMSE}_{\text{leaky}} - \text{RMSE}_{\text{clean}}}{\text{RMSE}_{\text{clean}}} \times 100\%
$$

Les preuves empiriques de [@Albelali2025] sont sans appel :

::: {.card .card-window .mb-4}

:::: {.card-header}
⚠️ Data Leakage
::::

```{ojs}
//| echo: false
import { renderLeakageValidationTable } from "../../assets/js/simulations/recurrent.js"
renderLeakageValidationTable()
```

:::

**Règle d'or** : la séparation temporelle (train/val/test) doit **précéder** toute construction de séquence ou de fenêtre glissante. La validation croisée $k$-fold standard, bien que universelle en apprentissage statique, est structurellement inadaptée aux séries temporelles car elle mélange passé et futur [@Albelali2025; @LazyProgrammer2025].

```{mermaid}
graph TD
    classDef good fill:var(--sol-base03),stroke:var(--accent-success),stroke-width:2px,color:var(--accent-success);
    classDef bad  fill:var(--sol-base03),stroke:var(--accent-danger),stroke-width:2px,color:var(--accent-danger);
    classDef step fill:var(--sol-base03),stroke:var(--sol-base01),stroke-width:1px,color:var(--sol-base0);

    A["Données temporelles brutes"]:::step
    B1["❌ Pre-split : fenêtres d'abord"]:::bad
    B2["✅ Post-split : séparation d'abord"]:::good
    C1["→ Leakage possible (fuite future)"]:::bad
    C2["→ Protocole propre (causalité préservée)"]:::good

    A --> B1 --> C1
    A --> B2 --> C2
```
