¿Qué tan lejos estamos del punto en que la IA podrá crear software?

La mayoría del código escrito por programadores humanos es secuencial, es decir, la lógica en la línea de código actual depende de la lógica representada en las líneas hasta este punto.

Los problemas en este paradigma secuencial ocurren con demasiada frecuencia en la naturaleza.

Tomemos el caso de la traducción de idiomas: la entrada es una secuencia de palabras (o caracteres; sin embargo, puede elegir verla) en un idioma natural y la salida es otra secuencia de palabras que conserva la integridad semántica tanto en el nativo como en el objetivo idiomas

Si eres lo suficientemente indulgente como para disculpar el propósito y la semántica de un programa, ya tenemos sistemas existentes que podrían escribir código que, sorprendentemente, preserva la sintaxis de la salida en el idioma de destino. Las redes neuronales recurrentes y los LSTM poseen la capacidad de aprender de la información secuencial con una dependencia temporal más larga. ¡Esto significa que pueden extrapolar y razonar la aparición de un elemento en datos secuenciales y aprender a generar lo mismo!

Al igual que con todos los métodos de aprendizaje profundo, los LSTM se basan en datos. Andrej Karpathy tiene una publicación de blog sobre esto [1] donde explica cómo un LSTM aprendió a generar su propio código a partir de millones de líneas del kernel de Linux.

/ *
* Incremente el archivo de tamaño de la nueva información incorrecta del grupo UI_FILTER
* del tamaño generatively.
* /
static int indica_policy (nulo)
{
en terror;
if (fd == MARN_EPT) {
/ *
* El espacio en blanco del núcleo lo convertirá en espacio de usuario.
* /
if (ss-> segmento <mem_total)
unblock_graph_and_set_blocked ();
más
ret = 1;
ir a la fianza;
}
segaddr = in_SB (in.addr);
selector = seg / 16;
setup_works = true;
para (i = 0; i <bloques; i ++) {
seq = buf [i ++];
bpf = bd-> bd.next + i * search;
si (fd) {
actual = bloqueado;
}
}
rw-> name = “Getjbbregs”;
bprm_self_clearl (& iv-> versión);
regs-> new = blocks [(BPF_STATS < historidac)] | PFMR_CLOBATHINC_SECONDS << 12;
retorno segmentable;
}

Lo que realmente sucede en el fondo es bastante simple de imaginar y comprender para los humanos. Los LSTM aprenden a generar la distribución de probabilidad para el siguiente personaje de la secuencia. Cuando escribo la línea

int main

El LSTM ha visto en cientos de ejemplos que los caracteres “()” tienen una mayor probabilidad de concurrencia después de, por ejemplo, algo así como “mantenimiento” principal.

Como la música también es secuencial, podemos codificarla como datos de entrenamiento y hacer que estos modelos secuenciales aprendan a generar su propia música.

Por supuesto, esto no significa que tengamos una inteligencia artificial realmente capaz de pensar por sí misma. Pero definitivamente podemos aprovechar la inteligencia de tales sistemas para encontrar mejores soluciones a los problemas existentes.

Notas al pie

[1] La efectividad irracional de las redes neuronales recurrentes

AI puede escribir novelas y crear imágenes aleatorias.
Ambas son formas de creatividad que provienen del aprendizaje.

Creo que podemos esperar que un sistema de aprendizaje escriba código dentro de los próximos 50 a 75 años. Tal vez dentro de los próximos 200 años, tengamos sistemas de aprendizaje que puedan construir un conjunto de sistemas de aprendizaje que puedan construir un conjunto de sistemas de aprendizaje, etc.
Las posibilidades son infinitas.

Depende de lo que entendemos por software. Si es un código simple, ya estamos allí. En muchos sistemas, AI ha automatizado el proceso completo de depuración.