El pasado miércoles tuve el gusto de dar una charla sobre Inteligencia Artificial, organizada por el Club de Programadores. Quería presentar en este post el material usado, ejemplos, enlaces mencionados, recursos y bibliografía que recomendé.
El campo de la Inteligencia Artificial es inmenso, y con el correr de los años se ha ido abriendo en ramas distintas, que a veces, poco tienen que ver unas con otras.
La presentación que usé la pueden bajar de IntroIA2009012003b.ppt. Una presentación más antigua, pero más completa (de un curso de dos días) en: IntroIA200501.zip.
Se está formando un grupo de gente interesada en la Inteligencia Artificial, acá en Argentina, leer:
Inteligencia Artificial en Argentina
Mencioné que este año hay un congreso de Inteligencia Computacional Aplicada, leer
Congreso de Inteligencia Computacional Aplicada
Para un primer pantallazo de las ramas, y algo de la historia, puede servir de base el artículo de la Wikipedia:
Artificial Intelligence
History of Artificial Intelligence
Un sitio a visitar es el de Peter Norvig:
Un paper totalmente recomendable, para leer las ideas de Marvin Minksy, sobre cómo podría funcionar una mente:
Future Models for Mind-Machines
Más discutible, desde mi punto de vista, son las ideas de Kurzweil, pueden visitar su sitio:
Mencioné en varios puntos de la charla, un paper que describía la historia de la Inteligencia Artificial, y cómo durante décadas, todos los intentos comerciales fueron fracansando:
Un artículo reciente, que tiene una visión más optimista:
Future Watch: A.I. comes of ages
Mencioné el trabajo de Douglas Lenat. Pueden ver lo que está haciendo ahora, persiguiendo el sentido común en:
Sitios a visitar sobre Inteligencia Artificial:
http://www.aboutai.net About AI, enlaces sobre distintos temas de AI
http://www.pcai.com/ PC AI Free Magazine
http://www.jair.org/ Journal of Artificial Intelligence Research
http://www.aaai.org/ Association for the advance of Artificial Intelligence
Varias explicaciones de distintos temas, con ejemplos de codigo en
Lenguajes de Programación
Mencioné en la charla algunos lenguajes. Tienen enlaces dedicados en:
Lisp donde los programas se pueden manipular como datos
Prolog dedicado a implementar programación declarativa
Al final del post, hay libros sobre distintos temas, donde se usan esos lenguajes (ver por ejemplo libros en la web).
Un ejemplo que tenía preparado, pero no mostré, se basaba en usar P#, una implementación de Prolog de código abierto.
Yo estoy trabajando en un intérprete Lisp, ver AjLisp- un intérprete Lisp en .NET.
Ver también
AI Programming (Lisp)
AI Programming (Prolog)
Lógica difusa
El ejemplo que usé en la charla (el de la grúa con contenedor controlado por lógica difusa) es de:
Fuzzy Tech http://www.fuzzytech.com
Sistemas basados en reglas
No vimos ejemplos en la charla, pero pueden visitar:
Jess sistema basado en reglas, en Java (basado en el algoritmo Rete).
Aprendizaje automático
Algunos enlaces
UCI Machine Learning Group
Machine Learning in Games
Machine Learning (AI on the Web)
Planeación
Nombramos los problemas de la planeación. Visitar:
What is Partial-Order Planning?
Review of An introduction to Least Commitment Planning
Selected History of Partial Order Planning, Part 1 (donde aparece Sacerdoti, mi primer referente en el tema)
Selected History of Partial Order Planning, Part 2
Redes Neuronales
En la charla vimos una demo del producto comercial:
El ejemplo de hormigas controladas por redes neuronales que evolucionaban por algoritmos genéticos, en:
Neural Networks in plain English
Algunos enlaces adicionales:
http://www.inns.org/
http://www.nips.cc
http://www.makhfi.com/resources.htm
http://www.makhfi.com/realworld.htm
http://www.neoxi.com/NNR/index.html
http://www.ri.cmu.edu/pubs/pub_926.html
http://vasc.ri.cmu.edu/NNFaceDetector/
http://www.deepinsight.com/
http://satirist.org/learn-game/systems/neurochess.html
http://satirist.org/learn-game/systems/go-net.html
http://satirist.org/learn-game/systems/gammon/
http://www.20q.net/ Twenty Questions Neural-Net on the Web
http://gpdev.net/NeuroDriver_bpnet.html
http://www.codeproject.com/csharp/neural_dot_net.asp
http://www.codeproject.com/dotnet/simple_ocr.asp
http://www.codeproject.com/script/articles/list_articles.asp?userid=441940
Algoritmos Genéticos
Leer como introducción
Genetic Algorithms in plain English
Mostré mi ejemplo de:
AjGa- una librería de algoritmos genéticos
Otros enlaces:
Galib Librería de Algoritmos Genéticos http://lancet.mit.edu/ga/
http://delicious.com/ajlopez/geneticalgorithms
Enlaces adicionales
Genetic Algorithms and Genetic Programming (multitud de enlaces)
What is Genetic Algorithms?
Genetic Programming
Genetic Algorithms
Survival of the Fittest: Natural Selection with Windows Forms (en .NET)
An introduction to Genetic Algorithms In Java
AIAI Technology Genetic Algorithms
Genetic Algorithms and the Traveling Salesman Problem (en C++ para Windows)
Programación Evolutiva
Estuvimos viendo mi ejemplo
Jugando con programas evolutivos
Estuvimos corriendo el ejemplo de AI_Life, donde vimos redes neuronales, algoritmos genéticos y conductas de persecución.
Juegos e Inteligencia Artificial
Primero, el tema juegos de tablero.
En el proyecto Reversi pueden ver una implementación del algoritmo MinMax con Alfa Beta.
En Connect Four y en Learning Draughts pudimos ver algunas estrategias simples de aprendizaje.
Para tener un panorama de los problemas actuales, hay que visitar el grupo de la Universidad de Alberta:
http://www.cs.ualberta.ca/~games/
Pueden visitar el grupo de Research de Microsoft:
Pero también hay inteligencia artificial en juegos de video. Recomendaría visitar:
Artificial Intelligence and Computer Games
Game AI for Developers — AiGameDev.com
El tema de máquinas de estado es muy usado, pueden leer
State-Driven Game Agent Design
Computer Go
Para mí, un tema fascinante. Vimos en la charla, a mi ejemplo AjGo:
AjGo- hacia un programa que juegue al go
Pueden visitar:
Hay otro grupo de investigación sobre el tema en Beijing:
Craking Go a cargo de Feng-hsiung Hsu
Mis enlaces sobre Computer Go en http://delicious.com/ajlopez/computergo
Todo sobre Go en http://www.gobase.org
Si quieren aprender el juego, pueden visitar el sitio de la Asociación Argentina de Go.
Vida Artificial
Un tema fascinante, nombrado al pasar en la charla. Visiten el proyecto Tierra
Vean las “fotos” de:
http://life.ou.edu/pubs/images/
Otro proyecto que también investiga el tema evolución es:
Darwin at home el resultado de aplicar Fuidiom
Fluidiom Implementado en Java, sería interesante implementar algo similar en .NET y DirectX/OpenGL
Robótica
Mostré el ejemplo de:
Que lindo el guaguau- BigDog de Boston Dynamics
Más enlaces en:
Post sobre Robótica
http://delicious.com/ajlopez/robotics
GRASP Laboratory of Robotics Research and Education @ Penn
Microsoft Invisible Computing
Concious Robots
Robotics Studio at Concious Robots (con algún foro en español)
An introduction to Programming Robots with Microsoft Robotics Studio
Wimo: The Windows Mobile Robot
Bibliografía
Nils J. Nilsson escribió varios libros en estas últimas décadas. Yo recomendaría este libro para una primera aproximación, bastante completa, a la Inteligencia Artificial actual:
Artificial Intelligence: a new synthesis
En español, en Argentina, Librería Cúspide como Inteligencia Artificial: una nueva síntesis.
Uno de sus libros está en línea: How Are We To Know-
Uno de los libros que recomendé es el de Russell y Norvig (es muy bueno en las notas históricas al final de cada capítulo):
Si están en Argentina, lo pueden encontrar en español, por ejemplo, en librería Cúspide, como Inteligencia Artificial un enfoque moderno.
Otro de Norvig es
Los interesados en lenguajes de programación e Inteligencia Artificial, pueden examinar el clásico de Bratko, muy bueno para aprender la relación entre programación declarativa e Inteligencia Artificial:
Prolog Programming for Artificial Intelligence
Varios libros gratuitos en línea sobre Inteligencia Artificial en
Free Artificial Intelligence Books (visiten el sitio, que hay todos temas, de computación, matemáticas y ciencia).
Enlaces adicionales
Desde hace unos años, mantengo en mi sitio
Enlaces sobre Inteligencia Artificial
Enlaces sobre Redes Neuronales
Enlaces sobre Computer Go
En los últimos tiempos, directamente agrego en mis enlaces de Delicious:
http://delicious.com/ajlopez/artificialintelligence
Los posts que escribo están bajo el tag:
Espero que les sirva este material, para explorar tan fascinante tema.
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez