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
- ¿La IA va a destruir el futuro? ¿Por qué?
- Cómo iniciarse en la robótica humanoide y la inteligencia artificial.
- ¿Qué sucederá cuando los empleados con inteligencia artificial sean más inteligentes que los humanos?
- ¿Puedo construir mi propio sistema de inteligencia artificial?
- ¿Cuáles son algunas de las aplicaciones de la teoría de modelos en informática, especialmente en inteligencia artificial?
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