El último proyecto de inteligencia artificial de DeepMind resuelve los desafíos de programación como un novato
La división DeepMind AI de Google ha abordado todo, desde Barco de estrellas por plegamiento de proteínas🇧🇷 Por lo tanto, probablemente no sorprenda que sus creadores recurrieran 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 los que se utilizan en los concursos de programación humana.
En un desafío medio, el sistema de IA puede puntuar cerca de la mitad superior de los participantes. Pero tenía algunos problemas de escalado, siendo menos probable que produjera un programa exitoso en problemas donde normalmente se necesita más código. Aún así, el hecho de que funcione sin haber recibido ninguna información estructural sobre algoritmos o lenguajes de programación es una sorpresa.
a la altura del desafío
Los desafíos de 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 artículo, a los programadores se les dan dos cadenas y se les pide que determinen si se puede producir la más corta de las dos reemplazando los espacios de retroceso con algunas de las pulsaciones de teclas necesarias para escribir la más larga. Los programas enviados 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, es probable que un sistema de IA pueda inferir la estructura algorítmica necesaria para tener éxito. Pero esa no sería una solución general para resolver ningún problema; una IA entrenada en una clase de desafío fallaría cuando se le pidiera asumir un desafío no relacionado.
Para hacer algo más generalizable, el equipo de DeepMind trató esto 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 de trabajo.
La capacitación del sistema también fue un proceso de dos pasos. En el primer paso, 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, cuando puede colocar esto en una memoria USB, puede que no parezca mucho, pero recuerde que el código es solo texto sin procesar, por lo que obtiene muchas líneas por gigabyte). Tenga en cuenta que estos datos también incluirán el comments , que debe usar lenguaje natural para explicar lo que está haciendo el código cercano y, por lo tanto, debe ayudar con las tareas de entrada y salida.
Después de ser entrenado, el sistema pasó por un período de ajuste. DeepMind creó 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 verificarlo.
Se han probado enfoques similares antes, pero DeepMind indica que solo pudo dedicar más recursos al entrenamiento. «Un impulsor clave del rendimiento de AlphaCode», afirma el documento, «provino de escalar la cantidad de muestras en el modelo a órdenes de magnitud más que el trabajo anterior».