Cortex 2.5
Blog|

Cortex 2.5

S
Sereact5 min de lectura
Cortex 2.5

Enseñarle al robot, en lugar de reentrenarlo

Una tarea nueva debería costar unas pocas demostraciones, no un ciclo de entrenamiento. Así estamos enseñando a Cortex a aprender a partir de un prompt.

Enseñarle algo nuevo a un robot siempre ha significado recoger datos y entrenar un modelo. Para una gran capacidad nueva, esa es la inversión correcta. Pero la mayor parte de lo que un almacén le plantea a un robot no es una capacidad nueva, sino una variación nueva: una categoría de producto que no ha recogido antes, un contenedor colocado de forma algo distinta, una SKU recién llegada antes de la temporada alta. Para eso, un ciclo de entrenamiento completo es una herramienta pesada. La habilidad suele estar ya al alcance del modelo. Lo que falta es una manera de señalar la nueva tarea y que el robot la siga.

Queremos para la manipulación lo que el aprendizaje en contexto dio a los modelos de lenguaje: mostrarle al robot un puñado de demostraciones en vídeo de una tarea nueva y que la ejecute, sin reentrenamiento de por medio. Este artículo trata de cómo funciona eso en Cortex y por qué lo construimos así.

Todo lo que sigue se ha probado en tareas cortas y autocontenidas, del orden de un simple pick-and-place: sacar un artículo concreto de un contenedor y prepararlo para la salida, o retirar una bandeja de muestras etiquetada y colocarla en un lector dentro de un flujo de laboratorio. Y solo se ha probado en tareas parecidas a las que Cortex ya conoce, dentro de un mismo dominio. No lo hemos validado en trabajos de horizonte largo, en tareas que combinan varias habilidades distintas ni en transferencia entre dominios. Los resultados que describimos son los primeros, dentro de ese alcance, y somos claros respecto a ese límite.

Las demostraciones son vídeo, y se mantienen enteras

Una demostración es un vídeo corto de la tarea realizada. Esa es toda la interfaz: sin etiquetas de acción, sin trazas de teleoperación, nada que anotar. Si puedes grabar la tarea, puedes especificarla.

El siguiente paso tentador sería reducir esos clips a una única descripción compacta y entregársela al modelo. Deliberadamente no lo hacemos. Comprimir las demostraciones en un solo resumen descarta justo el detalle que las hace útiles: la textura de la aproximación, la forma en que se produce el contacto, en qué se diferencia el movimiento al principio y al final. En su lugar mantenemos las demostraciones enteras, en un búfer del que el modelo puede tirar, y recuperamos de ellas según haga falta.

Así que el mecanismo es la recuperación. En cada paso tt, la observación actual del robot oto_t es la consulta. La codificamos y la comparamos con el búfer de demostraciones D\mathcal{D}, recuperando los kk segmentos más similares:

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

donde ϕ\phi es un codificador visual congelado y sim\text{sim} una medida de similitud. El conjunto recuperado Rt\mathcal{R}_t se coloca delante del modelo como ejemplos en contexto, la misma idea que el prompting few-shot en un modelo de lenguaje: los ejemplos relevantes están en el contexto y el modelo les presta atención mientras actúa.

Como Rt\mathcal{R}_t se recalcula en cada paso, los ejemplos que ve el robot cambian conforme avanza la tarea. Al principio de un pick, los momentos recuperados tratan de la aproximación; cuando la pinza se cierra, del agarre; a la salida, de la colocación. La guía procede siempre de la parte de la demostración que importa en ese instante, y no de una imagen promediada de la tarea completa.

Una demostración es solo un vídeo corto. Mantenemos cada uno entero en lugar de comprimirlo en un resumen, de modo que la textura de la aproximación, el contacto y la liberación sigan disponibles para recuperarlos.

En pocas palabras:

le enseñas al robot mostrándole unos pocos vídeos de la tarea, y él conserva esos vídeos intactos para consultarlos, en lugar de apretarlos en una sola nota resumida.

Las demostraciones llegan al plan y a la imaginación

Cortex no actúa directamente desde la percepción. Primero forma un plan de alto nivel, una lectura de cuál es la tarea y cómo abordarla, y después imagina cómo es probable que se desarrolle la escena antes de comprometerse con un movimiento. Dos partes del sistema sostienen eso: un modelo visión-lenguaje que forma el plan y un world model que imagina los futuros.

Para que cualquiera de las dos partes haga su trabajo en una tarea nueva, tiene que saber cuál es la tarea. Por eso las demostraciones recuperadas van a ambas. Condicionando ambas etapas al mismo conjunto recuperado, el plan sts_t y la siguiente observación imaginada o^t+1\hat{o}_{t+1} son:

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)

El modelo visión-lenguaje recibe las demostraciones igual que un modelo de lenguaje recibe ejemplos few-shot: los segmentos de Rt\mathcal{R}_t se colocan en su contexto junto a la escena actual, y les presta atención mientras forma el plan sts_t. Es el camino bien entendido, y lo es por una razón: así funciona el aprendizaje en contexto en todos los demás sitios. Un modelo entrenado solo para imitar no atiende por sí mismo a los ejemplos en contexto; aprende a hacerlo una vez, en un único paso de preparación. A partir de ahí, cada tarea nueva es solo cuestión de aportar las demostraciones, siempre que esa tarea se mantenga cerca de lo que el modelo ya ha visto. Nos hemos apoyado en esa cercanía de forma deliberada: las demostraciones con las que hemos probado son variaciones de tareas familiares dentro de un mismo dominio, no saltos a comportamientos genuinamente nuevos.

El world model recibe el mismo Rt\mathcal{R}_t. Su trabajo es imaginar cómo se desarrollará la escena y, en una tarea nueva, esos futuros imaginados deberían parecerse a la ejecución demostrada, no a una suposición genérica. Como las demostraciones son vídeo y el world model ya piensa en vídeo, condicionarlo encaja de forma natural: le mostramos a un modelo de vídeo exactamente el tipo de material con el que ya trabaja. Eso resulta barato de activar: una adaptación ligera en lugar de un reentrenamiento.

La ventaja de alimentar a ambos es la coherencia. El mismo Rt\mathcal{R}_t aparece en las dos expresiones, de modo que el plan y los futuros imaginados proceden de una fuente compartida y coinciden en qué tarea se está ejecutando. El robot decide qué hacer e imagina cómo irá a partir de la misma evidencia, que es justo lo que quieres cuando ambos tienen que alinearse para que el movimiento salga bien.

Sin demostraciones:

Robot intentando abrir una caja sin demostraciones, de t=1 a t=5

El robot se queda atascado al abrir la caja, porque la tapa es algo distinta de las cajas anteriores

Con demostraciones:

Robot abriendo una caja con demostraciones, de t=1 a t=5

El robot resuelve la apertura de la caja tras recibir demostraciones de este nuevo tipo de caja, sin reentrenamiento.

En pocas palabras:

El robot decide qué hacer e imagina cómo irá, y nos aseguramos de que los vídeos de ejemplo alimenten ambas cosas, para que su plan y sus expectativas coincidan.

El robot sabe cuándo pisa terreno conocido

La recuperación nos regala un subproducto útil: una distancia. Cuando buscamos los segmentos de demostración más cercanos a la vista actual, también averiguamos cuán cerca están realmente. Escribiendo dtd_t^{*} para el segmento más cercano, esa distancia es:

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

Esta es una lectura directa de lo bien que las demostraciones cubren la situación en la que se encuentra el robot. Un δt\delta_t pequeño significa que la demostración más cercana encaja bien: el robot pisa terreno trillado. Un δt\delta_t grande significa que está en territorio menos familiar. Eso nos da una señal natural de cuánto debería deliberar el robot: apoyarse en lo demostrado cuando la coincidencia es estrecha y pensar con más cuidado cuando no lo es. Es una forma limpia de dejar que el sistema calibre su propia confianza a partir de las propias demostraciones, en lugar de darla por supuesta, y encaja de forma natural con cómo Cortex ya razona sobre cuánto planificar. En nuestras pruebas esta señal se mantiene baja, porque las tareas se sitúan cerca del terreno conocido por diseño.

Distancia a la demostración más cercana a lo largo de los pasos de ejecución, con picos al abrir la tapa y al extraer

Gráfico de líneas de la distancia al segmento más cercano δt\delta_t a lo largo de los pasos de una ejecución: baja y estable mientras el robot pisa terreno trillado, con picos que marcan los momentos que las demostraciones cubren peor.

En pocas palabras:

al comprobar cuánto se parece la situación actual a los vídeos que le mostraron, el robot puede saber si pisa terreno conocido y pensar más cuando no es así.

Por qué esto encaja con Cortex

Esto se apoya en lo que Cortex ya es, en lugar de añadirle algo por un lado. Toda la premisa del sistema es que formar un plan y contrastarlo con futuros imaginados supera a reaccionar fotograma a fotograma. El aprendizaje en contexto extiende esa premisa desde el cómo actúa el robot hasta el qué se le pide hacer: la tarea puede fijarse mediante ejemplos en tiempo de ejecución, en vez de quedar grabada en el entrenamiento. La estructura planificar-luego-imaginar no cambia. Solo hemos cambiado de dónde viene la tarea, y nos hemos asegurado de que ambas mitades del sistema la escuchen.

Somos deliberadamente prudentes con el alcance. El objetivo a corto plazo es la variación adyacente: una nueva categoría de objetos, una nueva disposición del contenedor, dentro de un dominio en el que Cortex ya opera, aprendida a partir de un puñado de demostraciones en vídeo con los pesos congelados. La ganancia es concreta y operativa: una SKU nueva definida por unos pocos clips, gestionada sin un ciclo de entrenamiento. El valor está en el ciclo de entrenamiento que ya no tenemos que gastar.

ConfiguraciónDemosEntrenamientoÉxito
Línea base entrenada (categoría nueva)conjunto completociclo completo97.6%
En contexto, VLM + world model2–3ninguno92.6%

Esa es la dirección que estamos construyendo. Las demostraciones permanecen cerca del robot como algo de lo que puede tirar momento a momento, las partes que planifican e imaginan las ven ambas, y cuánto se apoya el robot en ellas se mide en vez de suponerse. Le enseñamos al robot igual que le enseñarías una tarea nueva a una persona en planta: se la muestras y dejas que mire.

Recursos del artículo

Acceda al contenido y los recursos de esta publicación

Contenido de texto

Copie el texto completo del artículo al portapapeles para leerlo o compartirlo fácilmente.

Recursos visuales

Descargue en un archivo ZIP todas las imágenes de alta resolución utilizadas en este artículo.

Últimos artículos