Una de las preguntas más frecuentes que me pregunta la gente es, “¡¿Por
dónde empiezo?!”. De hecho, ¿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 Half Life, Half Life:Opposing Forces, Unreal y QuakeIII: Revolution
demuestran un impresionante nivel de IA. Otros juegos como ColinMcRae
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 cómo empezar con 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 cómo empezar con la IA de los juegos.
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 sí. Modificar juegos
existentes puede ser increíblemente 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 cómo funcionan los algoritmos usados.
Generation5 tiene una series de ensayos 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 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 cómo funcionan los algoritmos usados.
Generation5 tiene una series de ensayos 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
estimulante, 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 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 a veces se usan para evolucionar la arquitectura de redes neuronales o sus pesos, o son usados 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 el “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 SonyERS-110/111 AIBO. Ahora con el nuevo AIBOERS-210 y su próximo compañero bípedo robótico el SDR (Sony DreamRobot), 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 cómo empezar en la robótica.
La robótica comercial está empezando a despegar. SONY hizo un gran salto hacia delante en la industria del entretenimiento con el lanzamiento de SonyERS-110/111 AIBO. Ahora con el nuevo AIBOERS-210 y su próximo compañero bípedo robótico el SDR (Sony DreamRobot), 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 cómo empezar en la robótica.
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
ti! 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 artificial 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 increíblemente 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 artificial es bajarse algunos programas de AC como el MCell y experimentar. Entonces busca experimentos de Vida artificial más avanzados como TIERRA, antes de intentar programar algo por ti mismo.
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 increíblemente 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 artificial es bajarse algunos programas de AC como el MCell y experimentar. Entonces busca experimentos de Vida artificial 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 práctica. La Vida artificial no es el tipo de cosa
que puedes aplicar a un problema. La Vida artificial 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, datamining 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.