Nachdem handcodierte Fitnessfunktionen immer wieder degenerierte Gangarten übersehen hatten (die Saga um das Belohnungs-Hacking) und nachdem das durch LLM iterierte Belohnungsdesign an die Überlebensgrenze gestoßen war (der Eureka-Beitrag), probierten wir den naheliegenden nächsten Schritt aus: ein Vision-Language-Modell die Rollouts bewerten zu lassen.
Die Hypothese lautete, dass ein menschenähnliches qualitatives Urteil die Fehlermodi erkennen würde, die unsere Metriken nicht artikulieren konnten. Wir ersetzten den handcodierten Fitness-Scorer durch Claude (Opus 4.7), der sich 8 gerenderte Keyframes pro Rollout ansah, eine Bewertung von 0–100 abgab und eine Kritik in einfacher Sprache verfasste.
Es funktionierte halbwegs.
is_walking=True und hatte bei genauer Betrachtung null echte Schritte gemacht – sein Becken sank um 26 cm über 30 Frames, während der Roboter nach vorne fiel. Die 8 Keyframes hielten einen Moment mit zweibeiniger Haltung während des Zusammenbruchs fest. Das VLM wurde auf dieselbe Weise getäuscht wie zuvor die Metriken: durch statisch wirkende Standbilder, die die tatsächliche physikalische Bewegungsbahn beschönigen.Dies ist eine Fallstudie zu ehrlicher Eignung. Wir dachten, das Hinzufügen eines VLM würde die Überwachungslücke schließen. Es verringerte die Lücke, schloss sie aber nicht, und die nächste Lücke – die Verschleierung von Zusammenbrüchen durch die Frame-Zeit – erforderte eine andere Lösung.
Die Lösung, auf die wir uns einigten: ein strenger Schrittzähler (Fußanhebung ≥ 4 cm, Haltezeit ≥ 3 Frames, Landung ≥ 6 cm vor der Anhebungsstelle), der gegen das VLM kreuzvalidiert wurde, wobei die Ergebnisse stets in Sekunden und nicht in Frames angegeben wurden. Unter dieser Schwelle erzielen sowohl das „Beste“ von v17 als auch das „Beste“ von v18 null echte Schritte. Die Folgeversion v19 – derselbe VLM-Kritiker, jedoch mit zeitlicher Mehrwinkel-Abtastung und Warmstart aus einer funktionierenden Mocap-Richtlinie – erzeugte 4 von 12 Kandidaten, die die strenge Hürde nehmen. Einer davon, Iteration 2, Kandidat 1, ist der echte qualitative Gewinner: stabiles Becken, echtes zweibeiniges Gehen, über 5 Sekunden lang aufrechterhalten.
Dieser Beitrag erzählt die ganze Geschichte ehrlich, einschließlich der Rücknahme.
Handcodierte Fitness für humanoides Gehen ist anfällig. Im Laufe dieses Projekts stießen wir auf Strategien, die:
Jede Metrik, die wir hinzufügten, erkannte den unmittelbaren Fehlermodus, verfehlte aber den nächsten. Das allgemeine Muster: Der Raum von „erfüllt die Belohnung“ ist deutlich größer als der Raum von „sieht korrekt aus“, und Policy-Optimierer sind hervorragend darin, diese Lücke zu finden.
Ein VLM, der auf Millionen von Bildern menschlicher Gangarten trainiert wurde, hat diese Einschränkung konstruktionsbedingt nicht. Er sieht gerenderte Keyframes und beschreibt sie in natürlicher Sprache. Ein einbeiniger Hüpfer sieht überhaupt nicht wie Gehen aus; der VLM sollte dies auch sagen. Entscheidend ist, dass der VLM nicht durch die Erfüllung spezifischer numerischer Kriterien ausgetrickst werden kann – er bewertet gerenderte Bilder, die die gesamte physische Pose kodieren.
Das war die Ausgangshypothese. Bitte haben Sie etwas Geduld, während ich die Ergebnisse vorstelle.
VLM-Kritiker. Claude Opus 4.7 über das Claude Agent SDK, unter Verwendung von Abonnement-Anmeldedaten. 8 Keyframes pro Rollout, Seitenansicht, gerendert mit 320×320 aus MuJoCo. Die Eingabeaufforderung fragt drei Dinge in JSON ab:
Latenz: ~10–15 Sekunden pro Bewertung. API-Kosten: keine zusätzlichen Kosten (Abonnement).
LLM-Vorschlagsgenerator. Gleiche Eureka-Schleife wie in v17 (4 Iterationen × jeweils 3 Kandidaten). Die Eingabeaufforderung des Vorschlagsgenerators beschreibt nun den VLM-Kritiker als Bewerter und enthält frühere VLM-Beschreibungen wörtlich in der Versuchsgeschichte. Der Vorschlagsgenerator kann sehen, was der VLM über frühere Kandidaten gesagt hat, nicht nur die Bewertungen.
Trainingsumgebung. Gleiche UnitreeG1ConfigurableEnv wie in v17, Kaltstart, mit harter Abbruchbedingung bei einem Beckenabstand unter 0,55 m und Bodenkontakt außerhalb des Fußbereichs. Identische Baseline, sodass der Vergleich direkt vergleichbar ist.
Trainingsbudget. 2,5 Mio. PPO-Schritte pro Kandidat, 16 parallele Umgebungen, jeweils ca. 20 Minuten Rechenzeit. Insgesamt 12 Kandidaten, ca. 4 Stunden.
Die Vergleichstabelle, angegeben in menschlicher Zeitskala statt in Kontrollframes:
| Eigenschaft | v17 (manuell codierte Fitness) | v18 (VLM-Bewertung) |
|---|---|---|
| Beste Kandidatenpunktzahl | 73,8 / 100 | 62 / 100 |
| Episodendauer (beste) | 61 Frames = 1,2 Sekunden | 30 Frames = 0,6 Sekunden |
| Tatsächlich zurückgelegte Schritte (Abheben + Aufsetzen an neuer Position x ≥ 6 cm) | 0 | 0 |
| Beckenabsenkung Start → Ende | ~25 cm | 26 cm |
| Zurückgelegte Strecke nach vorne | 0,27 m | 0,09 m |
| Visuell: Ist es ein Gehen? | Nein – Rückwärtssturz | Nein – Vorwärtssturz |
Keiner der „Gewinner“ geht. Beide stürzen innerhalb von 1,3 Sekunden, was weniger ist als die Dauer eines einzigen menschlichen Gehschritts. Der „zweibeinige Wechsel“, den wir in den Metriken und in den v18-Keyframes gesehen haben, war das Wechseln der Füße der Policy während des Sturzes, kein tatsächliches Gehen.
Der erste Entwurf des v18-Ergebnisses behauptete, dies sei ein „echter Läufer“ – das VLM gab is_walking=True, 62/100, an, und die Keyframes zeigten eine zweibeinige Haltung. Die Rücknahme erfolgte, als wir den strengen Schrittzähler hinzufügten und denselben Rollout in Echtzeit neu rendern ließen. 30 Frames bei 50 Hz entsprechen 0,6 Sekunden. Kein menschlicher Gehschritt ist in 0,6 Sekunden abgeschlossen, geschweige denn der gesamte Stand-Schwung-Stand-Zyklus, der einen Schritt ausmacht.
Die Keyframes hielten einen Moment mit zweibeiniger Haltung während des Zusammenbruchs fest. Das VLM, das Standbilder beurteilte, konnte die zeitliche Bewegungsbahn nicht erkennen, die in einem Sturz auf das Gesicht endete.
Es ist derselbe Fehlermodus wie bei den Metriken – andere Ebene, gleiche Form. Die Metrik bewertete „Anteil der Einbeinstellung > 30 %“, ohne zu wissen, dass die Regel immer auf demselben Fuß galt. Das VLM bewertete „sieht über 8 Frames zweibeinig aus“, ohne zu wissen, dass diese 8 Frames 0,6 Sekunden des Fallens umfassten. Jede Ebene war angesichts dessen, was sie sehen konnte korrekt, und jede lag auf dieselbe Weise falsch: indem ihr ein Artefakt gezeigt wurde, das die zugrunde liegende Bewegungsbahn verzerrte.
Das war, noch einmal, peinlich. Es lohnt sich, dies ausdrücklich zu erwähnen.
Selbst wenn man es als „Ergebnis“ zurückzieht, brachte v18 im Vergleich zu v17 zwei wirklich neue Dinge hervor.
Jeder v18-Kandidat erzielte eine niedrigere Punktzahl als sein v17-Äquivalent:
| v18-Iteration | v18-Kandidat | VLM-Bewertung | Was eine manuell codierte Fitness ergeben hätte |
|---|---|---|---|
| 1 | 0 | 62 | ~75 (entspricht dem besten Ergebnis von v17) |
| 3 | 1 | 38 | ~70 (erfüllt die meisten v17-Kriterien) |
| 0 | 0 | 18 | 65 (dies ist genau die Policy der ersten Iteration von v17) |
Das VLM ist bei denselben Richtlinien durchweg 20–50 Punkte strenger als der manuell programmierte Bewerter. Richtlinien, die nach den Metriken ähnlich aussehen, erhalten vom VLM unterschiedliche Bewertungen, und die Bewertung des VLM korreliert mit dem, was ein menschlicher Beobachter sagen würde.
Das ist eine echte Verbesserung. Der Eureka-Loop trainiert das LLM anhand des Bewertungssignals. Wenn das Bewertungssignal strenger ist und stärker mit dem menschlichen Urteil korreliert, verbessern sich die Vorschläge des LLM. Dies sehen wir empirisch im nächsten Unterabschnitt.
Iteration 0 von v18 erzeugte drei Kandidaten, die alle vom VLM mit 14–18 bewertet und mit entsprechenden Kritiken in einfacher Sprache versehen wurden:
Dies ist die Art von Feedback, die ein erfahrener Bewegungsforscher geben könnte. Beachten Sie, dass alle drei mit leicht unterschiedlichen Worten zu derselben Diagnose gelangen – das VLM ist über alle Durchläufe hinweg konsistent, wenn der zugrunde liegende Fehler derselbe ist.
In Iteration 1 war die Begründung für das Belohnungsdesign des ersten Kandidaten explizit:
„Stabilitätsgesteuerte Fortbewegung – die Geschwindigkeitsbelohnung wird mit einem Aufrichtigkeitsfilter multipliziert, sodass die Strategie erst dann eine Belohnung für das Gehen erhält, nachdem sie das Stehen erreicht hat, sowie eine explizite Dämpfung der Winkelgeschwindigkeit, um den Fehler des ‚Rückwärtskippens‘ zu beheben, der alle drei vorherigen Versuche zum Scheitern gebracht hat.“
Dieser Kandidat erzielte 62 Punkte – ein Sprung um 44 Punkte in einer einzigen Iteration – und wurde vom VLM als gehfähig bestätigt (obwohl, wie die Rücknahme zeigt, der VLM bei Artefakten nicht durchschauen konnte).
Der Punkt ist nicht der 44-Punkte-Sprung an sich. Es geht darum, dass das LLM eine strukturelle Korrektur für einen vom VLM benannten spezifischen Fehlermodus vorschlug, anstatt dieselbe Form zweimal erneut zu versuchen. Das passiert bei rein metrikbasiertem Feedback nicht, da rein metrikbasiertes Feedback strukturelle Fehler nicht benennen kann.
All dies wurde erst durch die Kritik des VLM sichtbar:
Die handcodierte Fitness hatte keinen Einblick in irgendetwas davon. Eine Strategie konnte die Arme unnatürlich spreizen, sich mit einem Sprung abstoßen oder das Becken absinken lassen und dennoch jedes von uns codierte Fitnesskriterium erfüllen. Das VLM benennt diese Fehlermodi; das LLM kann sie dann gezielt beheben.
Die Überlebensklippe bleibt bestehen. Die beste v18-Policy läuft 30 Frames lang, bevor sie nach vorne fällt. Die beste v17-Policy „läuft“ 61 Frames lang und fällt dann. Das zugrunde liegende RL-Problem – dass PPO die Wiederherstellung des Gleichgewichts nicht aus Cold-Start-Trajektorien lernen kann, bei denen es noch nie einen Beinahe-Sturz gesehen hat – wird durch die Änderung des Scorers nicht beeinflusst. Die Belohnungsfunktion kann, egal wie sorgfältig sie auch gestaltet ist, keine Trainingsdaten erzeugen, die nicht existieren.
Die VLM-Kritik ist ein Bewertungs-Upgrade, kein Trainings-Upgrade. Sie sagt dir, wann deine Policy falsch ist, und zwar genauer als Metriken, aber sie macht deine Policy nicht richtig.
Nach v18 haben wir das entwickelt, womit wir hätten beginnen sollen. Jede Schicht erfasst eine Fehlerklasse, die die vorherige übersehen hat:
is_walking=True erfordert ≥ 4 echte Schritte UND ≤ 10 cm Gesamtabsenkung des Beckens UND eine Dauer von ≥ 5 Sekunden. Berichte immer in Sekunden, nicht in Frames.Unter dieser Schwelle erzielen sowohl das „Beste“ aus v17 als auch das „Beste“ aus v18 0 echte Schritte und is_walking=False. Die strenge Schwelle hat erfasst, was die vorherigen Schwellen übersehen haben.
Sobald wir der Schwelle vertrauten, ließen wir die Schleife erneut mit drei Änderungen laufen:
is_walking=True erfordert sowohl, dass das VLM „Ja“ sagt, als auch, dass der Schrittzähler die Prüfung besteht. Kein einzelnes Signal kann für sich allein das Gehen bestätigen.12 Kandidaten, gleiches Rechenbudget wie bei v17 und v18. Unter der strengen Schwelle:
| v17 (Kaltstart, handcodiert) | v18 (Kaltstart, VLM mit einem Winkel) | v19 (Warmstart + zeitliches VLM mit mehreren Winkeln + Schrittzähler) | |
|---|---|---|---|
| Kandidaten, die die strenge Geh-Schwelle überschreiten | 0 / 12 | 0 / 12 | 4 / 12 |
| Beste Episodendauer | 1,2 s | 0,6 s | 5+ s (anhaltend, begrenzt auf 10 s Rendering) |
| Beste Beckenabsenkung | ~25 cm | 26 cm | < 10 cm (ein Kandidat vollständig stabil) |
| Echte Schritte im besten Durchlauf | 0 | 0 | ≥ 4 (durch Schrittzähler kreuzvalidiert) |
Der qualitative Gewinner ist v19 iter 2 cand 1 – VLM-Score 62, Becken stabil, 6 echte Schritte in 6 Sekunden. Es ist der einzige Kandidat im gesamten v17/v18/v19-Durchlauf, der das anhaltende Problem des Beckenabfalls behoben hat.
Die Belohnung für diesen Kandidaten war ein Gauß-Gate für die Aufrichtigkeit sowie eine Strafe für ein asymmetrisches Becken – das LLM diagnostizierte das Versagen von Iteration 1 (ein expliziter Anker für die Beckenhöhe verursachte eine „Freeze-in-Place“-Falle) und schlug eine glattere Version vor, die keine übermäßige Steifigkeit auslöst. Für diese Art von korrigierenden Iterationen ist die Schleife gedacht.
Seite an Seite mit v12 (der funktionierenden Mocap-Baseline) zur Kalibrierung:
Die Kandidaten von v19 bleiben nahe an der Qualität von v12. Sie übertreffen diese nicht dramatisch. Die Basis-Mimik-Belohnung zieht die Verfeinerung immer wieder zurück in Richtung der LAFAN1-Mocap. Die Verfeinerung auf Basis der Mocap ist real und führt zu einer messbar besseren Beckenstabilitätsachse, aber sie überschreitet nicht die Qualitätsgrenze der Mocap.
Selbst mit dem besseren Bewertungsstack blieben drei Dinge ungelöst:
Die Obergrenze für Verbesserungen ist v12 selbst. v19 bringt Verfeinerungskandidaten von unten nahe an die Qualität von v12 heran, und ein Kandidat liegt auf der Achse der Beckenstabilität leicht darüber. Keiner liegt dramatisch über der v12-Baseline, da die Basis-Mimik-Belohnung die Policy immer wieder zurückzieht. Um die Mocap-Baseline grundlegend zu übertreffen, bräuchte man einen umfangreicheren Referenzdatensatz oder ein völlig anderes Überwachungssignal.
Dieser Beitrag behauptet nicht, dass „die VLM-Kritik die humanoide zweibeinige Fortbewegung löst“. Das tut sie nicht. Die Überlebenshürde beim Kaltstart wird durch die VLM-Kritik allein nicht überwunden – das ist das ehrliche negative Ergebnis von v18. Der Warmstart v19 führte zu Verbesserungen der Verfeinerungsqualität, nicht zu neuen Fähigkeiten.
Was die VLM-Kritik nachweislich leistet:
Das ist ein nützlicher Beitrag. Es ist kein perfektes menschliches Gehen. Wir werden nicht so tun, als wäre es anders.
Die VLM-Kritik hilft, wenn:
Die VLM-Kritik hilft nicht, wenn:
Der Schrittzähler / die Ebene auf menschlicher Zeitskala ist im Wesentlichen kostenlos – ein paar hundert Zeilen Code, die in Echtzeit laufen – und sollte unabhängig davon, welche Bewertungsmethode Sie an anderer Stelle verwenden, immer aktiv sein. Berichten Sie immer in Sekunden. „Überlebt 30 Frames“ klingt nach Fortschritt; „überlebt 0,6 Sekunden“ nicht. Die Wahl der Einheit leistet Arbeit.
Drei offene Richtungen:
Dies ist der letzte Beitrag in der Humanoid-Sim-Serie. Fünf Beiträge, ein Projekt, viele ehrliche Fehlschläge. Das Muster, das sich durch alle zieht: Jeder Versuch, die Überwachung zu automatisieren, führte zu einer neuen Art von Fehlschlägen, nicht zu null Fehlschlägen. Handcodierte Metriken übersahen degenerierte Gangarten. LLM-iterierte Belohnungen erkundeten den Designraum, ohne das Abdeckungsproblem zu lösen. Die VLM-Kritik schloss einige Lücken und öffnete neue rund um die Verschleierung der Frame-Zeit. Das verlässliche Signal in diesem Projekt blieb dasselbe wie zu Beginn: eine echte Motion-Capture-Referenz und das Minimum-Viable-Mocap-Ergebnis, dass zwei sorgfältig angeordnete Posen ausreichen.
Der konstruktive Bogen – was tatsächlich funktioniert – ist der Mocap-Beitrag und die v19-Verfeinerung auf Basis von Mocap. Der diagnostische Bogen – was nicht funktioniert – ist Reward-Hacking, LLM-Iteration und dieser Beitrag. Beide Bögen sind notwendig, und beide müssen ehrlich sein, denn das Fachgebiet ist klein genug, dass Artikel ohne Rücknahmen in der Regel Artikel sind, bei denen die Rücknahmen noch nicht bemerkt wurden.
Wenn es eine praktische Lektion gibt, die sich durch alle fünf Beiträge zieht, dann ist es die, mit der dieser Beitrag endete: Gib immer die Zeit in Sekunden an. Unabhängig davon, wie Ihre Bewertungsfunktion aussieht: Wenn Sie Ihr Ergebnis darlegen, geben Sie es in Zeiteinheiten an, die für Menschen von Bedeutung sind. 30 Frames klingen nach Fortschritt. 0,6 Sekunden klingen nach einem Zusammenbruch. Es handelt sich um dieselbe Tatsache. Die Wahl der Einheit entscheidet darüber, ob die Berichterstattung schmeichelhaft oder ehrlich ist, und das Fachgebiet profitiert von der ehrlichen Variante.