Inhaltsverzeichnis
1. System-Architektur
Das Projekt implementiert eine strikte Trennung von Environment-Logik und Agenten-Training über das Gymnasium Interface. Als Algorithmus kommt PPO (Proximal Policy Optimization) zum Einsatz, da er als On-Policy-Verfahren einen exzellenten Kompromiss zwischen Trainingsstabilität und Sample Efficiency bietet.
Netzwerkstruktur (MLP)
Da der Observation Space bereits abstrahierte Vektoren statt roher Pixel liefert, ist der Einsatz von Convolutional Neural Networks (CNNs) nicht notwendig. Stattdessen nutze ich ein tiefes Multi-Layer Perceptron (MLP).
- Policy Network (Actor): Zwei Hidden Layers mit je 512 Neuronen.
- Value Network (Critic): Spiegelt die Policy-Struktur, teilt aber keine Gewichte (separate Networks).
- Aktivierungsfunktion: Tanh (Hyperbolischer Tangens), um stetige Gradienten zu gewährleisten.
# Konfiguration des PPO-Modells mit Stable Baselines 3
model = PPO(
policy="MlpPolicy",
env=vec_env,
learning_rate=3e-4,
n_steps=2048,
batch_size=512,
policy_kwargs=dict(
net_arch=[512, 512] # Deep Network für komplexe Strategien
)
)
Warum kein CNN?
Durch den Verzicht auf Pixel-Verarbeitung (CNN) und die Nutzung kompakter Feature-Vektoren konnte die Trainingsgeschwindigkeit um den Faktor 10-20 erhöht werden, ohne strategische Tiefe zu verlieren.
2. Infrastruktur & Training
Ein zentrales Problem bei Multi-Agent Reinforcement Learning (MARL) ist die hohe Varianz der Trainingsdaten. Um dies zu kompensieren, setzt das Projekt auf massive Parallelisierung.
Vektorisierte Umgebungen
Statt einer einzelnen Simulations-Instanz nutze ich 16 vektorisierte Umgebungen (SubprocVecEnv), die auf separaten CPU-Kernen laufen. Dies ermöglichte das Sammeln von über 100 Millionen Experience-Steps in einer akzeptablen Zeit.
| Parameter | Wert | Bedeutung |
|---|---|---|
| Total Timesteps | 100.000.000 | Massive Datenmenge für statistische Signifikanz. |
| Parallel Envs | 16 | Anzahl gleichzeitiger Simulationen (Multiprocessing). |
| Hardware | CPU-Cluster | Optimiert für parallele Logik-Berechnungen statt GPU-Rendering. |
3. Hyperparameter
Die Hyperparameter wurden speziell angepasst, um das "Exploration vs. Exploitation"-Dilemma in einer kompetitiven Umgebung zu lösen. Besonders der Entropy Coefficient wurde erhöht, um ein vorzeitiges Konvergieren auf suboptimale Strategien zu verhindern.
| Hyperparameter | Wert | Begründung |
|---|---|---|
| Learning Rate | 3e-4 | Standard für Adam Optimizer, bietet stabilen Gradient Descent. |
| Batch Size | 512 | Erhöht für stabilere Updates in hoch-dynamischen Umgebungen. |
| N_Steps | 2048 | Langer "Lookahead"-Horizont für strategische Planung. |
| Entropy Coef | 0.03 | Wichtig: Zwingt den Agenten zum Experimentieren (Exploration). |
| Gamma (Discount) | 0.99 | Fokus auf langfristige Belohnungen (Sieg) statt sofortiger Punkte. |
4. Reward Shaping (Forschungskern)
In Reinforcement Learning ist die Definition der Belohnungsfunktion (Reward Function) oft anspruchsvoller als der Lernalgorithmus selbst. Das Temporal Credit Assignment Problem – also die Frage, welche vergangene Aktion für den aktuellen Erfolg verantwortlich ist – wurde durch drei verschiedene Profile untersucht.
Die 3 Profile
- Charlie (Sparse): Erhält Rewards nur für Capture (+100) und Sieg/Niederlage (±50). Extrem schwer zu lernen, da Feedback sehr selten ist.
- Gordon (Dense/Micromanager): Erhält kontinuierliches Feedback für fast alles (Bewegung zur Flagge +0.2, Flagge berühren +10.0, etc.). Führt oft zu "Reward Hacking" (z.B. im Kreis laufen für Punkte).
- Algernon (Balanced): Belohnt nur signifikante Meilensteine (Tackle auf Träger +8.0, Flagge zurückbringen +5.0), fördert strategisches Denken.
Erkenntnis: Reward Hacking
Agenten mit "Dense Rewards" (Gordon) neigten dazu, die Flagge aufzuheben und sofort fallen zu lassen, um den "Pickup Reward" (+10.0) wiederholt zu farmen, statt das Spielziel zu verfolgen.
5. Observation Space (Feature Engineering)
Ein Netz lernt "Gegner ist bei x=20" schlecht, aber "Gegner ist 5 Meter vor mir" sehr gut. Daher erhält der Agent statt absoluter Koordinaten ein relatives, ego-zentrisches Weltbild. Der Observation Vector besteht aus 31 kontinuierlichen Werten.
Inhalt des Vektors:
- Relative Vektoren (Normalized): Zur eigenen Basis, zur eigenen Flagge, zur gegnerischen Flagge.
- Permutation Invariance: Die Inputs für die zwei Gegner sind nach Distanz sortiert (Nächster Gegner zuerst). So lernt der Agent "Umgang mit Bedrohung", egal welche ID der Gegner hat.
- Status Flags: Bin ich gestunned? Habe ich die Flagge? Ist meine Flagge sicher?
- LIDAR-Sensorik: Distanz zu den vier Spielfeldgrenzen (Wanderkennung).
6. Action Space
Der Action Space ist diskret (Discrete 6). Die Reduktion auf diskrete Aktionen vereinfacht den Entscheidungsbaum für das neuronale Netz massiv im Vergleich zu kontinuierlichen Actions (Box).
| ID | Aktion | Effekt |
|---|---|---|
| 0-3 | Bewegung | Oben, Unten, Links, Rechts (mit Kollisionsabfrage) |
| 4 | Idle | Warten / Position halten |
| 5 | Tackle | Spezial-Aktion: Betäubt Gegner in Reichweite (Stun) und zwingt zum Flaggen-Abwurf. Hat einen Cooldown von 3.25s. |
Strategische Tiefe
Die "Tackle"-Aktion führt zu komplexem Verhalten: Agenten lernen, Gegner nicht nur zu blockieren, sondern gezielt dann anzugreifen, wenn diese die Flagge tragen.