La división DeepMind AI de Google manejó todo, desde Barco de estrellas a mi proteína plegable. Por lo tanto, probablemente no sorprenda que los 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 compañía describe un sistema que ha desarrollado que produce código en respuesta a la programación típica que se usa en las competencias de programación humana.
En el desafío medio, el sistema de IA puede puntuar cerca de la mitad superior de los participantes. Pero tuvo algunas dificultades con el escalado, ya que era menos probable que produjera un programa que funcionara en problemas que normalmente requerían más código. Sin embargo, el hecho de que funcione sin tener ninguna información estructural sobre algoritmos o lenguajes de programación es un poco sorprendente.
Estar a la altura
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 requerida. En el ejemplo del nuevo documento, a los programadores se les dieron dos cadenas y se les pidió que determinaran si la más corta de las dos podía producirse sustituyendo las teclas de retroceso por algunas de las pulsaciones necesarias para escribir la cadena 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 software que pueden resolver un solo problema, probablemente debería ser posible que un sistema de IA infiera la estructura algorítmica necesaria para el éxito. Pero esta no será una solución general para abordar ningún problema; Una IA entrenada en una categoría de desafío fallará cuando se le pida que aborde un desafío no relacionado.
Para hacer algo más generalizable, el equipo de DeepMind lo trató más como un problema de lenguaje. 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 lenguaje diferente. Entonces, la IA en cuestión está diseñada para tener dos partes: una parte toma la descripción y la convierte en una representación interna, y la segunda parte usa 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 fase, simplemente se requería que el sistema procesara una instantánea del material en GitHub, con un total de más de 700 GB de código. (En estos días, donde puede colocar eso 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 comentarios, que debería usar un lenguaje natural para explicar lo que hace el código cercano y, por lo tanto, debería ayudar con las tareas de entrada y salida.
Una vez que el sistema está entrenado, pasa por un período de ajuste. DeepMind configura sus propios cuestionarios de programación y luego introduce los resultados en el sistema: descripción del problema, código de trabajo, código fallido y casos de prueba utilizados para verificarlo.
Se han probado enfoques similares anteriormente, pero DeepMind informa que pudo dedicar más recursos al entrenamiento. El documento afirma que “un impulsor clave del rendimiento de AlphaCode provino de aumentar la cantidad de muestras de modelos a órdenes de magnitud mayores que el trabajo anterior”.