El último proyecto de inteligencia artificial de DeepMind resuelve los desafíos de programación como un nuevo
La división DeepMind AI de Google ha abordado todo, desde Barco de estrellas a plegamiento de proteínas. Por lo tanto, quizás no sea una sorpresa que sus creadores eventualmente se dediquen a lo que sin duda es un interés personal: la programación de computadoras. En la edición del jueves de Science, la empresa describe un sistema que ha desarrollado 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 mediano, el sistema de IA podría anotar casi la mitad superior de los participantes. Pero tuvo algunos problemas para escalar, ya que era menos probable que produjera un programa exitoso en problemas en los que generalmente se requiere más código. Aún así, sorprende un poco el hecho de que funcione sin haber recibido ninguna información estructural sobre algoritmos o lenguajes de programación.
Aceptar el reto
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 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 larga. Luego, los programas enviados se verifican para ver si brindan una solución general al problema o si fallan cuando se prueban ejemplos adicionales.
Dados suficientes ejemplos de programas capaces de resolver un solo problema, probablemente sería posible que un sistema de IA infiriera la estructura algorítmica necesaria para tener éxito. Pero no sería una solución general para resolver todos los problemas; una IA entrenada en una clase de desafío fallaría cuando se le pidiera que completara 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 de trabajo.
La formación del sistema también fue un proceso de dos pasos. En la primera etapa, simplemente se le pidió al sistema que procesara una instantánea de hardware en GitHub, un total de más de 700 GB de código. (Hoy en día, cuando puede poner esto en una unidad 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 comentarios, 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.
Una vez que se formó el sistema, 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 defectuoso y casos de prueba utilizados para verificarlo.
Se habían probado enfoques similares antes, pero DeepMind dice que simplemente pudo dedicar más recursos a la capacitación. «Un impulsor clave del rendimiento de AlphaCode», afirma el documento, «provino de escalar el número de muestras del modelo a órdenes de magnitud mayores que el trabajo anterior».