2009-02-03 14 views
32

Estoy interesado en construir un motor Texas Hold 'Em AI en Java. Este es un proyecto a largo plazo, en el que planeo invertir al menos dos años. Todavía estoy en la universidad, no he construido nada ambicioso y quiero abordar un problema que me interesará a largo plazo. Soy nuevo en el campo de la IA. Desde mi clase de estructuras de datos en la universidad, conozco bloques de construcción básicos como BFS y DFS, retroceso, DP, árboles, gráficos, etc. Estoy aprendiendo regex, estudiando para el SCJP y el SCJD y en breve tomaré una (densa) curso de estadísticas.Construyendo un Texas Hold'em jugando AI ... desde cero

Preguntas:

-¿Dónde puedo empezar? ¿Qué libros debo elegir? ¿En qué tipo de IA se ejecutan los programas de póquer? ¿De qué proyecto de código abierto puedo tomar una página? ¿Algún buen recurso de IA en Java? Estoy interesado en aprender Lisp también, ¿es bueno Jatha?

+10

has logrado desarrollar cualquier cosa ? Han pasado más de 2 años ... –

Respuesta

5

Las IA de poker son notoriamente difíciles de corregir porque los humanos apuestan impredeciblemente. Por lo general, se divide en dos partes.

1) Calcule las probabilidades de que su mano sea la ganadora.

2) Formular la estrategia de apuestas basado en 1.

Yo recomiendo empezar con una gran cantidad de estadísticas de lectura de la parte 1. parece fácil a primera vista, pero en realidad es muy complicado (y hacerlo mal condenará tu IA). Luego pase a los algoritmos genéticos para la parte 2. Las estrategias de apuestas son en su mayoría algoritmos genéticos. Se ajustan a sí mismos en función de los éxitos y fracasos pasados ​​+ alguna aleatorización para no volverse predecibles.

-1

Un resultado interesante que he escuchado es que si restringes las opciones de apuesta para doblar, marcar y all-in, puedes escribir una IA que gane uno contra uno con probabilidad de al menos 49% y 49.5% si es (IIRC) no va primero.

No sé si esta IA es más fácil de escribir que una que sabe cuánto apostar, pero es algo para pensar: elegir montos para apostar solo representa el 1.5% de la probabilidad de ganar.

1

Escribí un Hold'Em AI en mi licenciatura. No era particularmente avanzado, utilicé una máquina Q-Value que atravesaba varios estados y actualizaba los valores Q para cada estado.

Encontré el proyecto AI Poker de la Universidad de Alberta una fuente inestimable de información para evitar trampas.

Como se indica en un póster, el primer paso es establecer un par de reglas de póquer determinables: el póker individual se puede desarrollar programáticamente.

Una trampa en la que caí no fue la reconfiguración desde el principio. Por ejemplo, poder cambiar el grado de aprendizaje/juego.

estaría interesado en saber cómo le va caer un stevekeogh electrónico en gmail.com

2

También, dejando algoritmo genético ajustar los pesos de la red neuronal, que determina el procedimiento de decisión. Este enfoque es muy adecuado para la IA de póker.

Hice mi propia IA así. Al principio, creé ~ 1000 jugadores, que no sabían cómo jugar el juego en absoluto. En función de su suerte inicial durante las manos, su estado físico fue ponderado y se creó una nueva generación. Los nuevos "cerebros" estaban jugando mejor que la generación anterior.

Finalmente, las mejores personas jugaron muy bien.

+4

¿Publicó sus resultados en cualquier lugar? –

+0

Cuando dices que lo mejor se juega muy bien, ¿te refieres contra las otras IA o contra los humanos? Yo pensaría que un algoritmo genético funcionaría mal. El póquer se trata de entender a tus oponentes, no las probabilidades. A menos que tu algoritmo genético incluyera información sobre la distancia desde el botón al apostar, encontraría sospechoso tu resultado. – jmucchiello

+1

No lo obtuviste. GA no funcionó en absoluto, las redes neuronales lo hicieron. GA fue solo para evolucionar las redes (ajustar los pesos) en función de su éxito. Jugué contra el mejor individuo y fue bastante bueno. No hubo un patrón detectable en su lógica. También obtuve datos de 500k manos de un cliente de póker, e hice modelos de algunos de los mejores jugadores (con redes neuronales). El mejor individuo también venció a estos. El promedio de BB fue alrededor de 1.5 después de un millón de manos. – nhaa123

2

Como ya se recomendó, el libro Theory of Poker es una fuente de información realmente valiosa para jugar al juego y para construir una IA. Probablemente deberías comprarlo, ya que no cuesta tanto.

El grupo de búsqueda de la Universidad de Alberta tiene el estado de la técnica en este momento, aunque tienen una dura competencia que surge de vez en cuando. (No todos los bots de póquer y la investigación de IA en el campo es público debido a la tentación de usar los resultados en el póker en Internet, aunque eso está prohibido.)

Primero debes decidir qué tipo de póquer vas a enfrentar primero. El Hold'em de dos jugadores está bastante resuelto, aunque los mejores humanos todavía se pelearon con la mejor IA disponible. La IA tiene las principales ventajas sobre los humanos al tener un ilimitado e impecable recuerdo de manos pasadas, un análisis perfecto de los patrones basados ​​en eso y, como son máquinas, no se inclinan como lo hacen casi todos los humanos ocasionalmente.

El Hold'em fijo es probablemente el más fácil de descifrar, por lo que es posible que desee comenzar con 1-1 hold'em fijo y luego decidir qué hacer a continuación.

Éstos son algunos aspectos que cambian la estrategia correcta (y su IA):

  • Un juego de caja es diferente de un torneo -El número de jugadores toma las decisiones diferentes.
  • Hold'em no es el único póquer. Omaha, Stud y otros existen y son ampliamente jugado.
  • El límite fijo es diferente de Pot Limit, que es diferente de No Límite.
  • Para vencer lo mejor que necesita para cubrir una gran cantidad de cosas muy sutiles que los mejores jugadores piensen cuando jueguen. Para vencer a un juego amateur de apuestas bajas, ninguna de estas cosas cuenta.

Si usted decide ir a por Hold'em sin límite, es posible que desee echa un vistazo a la serie de tres libros Harrington on Hold'em y un libro No Limit Poker - Teoría y Práctica. Después de haber leído bastantes libros sobre el póker, puedo decir que estos libros combinados con Theory of Poker son suficientes.

0

Sólo para añadir a los enlaces arriba, una de las cosas importantes a implementar sería http://en.wikipedia.org/wiki/Kelly_criterion que ayudará a determinar el tamaño óptimo de las apuestas dadas las probabilidades esperadas en una serie de apuestas. Con humanos podría haber errores en el juicio de probabilidades, pero si su programa de IA puede escupir las probabilidades normalizadas esperadas basadas en cualquiera que sea el algoritmo entonces esta técnica de apostar que equilibra tanto el riesgo como la recompensa para el jugador de ventaja sería una buena solución.

2

No estoy seguro de cuál es el juego exacto que le interesa, pero el enfoque típico es crear una versión abstracta mucho más pequeña del juego, resolver ese juego más pequeño y luego asignar situaciones de juego reales al juego abstracto para generar consejos. La mayoría de los trabajos académicos omiten los detalles de este proceso a favor de presentar resultados sobre la convergencia, la explotación y los resultados de la competencia.

Sin embargo, hay algunas bases de código disponibles públicamente que presentan una implementación completa. Uno de los mejores es Omen Fell:

http://www.deducer.org/pmwiki/pmwiki.php?n=Main.ArtificialIntelligencePoker

Este es un bot estrategia básica completa que utiliza juego ficticio para optimizar la estrategia para el juego abstracto. Es un buen punto de partida porque es bastante directo, completo y representa una buena presentación del enfoque del juego abstracto.

Si usted está interesado en el desarrollo de póquer AI, sugeriría leer todo, desde 2007 y en la del grupo de póquer UA y estudiantes de Tuomas Sandholm:

http://www.cs.cmu.edu/~sandholm/

http://poker.cs.ualberta.ca/publications.html