Dynamics
Module Dynamique (Le Simulateur)
Le sous-module Dynamique est le moteur prédictif du World Model. C’est lui qui introduit la dimension temporelle et causale dans le cerveau de l’IA.
Il est implémenté via candle-nn et réside principalement dans predictor.rs.
🎯 Objectif
Apprendre et simuler la “Physique du Système”. Il ne s’agit pas de physique newtonienne (gravité), mais de la logique d’évolution des architectures Arcadia.
Analogie : C’est le cortex préfrontal. Il permet de répondre à la question : “Si je fais cette action maintenant, quel sera l’état du système à l’étape suivante ?”
Structure du Module
dynamics/
├── mod.rs # Exportations publiques
├── predictor.rs # Implémentation du WorldModelPredictor (Réseau de Neurones)
└── README.md # Documentation (ce fichier)
Fonctionnement : Predictor Latent
Contrairement aux LLMs qui prédisent le mot suivant (token textuel), ce module prédit le Vecteur Latent suivant dans l’espace abstrait défini par le module Représentation.
L’Équation Fondamentale
- : L’état actuel (Vectoriel/Quantifié) provenant du
VectorQuantizer. - : L’action proposée (encodée en tenseur One-Hot ou Embedding).
- : L’estimation de l’état futur (Tenseur).
Architecture Technique (predictor.rs)
L’implémentation actuelle utilise un MLP (Multi-Layer Perceptron) performant pour la fusion des données :
- Early Fusion : Les tenseurs d’État () et d’Action () sont concaténés en entrée.
- Couche 1 (Linear) : Projection vers une dimension cachée (
hidden_dim). - Activation : Utilisation de GELU (Gaussian Error Linear Unit) pour la non-linéarité.
- Couche 2 (Linear) : Projection vers la dimension de sortie (identique à l’état latent).
Flux de Données
graph TD
subgraph "Inputs"
State["State Latent (t)"]
Action["Action Vector (t)"]
end
State --> Concat[Concatenation]
Action --> Concat
subgraph "WorldModelPredictor (Candle)"
Concat --> L1[Linear Layer 1]
L1 --> Act[Activation GELU]
Act --> L2[Linear Layer 2]
end
L2 --> Future["Predicted State (t+1)"]
Future --> Critic{Validité ?}
Critic --"Simulé"--> Decision[Planification]
Utilisation
Ce module est orchestré par le NeuroSymbolicEngine.
// Exemple conceptuel d'utilisation dans l'engine
let state_t = ...; // Tenseur d'état actuel
let action_t = ...; // Tenseur d'action
// Le prédicteur calcule l'état futur probable
let predicted_state = engine.predictor.forward(&state_t, &action_t)?;
Évolutions Futures
- Transformer Block : Remplacer le MLP simple par un bloc Transformer si la complexité des dépendances temporelles augmente (séquences d’actions longues).
- Incertitude : Ajouter une tête de prédiction de variance pour estimer la confiance du modèle dans sa propre prédiction.