Construyendo arquitecturas que puedan manejar los datos del mundo.

'Construyendo arquitecturas para manejar datos globales.'

Perceptor y Perceptor IO funcionan como herramientas multiusos para la IA

La mayoría de las arquitecturas utilizadas por los sistemas de IA hoy en día son especializadas. Una red residual 2D puede ser una buena opción para procesar imágenes, pero como máximo es una adaptación aproximada para otros tipos de datos, como las señales Lidar utilizadas en los autos autónomos o los torques utilizados en la robótica. Además, las arquitecturas estándar suelen ser diseñadas con un solo objetivo en mente, lo que a menudo obliga a los ingenieros a hacer malabarismos para remodelar, distorsionar o modificar de alguna otra manera sus entradas y salidas con la esperanza de que una arquitectura estándar pueda aprender a manejar correctamente su problema. Lidiar con más de un tipo de datos, como los sonidos e imágenes que componen los videos, es aún más complicado y generalmente implica sistemas complejos ajustados a mano construidos a partir de muchas partes diferentes, incluso para tareas simples. Como parte de la misión de DeepMind de resolver la inteligencia para avanzar en la ciencia y la humanidad, queremos construir sistemas que puedan resolver problemas que utilicen muchos tipos de entradas y salidas, por lo que comenzamos a explorar una arquitectura más general y versátil que pueda manejar todo tipo de datos.

Figura 1. La arquitectura Perceptor IO asigna matrices de entrada a matrices de salida mediante una pequeña matriz latente, lo que le permite escalar de manera eficiente incluso para entradas y salidas muy grandes. Perceptor IO utiliza un mecanismo de atención global que se generaliza en muchos tipos diferentes de datos.

En un artículo presentado en ICML 2021 (la Conferencia Internacional sobre Aprendizaje Automático) y publicado como un preimpreso en arXiv, presentamos el Perceptor, una arquitectura de propósito general que puede procesar datos, incluyendo imágenes, nubes de puntos, audio, video y sus combinaciones. Si bien el Perceptor puede manejar muchas variedades de datos de entrada, estaba limitado a tareas con salidas simples, como la clasificación. Un nuevo preimpreso en arXiv describe Perceptor IO, una versión más general de la arquitectura Perceptor. Perceptor IO puede producir una amplia variedad de salidas a partir de diferentes entradas, lo que lo hace aplicable a dominios del mundo real como el lenguaje, la visión y la comprensión multimodal, así como a juegos desafiantes como StarCraft II. Para ayudar a los investigadores y a la comunidad de aprendizaje automático en general, ahora hemos abierto el código fuente.

Figura 2. Perceptor IO procesa el lenguaje eligiendo primero a qué caracteres prestar atención. El modelo aprende a utilizar varias estrategias diferentes: algunas partes de la red prestan atención a lugares específicos en la entrada, mientras que otras prestan atención a caracteres específicos como signos de puntuación.

Los Perceptores se basan en el Transformer, una arquitectura que utiliza una operación llamada “atención” para mapear las entradas en salidas. Al comparar todos los elementos de la entrada, los Transformers procesan las entradas en función de sus relaciones entre sí y la tarea. La atención es simple y ampliamente aplicable, pero los Transformers utilizan la atención de una manera que puede volverse costosa rápidamente a medida que aumenta el número de entradas. Esto significa que los Transformers funcionan bien para entradas con como máximo unos pocos miles de elementos, pero formas comunes de datos como imágenes, videos y libros pueden contener fácilmente millones de elementos. Con el Perceptor original, resolvimos un problema importante para una arquitectura generalista: escalar la operación de atención del Transformer para entradas muy grandes sin introducir suposiciones específicas del dominio. El Perceptor logra esto utilizando la atención para codificar primero las entradas en una pequeña matriz latente. Esta matriz latente luego puede ser procesada aún más a un costo independiente del tamaño de la entrada, lo que permite que las necesidades de memoria y computación del Perceptor crezcan de manera eficiente a medida que la entrada se vuelve más grande, incluso para modelos especialmente profundos.

Figura 3. Perceptor IO produce resultados de vanguardia en la desafiante tarea de estimación de flujo óptico, o seguimiento del movimiento de todos los píxeles en una imagen. El color de cada píxel muestra la dirección y velocidad de movimiento estimadas por Perceptor IO, como se indica en la leyenda anterior:

Este “crecimiento elegante” permite que el Perceiver alcance un nivel sin precedentes de generalidad, compitiendo con modelos específicos de dominio en pruebas basadas en imágenes, nubes de puntos 3D, y audio e imágenes combinados. Sin embargo, debido a que el Perceiver original producía solo una salida por entrada, no era tan versátil como los investigadores necesitaban. Perceiver IO soluciona este problema utilizando la atención no solo para codificar en una matriz latente, sino también para decodificar desde ella, lo que le brinda una gran flexibilidad a la red. Ahora, Perceiver IO puede escalar a entradas y salidas grandes y diversas, e incluso puede manejar muchas tareas o tipos de datos al mismo tiempo. Esto abre la puerta a todo tipo de aplicaciones, como comprender el significado de un texto a partir de cada uno de sus caracteres, rastrear el movimiento de todos los puntos en una imagen, procesar el sonido, las imágenes y las etiquetas que componen un video, e incluso jugar juegos, todo ello utilizando una arquitectura única que es más simple que las alternativas.

Perceiver IO Original Perceiver IO Original Perceiver IO Figura 4. Perceiver IO puede aprender a entender muchos tipos de datos al mismo tiempo. Aquí mostramos cómo el modelo reconstruye tanto las imágenes como el audio de los videos de entrada:

En nuestros experimentos, hemos visto que Perceiver IO funciona en una amplia gama de dominios de referencia, como lenguaje, visión, datos multimodales y juegos, proporcionando una forma lista para usar de manejar muchos tipos de datos. Esperamos que nuestro último preprint y el código disponible en Github ayuden a investigadores y profesionales a abordar problemas sin necesidad de invertir tiempo y esfuerzo en construir soluciones personalizadas utilizando sistemas especializados. A medida que continuamos aprendiendo mediante la exploración de nuevos tipos de datos, esperamos seguir mejorando esta arquitectura de propósito general para hacerla más rápida y fácil de utilizar en la resolución de problemas en ciencia y aprendizaje automático.