OpenAI demuestra la transferencia de manipulaciones complejas de simulaciones al mundo real

Después de agregar factores aleatorios a una simulación relativamente simple, el robot de OpenAI aprendió a realizar operaciones complejas de mano




Operaciones manuales: esta es una de esas acciones que están en la parte superior de la lista de "habilidades que no requieren esfuerzos de las personas y que son extremadamente difíciles para los robots". Sin dudarlo, podemos controlar adaptativamente los dedos de la mano, oponiéndolos con el pulgar y la palma de la mano, teniendo en cuenta la fricción y la gravedad, manipulando objetos con una mano, sin usar la otra; probablemente hiciste este truco muchas veces hoy, al menos con tu teléfono.

A las personas les lleva años de capacitación aprender a trabajar de manera confiable con los dedos, pero los robots no tienen tanto tiempo para aprender. Tales tareas complejas todavía se resuelven mediante capacitación práctica y ganando experiencia, y la tarea es encontrar una manera de entrenar al robot más rápido y más eficientemente que simplemente darle al brazo robótico algo que pueda manipularse una y otra vez hasta que se dé cuenta de que funciona y lo que no; Podría tomar cien años.

En lugar de esperar cien años, los investigadores de OpenAI usaron entrenamiento de refuerzo para entrenar una red de neutrones convolucional para controlar la mano de cinco dedos del robot Shadow para manipular objetos, y en solo 50 horas. Lograron hacer esto a través de una simulación, una técnica infame como "condenada al éxito"; sin embargo, introdujeron cuidadosamente factores aleatorios para acercarla a la variabilidad del mundo real. La verdadera mano Shadow pudo realizar con éxito manipulaciones manuales con objetos reales sin ningún tipo de reentrenamiento.

Idealmente, todos los robots deberían estar entrenados en simulaciones, porque las simulaciones pueden escalarse sin crear muchos robots reales. ¿Quieres entrenar dofigillion robots dofigillion horas en una fracción de segundo dofigillion? Esto se puede hacer si obtiene una cantidad suficiente de potencia informática. Pero trate de ponerlo en práctica en el mundo real, y el problema de que nadie sepa exactamente cuánto será, "dofigillion", será el menor de sus problemas.

El problema con el entrenamiento de robots en simulaciones es que el mundo real no se puede simular con precisión, y es aún más difícil simular con precisión problemas menores como la fricción, la ductilidad y la interacción de varios objetos. Por lo tanto, en general se acepta que la simulación es maravillosa, pero existe una gran y terrible brecha entre el éxito de la simulación y el éxito en el mundo real, lo que de alguna manera reduce el valor de la simulación. El hecho de que exactamente esas cosas que serían agradables de simular (por ejemplo, manipulaciones manuales) al mismo tiempo resulten ser las más difíciles para simulaciones precisas no mejora la situación, debido a lo físicamente sofisticados que son.

Un enfoque común a este problema es tratar de hacer que la simulación sea lo más precisa posible y esperar que resulte lo suficientemente cercana al mundo real para que pueda extraer algún comportamiento útil de ella. En cambio, OpenAI no pone precisión en primer lugar, sino variabilidad, proporcionando sus simulaciones moderadamente realistas con muchos pequeños ajustes para que el comportamiento resultante sea lo suficientemente confiable como para funcionar fuera de la simulación.

El proceso de aleatorización es la clave de lo que hace que el sistema (llamado Dactyl) sea capaz de pasar efectivamente de la simulación al mundo real. OpenAI es muy consciente de que las simulaciones que usan no son lo suficientemente complejas como para simular una montaña de las cosas más importantes, desde la fricción hasta el desgaste en la punta de los dedos de un brazo de robot real. Para que el robot pueda generalizar lo que está aprendiendo, OpenAI introduce variables aleatorias en todos los aspectos posibles de la simulación para tratar de cubrir toda la variabilidad del mundo que no se puede modelar bien. Esto incluye la masa, todas las medidas del objeto, la fricción de su superficie y los dedos del robot, la amortiguación de los dedos del robot, la fuerza de los motores, la limitación de las articulaciones, el juego y el ruido del motor, etc. Se aplican pequeñas influencias aleatorias al objeto para que la simulación haga frente a dinámicas que no se pueden modelar. Y este es solo el proceso de manipulación en sí mismo: en el trabajo de las cámaras RGB que evalúan la posición de un objeto, también hay muchas variables aleatorias, que, sin embargo, son un poco más fáciles de visualizar.


Las filas muestran imágenes de la misma cámara. Las columnas corresponden a imágenes con cambios aleatorios: todas ellas son alimentadas simultáneamente por redes neuronales.

OpenAI llama a esto "aleatorización del entorno", y en el caso de las manipulaciones manuales, "querían ver si aumentar la escala de la aleatorización del entorno podría resolver un problema que no está disponible para las técnicas de robótica actuales". Y entonces, lo que sucedió como resultado de dos sistemas entrenados independientemente (uno visual, el segundo para manipulaciones) que reconocen visualmente la posición del cubo y lo rotan a diferentes posiciones.



Todas estas rotaciones de cubos (y el sistema es capaz de al menos 50 manipulaciones exitosas seguidas) fueron posibles gracias a 6144 procesadores y 8 GPU que obtuvieron 100 años de experiencia simulada en robots en solo 50 horas. La única retroalimentación disponible para el sistema (tanto en simulación como en realidad) es la ubicación del cubo y los dedos, mientras que el sistema comenzó sin una comprensión definitiva de cómo sostener o rotar el cubo. Tenía que lidiar con todo esto de forma independiente, incluida la rotación de sus dedos, la coordinación simultánea de varios dedos, el uso de la gravedad, la coordinación de la aplicación de fuerzas. Sin embargo, el robot inventó las mismas técnicas que las personas usan, con modificaciones pequeñas (e interesantes):

Para capturar claramente un objeto, el robot generalmente usa el dedo meñique en lugar de los dedos índice o medio. Esto probablemente se deba a la presencia de la Mano diestra de las Sombras con un grado adicional de libertad en comparación con los dedos índice, medio y anular, lo que la hace más móvil. En los humanos, los dedos índice y medio suelen ser más móviles. Esto significa que nuestro sistema puede inventar independientemente la técnica de agarre disponible para las personas, pero es mejor adaptarla a sus propias limitaciones y posibilidades.


Los diferentes tipos de agarres que el sistema ha aprendido. De izquierda a derecha y de arriba a abajo: agarre con la punta de los dedos, agarre de la palma, agarre de tres dedos, agarre de cuatro, cinco dedos y agarre potente.

Observamos otro paralelo interesante en el trabajo de los dedos de las personas y nuestro robot. De acuerdo con esta estrategia, la mano sostiene un objeto con dos dedos y gira alrededor de este eje. Resultó que en los niños pequeños, tal motilidad todavía no tiene tiempo para desarrollarse, por lo que generalmente giran objetos usando la falange proximal o media de los dedos . Y solo más tarde en la vida cambian a falanges distales, como lo hacen la mayoría de los adultos. Curiosamente, nuestro robot generalmente se basa en falanges distales cuando es necesario para rotar un objeto.

La ventaja de la tecnología es que, como resultó, los robots aún pueden ser entrenados en acciones físicas complejas en simulaciones, y luego usar de inmediato las habilidades acumuladas en la realidad, y esto es realmente un gran logro, ya que el entrenamiento en simulaciones es mucho más rápido que en la realidad .

Contactamos a Jonas Schneider, miembro del equipo técnico de OpenAI, para solicitar más información sobre este proyecto.

Editorial : ¿Por qué la manipulación manual en robótica es una tarea tan difícil?

Jonas Schneider : las manipulaciones tienen lugar en un espacio muy limitado y el robot dispone de una gran cantidad de grados de libertad. Las estrategias de manipulación exitosas requieren una coordinación adecuada en todos estos grados de libertad, y esto reduce el tamaño de error permitido en comparación con las interacciones convencionales con objetos, como, por ejemplo, la captura simple. Durante las manipulaciones manuales, se registra mucho contacto con el objeto. Modelar estos contactos es una tarea difícil, propensa a errores. Los errores durante la ejecución tienen que controlarse durante el trabajo de la mano, lo que causa problemas en el enfoque tradicional basado en la planificación de movimientos por adelantado. Por ejemplo, puede surgir un problema cuando tiene retroalimentación lineal que no registra la dinámica no lineal de lo que está sucediendo.

Aparentemente, las variables aleatorias son la clave para garantizar que las habilidades adquiridas en la simulación puedan aplicarse de manera confiable en la realidad. ¿Cómo decide qué parámetros hacer al azar y cómo exactamente?

Durante la calibración, estimamos aproximadamente qué parámetros pueden variar y luego decidimos cuál de ellos será más importante para reproducir en la simulación. Luego establecemos los valores de estos parámetros iguales a los de calibración, y agregamos variaciones aleatorias en la región del valor promedio. La amplitud de las variaciones depende de nuestra confianza; por ejemplo, el tamaño del objeto no variamos mucho, porque podemos medirlo con precisión.

Algunas variaciones aleatorias se basaron en observaciones empíricas. Por ejemplo, observamos cómo nuestro robot a veces dejaba caer un objeto, bajaba el cepillo y no tenía tiempo de levantarlo hasta que el objeto salía de él. Descubrimos que debido a problemas con el controlador de bajo nivel, la ejecución de nuestras acciones a veces podría retrasarse varios cientos de milisegundos. Y, por supuesto, podríamos poner nuestra energía en hacer que el controlador sea más confiable, pero en su lugar simplemente agregamos aleatorización al tiempo de respuesta de cada controlador. Nos parece que en un nivel superior esto puede resultar un enfoque interesante para el desarrollo de robots del futuro; Para algunas tareas, el desarrollo de equipos muy precisos puede ser inaceptablemente costoso, y hemos demostrado cómo se pueden corregir estos defectos del equipo utilizando algoritmos más avanzados.

¿Cómo crees que mejorarían tus resultados si no esperaras 100 años de tiempo simulado, pero, por ejemplo, 1000?

Para un ejemplo de una tarea específica, esto es difícil de evaluar, ya que nunca hemos probado más de 50 turnos. Todavía no está claro exactamente cómo se ve la curva asintótica de las características, pero consideramos que nuestro proyecto se completó, porque incluso un giro exitoso está mucho más allá de las capacidades de los mejores métodos de enseñanza que existen en la actualidad. De hecho, elegimos la cifra de 50 turnos, porque decidimos que 25 turnos definitivamente demostrarían que el problema estaba resuelto, y luego agregamos otros 25, con un margen del 100%. Si su tarea es optimizar para secuencias muy largas de acciones y alta confiabilidad, entonces un aumento en la capacitación probablemente ayudará. Pero en algún momento, como pensamos, el robot comenzará a adaptarse más a la simulación y funcionará peor en el mundo real, y luego tendrá que agregar aún más aleatorizaciones para complicar la simulación, lo que, a su vez, aumentará la confiabilidad del sistema final.

¿Qué tan bien pueden generalizar sus resultados? Por ejemplo, ¿cuánto esfuerzo tendría que dedicar a entrenamientos repetidos para rotar un cubo más pequeño, o un cubo que era blando o resbaladizo? ¿Qué pasa con una disposición de cámara diferente?

Por cierto, por interés, intentamos manipular cubos blandos y cubos más pequeños, y resultó que la calidad del trabajo no disminuye mucho en comparación con la rotación de un cubo sólido. En la simulación, también experimentamos con cubos de diferentes tamaños, y esto también funcionó bien (aunque no lo intentamos con un robot real). En la simulación, también usamos variaciones aleatorias en el tamaño del cubo. No intentamos hacer exactamente eso, pero creo que si simplemente aumentamos la dispersión de variaciones aleatorias en el tamaño del cubo en la simulación, la mano podrá manipular los cubos de diferentes tamaños.

En cuanto a las cámaras, el modelo visual se entrenó por separado, y hasta ahora solo estamos haciendo pequeñas variaciones aleatorias en la posición de las cámaras, por lo que con cada cambio en la posición de la cámara, comenzamos el entrenamiento nuevamente. Uno de nuestros pasantes, Xiao-Yu Fish Tan, solo está trabajando para hacer que el modelo visual sea completamente independiente de la ubicación de las cámaras, utilizando la misma técnica básica de variar aleatoriamente la posición y la orientación de la cámara sobre grandes límites.

¿En qué se diferencia el entrenamiento en simulación del enfoque de fuerza bruta , que utiliza un montón de robots reales?

Curiosamente, nuestro proyecto comenzó con el hecho de que cuestionamos la idea de usar simulaciones para promover la robótica. Durante muchos años, hemos estado observando cómo la robótica logra resultados impresionantes en simulaciones utilizando aprendizaje reforzado. Sin embargo, en conversaciones con investigadores involucrados en robótica clásica, nos enfrentamos constantemente a una falta de confianza en que dichos métodos funcionarán en el mundo real. El principal problema es que los simuladores no son completamente precisos desde un punto de vista físico (incluso si se ven bien para el ojo humano). Agrega problemas y el hecho de que las simulaciones más precisas requieren más potencia informática. Por lo tanto, decidimos establecer un nuevo estándar que requiera trabajar con una plataforma muy compleja en términos de equipos, en la cual debemos enfrentar todas las limitaciones de las simulaciones.

En cuanto al enfoque de “granja carpiana”, la principal limitación en el entrenamiento de robots físicos es la pequeña escalabilidad de las habilidades adquiridas para tareas más complejas. Esto se puede hacer organizando todo de manera que tenga muchos objetos en un entorno autoestabilizador que no tenga diferentes estados (por ejemplo, una canasta de bolas). Pero será muy difícil hacerlo de la misma manera para la tarea de ensamblar algo, cuando después de cada ejecución su sistema esté en un nuevo estado. Una vez más, en lugar de configurar todo el sistema una vez, debe configurarlo N veces y mantenerlo operativo después, por ejemplo, de que un robot barrió y rompió algo. Todo esto es mucho más simple y fácil de hacer en simulaciones con poder de cálculo elástico.

Como resultado, nuestro trabajo apoya la idea de la capacitación en simulaciones, ya que hemos mostrado cómo resolver el problema de transferencia incluso en el caso de robots muy complejos. Sin embargo, esto no niega la idea de entrenar a un robot real; Sería muy difícil sortear las limitaciones de las simulaciones cuando se trabaja con objetos y fluidos deformables.

¿Dónde está tu sistema el lugar más delgado?

Por el momento, se trata de variaciones aleatorias, desarrolladas manualmente y afiladas para una tarea específica. En el futuro, puede ser posible tratar de aprender estas variaciones agregando otra capa de optimización, que es el proceso que estamos haciendo hoy manualmente ("intente algunas aleatorizaciones y vea si ayudan"). También puedes ir más allá y usar el juego entre el agente de aprendizaje y su oponente, tratando de obstaculizar (pero no mucho) su progreso. Esta dinámica puede conducir a la aparición de conjuntos de reglas muy confiables para el trabajo de los robots, porque cuanto mejor se vuelve el agente, más astuto debe ser el oponente para interferir con él, lo que mejora aún más el trabajo del agente, y así sucesivamente. Esta idea ya ha sido estudiada por otros investigadores.

Dices que tu objetivo principal es crear robots para el mundo real. ¿Qué más hay que hacer antes de que esto sea posible?

Estamos tratando de ampliar las capacidades de los robots para trabajar en un entorno sin restricciones estrictas. En tales entornos es imposible prever todo por adelantado y preparar un modelo para cada objeto. También puede ser inconveniente poner marcas en los objetos fuera del laboratorio. Resulta que nuestros robots tendrán que aprender cómo actuar en muchas situaciones, cómo tomar una decisión razonable en una situación que no han encontrado antes.

¿En qué trabajarás después?

Continuaremos creando robots con un comportamiento cada vez más sofisticado. Es muy temprano para decir cuál. A la larga, esperamos darles a los robots la capacidad general de manipular objetos, para que puedan aprender a interactuar con el entorno como lo hace un bebé, jugando con objetos cercanos, no necesariamente bajo la supervisión de adultos. Creemos que la inteligencia está vinculada a la interacción con el mundo real, y para cumplir con nuestra tarea de crear inteligencia artificial segura de uso general, necesitamos poder aprender de los datos sensoriales del mundo real y basarnos en simulaciones.

Source: https://habr.com/ru/post/es420209/


All Articles