Cortex 2.5
Blog|

Cortex 2.5

S
Sereact5 Min. Lesedauer
Cortex 2.5

Dem Roboter etwas zeigen, statt ihn neu zu trainieren

Eine neue Aufgabe sollte ein paar Demonstrationen kosten, keinen Trainingslauf. So bringen wir Cortex bei, aus einem Prompt zu lernen.

Einem Roboter etwas Neues beizubringen bedeutete bisher immer: Daten sammeln und ein Modell trainieren. Für eine große neue Fähigkeit ist das die richtige Investition. Aber das meiste, was ein Lager einem Roboter vorsetzt, ist keine neue Fähigkeit, sondern eine neue Variante: eine Produktkategorie, die er noch nie gegriffen hat, ein etwas anders bestückter Behälter, eine frische SKU vor der Hochsaison. Dafür ist ein voller Trainingszyklus ein schweres Werkzeug. Die Fähigkeit liegt meist bereits in Reichweite des Modells. Was fehlt, ist eine Möglichkeit, auf die neue Aufgabe zu zeigen und den Roboter folgen zu lassen.

Wir wollen für die Manipulation das, was In-Context-Learning den Sprachmodellen gebracht hat: dem Roboter eine Handvoll Video-Demonstrationen einer neuen Aufgabe zeigen und ihn die Aufgabe ausführen lassen – ohne Neutraining dazwischen. In diesem Beitrag geht es darum, wie das in Cortex funktioniert und warum wir es so gebaut haben.

Alles Folgende wurde an kurzen, in sich geschlossenen Aufgaben getestet, in der Größenordnung eines einzelnen Pick-and-Place: einen bestimmten Artikel aus einem Behälter ziehen und für den Versand bereitstellen oder ein beschriftetes Probentablett entnehmen und für einen Laborworkflow auf ein Lesegerät stellen. Und getestet wurde nur an Aufgaben, die denen ähneln, die Cortex bereits kennt, innerhalb einer einzigen Domäne. Wir haben es nicht an Aufgaben mit langem Horizont validiert, nicht an Aufgaben, die mehrere verschiedene Fähigkeiten kombinieren, und nicht am Transfer zwischen Domänen. Die beschriebenen Ergebnisse sind die frühen, im Rahmen liegenden – und wir sagen offen, wo diese Grenze verläuft.

Demonstrationen sind Videos – und sie bleiben ganz

Eine Demonstration ist ein kurzes Video der ausgeführten Aufgabe. Das ist die gesamte Schnittstelle: keine Aktionslabels, keine Teleoperationsspuren, nichts zu annotieren. Wenn Sie die Aufgabe filmen können, können Sie sie spezifizieren.

Der naheliegende nächste Schritt wäre, diese Clips auf eine einzige kompakte Beschreibung einzudampfen und dem Modell zu übergeben. Das tun wir bewusst nicht. Demonstrationen zu einer Zusammenfassung zu komprimieren wirft genau das Detail weg, das sie nützlich macht: die Textur der Annäherung, die Art des Kontakts, wie sich die Bewegung am Anfang von der am Ende unterscheidet. Stattdessen halten wir die Demonstrationen ganz, in einem Puffer, auf den das Modell zugreifen kann, und rufen bei Bedarf daraus ab.

Der Mechanismus ist also Retrieval. Bei jedem Schritt tt ist die aktuelle Beobachtung des Roboters oto_t die Anfrage. Wir betten sie ein und vergleichen sie mit dem Demonstrationspuffer D\mathcal{D} und rufen die kk ähnlichsten Segmente ab:

Rt=top-kdD  sim(ϕ(ot),ϕ(d))\mathcal{R}_t = \text{top-k}_{d \in \mathcal{D}} \; \text{sim}(\phi(o_t), \phi(d))

wobei ϕ\phi ein eingefrorener visueller Encoder und sim\text{sim} ein Ähnlichkeitsmaß ist. Die abgerufene Menge Rt\mathcal{R}_t wird dem Modell als In-Context-Beispiele vorangestellt – dieselbe Idee wie Few-Shot-Prompting in einem Sprachmodell: Die relevanten Beispiele stehen im Kontext, und das Modell beachtet sie beim Handeln.

Weil Rt\mathcal{R}_t in jedem Schritt neu berechnet wird, ändern sich die Beispiele, die der Roboter sieht, während die Aufgabe abläuft. Früh im Griff geht es in den abgerufenen Momenten um die Annäherung; wenn der Greifer schließt, um den Griff; auf dem Rückweg um die Platzierung. Die Orientierung stammt immer aus dem Teil der Demonstration, der in genau diesem Augenblick zählt – und nicht aus einem gemittelten Gesamtbild der Aufgabe.

Eine Demonstration ist nur ein kurzes Video. Wir halten jedes ganz, statt es zu einer Zusammenfassung zu komprimieren, damit die Textur der Annäherung, der Kontakt und das Loslassen alle abrufbar bleiben.

Kurz gesagt:

Sie bringen dem Roboter etwas bei, indem Sie ihm ein paar Videos der Aufgabe zeigen, und er behält diese Videos unverändert als Nachschlagequelle, statt sie in eine Kurznotiz zu pressen.

Die Demonstrationen erreichen den Plan und die Vorstellung

Cortex handelt nicht direkt aus der Wahrnehmung heraus. Es bildet zuerst einen übergeordneten Plan – ein Verständnis davon, worum es bei der Aufgabe geht und wie sie anzugehen ist – und stellt sich dann vor, wie sich die Szene voraussichtlich entwickelt, bevor es sich auf eine Bewegung festlegt. Zwei Teile des Systems tragen das: ein Vision-Language-Modell, das den Plan bildet, und ein World Model, das die Zukünfte imaginiert.

Damit einer der beiden Teile seine Arbeit bei einer neuen Aufgabe leisten kann, muss er wissen, worum es geht. Deshalb gehen die abgerufenen Demonstrationen an beide. Konditioniert man beide Stufen auf dieselbe abgerufene Menge, ergeben sich der Plan sts_t und die imaginierte nächste Beobachtung o^t+1\hat{o}_{t+1} als:

st=fVLM(ot,Rt)o^t+1=fWM(ot,st,Rt)s_t = f_{\text{VLM}}(o_t, \mathcal{R}_t) \hspace{10em} \hat{o}_{t+1} = f_{\text{WM}}(o_t, s_t, \mathcal{R}_t)

Das Vision-Language-Modell erhält die Demonstrationen so, wie ein Sprachmodell Few-Shot-Beispiele erhält: Die Segmente in Rt\mathcal{R}_t stehen zusammen mit der aktuellen Szene in seinem Kontext, und es beachtet sie beim Bilden des Plans sts_t. Das ist der gut verstandene Weg – und er ist aus gutem Grund gut verstanden: So funktioniert In-Context-Learning überall sonst. Ein Modell, das nur auf Imitation trainiert wurde, beachtet In-Context-Beispiele nicht von selbst; es lernt das einmal, in einem einzigen Priming-Schritt. Danach ist jede neue Aufgabe nur noch eine Frage der bereitgestellten Demonstrationen, solange diese Aufgabe nah an dem bleibt, was das Modell schon gesehen hat. Auf diese Nähe haben wir bewusst gesetzt: Die getesteten Demonstrationen sind Varianten vertrauter Aufgaben innerhalb einer Domäne, keine Sprünge zu wirklich neuem Verhalten.

Das World Model erhält dasselbe Rt\mathcal{R}_t. Seine Aufgabe ist es, sich auszumalen, wie die Szene verlaufen wird, und bei einer neuen Aufgabe sollten diese imaginierten Zukünfte wie die demonstrierte Ausführung aussehen und nicht wie eine generische Vermutung. Weil Demonstrationen Videos sind und das World Model ohnehin in Video denkt, ist die Konditionierung ein natürlicher Fit: Wir zeigen einem Videomodell genau die Art von Material, in der es bereits arbeitet. Das lässt sich günstig zuschalten – eine leichte Anpassung statt eines Neutrainings.

Der Gewinn daraus, beide zu speisen, ist Konsistenz. Dasselbe Rt\mathcal{R}_t taucht in beiden Ausdrücken auf, sodass Plan und imaginierte Zukünfte aus einer gemeinsamen Quelle stammen und sich darüber einig sind, welche Aufgabe ausgeführt wird. Der Roboter entscheidet, was zu tun ist, und stellt sich aus derselben Evidenz vor, wie es ablaufen wird – genau das will man, wenn beide zusammenpassen müssen, damit die Bewegung stimmt.

Ohne Demonstrationen:

Roboter versucht, eine Schachtel ohne Demonstrationen zu öffnen, t=1 bis t=5

Der Roboter bleibt beim Öffnen der Schachtel stecken, weil der Deckel etwas anders ist als bei früheren Schachteln

Mit Demonstrationen:

Roboter öffnet eine Schachtel mit Demonstrationen, t=1 bis t=5

Der Roboter bewältigt das Öffnen der Schachtel, nachdem ihm Demonstrationen dieses neuen Schachteltyps gezeigt wurden – ohne Neutraining.

Kurz gesagt:

Der Roboter entscheidet, was zu tun ist, und stellt sich vor, wie es ablaufen wird – und wir sorgen dafür, dass die Beispielvideos beides prägen, damit Plan und Erwartung zusammenpassen.

Der Roboter merkt, wann er sich auf vertrautem Terrain bewegt

Retrieval liefert uns ein nützliches Nebenprodukt: eine Distanz. Wenn wir die Demonstrationssegmente suchen, die der aktuellen Ansicht am nächsten sind, erfahren wir auch, wie nah sie tatsächlich sind. Schreibt man dtd_t^{*} für das nächstgelegene Segment, ist diese Distanz:

δt=1ϕ(ot)ϕ(dt)ϕ(ot)ϕ(dt)\displaystyle \delta_t = 1 - \frac{\phi(o_t) \cdot \phi(d_t^{*})}{\|\phi(o_t)\| \, \|\phi(d_t^{*})\|}

Das ist ein direkter Messwert dafür, wie gut die Demonstrationen die Situation abdecken, in der sich der Roboter befindet. Ein kleines δt\delta_t bedeutet, dass die nächstgelegene Demonstration gut passt – der Roboter ist auf ausgetretenem Pfad. Ein großes δt\delta_t bedeutet weniger vertrautes Terrain. Daraus ergibt sich ein natürliches Signal dafür, wie viel der Roboter abwägen sollte: sich auf das Demonstrierte stützen, wenn die Übereinstimmung eng ist, und sorgfältiger nachdenken, wenn nicht. Es ist ein sauberer Weg, das System sein eigenes Vertrauen aus den Demonstrationen selbst ableiten zu lassen, statt es anzunehmen, und fügt sich natürlich in die Art ein, wie Cortex ohnehin über den Planungsaufwand nachdenkt. In unseren Tests bleibt dieses Signal klein, weil die Aufgaben bewusst nah am Vertrauten liegen.

Distanz zur nächstgelegenen Demonstration über die Ausführungsschritte, mit Spitzen bei Deckel öffnen und Entnehmen

Ein Liniendiagramm der Distanz zum nächstgelegenen Segment δt\delta_t über die Schritte einer Ausführung: niedrig und stabil, solange der Roboter auf ausgetretenem Pfad ist, wobei Spitzen die Momente markieren, die von den Demonstrationen weniger gut abgedeckt sind.

Kurz gesagt:

Indem er prüft, wie genau die aktuelle Situation zu den gezeigten Videos passt, erkennt der Roboter, ob er sich auf vertrautem Terrain bewegt – und denkt intensiver nach, wenn nicht.

Warum das zu Cortex passt

Das baut auf dem auf, was Cortex ohnehin ist, statt etwas seitlich anzuflanschen. Die gesamte Prämisse des Systems lautet: einen Plan bilden und ihn gegen imaginierte Zukünfte prüfen ist besser, als Frame für Frame zu reagieren. In-Context-Learning erweitert diese Prämisse vom Wie des Handelns auf das Was der Aufgabe: Die Aufgabe kann zur Laufzeit per Beispiel gesetzt werden, statt beim Training festgeschrieben zu sein. Die Struktur Plan-dann-Vorstellen bleibt unverändert. Wir haben nur geändert, woher die Aufgabe kommt – und dafür gesorgt, dass beide Hälften des Systems sie hören.

Wir sind bewusst zurückhaltend beim Umfang. Das kurzfristige Ziel ist benachbarte Variation: eine neue Objektkategorie, ein neues Behälterlayout, innerhalb einer Domäne, in der Cortex bereits läuft, gelernt aus einer Handvoll Video-Demonstrationen bei eingefrorenen Gewichten. Der Gewinn ist konkret und operativ: eine neue SKU, definiert durch ein paar Clips, bewältigt ohne Trainingslauf. Der Wert ist der Trainingszyklus, den wir nicht mehr aufwenden müssen.

SettingDemosTrainingErfolg
Trainierte Baseline (neue Kategorie)voller Satzvoller Lauf97.6%
In-Context, VLM + World Model2–3keines92.6%

Das ist die Richtung, in die wir bauen. Die Demonstrationen bleiben nah am Roboter als etwas, auf das er von Moment zu Moment zurückgreifen kann, die planenden und die imaginierenden Teile sehen sie beide, und wie stark sich der Roboter auf sie stützt, wird gemessen statt angenommen. Wir bringen dem Roboter etwas so bei, wie man einem Menschen auf der Fläche eine neue Aufgabe zeigt: vormachen und zuschauen lassen.

Ressourcen zum Artikel

Inhalte und Assets aus diesem Beitrag abrufen

Textinhalt

Kopieren Sie den vollständigen Artikeltext in die Zwischenablage, um ihn bequem zu lesen oder zu teilen.

Bildmaterial

Laden Sie alle in diesem Artikel verwendeten hochauflösenden Bilder als ZIP-Datei herunter.

Neueste Artikel