En el desafío Openai Codex. Obtuve una puntuación aceptable, saque 53 porciento por debajo de la media del resto de personas que participaron en el concurso y bueno, me gane una camisa.
El desafío consistió en una serie de preguntas, de problemas de programación, por ejemplo una pregunta sobre algoritmos de ordenamientos, de búsqueda, de clasificación. Y hay la opción de un editor de texto donde uno puede escribir el código pero también existe la opción de pedir asistencia de la inteligencia artificial llamada Codex.
Codex es un asistente de inteligencia artificial de que utiliza una tecnología nueva llamada transformers.
Mi experiencia en este ejercicio fue un poco como alucinante, es muy bueno, porque la mayoría de las veces acertó lo que uno quería basándose en la descripción del problema. Adicional a esto cada vez que uno lo usa el vuelve a interpretar y a escribir código nuevo, pero algunas veces el código que escribe simplemente no funcionaba, nada grave, sólo era revisarlo y hacer alguna pequeña corrección. Se debe tener en cuenta que este sistema, esta tecnología, es nueva.
Veamos un poco en qué consiste este tema de los transformers. El siguiente texto fue escrito por el modelo GPT-3 de Openai, una implementación masiva de un modelo con transformers....
"Cómo funcionan los transformadores Los transformadores fueron presentados originalmente por investigadores de Google en el artículo de NIPS de 2017, En un problema de traducción automática, por ejemplo, el transformador puede tomar una secuencia de palabras en inglés y predecir iterativamente la siguiente palabra francesa en la traducción adecuada hasta que la oración se haya traducido por completo. Los transformadores se basan en una red de neuronas recurrentes, que es una red neural que puede ser ejecutada repetidamente sobre el mismo conjunto de datos. Esto significa que los datos no tienen por qué ser procesados desde el principio cada vez que se ejecuta la red. En lugar de esto, las entradas previas a la red son utilizadas como entrada para el siguiente paso del procesamiento y así sucesivamente. El resultado final es una representación sintética de los datos originales. En este caso, la red consistía en dos partes: un encoder y un decodificador. El encoder toma como entrada algunas palabras en inglés y produce como salida la oración francesa equivalente (si existiera). La función del decodificador es convertir esta secuencia francesa a su traducción inglesa equivalente (si existiera). Entonces, cuando se presentan nuevos datos en francés, podemos usar el encoder para predecir las palabras inglesas correctas y luego usar el decodificador para traducirlas a su versión francesa correcta (si existiera). En este caso, ambos componentes hicieron uso de redes recurrentes conectadas bidireccionalmente; sin embargo, no hay ninguna razón por la cual ambos componentes deban ser necesariamente estructurados del mismo modo o incluso dependientes entre sí. Por lo tanto, los transformadores pueden emplearse para resolver muchos otros problemas diferentes . La mejor manera de comprender cómo funciona realmente este tipo de redes recurrentes es ver primero cómo funciona un circuit neural simple . Un circuit neural simple consta únicamente de dos neuronas activadas recíprocamente por sus entradas . Estándares neuronas activadas recíprocamente son tan simples comenzando con dos neuronas , pertenecientes a una red neural , que se activan recíprocamente en respuesta a las entradas de datos . En este caso, la entrada es un número real y el valor de salida es también un número real. Un circuit neural simple consta únicamente de dos neuronas activadas recíprocamente por sus entradas . Estándares neuronas activadas recíprocamente son tan simples comenzando con dos neuronas , pertenecientes a una red neural , que se activan recíprocamente en respuesta a las entradas de datos . En este caso, la entrada es un número real y el valor de salida es también un número real. El encoder consistía en dos partes: el encodificador y el decodificador. El encodificador toma como entrada algunas palabras en inglés y produce como salida la oración francesa equivalente (si existiera). La función del decodificador es convertir esta secuencia francesa a su traducción inglesa equivalente (si existiera). Entonces, cuando se presentan nuevos datos en francés, podemos usar el encoder para predecir las palabras inglesas correctas y luego usar el decodificador para traducirlas a su versión francesa correcta (si existiera). En este caso, ambos componentes hicieron uso de redes recurrentes conectadas bidireccionalmente; sin embargo, no hay ninguna razón por la cual ambos componentes deban ser necesariamente estructurados del mismo modo o incluso dependientes entre sí. Por lo tanto, los transformadores pueden emplearse para resolver muchos otros problemas diferentes . En este artículo vamos a explorar cómo funcionan los transformadores utilizando comentarios sobre cómo funciona nuestro propio proyectito titulado “Babel”. Lo primero que vamos a hacer es ver cómo funciona el encoder. La función del encodificador es tomar una palabra inglesa como entrada y producir como salida la oración francesa equivalente, si existiera (si no existiera, entonces la oración francesa sería la misma que la palabra inglesa). En nuestro proyecto “Babel”, estamos utilizando un circuit neural simple para lograr esto. El circuit neural simple consiste en dos neuronas activadas recíprocamente por sus entradas . Estándares neuronas activadas recíprocamente son tan simples comenzando con dos neuronas , pertenecientes a una red neural , que se activan recíprocamente en respuesta a las entradas de datos . En este caso, la entrada es un número real y el valor de salida es también un número real. El decodificador consistía en dos partes: el decodificador y el traductor. El decodificador toma como entrada algunas palabras francesas y produce como salida su traducción al inglés (si existiera). La función del traductor es convertir esta secuencia francesa a su traducción inglesa equivalente (si existiera). Entonces, cuando se presentan nuevos datos en francés, podemos usar el encoder para predecir las palabras inglesas correctas y luego usar el decodificador para traducirlas a su versión francesa correcta (si existiera). En este caso, ambos componentes hicieron uso de redes recurrentes conectadas bidireccionalmente; sin embargo, no hay ninguna razón por la cual ambos componentes deban ser necesariamente estructurados del mismo modo o incluso dependientes entre sí. Por lo tanto, los transformadores pueden emplearse para resolver muchos otros problemas diferentes."
Como pueden ver es impresionante la forma en que puede componer textos largos en varios idiomas, pues esto lo puede hacer tanto en ingles como español. Acá hay partes que parecieran muletillas en su repetición en el texto, pero son cosas que se pueden corregir con ciertos parámetros del modelo.
Así mismo existe una versión especializada y entrenada en lenguajes de programación, Codex, el cual se uso en este desafío y ahorro muchísimo tiempo para resolver los problemas presentados.