domingo, julio 21, 2013

Inteligencia Artificial

Las computadoras en estos días son capaces de resolver problemas cotidianos que hace tiempo requería mucho esfuerzo para las personas.

Hace mucho tiempo, la única manera de comunicar personas a larga distancia era por medio del correo,
era tardado, no era del todo confiable y movilizaba a un montón de personas para poder enviar un único mensaje, lo cuál, lo volvía muy caro.

Hoy en día, enviar un mensaje es cuestión de segundos, muchas veces más barato y las personas necesarias son una minoría comparado con las épocas de antaño.

Hacer tablas de logaritmos, polinomios, funciones particularmente importantes (cómo distribuciones normales, o transformadas de Furier que aparecen en todos lados), integrales, etc. Era tedioso, sin arte y costoso (a los que han llevado cursos en probabilidad seguramente les han hablado sobre tablitas para aproximar resultados, algunas aún las pueden encontrar al final de sus libros de estadística o cálculo). Actualmente, eso es cosa del pasado, te basta descargar una calculadora, pedirle lo que necesitas y el resto lo hacen una o varias computadoras.

Que la vida se vuelva inmensamente más sencilla gracias a las computadoras sugiere preguntarse qué alcance podría llegar a tener esto. Es obvio que un pequeño conjunto de menos de 10 computadoras, puede realizar más eficientemente el trabajo que antes realizaban centenas de personas. ¿Podría una o más computadoras reemplazar a una persona?

Pensemos en que somos no más que un conjunto de átomos interactuando con cierto "orden". Nuestro sistema nervioso no es más que una red de neuronas transmitiendo y reaccionando a un flujo de electrones. Una computadora no está lejos de simular algo así.

¿Alguien opina que existe algo que no pueda hacer una computadora? Ya pueden vender cosas, intercambiar acciones, identificar personas, manejar automóviles, comunicarse. Posiblemente google o facebook saben más de tí que tú mismo.

La respuesta cotidiana es que una computadora no puede amar. Pero eso se arregla fácil

function Amor()
{
    return true;
}

Listo. ¿Alguien tiene alguna queja?

Para más de una persona las computadoras se han vuelto una parte indispensable de nuestras vidas. Muchos estudiamos, trabajamos y nos entretenemos con computadoras.

El término "artificial" es difícil de describir, pero supongamos que es contrario al termino "dado naturalmente", donde "dado naturalmente" significa que no necesitó un humano 
para aparecer (esta es la parte complicada, al parecer, sólo los humanos pueden hacer cosas artificiales). 

El término "inteligencia" es igual de complicado, pero si no les molesta, diré que "inteligencia" es la capacidad de reconocer patrones. Hay quienes dicen que "inteligencia" es la capacidad de resolver problemas, pero como matemático puedo decir que me he encontrado con cosas que necesitan de mucha "inteligencia" y realmente a nadie le han resuelto un problema. Hay problemas que no se sabe como resolver, pero han involucrado mucha gente para poder decir que ese problema ya existía desde antes pero con distintas palabras (es decir, reconocer el patrón). Así que concidero que mi definición de "inteligencia" me tiene mejor satisfecho y espero que también a ustedes.

Con esto dicho, "inteligencia artificial" significaría algo como "crear la capacidad de reconocer patrones" donde "crear" debe entenderse como "por un humano".

Supongamos que queremos una computadora invencible en gato (tres en linea o tic tac toe). Para empezar, el número de juegos posibles (patrones) que hay que recordar es muy chiquito para una computadora, es menor que 9! = 362880
. Y la computadora, sabiendo todos los juegos posibles, puede elegir uno por el cuál no pierda, todo el tiempo (no existe estrategia estrictamente ganadora en tic tac toe, pero sí estrategia de empate). No existirá humano capaz de derrotar a este algoritmo. Y por lo tanto, esta computadora será al menos tan inteligente como una persona a la hora de jugar gato.

El problema es que existen una infinidad (una infinidad bastante grande) de patrones. Una computadora de hoy en día podría reconocer tan solo una cantidad finita de patrones (pues sus memorias son finitas), y si es capaz de reproducirse, a lo mucho una cantidad numerable de patrones. Para quien no entienda el término numerable, numerable significa tan infinito como los números enteros (para quien no entienda el por qué de la comparación, la razón es que existen infinitos más "grandes" y del que estamos hablando aquí es del infinito más "pequeñito"). Pero eso no tiene por qué desalentarnos, la cantidad de personas que existirán son finitas, cada una con tiempo 
finito de vida y a lo más reconocerán una cantidad finita de patrones.

Hasta ahora, se han creado "inteligencias artificiales" capaces de resolver problemas muy particulares, como manejar autos, jugar ajedrez, no dejarte ganar (o al menos no fácil) en los videojuegos, adivinar si una película te gustará o no antes de verla (imdb), mostrarte lo que posiblemente quieres ver (google), decirte quienes son muy posiblemente tus amigos de la infancia de los que ni siquiera te acuerdas o quien podría ser un buen amigo tuyo (facebook). Cabe destacar que muchas de estas tareas, las computadoras lo resuelven mucho mejor de lo que lo haría una persona (donde el "mucho mejor" ha sido dicho según los estándares de algunas personas).

Crear una máquina capaz de hacer todo lo que un humano implicaría que esta máquina también debería poder crear máquinas capaces de hacer todo lo que un humano. En caso de que así suceda, no podríamos refutar la teoría de que nosotros mismos somos una "inteligencia artificial" creada por alguien más.

Para aquellos que quieran entender más a fondo los problemas de la inteligencia artificial, les recomiendo

los cursos "Machine Learning" con Andrew Ng y "Artificial Intelligence" con Sebastian Thrun y Peter Norvig (el primer curso de coursera, el segundo de udacity). La inteligencia artificial que encontrarán utiliza mucho sobre Cálculo en Varias Variables, Probabilidad, Estadística y necesitarán de saber programar un poco si quieren entender mejor.

Para aquellos a quien sólo les fascina soñar con inteligencia artificial les recomiendo los siguientes libros:
-"The last answer" de Isaac Asimov (les toma una o dos horas leerlo y lo encuentran en internet fácilmente).
-"The robot series" (son varios libros que afortunadamente duran más de una hora leer) de Isaac Asimov también.
-"The foundation series" (también son varios libros) de Isaac Asimov también.
-"Do androids dream of electric sheep?" de Philip Kindred Dick.

No hay comentarios.:

Publicar un comentario

Write here a comment/Deja aquí un comentario