A la caza del código
Quienes hayan seguido la primera temporada de «Westworld», de HBO, sabrán que una de las cosas que hacían realmente inteligente, por así decirlo, a un anfitrión artificialmente inteligente (IA) en la serie era la capacidad de escribir su propio código. Es una forma de razonar consigo mismo, algo que la actual tecnología de IA aún no es capaz de hacer. Una empresa está intentando cerrar esa brecha mediante algoritmos de aprendizaje profundo que utilizan programación probabilística, y ahora, investigadores de Microsoft y la Universidad de Cambridge nos acercan a la IA de autocodificación con un sistema que llaman DeepCoder.
DeepCoder es un sistema de aprendizaje automático que puede escribir su propio código. Para ello utiliza una técnica llamada síntesis de programas. Esencialmente, crea nuevos programas combinando líneas de código existentes tomadas de otro software, que es lo que hacen los programadores humanos. Con un resultado concreto en mente, DeepCoder fue capaz de determinar qué líneas o fragmentos de código serían especialmente útiles.
«El planteamiento consiste en entrenar una red neuronal para predecir propiedades del programa que generó las salidas a partir de las entradas. Utilizamos las predicciones de la red neuronal para aumentar las técnicas de búsqueda de la comunidad de lenguajes de programación, incluida la búsqueda enumerativa y un solucionador basado en SMT», escribe el equipo de investigación, dirigido por Alexander Gaunt, de Microsoft Research, y Matej Balog, de Cambridge. Su estudio se está revisando actualmente para la 5ª Conferencia Internacional sobre el Aprendizaje de Representaciones (ICLR 2017) el próximo mes de abril.
Codificación para todos
DeepCoder superó con éxito los retos básicos de entrada-salida que suelen plantear las competiciones de programación. Fue capaz de buscar entre líneas de código de forma más exhaustiva y amplia de lo que podría hacerlo un programador humano, reconstruyendo el código de una forma que a los humanos no se les ocurriría y con mayor rapidez. Y como DeepCoder es esencialmente un algoritmo de aprendizaje profundo, cada vez que se le plantea un nuevo problema, mejora en la combinación de líneas de código fuente.
En última instancia, este algoritmo puede poner la programación al alcance de los no programadores, permitiendo a cualquiera construir fácilmente programas sencillos. El investigador Marc Brockschmidt, uno de los creadores de DeepCoder, de Microsoft Research en Cambridge (Reino Unido), cree que su método permitiría a los no programadores limitarse a describir un programa y dejar que el sistema lo construya. «De repente, la gente podría ser mucho más productiva», explica a New Scientist el profesor asociado del Instituto Tecnológico de Massachusetts (MIT) Armando Solar-Lezama, que no participó en la investigación. «Podrían construir sistemas que antes [sería] imposible construir».
La versión actual de DeepCoder sólo permite afrontar retos de programación con unas cinco líneas de código. Brockschmidt dijo que las futuras versiones de DeepCode podrían facilitar la construcción de programas rutinarios que hagan scraping de información de sitios web sin necesidad de codificadores humanos. «El potencial de automatización que ofrece este tipo de tecnología podría significar realmente una enorme [reducción] en la cantidad de esfuerzo que supone desarrollar código», dijo Solar-Lezama. Sin embargo, no es necesario que los programadores empiecen a actualizar sus currículos, ya que esta tecnología no sustituiría a los humanos. En cambio, DeepCoder podría encargarse de las partes más tediosas de la programación, mientras que los programadores humanos podrían centrarse en trabajos más sofisticados.