Inteligencia artificial (redes neuronales, etc.)

Soltrac

Buenas!

Ando metido en un proyecto personal. Básicamente estoy trabajando en un máquina que sea capaz de jugar a un juego de cartas.

Todo marcha bien, pero ando atascado en la IA. Mi bot ahora mismo juega sobre un conjunto de reglas predefinidas, lo que lo hace explotable en ciertos puntos.

Pensando un poco, creo que sería capaz de analizar a mis adversarios y adaptar el estilo de juego de mi máquina al suyo. Para ello había pensado en redes neuronales (neural networks o NN).

¿Dónde está el problema? Soy nulo en IA (tengo cierta idea de árboles de decisiones pero poco más). Necesitaría documentación, toda la posible sobre NN que conozcais para alguien con cierta habilidad de programación, pero poquísima idea de IA. Y también, si fuera posible, ejemplos de IAs en juegos, sobre todo NN y aprender a diferenciar bien inputs y outputs. Básicamente más documentación.

Deciros que no soy de los que le gusta leer. Si me vais a recomendar un libro veo que no seré capaz de leerlo. Todo me gusta probarlo, tocarlo, así que me gustan las cositas con pocas letras y muchos ejemplos.

Bueno, gracias de hantebraso!

GamA

Las redes neuronales son bastante jodidas de entender sin leerse nada. Están basadas en bastantes matemáticas.

De todas formas, estás de suerte, porque la estoy cursando como optativa y tenemos hecha una red neuronal en C puro. Si estás usando ese lenguaje de programación te puedo dar mi red y explicarte como funciona. De otro modo podría darte el exe y decirte que meterle para que puedas integrarlo en tu programa.

Un saludo

Soltrac

#2 No tengo problemas con las matemáticas ni con ningún lenguaje de programación, es más, no necesito ni montar la red neuronal porque existen frameworks que ya lo hacen (aforge para .net por ejemplo).

En realidad la teoría de la red neuronal la entiendo (mas o menos), lo que pasa es que me cuesta aplicarla a diferentes soluciones. Por ponerte un ejemplo ayer estuve leyendo la aplicación de una red neuronal para hacer reconocimiento de imágenes (OCR por ejemplo) y lo entendí a la perfección. Pero el problema es que no soy capaz de extrapolar eso a un juego de cartas. Creo que mi problema es que no soy capaz de analizar los inputs ni outputs ni como realizar el training.

Mas bien creo que necesitaría ejemplos de redes neuronales, sobre todo aplicados a juegos (de mesa, de cartas, etc.).

Edit: De todas formas por supuesto que sería interesante ver ese .EXE :)

dr_Rouman

Los inputs en un juego de cartas podrían ser las cartas que tiene en la mano y alguna que otra información disponible (cartas que han salido, por ejemplo, o el palo si fuera la brisca). Las salidas...qué carta echar, descartar...etc

Como tener en cuenta tooodas las cartas que han salido es una burrada (creo yo), siempre puedes simplificarlo un poco.

La forma de entrenarla es jugar muchísimo e ir salvando todos los estados / cartas / acciones que tomas tú y más jugadores y dárselos a la red.

Cuando la red se comporte más o menos bien, puedes empezar a jugar contra ella y seguir entrenándola.

Hay algún que otro ejemplo de redes para el Texas Hold-em

Ten en cuenta dos cosas que hacen que no sean una técnica muy popular en videojuegos:

a) Cuando la red la des por aprendida no vas a tener ni idea de lo que está haciendo internamente, y modificar el comportamiento es imposible.

b) Si te pasas con las capas internas puede que no vaya demasiado rápido, y en un juego puede ser crucial xD

Soltrac

#4 Sí, pero...y si en el juego si pierdes no tienes que mostrar las cartas? Se me ocurre el poker por ejemplo.

dr_Rouman

#5 Piensa con qué factores juegas tú en el poker. Es decir, en base a qué características tomas tú una decision u otra (subir, plantarte...etc).

Se me ha olvidado el Texas hold 'em ya, pero habrá que tener en cuenta lo que haya en la mesa y lo que tengas tú. Si tú siempre "vas" con 2 reyes, la red lo acabará teniendo en cuenta y también lo hará.

Mírate lo que he editado en #4, creo que lo he puesto después de que postearas.

Soltrac

#6 No lo había leido, es verdad :)

Tomo nota.

Edito: He encontrado un ejemplo que creo que es sencillo de esto:

http://synapticfailure.com/ai/poker/

A ver que puedo sacar de aquí.

HoTiTo

Hay muchísimas redes neuronales diferentes, y cada una aplicada a un ámbito en concreto (Kohonen, Sanger, Hopfield, Backpropagation...). Deberías documentarte un poco para ver cual se adapta más a tus necesidades.

En su día lo estudié, pero ahora mismo ya no me acuerdo con excesiva claridad de las características de cada uno. Aún así, me suena que quizá puedas sacar algo con Kohonen.

LOc0

No es exactamente lo que pides, pero a lo mejor puedes sacar ideas:

http://www.it.uc3m.es/jvillena/irc/

Hay bastantes de cartas.

Salu2 ;)

PD: a lo mejor para lo que buscas la red neuronal no es lo más indicado (al menos, para TODA la IA...)

NeO_PedritO

Si te sirve de algo, en este hilo deje disponible un trabajo final sobre redes neuronales, un 3 en raya.

http://www.mediavida.com/foro/9/juego-de-codigo-libre-374602

NeB1

#1 estoy haciendo ahora un master de sistemas inteligentes y si que hemos aprendido a implementar un par de redes neuronales, pero de momento solo nos ha servido como clasificadores, no sé hasta que punto te podría venir bien.

Porque arboles de decisión, o simplemente arboles de búsqueda con alguna heurística currada no te vale? contando cada nodo como posibles situaciones? Es decir, hacer una busqueda A* con algun tipo de heurística (depende del juego) o hacer una búsqueda en profundidad y quedarte siempre con la jugada que consigue el arbol más profundo?

Poisonous

Una red neuronal no es el modelo mas interesante para resolver tu problema. Al menos en mi opinión.

Aun así, si quieres usar una red neuronal, tienes que encontrar cual es la que mejor se adapta a ti, pq hay miles.

#10 estudias en la etsii d la ull? xd

Soltrac

#10 Claro q me sirve, le echo un ojo. Gracias :)

#11 Ponte en el ejemplo del póker del que hablamos más arriba. Como puedes implementar la lógica en un árbol de decisión? Yo quiero estudiar a mis rivales y aprender de ellos y no se me ocurre algo mejor para eso que una red neuronal.

#12 No entiendo eso de q hay miles. Yo puedo modelar mi red neuronal con los inputs y outputs y capas q me de la gana no?

NeB1

#13 Hombre, por poder con arboles de decisión, podrías, simplemente, basandote siempre en los mismos atributos, cada vez que entran X datos en tu conjunto de entrenamiento, vuelves a calcular las entropias para recalcular los atributos más discriminantes y vuelves a montar el arbol :P

Si te basas en redes neuronales con backpropagation... pues bueno, es una opción, algo costosa. Has trabajado alguna vez con ellas? tienes conjuntos de datos de entrenamiento del juego para poder testear tus redes neuronales al principio y seleccionar el número de unidades en la capa oculta?

Bueno, si te decantas por la red neuronal multicapa (fijo que no vas a tener clases linealmente discriminantes), lo suyo es que consigas un número tocho de datos ordenados en plan:
[ATRIBUTO: Mano rival]
Pre-FLOP: Ha subido
flop: Ha subido
turn: Check
River: Check

Clase: Farol

Pre-flop: Ha subido
flop: Ha subido
turn: three-bet

Clase: Va fuerte

y no sé, todas las cosas que creas que puedas medir de la forma de jugar de una persona. Después, para cada atributo que selecciones, deberías aplicarle su propia red neuronal, que sea capaz de clasificarte en la jugada actual, que clase pertenece su mano o a que clase pertenece el jugador (agresivo, pasivo, etc.) o lo que sea.

Despues, cuando tienes conjuntos de datos grandes en verdad es cuando tienes que decidir si usar una red neuronal y en ese caso buscar el número optimo de unidades en la capa oculta.

Para este fin, en matlab tengo hecho un programa que te saca una gráfica de aprendizaje sobre un conjunto de entrenamiento y uno de test, según ese número de unidades.

Buah, que lío de mensaje. Todo esto de todas formas es mi opìnión, que tampoco le he dado nunca ese uso a una red neuronal (al juego), las he usado para clasificar imagenes a partir de datos existentes y cosas así.

Poisonous

#13 Pues que hay muchos modelos de redes neuronales, lo que la mayoría de la gente no pasa del perceptron multicapa.

Unos son especialmente buenos resolviendo un tipo de problemas y otros otros

NeO_PedritO

#12 Si, sistemas, por?

#13 Me alegro de que te sirva :)

NeB1

#15 ea, ahí me he quedao xD

Lecherito

Como está este hilo ya abierto no abro otro y os digo... me gustaría empezar a entender un poquito todo esto de la IA y ya que vosotros os manejáis en este mundo, sabéis de algún librito que sea sencillo de entender para un novato?

#19 Hay 10000 millones de PDF, no sé ni por donde empezar xDD

Edit2, me equivoqué de post xD, voy a mirar

NeO_PedritO

#18 En el hilo puesto en #10 hay apuntes en pdf.

Usuarios habituales

  • NeO_PedritO
  • Lecherito
  • NeB1
  • Poisonous
  • Soltrac
  • dr_Rouman
  • GamA