Cómo Empezar con la Inteligencia Artificial
Traducido por Year of the Dragon
Una de las preguntas
más frecuentes que me pregunta la gente es, "¡¿Por
dónde empiezo?!". De echo, ¿por dónde debe empezar
un
principiante en la IA? Simple - encuentra un campo de la IA que te
interese y lee sobre él. La IA es tan amplia que intentar mirar
todo lo relacionado con la IA de una sola vez hará atascarse
hasta a las personas más entusiastas.
Este ensayo mirará diferentes áreas de la
IA e intentará dar pistas sobre que es interesante y que es
más pedestre. Las áreas que tocaremos serán
juegos, redes neuronales, algoritmos genéticos y
programación evolutiva, robótica, y vida artificial.
Juegos
Finalmente, después de muchos años de
juegos-de-impresionantes-gráficos-sin-jugabilidad, están
apareciendo juegos con gráficos impresionantes pero
también con impresionantes inteligencias artificiales. Los
modernos shoot-em-up en primera persona como HalfLife,
HalfLife:
Opposing Forces, Unreal
y Quake
III: Revolution demuestran un impresionante nivel de IA. Otros
juegos como Colin
McRae Rally 2.0 están usando modernas técnicas de la
IA como
redes neuronales para controlar los oponentes dentro del juego. Este es
desde luego un buen momento para iniciarse en la IA de los juegos.
Así que, ¿por dónde empezar? Esto depende en gran
cantidad de tu habilidad como programador - si eres bueno podrás
enfrentarte a un juego completo por ti mismo, o disfrutar modificando
uno ya existente (como uno de los juegos con desarrollo de mods al
estilo de Quake). Sea como sea, conocer la programación en un
lenguaje 'real' es indispensable - la mayoría de juegos
están escritos en C/C++. De cualquier manera, si escribes el
juego desde cero, podrás escribirlo en cualquier lenguaje que
desees. Para saber más detalles acerca de dónde empezar,
mira en How
to Get
Started with Gaming AI.
Lo Bueno
La mejor parte de la IA para juegos es que los efectos son muy visuales
y fáciles de entender. No te enfrentas a una lista de
número o a un grafo - lo que programas tendrá un efecto
directo en como juegas el juego. Esto puede ser muy gratificante si el
tiempo se emplea modificando la IA. Es más divertido que el
resto de programación de IA por la misma razón -
programar, jugar, modificar.
Lo Malo
Necesitas un juego para empezar! La mayoría de proyectos de
juegos de IA nunca se completan debido a lo increíblemente duro
que es
escribir la IA del juego sin escribir el juego en si. Modificar juegos
existentes puede ser increiblemente desalentador, y añadir
grandes cambios puede duplicar el trabajo - escribir el código y
después integrarlo en el juego.
Redes Neuronales
El campo de las redes Neuronales Artificiales
intenta utilizar estructuras de datos diseñadas para imitar las
neuronas dentro del cerebro para realizar reconocimiento y
clasificación de datos. Pueden ser (y han sido) usados para una gran cantidad de tareas diferentes:
predecir el mercado de acciones, extraer datos de imagen a partir de
información del radar, controlar coches, robots - y mucho
más.
Lo que está claro de las redes neuronales es que aprenden. Son
básicamente funciones de mapeado de lujo: realizarán
mapeados de
un grupo de vectores sobre otro, pero aprender a realizar este mapeado
por ellas mismas, a través de aprendizaje supervisado o no
supervisado. Empezar con las redes neuronales no es fácil ya que
necesitan un fuerte conocimiento de la teoría, requiriendo un
cierto grado de conocimiento algebraico e incluso cálculo
si realmente deseas entender
como funcionan los algoritmos usados.
Generation5 tiene una series of essays
que están dirigidos a introducir las redes neuronales
lentamente: primero cubre el tema de los perceptrones (la red neuronal
más sencilla), entonces detallando perceptrones multicapa y el
algoritmo de propagación hacia atrás (back-propagation).
Si quieres empezar con redes neuronales, prepárate para leer y
programar mucho ya que no son fáciles de entender sin ponerse
"manos a la obra".
Lo Bueno
Las redes neuronales son muy útiles en IA y pueden ser
aplicadas
en todas partes. Crear una buena red neuronal es una actividad muy
gratificante. Pueden ser usadas en áreas como procesamiento de
sonido e imagen o incluso controladores de robots - haciendo más
interesantes la investigación y los resultados.
Lo Malo
Las redes neuronales quizá no sean el mejor lugar por donde
empezar ya que son un poco duras
- académica y algorítmicamente hablando. La
mayoría de redes neuronales son programas muy difíciles
ya que no hay guías ni tipos definidos de redes neuronales para
ciertos problemas. Hay tantos tipos de redes neuronales como problemas!
Algoritmos Genéticos y Programación
Evolutiva
AGs y programación evolutiva son campos muy interesantes, si las ideas de
la evolución y la genética llaman tu atención.
Gente con conocimientos en biología encontrarán la
programación evolutiva muy estimulando, ya que toma mucha
teoría de la biología/genética/biología
teórica.
Los algoritmos genéticos básicamente usan el poder de la
evolución y la genética para evolucionar soluciones a un
problema. Las soluciones a un problema se codifican en genotipos, que
son entonces manipulados. Se comprueba la idoneidad de cada genotipo y
los mejores reproducen entre ellos para producir la siguiente
generación. Esta secuencia se repite hasta que se descubre la
solución
o la mejor aproximación posible.
Los
algoritmos genéticos son un subgrupo de un campo mucho
más amplio:
programación evolutiva. La programación evolutiva agrega
otras áreas de
la computación inspiradas en la biología como la
programación genética
(evolución de algoritmos para resolver un problema). La
programación
evolutiva se usa habitualmente junto con otras áreas de la IA
como las
redes neuronales. Los AGs aveces se usan para evolucionar la
arquitectura de redes neuronales o sus pesos, o son usadas para afinar
parámetros en máquinas de estados finitos (en juegos).
Empezar con los algoritmos genéticos es
relativamente fácil ya que la teoría es fácil de
comprender para
cualquiera que estudió bilogía en secundaria. Echad un
vistazo en Generation5
essays para más información
Lo Bueno
Es fácil empezar con ello ya que la teoría
básica es fácil de
entender para la mayoría y la programación no es nada
compleja. Los
algoritmos genéticos son fáciles de aplicar a muchos
problemas, y son
un buen tema de investigación para aquellos a quienes le
interesa. Los
fenómenos biológicos como la coevolución, la
relación genotipo/fenotipo
y el elitismo puede ser interesante incorporarlos en tus algoritmos
genéticos y observar como afectan a su rendimiento.
Lo Malo
Es algo aburrido trabajar con ellos, muchos algoritmos genéticos
lanzan grandes listas de números.
Robótica
Mi
favorito personal, la robótica es casi lo mejor de los dos
mundos ya
que consigues "pulcro-ingenioso" factor de la Inteligencia Artificial
unido con el realismo físico del robot - ie, es algo que puedes
tocar, construir e interaccionar con ello.
La robótica comercial está empezando a despegar. SONY
hizo un gran
salto hacia delante en la industria del entretenimiento con el
lanzamiento de Sony
ERS-110/111 AIBO
(dibujo a la derecha). Ahora con el nuevo AIBO
ERS-210 y su próximo compañero bípedo
robótico el SDR (Sony Dream
Robot), es fácil ver que muchas familias pronto van a tener un
pequeño
compañero mecánico!
La robótica es un buen campo por el que preocuparse ya que
escala
desde lo más simples robots programables hasta los
ultra-complicados
robots de investigación. Si deseas empezar con la
robótica echa un
vistazo a How
to Get
Started with Robotics.
Lo Bueno
En mi opinión, esta es el área que más
recompensa: si disfrutas
construyendo algo y ver como funciona, entonces ser capaz de
programarlo
para que haga cosas interesantes - la robótica es
definitivamente para
tí! Es divertido jugar con robots, divertido programarlos y
pueden ser
prácticos y entretenidos. Podrás fácilmente
aplicar
cualquiera de los
otros paradigmas de la IA como las redes neuronales o los algoritmos
genéticos en la programación.
Lo Malo
Requiere formación en electrónica. Esto es bueno y malo.
Si nunca
has soldado algo antes, pero quieres saltar a hacer unos robots
alucinantes, las posibilidades son bastante altas que te veas limitado
en lo que puedes conseguir. Si te tomas el tiempo para aprender y
entender la teoría eléctrica tras los robots que
construyes puede
convertirse en una ventaja insustituible. La robótica
también es cara
comparada con las otras áreas (que son mucho más
gratuitas, ya que
puedes conseguir compiladores gratuitos para la mayoría de
lenguajes).
Vida Artificial
La Vida Artificial es un campo que avanza rápidamente dedicado a
simular la vida en un ordenador. Puede ser vida en el sentido
más
estricto (imitando fenómenos biológicos como la
digestión o el sistema
nervioso) o, más comúnmente, consiste en abstracciones de
la
vida. Una
gran cantidad de vida-a se produce en forma de autómatas
celulares. Los
AC están normalmente organizados en un plano 2D y gobernados por
reglas
muy sencillas, de esas reglas surgen algunos comportamientos
increíblemente complejos.
Por ejemplo , el juego de la vida de Conway, uno de los primeros
autómatas celulares fuertemente estructurados es gobernado por 2
simples reglas. Una célula no puede 'vivir' si hay más de
tres o menos
de dos células en las 8 células adyacentes y si el
número de células
alrededor de una célula muerta es exactamente tres, nace una
nueva
célula. Puedes creerlo o no, pero algunos comportamientos
increiblemente complejos emergen - de hecho, se ha probado que el juego
de la vida de Conway puede ser configurado para actuar como una
Máquina
de Turing, haciéndola en teoría capaz de calcular
cualquier
cosa que
puede calcular un ordenador actual!
El mejor consejo para empezar en la Vida-a es bajarse algunos programas
de AC como el MCell y
experimentar. Entonces busca experimentos de Vida-a más
avanzados como TIERRA, antes de intentar programar algo por ti mismo.
Lo Bueno
Puede ser muy interesante, ya que pueden encontrarse gran cantidad
de paralelismos entre las abstracciones de la vida y la vida misma. Los
efectos pueden ser muy visuales, especialmente con cosas como los Boids
(comportamiento de grupos) o autómatas celulares complejos. Son
sencillos de programar.
Lo Malo
No es demasiado aplicable. La Vida-a no es el tipo de cosa que
puedes aplicar a un problema. La Vida-a se usa sobre todo para estudio
e investigación.
Filosofía
La filosofía se
filtra en cualquier campo si se le da la oportunidad, pero es una parte
intrínseca en la Inteligencia Artificial. Preguntas como
"¿Pueden
pensar los ordenadores?","¿Es el pensamiento simulado
auténtico
pensamiento?", "¿Deben tener derechos los ordenadores
sentientes?", así
como preguntas más fundamentales como el problema del
cuerpo/mente
están fuertemente ligados a la IA. La filosofía de la IA
ha sido
potenciada recientemente debido a una serie de películas de alto
presupuesto de Hollywood (The Matrix, Inteligencia Artificial).
Internet tiene cientos de páginas con información sobre
varios temas de
Filosofía/IA - intenta buscar gente como John Searle (La
Habitación
China), Daniel Dennett y David Chalmers o conceptos como dualismo o
funcionalismo computacional.
Lo Bueno
Si adoras sentarte y pensar, no puedes conseguir nada mejor que la
filosofía de la mente. La filosofía puede unir otros
campos que
disfrutes: lingüística, neurociencia, ética y
diseño de software por
nombrar algunos.
Lo Malo
Si adoras pensar, no hay nada malo. Leer toda la teoría puede
ser
algo aburrido para algunos, especialmente dada la notoria capacidad de
los filósofos en convertirse en horribles autores!
Conclusiones
Esta lista no
es de ninguna manera exhaustiva, hay: programación de
satisfacción de
restricciones, reconocimiento del habla e imagen, lógica difusa,
data
mining y muchas otras áreas. Lee por ahí páginas
como Generation5 para
encontrar algo que puedas encontrar suficientemente interesante para
leer durante un par de semanas, experimenta con diferentes
técnicas de
programación y lenguajes - la IA es tan amplia que estás
obligado a
encontrar algo interesante.
Article content copyright © James Matthews, 2004.
|
|