Análisis en profundidad

Test de Turing: qué es, cómo funciona y qué robots lo superan

“Si haces las cosas bien, nadie sospechará que realmente has hecho algo. [Dios]”.
(Futurama – episodio “Bender y Dios”, Matt Groening y David X. Cohen)
La prueba de Turing es bien conocida y ha sido abordada desde su formulación en todas las modalidades. También ha sido refutado. Y podríamos tratarlo de muchas maneras, pero en esta sección trataremos de contarlo para los profanos. Vamos a tratarlo aquí en pocas palabras, y luego intentaremos relatar sus implicaciones no sólo para la inteligencia artificial, sino también para la filosofía, y la ética.

15 Nov 2021

Paolo Maria Innocenzi

Cyberscurity Specialist

test de turing

¿Qué es el Test de Turing: “el juego de la imitación”?

Se originó como un criterio para determinar si una máquina es capaz de pensar como un ser humano. Este criterio fue sugerido por Alan Turing en su artículo “Computing machinery and intelligence”, publicado en 1950 en la revista Mind. En el artículo, Turing se basa en un juego, llamado “juego de imitación”, con tres participantes: Bob, Alice y una tercera persona, Charlie, que se mantiene separada de los otros dos y sólo puede establecer mediante una serie de preguntas cuál es el hombre y cuál es la mujer. Por su parte, Bob y Alice también tienen tareas: Se supone que Bob engaña a Charlie para que haga una identificación errónea, mientras que Alice debe ayudarlo a mantener una identificación correcta. Como hay que privar a Charlie de pistas para “adivinar” (como el análisis de la escritura o de la voz), las respuestas a las preguntas de Charlie tienen que ser mecanografiadas o transmitidas de otra manera impersonal o anónima.

Es tan sencillo como un chat telefónico en grupo entre amigos, en el que tienes que averiguar si la prima de tu amiga le ha quitado el teléfono y está coqueteando contigo con la ilusión de que tiene una aventura: ¿seríamos capaces de detectar el engaño? Pensemos en ello: estaríamos demasiado ocupados en mantener viva la conversación como para hacer de repente preguntas indecorosas sobre la autenticidad del interlocutor. Tendríamos que estar constantemente dispuestos a interrumpir la “magia” del coqueteo con una repentina pregunta de “seguimiento” del tipo: “Perdona que te pregunte, pero ¿recuerdas lo que te dije anteayer cuando me preguntaste si quería comprar una computadora nueva? De la respuesta deberíamos poder deducir si la persona que está al otro lado del Whatsapp está realmente “imitando” el comportamiento de su prima, o es realmente ella. Evidentemente -al igual que en el test de Turing- no tendría sentido hacer afirmaciones rotundas como “¡soy yo de verdad, Alice!”, porque cualquiera podría argumentar con fuerza una mentira, sin tener que demostrarla.

La prueba de Turing también se basa en la suposición de que alguien o algo (una máquina o un algoritmo) sustituye a Bob de repente y sin que nadie lo sepa. Si el porcentaje de veces que Charlie adivina quién es el hombre y quién es la mujer es similar antes y después de la sustitución de Bob por la máquina, entonces el algoritmo debería considerarse inteligente, ya que -en esta situación- sería indistinguible de un ser humano.

Programas de refutación: Eliza. Variantes: la “habitación china”.

La prueba de Turing ha sido reformulada a lo largo de los años. Las razones van desde la imprecisión de la formulación original hasta la aparición de nuevos problemas relacionados con la definición de una máquina inteligente. A veces, programas sencillos, como Eliza (un programa que emula a un terapeuta rogeriano), han obligado a reformular los criterios de las pruebas porque eran inadecuados o se satisfacían con demasiada facilidad con programas que claramente no pensaban.

El filósofo John Searle propuso una modificación de la prueba de Turing, que se ha denominado “habitación china”, argumentando que la prueba de Turing no es fiable como prueba suficiente de que una máquina o cualquier sistema informático es un sistema con verdadera inteligencia, haya pasado o no la prueba. A lo largo de los años se han planteado otras numerosas versiones de la prueba de Turing, incluidas las expuestas anteriormente.

Cómo funciona el test de Turing

En un episodio de los dibujos animados “Futurama” de Matt Groening y David X. Cohen, titulado “Bender y Dios”, se plantea la posibilidad de que “si haces las cosas bien, nadie sospechará que realmente hiciste algo” por parte de un Dios pangaláctico que habla directamente con el robot Bender, el mimado de la serie Futurama dotado de IA.

En esta viñeta, el “Juego de imitación” -como se llama en el título de la película homónima sobre Alan Turing, de quien toma el nombre el famoso test- se atribuye a Dios. Aunque esta prueba se atribuye generalmente a los temas relacionados con la inteligencia artificial, el tema se refiere más bien a la capacidad de ocultar una operación intencionada detrás de un hecho que debe parecer casual, tal como haría un Dios que, operando como demiurgo, quisiera permanecer oculto o al menos alejado de las miserias humanas a la manera de los dioses griegos. Básicamente, se trata de un juego de imitación, es decir, de representar un papel de forma tan natural que se hace creer al observador que los acontecimientos han seguido su curso de forma espontánea y sin intervención de terceros.

Esto es lo que se encuentra en el corazón de la prueba de Turing: no un desafío a una inteligencia artificial para que se comporte de forma humana, sino un desafío a un algoritmo para que se oculte mezclándose con la aleatoriedad hasta el punto de dar la impresión de no existir.

Prueba de Turing: preguntas, respuestas y errores

En el cuento “The Imitation Game” escrito por Andrew Hodges sobre Alan Turing (título original: “Story of an Enigma”) se muestra en su adaptación cinematográfica que, durante una velada en un bar, Turing tiene un destello de genialidad: la criptografía utilizada por la máquina Enigma empleada durante la Segunda Guerra Mundial para cifrar las órdenes dadas a los U-Bots por el mando alemán, no es casual.

Turing se obliga entonces a pensar que el campo infinito de palabras aleatorias a buscar debe reducirse a las más repetitivas, por ejemplo las que aparecen en los boletines meteorológicos nazis (se envía uno cada mañana a las 6, como primer mensaje del día, y todos empiezan y terminan con las mismas palabras). En la película (y en la historia) el grupo de Turing consigue, gracias a esta intuición, descifrar un mensaje que habla de un ataque inminente al convoy de alimentos de Carlisle.

A partir de ese momento, cuando la aleatoriedad de la clave de encriptación se vea seriamente cuestionada, será cuestión de instantes que se identifique la clave principal para desencriptar los mensajes.

En este caso concreto, se aborda la paradoja de que se puede simular la aleatoriedad perfecta no mediante la aleatoriedad verdadera (lanzamiento de dados, lanzamiento de monedas, extracción aleatoria de secuencias infinitas), sino adoptando un procedimiento que la genere de forma algorítmica, pero sin perder la imprevisibilidad.

Tras explicar la naturaleza de su prueba, Turing pasa a hacer algunas observaciones que, para el año en que escribe, son muy avanzadas. Para empezar, presenta un breve diálogo hipotético entre el interrogador y el interrogado.

  • Pregunta: Por favor, escríbame un soneto sobre el puente sobre el Forth [un puente sobre el fiordo en Forth, Escocia].
  • Respuesta: No te fíes de mí, nunca he sabido escribir poesía.
  • Pregunta: Suma 34957 a 70764
  • Respuesta: (Pausa de unos 30 segundos y luego la respuesta) 105621.
  • Pregunta: ¿Juega al ajedrez?
  • Respuesta: Sí.
  • Pregunta: Tengo el rey en e1 y ninguna otra pieza. Sólo tiene el rey en e3 y una torre en h8. Te toca moverte. ¿Qué movimiento haces?
  • Respuesta: (Tras una pausa de 15 segundos) Torre en h1, loco.

Pocos lectores se dan cuenta de que en el problema de aritmética no sólo hay un retraso excesivo, ¡sino que la respuesta es errónea! Esto estaría justificado si el contestador fuera un ser humano: un simple error de cálculo. Pero si la respuesta fuera una máquina, son posibles varias explicaciones. Aquí están algunos de ellos:

  1. un error aleatorio a nivel de hardware (es decir, un evento no reproducible)
  2. un error involuntario de hardware o de programación que (repetidamente) provoca errores aritméticos;
  3. un acto insertado deliberadamente por el programador (o fabricante) de la máquina para introducir errores aritméticos ocasionales con el fin de engañar a los interrogadores;
  4. un epifenómeno imprevisto: el programa tiene dificultades para pensar en términos abstractos y simplemente ha cometido un “auténtico error”, que puede no repetir la próxima vez
  5. una travesura de la propia máquina, que deliberadamente fastidia al que pregunta.

Si uno reflexiona sobre lo que Turing podría haber querido decir con este delicado toque, encontrará insinuadas casi todas las cuestiones filosóficas importantes relacionadas con la inteligencia artificial moderna.

Por qué un algoritmo no puede generar un resultado aleatorio

La (¿mala?) noticia es que no es posible disfrazar el comportamiento aleatorio mediante una computadora tradicional, y que hace falta mucho artificio sólo para conseguir que una máquina simule una secuencia de números aleatorios. Los números aleatorios son fundamentales para las políticas de encriptación que protegen nuestros correos electrónicos, contraseñas, pines de tarjetas de crédito. Pero como hemos dicho antes, los números aleatorios son importantes porque son la base de prácticamente todos los videojuegos, y esto es motivo más que suficiente para estudiar sus características, que pueden resultar interesantes. Como hemos explicado intuitivamente más arriba, un número aleatorio se genera, en cualquier ordenador moderno, utilizando cualquier lenguaje de programación (c/c++, python, MatLab por mencionar los más utilizados para el cálculo científico) dando como resultado una secuencia de números aleatorios generados por un algoritmo escrito en cualquier lenguaje particular.

De ahí la paradoja: dado que un algoritmo es un conjunto de instrucciones o pasos o acciones que deben realizarse para manipular un dato de entrada con el fin de obtener un dato de salida, y esta secuencia de pasos debe estar bien determinada, se deduce que un algoritmo no puede generar un resultado “al azar”. Además, la prerrogativa más importante de un algoritmo es que, dada la misma entrada, siempre se genera la misma salida. Así que -de la misma manera- si sigo dándole al algoritmo de la suma los sumandos “2” y “2”, entonces seguiré obteniendo la suma “4” tal como lo haría para generar una secuencia de números aleatorios. También para la secuencia de números aleatorios usaré un proceso para generarlos, y como este proceso algorítmico tampoco es aleatorio (la misma entrada genera la misma salida) no hace falta decir que no es posible generar números aleatorios usando una computadora normal o un lenguaje de programación.

Hoy en día, existen varios algoritmos para la generación de números “no aleatorios” pero que se comportan como tales, los llamados números pseudoaleatorios. Los algoritmos que se utilizan son de diferente complejidad y requieren distintos tiempos de ejecución. Cuanto mayor sea la complejidad, mayor será la aleatoriedad de los números generados. En realidad, lo que cambia entre los distintos métodos es el número de valores que hay que sacar antes de encontrar una repetición o patrón dentro de la secuencia. Los algoritmos más utilizados no generan realmente números aleatorios, y si lo hacen, no los generan indefinidamente. Es decir, generan una secuencia pseudoaleatoria con un número finito de términos, grande, por supuesto, pero no infinito. ¿Qué significa esto? Significa que si escudriñamos cuidadosamente la secuencia que se genera, tarde o temprano nuestra paciencia se verá recompensada porque a partir de cierto momento la secuencia comenzará a repetirse.

Intentemos generar números aleatorios imprevisibles escribiendo números aleatorios en el teclado de una computadora: por ejemplo, “0,2,9,4,8,2,3,7,1,0,9,3,8,4,7,….”, etc. Incluso si estos números se generaron de forma aleatoria, a la larga podría intentar adivinar si fueron generados por un ser humano o por una computadora, tal vez observando que faltan los dígitos “5” y “6”, podría deducir que estos números se escribieron con 4 dedos de la mano izquierda y 4 dedos de la mano derecha en la línea numérica del teclado “Qwerty”. Así, podría predecir que si volviera a teclear aleatoriamente números en la misma estructura: “9,8,7,4,1,0,9,2,7,4,1,2,9,4,7,8”, los dos dígitos “5” y “6” volverían a faltar, y ser capaz de hacer predicciones fiables sobre números aleatorios significaría básicamente haber anulado la aleatoriedad al menos dentro de ciertos límites de previsibilidad.

Sólo somos capaces de ser pseudo-aleatorios

Los LCG (generadores lineales congruentes) fueron los primeros en desarrollarse y siguen siendo los más utilizados, ya que ofrecen un buen compromiso entre velocidad y nivel de complejidad.

Fibonacci retardado, o generadores de Fibonacci retardado; más complejos que los anteriores con un periodo de antes de repetirse (algoritmo Twister).

Los dos algoritmos expuestos son generadores de números aleatorios que utilizan, redoble de tambores, una ecuación para generar la secuencia de números aleatorios.

LCG

En el caso de los generadores LCG, la función implementada es

donde a, c y m son números elegidos para generar la secuencia. La operación (mod m) indica el resto de la división entre el primer término entre paréntesis y m. Para esta secuencia, el período máximo antes de una repetición es igual al valor de m; en la práctica, esta condición sólo se da para elecciones particulares de los parámetros a, c y m y, por tanto, siempre es menor. Este algoritmo, entre otras muchas aplicaciones, es utilizado por la API aleatoria de java, por gcc y por Borland para su distribución de C/C++ y Pascal.

Fibonacci retardado

El segundo algoritmo, el de Fibonacci retardado, tiene una ecuación similar a la utilizada para generar una secuencia de Fibonacci, de la que toma su nombre:

en este caso * indica cualquier operación binaria. Si el operador es la multiplicación, el algoritmo se llama multiplicativo o retardado. También en este caso el algoritmo tiene un periodo que depende de las elecciones particulares de k y m. En particular para este tipo de algoritmo el uso de la suma como operación binaria aumenta el periodo comparado con el uso de la multiplicación.

Cómo funciona un algoritmo generador de números pseudoaleatorios

Los algoritmos presentados aquí, tal y como están definidos, no pueden utilizarse para la criptografía porque son intrínsecamente débiles. Para los fines en los que la seguridad es un factor determinante, hay que utilizar algoritmos de otro tipo, “más seguros” y “más aleatorios” -si podemos llamarlos así-. Entre los algoritmos utilizados para la criptografía, uno de los más comunes se llama Fortuna. Este algoritmo es en realidad una familia de P.R.N.G. (Pseudo Random Number Generators), ya que algunos de sus parámetros pueden ser modificados, dando lugar a diferentes configuraciones. El nombre del algoritmo, Fortuna, es una clara referencia a la diosa del azar en la mitología griega, al menos según sus creadores Bruce Schneier y Niels Ferguson.

¿Cómo funciona el algoritmo? Consta de tres partes.

  • un generador de números que al ser inicializado con una semilla generará una secuencia de números aleatorios;
  • un acumulador de entropía que recoge los datos de varios dispositivos (ratón, teclado, etc.) y los acumula, estos datos se utilizan para renovar la semilla del generador;
  • un archivo semilla que guarda algunos de los datos aleatorios utilizados por el generador para inicializarlo al iniciar el PC cuando el acumulador de entropía aún no está lleno.

El algoritmo obtenido de este modo es, por tanto, mucho más seguro, ya que se basa en una cantidad de datos generalmente muy grande y que puede considerarse más o menos aleatoria (piénsese en los movimientos del ratón en la pantalla que se utilizan para generar las secuencias).

Pruebas de Turing y algoritmos aleatorios

Hemos visto que incluso el mero Juego de imitación de la aleatoriedad es prácticamente imposible, los algoritmos aleatorios no existen y lo que llamamos algoritmos aleatorios no son realmente aleatorios. Se generan mediante un algoritmo que, como tal, no es aleatorio por su propia definición. Como resultado, las máquinas y sus algoritmos generan secuencias de números pseudoaleatorios, secuencias de números que se definen como predecibles y tienen las propiedades de los números aleatorios si se toman no demasiados a la vez (como máximo un número igual al periodo) y se utilizan para aplicaciones cotidianas, incluidos los videojuegos. Hay algunos algoritmos que tratan de complicar las cosas, toman datos aleatorios de los periféricos (ratón, teclado, etc.) y los utilizan para generar más secuencias aleatorias y, por lo tanto, pueden utilizarse para la criptografía y la seguridad informática.

Pero, ¿qué sentido tiene disfrazar la aleatoriedad imitando el comportamiento mediante un algoritmo? Al final del trabajo de Turing en la máquina Enigma para descifrar los códigos de transmisión alemanes durante la Segunda Guerra Mundial, surgió un dilema. Si se hubiera realizado una intervención masiva, descifrando automáticamente cada mensaje gracias al sistema establecido por el grupo de Alan Turing, se habría mostrado esencialmente un procedimiento algorítmico perfecto, gracias al cual los mensajes del enemigo habrían dejado de ser un misterio, y esto habría significado que los alemanes, al darse cuenta de que se había encontrado una forma de descifrar sus mensajes, habrían vuelto a cambiar la clave de cifrado, esta vez de una forma aún más profunda e inexplicable.

A continuación, se vuelve a un “Juego de imitación” de la aleatoriedad, tratando de “dosificar”, “optimizar” o incluso “confundir” las intervenciones, para minimizar los daños y asegurarse de que los alemanes no entienden que se ha encontrado una forma de descifrar sus mensajes.

Un plan de este tipo, lleno de errores y fracasos para frustrar las misiones navales de hundimiento de los U-Bots, habría tenido todavía un alto costo humano, pero habría “simulado” una aleatoriedad de intervención que no habría puesto en duda -si estaba bien organizado- que los fracasos de algunas misiones alemanas se debían al seguimiento de las transmisiones.

El dilema moral planteado al equipo de matemáticos, aunque casi insostenible, finalmente tiene éxito. Una vez terminada la guerra, los protagonistas y toda la nación lo celebran con gran júbilo, y varios años después de la misión Enigma y del fin del conflicto mundial, se calcula que, si no se hubieran descifrado los mensajes Enigma, la guerra podría haber durado dos años más, causando 14 millones de víctimas adicionales.

Cabe destacar que la información sobre el trabajo de Turing con sus colegas se mantuvo en secreto durante los siguientes 50 años.

Cómo una máquina pasó el test de Turing: la historia de Eugene Gootsman

¿Ha conseguido alguna vez una máquina superar el test de Turing? La respuesta es discordante. El caso más emblemático es el de Eugene Goostman, un chatterbot diseñado por un grupo de programadores rusos (Vladimir Veselov, Eugene Demchenko y Sergey Ulasen) en 2001, programado para actuar y responder como un adolescente ucraniano.

Desde su creación, Goostman ha participado en numerosas pruebas Turing, impresionando a los jueces. Quedó en segundo lugar en el Premio Loebner, primero en Milton Keynes, el mayor evento jamás celebrado para realizar una prueba Turing, convenciendo al 29% de los jueces de que era un humano. De nuevo, en 2014, el porcentaje de jueces a los que Gootsman consiguió engañar ascendió al 33%. Turing predijo que en el año 2000 los ordenadores serían capaces de convencer al 30% de los humanos, cuando se les pusiera a prueba, tras una conversación de cinco minutos. Sin embargo, no todo el mundo está de acuerdo con la validez de estos resultados. De hecho, se considera que la prueba ha sido superada si el examinador se equivoca con la misma frecuencia tanto cuando tiene que distinguir una computadora de un ser humano como cuando tiene que distinguir un hombre de una mujer.

De Turing a Asimov, las tres leyes de la robótica

La brillante intuición de Turing sirvió de base al pensamiento de otro gran visionario de la inteligencia artificial, el escritor Isaac Asimov.  Asustado por el avance de los robots, Asimov inventó las tres leyes de la robótica, precursoras de la roboética o ética de la robótica. Se trata de reglas que rigen las relaciones entre los humanos y los robots, o mejor dicho, las diferentes formas de inteligencia artificial con las que ya convivimos.

Las tres leyes de la robótica de Asimov:

1° – Un robot no puede dañar a un ser humano, ni puede permitir que un ser humano sea dañado por su falta de actuación.

  1. Un robot debe obedecer las órdenes dadas por los seres humanos, siempre que esas órdenes no contradigan la Primera Ley.

3° – Un robot debe proteger su propia existencia, siempre que salvaguardarla no entre en conflicto con la Primera o Segunda Ley.

@RESERVADOS TODOS LOS DERECHOS
I
Paolo Maria Innocenzi
Cyberscurity Specialist

Cybersecurity Specialist

Temas principales

Especificaciones

I
inteligencia artificial
R
robot
R
robotica