La inteligencia artificial y yo

Hace unas semanas, tuvo lugar una reunión en Buenos Aires, de gente interesada en el tema de Inteligencia Artificial. La idea de la reunión nació de un “twit” de @hhm (Hernán Moraldo) . Pueden leer:

Inteligencia Artifical en Buenos Aires
Artificial Intelligence meeting in Buenos Aires

Hasta aparecimos en

Game AI Roundup Week #48 2008- AiGameDev.com

Como “outcome” de la reunión, se armó una lista de correo, en Google Groups:

IA Grupo

Pueden ver que hay interesantes discusiones, y participantes de diversos ámbitos: programación de juegos, IA académica, robótica, estudiantes, e interesados como yo. Uno de los “threads” es de presentación de cada participante. Como blogger compulsivo, quisiera escribir sobre mi relación, mis motivaciones para interesarme en la Inteligencia Artificial.

Inicios

Como muchos de mi generación, mi primer contacto con algo relacionado con el tema de IA fue a través de la ciencia ficción. El bueno de Asimov, sus robots, sus tres leyes de la robótica, fueron lecturas de mi adolescencia. Cuando comencé a aprender qué eso del software y la computación, vi que realmente existía una amplia rama (con varias variantes) de la ciencia de la computación, bautizada en sus comienzos (confesémoslo, con algo de pomposo optimismo) Inteligencia Artificial.

Al ingresar a la Universidad de Buenos Aires, en 1980, comienzo a estudiar más seriamente sobre el tema. Comienzo a conocer los perceptrones del malogrado Rosenblatt, la crítica de Minsky y Papert, el auge de los sistemas expertos (recuerdo Mycin, y el trabajo de Feingenbaum), los lenguajes que se pueden automodificar, como Lisp y Prolog (recuerdo algún artículo seminal del Scientific American, y cómo me impresionó que ambos lenguajes tuvieran dialectos diferentes). Me impactó profundamente el trabajo de Douglas Lenat, con su AM y luego Eurisko: me parece, aún hoy, el programa más logrado. Lástima que Lenat abandonara ese trabajo y se dedicara a su proyecto Cyc. Ya varios de esos trabajos parecen lejanos o anticuados. Igual, pienso que es interesante estudiar la historia de la IA, porque enseña los problemas que se encontraron, los triunfos y fracasos, especialmente estos últimos,  que dieron lugar al invierno de la IA.

Para los que no conocieron Eurisko, recomendaría:

Eurisko, The Computer With A Mind Of Its Own
Invention and Exploration in Discovery  una reimplementación llamada Cyrano de las ideas de Eurisko

Quisiera recordar acá las excelentes lecciones del Ing. Guido Vasallo, que me guiaron en nuevos lenguajes y formas de programar, y al recientemente desaparecido Ing. Carranza, que siempre vestido de negro, y fumando en los descansos, nos enseñaba algunos temas de Inteligencia Artificial.

En aquellos años, armaba sistemas expertos de juguete, y algún intérprete Lisp. Sería largo de enumerar lo que luego vino, pero en resumen: siempre traté de agregar algo relacionado con Inteligencia Artificial, a mi trabajo de todos los días.

También en la UBA, conocí al juego milenario del go. Desde entonces, me interesó como ejemplo a estudiar, para programar IA que juegue aceptablemente.

Pasemos directamente a estos últimos años.

Enlaces, recursos y charlas

A principios de siglo, comencé a investigar de nuevo sobre Computer Go, e Inteligencia Artificial. En mi sitio, he ido coleccionando los enlaces que me interesaron, pueden visitar:

http://www.ajlopez.com/ia/

Luego, me convertí a Delicious, mis nuevos enlaces en:

http://delicious.com/ajlopez/artificialintelligence
http://delicious.com/ajlopez/artificiallife

En estos años, he estado dictando algunas charlas sobre IA, en el Microsoft User Group, el Club de Programadores y en algún TechNight de Microsoft, recuerdo:

Material de la Jornada de Introducción a la Inteligencia Artificial (MUG 2004)
Material del Seminario Introducción a la Inteligencia Artificial y .NET (Microsoft Argentina 2005)
Material del Seminario Introducción a la Inteligencia Artificial (Club de Programadores 2005)

Este año (2008) escribí sobre los temas que veo interesantes en IA:

Temas Interesantes de Desarrollo de Software, Parte 1- Inteligencia Artificial

donde encontraran enlaces sobre algoritmos genéticos, aprendizaje automático, planeación, vida artificial, juegos, lenguajes, visión por computadora, y robótica.

Computer Go

Dí una charla sobre Computer Go en el Congreso Argentino de Go de 2007 y de nuevo en el Congreso de este año 2008. Escribí:

Computer Go- El gran problema de AI
Computer Go en el Segundo Congreso Argentino de Go
AjGo- hacia un programa que juegue al go
Computer Go y el programa AjGo

En ese tiempo, fuí desarrollando mi programa de código abierto AjGo, donde estoy explorando algunas ideas sobre Computer Go.

Más enlaces sobre el tema en:

http://delicious.com/ajlopez/computergo
Computer Go en ajlopez.com

Desde hace años participo (modo lectura) en la gran lista de computer go:

http://computer-go.org/mailman/listinfo/computer-go

El grupo líder en el tema de IA en juegos de tablero y otros:

University of Alberta GAMES Group Home Page

Grid Computing y HPC

El año pasado, 2007, comencé a programar algunos ejemplos relacionados con Grid Computing, y ahora en el 2008, comencé a trabajar con High Performance Computing. Notablemente, el programa campeón mundial de Computer Go (y otros) están corriendo sobre un cluster de computadoras. Espero poder probar el ManyFacesOfGo de David Fotland, en un Windows HPC Server 2008 en cualquier momento. Otra idea a explorar es algorimos genéticos distribuidos en grilla o en cluster.

Para usar varias máquinas y tener más poder de cálculo, estoy explorando el camino de usar mi proyecto de código abierto AjMessages o el AjAgent. Por ahora, sirva como introducción:

AjMessages- hacia un procesador de mensajes

Microsoft Robotics

Desde el 2007, estoy trabajando con Microsoft Robotics, pero apenas he podido relacionarlo con IA. Algún intento en:

Genetic Algorithms with AjAgents and Concurrency and Coordination Runtime (CCR)
Algoritmos Genéticos con AjAgents y Concurrency and Coordination Runtime (CCR)
Lisp-like interpreter using DSS and VPL
Intérprete tipo Lisp usando DSS y VPL
Distributed agents using DSS-VPL
Agentes distribuidos usando DSS-VPL

Intérpretes

Estoy desarrollando dos intérpretes que me interesan: AjLisp, y AjProlog (versión anterior en AjProlog-0.2). Siempre me gustaron esos dos lenguajes, veremos si puedo aplicarlos para algún programa auto-modificable.

AjLisp- a Lisp interpreter in .NET

Generación de Código con IA

Espero poder incorporar a mi proyecto principal, AjGenesis, algo de IA. Pienso que un generador de código bien se puede asimilar a un sistema experto especial: debería, partiendo de un modelo incompleto, completarlo, tomar decisiones de diseño, inferir algunas partes del sistema, y generarlo.

IA, ciencia y filosofía

Desde los 90, me vengo topando con el problema mente-cerebro, y lo veo relacionado con IA. Críticas como las de Penrose, Hilary Putnam, y hasta Mario Bunge, me parecen interesantes, pero no las veo contundentes. Tengo pendiente postear sobre el tema, en mi blog personal no técnico, más filosófico. Apenas un preludio:

Inteligencia artificial, en la caída del conductismo

Bueno, espero que esto sirva como un pantallazo de mis intereses relacionados con IA, que está sobrevolando algunos proyectos míos, aunque no sea evidente aún.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez

This entry was posted in 3036, 3463. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>