Comprobar si una computadora puede realmente “pensar” como un ser humano es bastante complejo, ya que actualmente ni siquiera está bien definido cómo pensamos nosotros. Sin embargo, el test de Turing es la forma más clásica que existe de verificar si una máquina es un ente digno de ser calificado como “inteligente”.
Historia del Test de Turing
El creador de la prueba fue el inglés Alan Turing (1912-1954), pionero de la computación, quien postuló que un equipo informático tiene inteligencia genuina si acaso puede emular las respuestas que tendría una persona en un contexto determinado.
Él introdujo esta prueba para un artículo universitario en 1950, en parte gracias a la cual existen los programas de inteligencia artificial (como robots de conversación o asistentes virtuales).
Dicho texto empezaba con una pregunta muy clara: ¿pueden pensar las máquinas? Hay que recalcar que planteó esta cuestión cuando las computadoras estaban prácticamente en su prehistoria, y el concepto de “inteligencia artificial”era puramente ciencia ficción.
Teoría de Turing
La prueba es básicamente un juego de imitación, donde una máquina debe hacerse pasar por un humano. Originariamente, consta de una persona (llamada “juez”) preguntando cosas, que deben ser respondidas por escrito tanto por otra persona como también por una computadora. Las preguntas tratan sobre un tema en concreto, y se usa un formato y contexto determinado. La prueba puede repetirse todas las veces deseadas.
Luego de haberlas hecho, el/la juez/a debe dictaminar quién de los dos que contestaba era una persona y quién una máquina. Si falla más de la mitad de las veces en su estimación, se puede considerar que la computadora posee inteligencia artificial porque ha sabido adoptar el mismo tipo de respuestas que un humano al punto tal de confundir a un/a juez/a.
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 Test 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.
Programas de refutación: Eliza. Variantes: la “habitación china”.
El Test 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 del de Turing, que se ha denominado “habitación china”, argumentando que el Test 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 del Test de Turing, incluidas las expuestas anteriormente.
Fortalezas de la prueba
Una de las grandes ventajas del Test de Turing radica en que es sencilla. Si se parte de la base que aún no existe una definición unívoca y clara del significado verdadero de lo que es la inteligencia o el pensamiento, aún así brinda una aproximación mensurable a estas cuestiones filosóficas tan profundas e imprecisas.
Otra fortaleza está en su formato, que posibilita al/a la investigador/a inquirir a la máquina sobre multiplicidad de temas que deben ser entendidos. Por ende, la computadora debe dominar plenamente la comunicación, el razonamiento, la acumulación de información y el aprendizaje. Inclusive, se puede extender su uso hacia formatos audiovisuales donde medien videos (en lugar de solamente texto) o sea necesario transferir objetos a través de una compuerta.
Finalmente, otra ventaja yace en que puede hacerse foco en la inteligencia emocional y la empatía. Esto es porque la prueba, ya desde que fue creada por Alan Turing, no remite necesaria y únicamente a datos duros, sino que también puede apelar a la comprensión del comportamiento humano (por ejemplo, mediante alusiones a frases poéticas o a clasificaciones basadas en estereotipos y sensibilidades estéticos).
Test 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.
Breve diálogo y errores
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:
- un error aleatorio a nivel de hardware (es decir, un evento no reproducible)
- un error involuntario de hardware o de programación que (repetidamente) provoca errores aritméticos;
- 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;
- 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
- 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.
Debilidades del Test de Turing
Si bien se la usa frecuentemente para medir cuán “inteligente” es una computadora, en realidad no sirve tanto a ese fin sino más bien para saber si esa computadora puede imitar el comportamiento humano. Y, como puede presuponerse, no siempre una forma humana de hacer las cosas es necesariamente inteligente (y viceversa), por lo que la prueba es susceptible de fallar a la hora de entrar en terrenos de este estilo.
Concretamente, ciertos errores o vicios actitudinales que cometen las personas (como sentirse herido emocionalmente, querer mentir al narrar algo o cometer errores de ortografía y/o gramática) deberían poder ser también emulados por la máquina que está siendo sometida a preguntas. Y, a su vez, también hay fenómenos extremadamente complejos de pensar (como cálculos matemáticos dificilísimos o la creación de ideas muy originales u ocurrentes) que no podrían considerarse propios de un humano.
Se centra en lo conductista
Por otro lado, la prueba no permite distinguir realmente entre lo que es algo inteligente y lo que solamente está simulando serlo por mera imitación, por lo que es una examinación que se centra en aspectos puramente conductistas y no posibilita conocer si la máquina tiene verdadera intencionalidad para decir lo que dice.
También cabe resaltar que los jueces interrogadores son humanos que, como tales, pueden pecar de ingenuos y verse engañados por el hecho de recibir mensajes que parecen de personas, pero solamente presentan semejanzas superficiales. Esto se acentúa si se toma en cuenta que mucha gente puede atribuirle valores de personas a objetos inanimados. A su vez, los jueces suelen aguardar recibir contestaciones humanas arquetípicas, lo que facilita que la suplantación de identidad por parte de computadoras con un código de acción bien programado.
Por otro lado, algunos expertos acusan al Test de Turing de ser impracticable y desviar el foco de la atención hacia temas presumiblemente más relevantes. Primeramente, porque hay maneras más sencillas de poner a prueba un programa, más ligadas a objetivos más puntuales y simples para las máquinas, como la automatización de tareas o el reconocimiento de objetos. Para examinar si el programa puede hacer ciertas acciones, simplemente se le da la orden de que la haga (por ejemplo, un avión cumple con su cometido si sencillamente vuela, y no si lo hace tan bien como un pájaro real). Y, por otro lado, el afán de crear máquinas capaces de hacerse pasar por personas no es algo tan útil para la ciencia.
Variantes del Test de Turing
CAPTCHA
Es una prueba de Turing en reversa, donde la máquina debe decidir si está interactuando con un humano o con otra máquina a los fines de no permitir que un robot programado para fines maliciosos abuse de la capacidad de un sitio de internet.
Test de Turing total
Se trata de un examen que le adiciona elementos al esquema clásico. Puntualmente, se le puede exigir a la computadora que tenga percepción visual y la capacidad de manipular utensilios.
Prueba de la Señal de Inteligencia Mínima
Haciendo gala de una gran abstracción, solo se permiten preguntas cerradas para así centrarse en la habilidad de pensar.
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.
Algoritmos para la generación de números “no aleatorios”
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.
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.
- 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.
Artículo publicado originalmente en 15 Nov 2021