Friday, December 02, 2005
Si las computadoras fueran estúpidasA principios de los ochentas, cuando el asombro mundial por el avance de las computadoras estaba en su apogeo, el gobierno de Japón anunció un ambicioso programa de diez años para desarrollar los sistemas de inteligencia artificial que entonces se veían como la evolución lógica de la computación en el futuro. Por esas casualidades de la vida me tocó viajar a Tokio en esos años y pude ver de primera mano toda la hype con exageradas expectativas que se hicieron sobre la capacidad de los japoneses y de lo que se esperaba de los computadores para los próximos diez años.
Fueron años de gran ingenuidad, se proyectaba el futuro en una histeria de expecrarivas donde incluso tipos serios y técnicamente competentes hablaban de tener cerebros electrónicos antes del año 2000. El tiempo se encargó de desinflar el proyecto japones, dejando de paso al descubierto muchos mitos de la supuesta sabiduría oriental y bajando las expectativas sobre lo que los computadores podrían lograr.
Para definir la inteligencia artificial en los años 40 el matemático inglés Alan Turing, uno de los padres teóricos de la computación ideó un experimento imaginario que hoy se conoce como la "prueba de Turing", este consistía en que una persona enviaba preguntas de cualquier tipo que eran respondidas por un computador o por otra persona. Si el interrogador no era capaz de determinar por las respuestas cual de los dos le estaba contestando entonces el computador habría pasado la "prueba de Turing" y por lo tanto se podría decir que tenía inteligencia artificial.
Hoy en día estamos muy lejos de tener una maquina de responder que pueda pasar la prueba de Turing, sin embargo aunque tal cosa se lograra solo estaríamos emulando las funciones más básicas de nuestro cerebro. Dentro de las funciones superiores del cerebro hay muchas otras cosas aparte del razonamiento lógico; la intuición, el sentido del humor, las emociones, la capacidad de equivocarse y la propia estupidez.
Lo que entendemos como estupidez, es decir la capacidad humana de negar selectivamente lo evidente no es una falla de nuestro cerebro sino una de sus más sofisticados mecanismos. Una cientifica social alemana (creo que fue Hannah Arendt) escribía sobre la asombra capacidad humana de la negar lo que se cree cierto, de poder decir durante el día "estamos de noche" y las potentes consecuencias sociales de tener esa capacidad.
Pero como los computadores se han diseñado siguiendo el modelo del cerebro humano, aunque este sea de modo muy imperfecto van adquiriendo características humanas a medida que se van perfeccionando, una de ellas es que los computadores se están empezando a equivocar y esto no como un defecto sino como producto de su mayor sofisticación.
No hace muchos años atrás se decía que el computador no podía equivocarse, se equivoca el programador al darle un esquema de instrucciones que no sirve para lo que se deseaba lograr. Entonces cuando había un error de programa podían ocurrir dos cosas: o el sistema colapsa y queda sin hacer nada o bien los resultados eran erroneos "shit in-shit out" era un dicho común en los ochentas.
Pero eso ocurría con una sola máquina ejecutando una o varias tareas, luego surgió la computación distribuída donde miles de máquinas interactúan comunicandose entre si. Y entonces los computadores comenzaron a equivocarse en el sentido humano de la palabra. Al intercambiar informacion entre muchas máquinas se comenzaron a producir "choques" cuando dos o más trataban de conectar simultaneamente a otra y la manera de resolver esos choques fue fundamental para el desarrollo de la computación.
En un principio se pensó en crear redes jerarquizadas y un complejo sistema de "dirección del tráfico" que se complicaba hasta lo indecible a medida que se agregan más y más procesos corriendo en paralelo. Al final este sistema resultó inviable y cualquiera que haya usado las antiguas redes Novell sabe hasta que punto el asunto no funcionaba.
La solución vino nuevamente de imitar al cerebro humano; con mayores anchos de banda y mejores velocidades ya no era importante que los procesos fuesen perfectos o teóricamente eficientes, simplemente se optó por la redundancia es decir un mismo proceso sigue varios caminos al mismo tiempo, es ejecutado repetidamente muchas veces, algunas de estas fallan y la primera que tiene éxito es la que se usa. Es decir al menos en la computación distribuída (típicamente los sistemas de Internet) los computadores se equivocan todo el tiempo, se pierden paquetes de información y no hay nadie que ordene los flujos, pero como el trabajo es redundante al final es más rápido y eficiente que tratar de hacer procesos perfectos.
Es decir que ya tenemos computadores que se equivocan, el día que tengamos un computador capaz de ser genuinamente estúpido habremos avanzado un gran paso hacia la inteligencia artificial. Moraleja, mas respeto con los idiotas, esa es una de las actividades mentales más sofisticadas que existen.
