Skip to main content

Learning from Big Code: Probabilistic Models, Analysis and Synthesis

Article Category

Article available in the folowing languages:

Aprendizaje automático para que la programación sea más fiable, eficaz y segura

Los modelos de aprendizaje automático entrenados con códigos informáticos ayudan a resolver algunos de los problemas inveterados que afectan al sector del «software».

Economía digital

Cada año, se gastan miles de millones de euros en corregir defectos de «software», muchos de los cuales provienen de un código defectuoso. Por tanto, lo que se necesita es un «software» más fiable, eficaz y seguro. Sin embargo, el problema es que crear un «software» así es difícil, si no imposible, con las técnicas tradicionales. Aquí es donde entra en juego el proyecto BIGCODE, financiado con fondos europeos. Al combinar lenguajes de programación y aprendizaje automático, el proyecto está creando nuevos tipos de motores de programación capaces de proporcionar posibles soluciones desde el punto de vista estadístico para problemas que, de otro modo, serían imposibles de resolver. Según comenta Martin Vechev, responsable del Laboratorio de Sistemas Seguros, Fiables e Inteligentes (SRI) de la Escuela Politécnica Federal de Zúrich (ETH Zurich) y coordinador del proyecto BIGCODE: «El equipo del proyecto creó nuevos tipos de modelos de aprendizaje automático que pueden ser entrenados con códigos informáticos. El objetivo es utilizar estos modelos para resolver distintas tareas importantes, como la generación automática de nuevos códigos, la detección de violaciones de la seguridad en los códigos existentes y la traducción entre distintos lenguajes de programación, por citar algunos».

Nuevos tipos de modelos de aprendizaje automático

El principal resultado del proyecto, que recibió el apoyo del Consejo Europeo de Investigación, fue el desarrollo de nuevos tipos de modelos de aprendizaje automático básicos. Vechev explica: «Lo que convierte estos modelos en verdaderamente únicos es que pueden entrenarse con códigos y pueden resolver problemas que antes eran imposibles. Además, nuestros modelos son interpretables, lo cual significa que las decisiones que toman pueden ser tanto comprendidas como inspeccionadas por las personas». Al desarrollar los modelos de aprendizaje automático, los investigadores se dieron cuenta de que los programas informáticos tienen unas semánticas formales complejas. Para extraer estas semánticas, un entreno satisfactorio con códigos debe ser capaz de integrar métodos simbólicos al proceso. Según Vechev, esto va mucho más allá de los métodos que se utilizan para entrenar modelos basados en imágenes o en el lenguaje natural. Y añade: «Como tales, nuestros progresos han resultado tener un valor conceptual que va más allá de la programación, por ejemplo, en síntesis de programas a partir de datos con incertidumbre, procesamiento del lenguaje natural y descubrimiento de nuevos tipos de gramáticas formales. En cierto modo, trabajar en el ámbito de la programación ha sido provechoso en términos de desarrollo de nuevos métodos que pueden generalizarse fácilmente».

Un «software» más fiable y seguro

Los modelos desarrollados durante el proyecto BIGCODE, al que Vechev llama «Inteligencia artificial para la programación», ya son utilizados por cientos de miles de programadores, lo cual produce un «software» más fiable y seguro. Sobre la base del trabajo realizado durante el proyecto, los investigadores pusieron en marcha también una empresa emergente exitosa: DeepCode. Dicha empresa ha sido adquirida por Snyk, una gran empresa de ciberseguridad que ha integrado DeepCode en muchas de sus operaciones. «El proyecto BIGCODE mostró que no solo es posible mejorar nuestro conocimiento y ayudar a conformar nuevas áreas de investigación, sino que también se pueden utilizar estos avances para crear empresas de tecnología profunda que tienen un valor económico enorme», concluye Vechev.

Palabras clave

BIGCODE, aprendizaje automático, programación, lenguajes de programación, código, software, ordenador, programas informáticos, lenguaje natural, inteligencia artificial, tecnología profunda

Descubra otros artículos del mismo campo de aplicación