Empezar en la Inteligencia Artificial


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.


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 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 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.

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.

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.