Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

Bayou: El programa de aprendizaje profundo que escribe software

Los científicos están usando las redes neuronales profundas para todo tipo de problemas. Ahora han creado un programa que escribe pedazos de código en respuesta a ciertas palabras claves.

A mediados de los años 1980s salió para la Apple II un programa llamado “The Last One”, el cual -presumiblemente- sería el último programa que el usuario compraría, porque éste prometía escribir el código de cualquier aplicación que necesitáramos. Obviamente la idea era buena pero la tecnología no podía resolver realmente este problema. De hecho, la ingenuidad de los años 80s nos es muy evidente ahora. Sin embargo, el tema no está agotado, desde luego y ahora, científicos de la Universidad de Rice han creado un sistema de aprendizaje profundo -llamado Bayou- que puede ayudar a los programadores humanos a navegar en la cantidad de código fuente que hay, incluyendo APIs, interfaces y sistemas sin la suficiente documentación.

Agujeros negros desde una exacomputadora

Bayou es pues la aplicación creada en Rice que partió de una iniciativa fundada por DARPA (Defense Advanced Research Projects Agency), que busca extraer el conocimiento en línea de los depósitos de software que hay en línea como GitHub o SourceForge. Un artículo sobre Bayou fue presentado el primero de mayo en Vancouver, Columbia Británica, en la Conferencia Internacional de Representación de Aprendizaje, un evento apropiado para quienes trabajan en la investigación del aprendizaje profundo.

“Por unos 60 años las personas han intentado construir sistemas que puedan escribir código, pero el problema es que estos métodos no son buenos cuando aparece la ambigüedad”, dice el co-creador de Bayou, Swarat Chaudhuri, profesor asociado de ciencias de la computación en Rice. “Usualmente se necesitan muchos detalles sobre lo que queremos que el programa haga y escribir estos detalles puede ser tanto trabajo como simplemente escribir el código”.

“Bayou es una mejora considerable”, dice Chaudhuri. “Un desarrollador le puede dar muy poca información a Vayou, un par de palabras claves y Bayou tratará de leer la mente del programador y predecir qué es lo que se quiere programar”. El sistema puede probarse aquí (askbayou.com).

Chaudhuri dijo que Bayou fue entrenado a sí mismo estudiando millones de líneas de código en Java, escritas por seres humanos. “Básicamente estudio todo lo que está en GitHub y llegó a la conclusión correspondiente que le permite escribir su propio código”.  Otro de los co-creadores de Bayou, Chris Jermaine, un profesor de ciencias de la computación quien co-dirige el Laboratorio de Sistemas de Software Inteligentes de Rice junto con Chaudhuri, dijo que Bayou es particularmente útil para sintetizar ejemplos de código para APIs específicos de software.

“La programación hoy en día es muy diferente a lo que teníamos hace 30 o 40 años”, dijo Jermaine. “Las computadora están hoy en nuestros bolsillos, en nuestras muñecas y en billones de dispositivos caseros, vehículos u otros aparatos. Los días en los que el programador escribía desde cero ya desparecieron hace muchos años”, indicó.

Por su parte el arquitecto de Bayou, Vijay Murali, un investigador en el laboratorio, dijo: “el desarrollo del software moderno tiene que ver esencialmente con las APIs. Hay reglas específicas en los sistemas, herramientas, definiciones y protocolos, que permiten que una pieza de código interactúe con sistemas operativos específicos, bases de datos, plataformas de hardware y otros sistemas de software. Hay cientos de APIs y navegar en ellas es siempre difícil para los desarrolladores. Pierden mucho tiempo en sitios de preguntas y respuestas como Stack Overflow preguntando a otros programadores cómo resolvieron ciertos problemas”.

Murali dijo que los desarrolladores ahora pueden preguntar a Bayou las cosas, y recibir inmediatamente respuestas. “Esta retroalimentación inmediata podría resolver el problema de una vez pero si Bayou no lo hace, puede dejar algunos ejemplos de código para que el desarrollador humano vea cómo Bayou intentó resolver el problema”, comentó. Jermaine dijo que la meta principal del equipo es hacer que los desarrolladores intenten extender a Bayou, el cual se ha puesto públicamente bajo una licencia muy permisiva de código abierto. “Mientras más información tengamos sobre lo que las personas quieren de Bayou, mejor podemos hacerlo”, dijo. “Queremos que muchas personas lo usen”.

Bayou se basa en un método llamado “neural sketching learning”, el cual entrena a la red neuronal artificial para reconocer los patrones de alto nivel en cientos de miles de programas escritos en Java. Esto se hace creando un bosquejo, un “sketch” para cada programa que lee y entonces asocia este sketch con la “intención” que está detrás del programa. Cuando los usuarios le preguntan a Bayou, el sistema hace juicios de valor sobre lo que se quiere programar. Entonces crea sketches para muchos de los programas candidatos que puede usar.

“Basado en esto, una parte separada de Bayou, un módulo que entiende los detalles de bajo nivel de Java y que puede hacer razonamiento automático lógico, genera cuatro o cinco piezas diferentes de código” dice Jermaine. “Bayou presentará así el que se parezca más a lo que pidió el usuario y en general esta será la respuesta correcta, pero le damos más opciones para que encuentre soluciones alternativas”.

Comentarios