El último proyecto de inteligencia artificial de DeepMind resuelve los desafíos de programación como un novato


Agrandar / Si se le pidiera a una IA que creara una imagen para este artículo, ¿pensaría en La matriz?

La división DeepMind AI de Google ha abordado todo, desde Barco de estrellas al plegamiento de proteínas. Por lo tanto, probablemente no sorprenda que sus creadores finalmente hayan recurrido a lo que sin duda es un interés personal: la programación de computadoras. En la edición del jueves de Science, la compañía describe un sistema que desarrolló que produce código en respuesta a la programación típica de las que se utilizan en los concursos de programación humana.

En un desafío promedio, el sistema de IA podría puntuar cerca de la mitad superior de los participantes. Pero tuvo algunos problemas para escalar, siendo menos probable que produzca un programa exitoso en problemas donde normalmente se requiere más código. Aún así, el hecho de que funcione sin que se le haya dado ninguna información estructural sobre algoritmos o lenguajes de programación es un poco sorprendente.

A la altura del desafío

Los desafíos de la programación de computadoras son bastante simples: a las personas se les asigna una tarea para completar y producir un código que debe realizar la tarea solicitada. En un ejemplo dado en el nuevo documento, a los programadores se les dan dos cadenas y se les pide que determinen si la más corta de las dos se puede producir sustituyendo las teclas de retroceso por algunas de las teclas necesarias para escribir la más grande. Los programas enviados luego se verifican para ver si brindan una solución general al problema o fallan cuando se prueban ejemplos adicionales.

Dados suficientes ejemplos de programas que pueden resolver un solo problema, probablemente sería posible que un sistema de IA infiriera la estructura algorítmica necesaria para tener éxito. Pero esa no sería una solución general para abordar cualquier problema; una IA entrenada en una clase de desafío fallaría cuando se le pidiera que abordara un desafío no relacionado.

Para hacer algo más generalizable, el equipo de DeepMind lo trató un poco como un problema de idioma. Hasta cierto punto, la descripción del desafío es una expresión de lo que debe hacer el algoritmo, mientras que el código es una expresión de lo mismo, solo que en un idioma diferente. Entonces, la IA en cuestión fue diseñada para tener dos partes: una que ingirió la descripción y la convirtió en una representación interna, y una segunda que usó la representación interna para generar código funcional.

La capacitación del sistema también fue un proceso de dos etapas. En la primera etapa, simplemente se le pidió al sistema que procesara una instantánea del material en GitHub, un total de más de 700 GB de código. (En estos días en los que puede colocar eso en una memoria USB, puede que no parezca mucho, pero recuerde que el código es solo texto sin formato, por lo que obtiene muchas líneas por gigabyte). Tenga en cuenta que estos datos también incluirán el comentarios, que deben usar lenguaje natural para explicar qué está haciendo el código cercano y, por lo tanto, deben ayudar con las tareas de entrada y salida.

Una vez que el sistema fue entrenado, pasó por un período de ajuste. DeepMind organizó sus propios concursos de programación y luego introdujo los resultados en el sistema: descripción del problema, código de trabajo, código fallido y los casos de prueba utilizados para comprobarlo.

Se habían intentado enfoques similares anteriormente, pero DeepMind indica que solo pudo arrojar más recursos a la capacitación. «Un impulsor clave del rendimiento de AlphaCode», indica el documento, «provino de escalar el número de muestras del modelo a órdenes de magnitud más que el trabajo anterior».



Source link-49