¿Qué lenguaje usaría una IA para programarse a sí misma o su engendro?

¿Por qué tenemos código binario?
Porque es la forma más conveniente de representar un programa de una manera que una CPU pueda entender.

¿Por qué tenemos lenguajes de programación (incluido el ensamblaje)?
Porque es la forma más conveniente de representar un programa de una manera que un humano pueda entender.

Entonces, la verdadera pregunta es: ¿cuál es la representación más conveniente de un programa para otro programa?
Para mí, esa representación sería lo que hoy llamamos la ” representación intermedia ” (IR) de un programa en un compilador. Esto es básicamente una estructura de datos gráficos que representa la estructura del programa y que permite al compilador modificar fácilmente esa estructura. Luego compila ese IR en código máquina.

Creo que un programa de IA tendría un simple compilador de IR escrito en un lenguaje de programación ya existente, ya sea por el propio programa de IA o por un humano externo.
Este compilador de IR se escribiría en el propio IR para ser “inicializado”, a partir de ese momento, el compilador de IR podría traducir programas creados por la IA, y la IA podría mejorar fácilmente la representación de IR.

Piénselo de esta manera: las personas no crean programas en un lenguaje de programación, crean la estructura en su cabeza y luego la traducen a un lenguaje que pueda ser entendido por una computadora . En el caso de un programa de IA, tal paso de traducción es inútil ya que ya hablan el “lenguaje interno” de la computadora: estructuras de datos.

Como dijo Franck, esto es programación genética, y como dijo Adrien, los algoritmos genéticos generalmente razonan sobre representaciones intermedias de programas, por cierto, como la mayoría de los compiladores.

Ignorando las variantes escritas, conozco dos clases principales de IR para GP. El más popular se basa en árboles, y el otro se basa en pilas.

Ahora, cuando tiene un programa que trabaja directamente en IR, probablemente desee una representación legible de ese IR para depurarlo (un poco como si prefiera leer el código de ensamblaje que el código de máquina). Resulta que hay lenguajes de programación que están muy cerca de estos dos IR y, por lo tanto, pueden usarse para representarlos y razonar sobre ellos: Lisp para árboles y Forth para pilas.

Acerca de la abstracción: de hecho, puede ser útil para GP, especialmente para evitar la redundancia, y se asemeja a los mecanismos de abstracción en los lenguajes mencionados anteriormente: funciones en Lisp y palabras en Forth. En IR basado en árbol, la introducción de este tipo de abstracción se puede implementar convirtiendo el árbol en un gráfico más general, mientras que la forma más directa de hacerlo en IR basado en pila es introducir nuevos operandos a través de un mecanismo extensible de tabla de búsqueda.

Tenga en cuenta que la introducción de este tipo de abstracción también hace que el algoritmo de evolución sea más complicado, ya que debe lidiar no con uno sino con varios fragmentos de programa. Hacerlo de manera eficiente es AFAIK todavía no es un problema resuelto.

Hay una organización de código abierto en los campos de Strong AI que está haciendo lo mismo. Tienen un motor llamado MOSES (una modificación de la programación genética). MOSES usa GA en dos niveles, uno para generar un programa y otro para ajustar diferentes parámetros de un programa. Supongo que probablemente deberías echar un vistazo a su algoritmo para tener una mejor idea. [1] Búsqueda evolutiva semántica de optimización meta

More Interesting

¿Puedes citar un ejemplo de un concepto o principio intelectual que no podemos entender completamente y que solo los seres con mayor inteligencia pueden?

¿El aumento de los robots sexuales impulsados ​​por IA conducirá a una subpoblación mundial masiva?

¿La IA podrá pensar más allá de nuestra comprensión del universo?

¿Cómo funcionaría un robot que come contaminación?

¿Cuáles son las diferencias entre IA, aprendizaje automático, aprendizaje profundo y red neuronal?

¿Por qué todos están interesados ​​en las redes neuronales profundas ahora cuando otros sistemas de inteligencia artificial como las máquinas LISP fueron promocionados y no pudieron obtener una gran adopción en el pasado?

¿Es posible desarrollar una máquina que entrene redes neuronales artificiales aprendiendo las características de buenos modelos de red entre los aprendices?

¿Por qué algunas personas están a favor de la IA?

¿La actual ola popular de preocupación por la IA y la robótica es simplemente un buen antropomorfismo, asignado a las máquinas?

¿Puede un robot pasar una prueba de Turing 'inversa'? ¿Por qué? ¿A qué proporción de éxito?

¿Es posible emular el patrón de habla de una persona a partir de una oración / párrafo simple como se muestra en Misión Imposible 3?

¿Por qué las redes neuronales más profundas son mejores que las redes más amplias?

¿Es peligroso un robot inteligente?

Suponiendo que la IA se hará cargo de la mayoría de los trabajos en el futuro, ¿hay algo que los humanos puedan comenzar a aprender que pueda prepararlos mejor?

Como aprender machine learning en casa