Ir al contenido principal

Replicantes, Turing y probabilidades

Hoy, con motivo de mi primera clase de Inteligencia Artificial, dejo parte de mi trabajo realizado para la asignatura "The Beauty of Mathematics".

Mi trabajo consistía en relacionar cine y matemáticas, con la pretensión de reflejar cómo de verdad a las personas les interesan, les gustan y se ven fascinados ante las matemáticas, aunque sea desde una perspectiva más artística que científica (si tienes interes lo puedes descargar aquí)

¿Alguna vez han visto la pelicula de Blade Runner??

¿Se han parado a juzgar por ustedes mismos a los personajes que aparecen como replicantes o humanos?

¿Para que servían las pruebas que les hacían?

Cualquier persona diría rapidamente: "Para saber si son máquinas o no lo son".

Correcto, pero como todo test: ¿Cual es su probabilidad de fallo?.

Esta película muestra muy bien esta situación:

Tras una fuga de unos peligrosos humanoides, llamados replicantes, un agente se encargará de buscarlos y someterlos a un test llamado "Test de empatía de Voigt-Kampff".

Este, valora las respuestas emocionales de los sospechosos.
Se trata en realidad de una versión del conocido test de Turing.

Supongamos que Rick aplica el test a 1000 individuos.
Posteriormente, la Rosen Asociation, revelará la verdadera naturaleza de los individuos estudiados, y se obtiene la siguiente tabla* que indica el número de individuos clasificados correctamente o no:
HumanosAndroides
+7282
-69318
Total700300
*Nota: Los datos anteriores no aparecen en la obra.

Y como antes comentamos, ¿cuál es la fiabilidad de dicho test?. Tengamos en cuenta que si se clasifica a un sujeto como replicante o humano, también existe la probabilidad de fallar en su clasificación como tal.

Así, interesa conocer estas probabilidades a posteriori:
  1. Probabilidad del falso positivo
    • Probabilidad de que un individuo sea humano, sabiendo que el test lo ha detectado como replicante. En tal situación, se produciría el asesinato de una persona
  2. Probabilidad del falso negativo
    • Probabilidad de que un individuo sea replicante, sabiendo que el test lo ha detectado como humano. En tal caso quedaría libre un replicante.
  3. Sensibilidad del test
    • Probabilidad de clasificar correctamente a un replicante.
  4. Especificidad del test
    • Probabilidad de clasificar correctamente a un humano.

Probabilidades que una profesora de matemáticas de la universidad Autónoma de
Barcelona, Rosario Delgado de la Torre, se ha encargado de averiguar (aquí para ver el estudio completo)

Debido a que el test de Turing se aplica de una manera diferente debido a la introducción de un factor humano, ella ha usado la fórmula de Bayes para deducir sus resultados (datos basados en la tabla anterior, las siguientes probabilidades no existen en la obra):

"Aproximadamente, es 94 veces más probable que el test dé Positivo en
androides que en humanos, y es 16,5 veces más probable que dé Negativo
en humanos que en androides, respectivamente."


Así que ya lo sabéis, debeis ser lo más sociales posibles para desarrollar vuestra empatía, vaya a ser que venga Harrison Ford y te declare como replicante.

Comentarios

Entradas populares de este blog

Join o producto cartesiano de dos tablas en EXCEL 2007

Hace unos dias inicie mi ocupacion como becario de informatica en la facultad de humanidades y ciencias de la educacion de la UJAEN. Y como no, no han tardado en surgir los problemas. Supongamos que tenemos dos tablas, y queremos hacer una tabla que tenga datos de estas dos tablas, segun un criterio , y es que solo pueden aparecer ciertas filas, mas exactamente aquellas donde coincida cierto campo, en este ejemplo, el codigo de la asignatura. Si queremos realizar el join o producto cartesiano tal y como lo hariamos en una base de datos, parece ser que si no estamos trabajando con una bbdd sino con Excel, la cosa se complica un poco. Para "multiplicar tablas" en excel, primero vamos a hacer una cosa, cada tabla la vamos a guardar en hojas separadas, en nuestro caso, una tabla la guardamos en Hoja1 , y la otra en Hoja2 Ahora, nos situamos en la hoja donde queramos que aparezca el producto cartesiano de nuestras dos tablas, nos vamos a la ficha DATOS . Veremos que h

Descargar código fuente desde Google App Engine

Estaba desarrollando una aplicación en google app engine, cuando un día, al llegar al trabajo (hoy), me doy cuenta que no tengo acceso a mi versión de desarrollo. Como la ultima versión que estaba desarrollando, justo la noche de antes la había subido a google app engine, pues me dije: "Ya esta, me conecto y me descargo el código fuente" ERROR 404 // SOLUCIÓN A IDEA MÁGICA NO ENCONTRADA Tras buscar por google, observo que hay muchas voces que dicen que no te puedes descargar el código fuente, que google no deja disponible ninguna API para descargarte tu codigo, ... ¡Pero como va a ser así!, desde appengine, te dicen que se puede hacer, lo que no está tan claro es como hacerlo. Pues estos son los pasos para poder hacerlo: Crear un directorio vacío para poder descargar en el nuestra aplicación. Abrir la línea de comandos, y cambiarnos al directorio de google app engine: cd C:\Archivos de Programa\Google\google_appengine\ Ejecutar el siguiente comando para descar

Clases abstractas con python

¿Como se crean clases abstractas con python?. Voy a explicar cual es la forma correcta de definir una clase abstracta y heredar de ella. El procedimiento general es: Definir una clase abstracta utilizando una metaclase. Definir la subclase de la clase abstracta (sin herencia). Registrar esta última clase como subclase de la clase abstracta. Tomemos como ejemplo el siguiente código: from abc import ABCMeta, abstractmethod class AbstractFoo:     __metaclass__ = ABCMeta          @abstractmethod     def bar(self):         pass     @classmethod     def __subclasshook__(cls, C):         return NotImplemented class Foo(object):     def bar(self):         print "hola" AbstractFoo.register(Foo)  Lo primero que hacemos es importar del módulo abc la clase ABCMeta y el decorador abstractmethod . La clase ABCMeta es la metaclase que utilizamos para definir las clases abstractas, nos aporta una serie de funcionalidades. Una vez hemos asignada la metacl