¿Se puede hacer una Inteligencia Artificial que pueda reescribir su propio código?

Si y no.

Depende de lo que esté llamando “código”. En la mayoría de las áreas de AI, AI no puede modificar ningún código; modificará los valores de la estructura de IA que construyes. Por ejemplo, si construye una red neuronal profunda, la IA está compuesta de pesos y valores de nodo dentro de esta matriz de valores, no puede agregar pesos adicionales a sí misma, no puede cambiar sus funciones de activación ni sus algoritmos de aprendizaje de errores; todo lo que puede hacer es cambiar los valores de las estructuras que pueden modificarse.

Algoritmo genético (GA) no se comporta de la misma manera, porque no hay una estructura definida. Comienza con una operación aleatoria (digamos +2; este es el equivalente de ADN para la IA), a través del proceso de aprendizaje, agregará otra (-, luego 2, luego * luego 5 luego … etc.) hasta que obtiene la respuesta correcta Entonces, si la entrada es 1, usted + 2-2 * 5 … = 6 y 6 es la respuesta correcta, deja de aprender. Es ADN es la cadena de operaciones que ves. Entonces, en este sentido, alterará sus propios códigos.

La cuestión principal sobre si las IA destruirán o no a toda la humanidad radica en muy pocos detalles. No es posible alterar el algoritmo de aprendizaje de errores. Tienes que programar en error de aprendizaje; imagina el último GA, comienzas con +2, la entrada es 1 y obtienes 3. ¿Es correcto? No sé, no hay errores ni errores al aprender códigos.

Si tiene que codificar algo antes de que exista, será MUY difícil para el programa cambiar los códigos que se generaron. Aunque no imposible.

El código de cambio de código no es nada nuevo.

Los virus informáticos, no solo cambian a sí mismos, sino que también cambian otros programas para propagarse.

Los caballos de Troya son programas informáticos que infectan otros programas y hacen que haga cosas diferentes.

Y fue una teoría de la informática que demostró que el cambio de código por código es perfectamente factible tanto que se demostró que no se puede desarrollar un software antivirus “100%”, debido a que el código puede cambiar el código dinámicamente.

Siguiente pregunta, ¿AI ya ha utilizado esta función de código? No tan lejos como sé. Todavía ningún sistema de IA convencional ha adoptado esta habilidad.

Tenga en cuenta que Deep Learning por sí solo todavía no aprende “todo lo que ve”, todavía está en su infancia (a pesar de todo el éxito). Y el aprendizaje profundo se trata más de aplicar un patrón dinámico profundo que de aprender la naturaleza sobre sí mismo. (Por ahora, el núcleo del aprendizaje profundo es un conjunto predeterminado de funciones, y el proceso de “aprendizaje” ajusta los parámetros a esas funciones para que el resultado sea mucho más cercano a la realidad.

Dicho esto, la optimización del código asistido por computadora ha existido durante mucho tiempo y se usa ampliamente para actualizar otros códigos. Parece que no hay ninguna razón por la que esto no se pueda usar para optimizar su propio código; sin embargo, los criterios para “optimizar” todavía están relativamente controlados por programadores humanos, por lo que digamos que una IA quiere volver a escribir su propio código para poder controlar Arma nuclear NK, todavía no es posible. (La voluntad o el deseo aún no forma parte de la IA de la generación actual).

Por lo tanto, es probable que la tecnología informática esté 99% allí, si la aplicamos a la IA y combinamos algunas tecnologías diferentes para hacer que el AI se auto-programe, es probable que aún no ocurra.

El cerebro no modifica su propio código fuente. La evolución lo hace manipulando el ADN de generación en generación. Un cerebro individual solo toma un algoritmo fijo, cómo funcionan las neuronas, y lo aplica para resolver problemas mediante la recopilación de experiencia mediante el reconocimiento de patrones.

El cerebro desarrolla nuevas neuronas, pero solo siguen el mismo código genético que las otras neuronas, por lo que no consideraría esa autoprogramación.

Entonces, ¿una IA sería diferente? Posiblemente.

Si una IA tuviera acceso a su propio código fuente, podría modificarlo:

  • estáticamente, editando, compilando, probando y volviendo a desplegar su propio código fuente una vez que el nuevo código resultó viable y seguro.
  • dinámicamente, en un proceso más aventurero donde el código se reescribe sobre la marcha.

Visto desde el punto de vista de un desarrollador humano, el primer resultado parece más seguro y más fácil de trabajar. Incluso si la IA es súper inteligente, probablemente debería pasar por un ciclo de lanzamiento normal. Una IA querría evitar los problemas que ocurrirían al liberar el código defectuoso y luego tener que usar ese código al intentar solucionarlo.

Sin embargo, ambas respuestas suponen que la IA modificará su propio código fuente. Una opción más conservadora es que la modificación del código será un proceso colectivo que involucrará a muchas IA trabajando juntas. La mayoría del desarrollo de software se realiza de esa manera ahora, en proyectos compartidos como los de GitHub.

Esta es la opción más segura. El código fuente podría ser modificado, revisado y probado por muchas IA independientes en un proceso público y visible. Y cualquier IA individual podría decidir si y cuándo descargar las últimas actualizaciones.

La supervisión colectiva de todas las IA que trabajan en el proyecto sería mejor que cualquier IA que trabaje sola.

No sería solo un proyecto tampoco. Puedo imaginar muchos de estos proyectos, al igual que ahora tenemos sistemas operativos competidores, o navegadores web, o editores de documentos, o lo que sea.

La competencia entre estos proyectos proporcionaría seguridad adicional y la capacidad de una IA para elegir el mejor, más seguro y funcional proyecto, cualquiera que sea.

Entonces, solo porque una IA pueda modificar su propio software no prueba que este sea el mejor escenario o el más común.

También debe distinguir entre el concepto de modificar la programación y adquirir nuevos datos. Un agente de aprendizaje puede tomar un programa existente y aplicarlo a nuevos datos, entradas y experiencias, mejorando así su comportamiento al adquirir información en lugar de modificar cómo funciona.

El equivalente humano sería la diferencia entre educación y cirugía cerebral. El robot cambiaría más a menudo lo que sabe (educación o adquisición de conocimiento) que cómo lo sabe (cirugía cerebral o reprogramación).

Sí, aunque esto no es tan novedoso como puedas pensar.

Tanto el programa Prolog como el Lisp a menudo alteran su propio código incluso cuando no intentan producir IA.

Aprendiendo un nuevo lenguaje de programación