1. Práctica de Inteligencia Artificial en las Organizaciones
Propuesta Definitiva
Año Académico: 2009-2010
Convocatoria: Febrero
Grupo de prácticas: Grupo 4
Alumnos:
Díaz Ponce, Antonio email: 100055301@alumnos.uc3m.es
Martínez Fernández, Raúl email: 100054986@alumnos.uc3m.es
García-Cuerva Velasco, Javier email: 100055253@alumnos.uc3m.es
2. Índice
1. Introducción .................................................................................................... 3
1.1. Descripción del Problema ............................................................................3
1.2. Objetivos .................................................................................................. 3
1.3. Posibles Aplicaciones .................................................................................. 3
2. Estado del Arte ................................................................................................ 3
3. Datos de Trabajo .............................................................................................. 4
3.1. Datos de Entrada ....................................................................................... 5
3.2. Datos Adicionales ....................................................................................... 7
3.3. Datos de Salida .......................................................................................... 8
4. Procesamiento inteligente de los datos ................................................................ 9
4.1. Esquema de procesamiento ......................................................................... 9
4.2. Preprocesado de los datos de entrada ........................................................... 9
4.3. Aplicación de técnicas de IA ....................................................................... 10
4.4. Post-procesado de los datos de entrada ...................................................... 10
5. Evaluación de las soluciones obtenidas .............................................................. 11
5.1. Método de Evaluación ............................................................................... 11
6. Análisis de Dificultades, Riesgos y Aplicabilidad .................................................. 12
6.1. Dificultades en la Obtención de la Solución .................................................. 12
6.2. Riesgos Previstos ..................................................................................... 12
6.3. Análisis de Implantación ............................................................................ 12
2
3. 1. Introducción
1.1. Descripción del Problema
El problema principal es la toma de decisiones en el juego del Póker, las
principales acciones que se pueden realizar en este juego son:
o No ir: Lo que supone que el jugador deja de jugar.
o Pasar: El jugador decide no subir ninguna apuesta.
o Subir N: El jugador sube la apuesta del juego una cantidad “N”, podrá subir
tanto como la cantidad de dinero de la que disponga.
Sin embargo, a pesar de que el conjunto de salida parece reducido, el conjunto de
variables a tomar en cuenta es mucho mayor, ya que, a la hora de tomar una decisión no
sólo dependerá de las cartas que se poseen, sino que también se tendrá en cuenta la
posición que se ocupa en la mesa y el modo de jugar de los contrincantes.
Además el tiempo de respuesta también suele influir en el modo de juego de los
jugadores, por ejemplo, un jugador que no tiene segura su jugada tardará más en
decidirse que un jugador que tiene una buena mano.
Actualmente, la modalidad de Póker a la que más se juega es Texas Hold 'em Sin
Límite, esta es la modalidad sobre la que realizaremos el estudio. En ella cada jugador
sólo posee dos cartas (cartas personales) y su jugada es la mejor combinación de cartas
que puede formar con las cartas que se van poniendo en la mesa (denominadas cartas
comunitarias).
1.2. Objetivos
El objetivo principal es obtener un jugador mediante una técnica de inteligencia
artificial que sea capaz de tomar las mejores decisiones posibles, en la primera ronda de
apuestas del juego (Preflop). Es cierto que es complejo de valorar finalmente si hemos
creado un buen jugador, o hemos conseguido aprender las mejores decisiones, ya que el
conjunto de posibilidades es muy grande.
En nuestro caso sería positivo que con estas decisiones consiguiésemos ganar el
mayor dinero posible cuando realicemos apuestas, y de perder la menor cantidad de
dinero posible cuando la jugada sea mala.
1.3. Posibles Aplicaciones
El resultado sería valioso para las casas de apuestas que albergan partidas de
Póker Online, ya que, es necesario un mínimo de jugadores para participar y para que los
jugadores tengan un servicio de juego 24h podrían interactuar con estos jugadores
creados mediante IA. Además empresas o particulares podrían optar, ilícitamente, por
tener agentes en el juego que ganen dinero para ellos.
3
4. 2. Estado del Arte
La Inteligencia Artificial ya se ha adentrado en el campo de la toma de decisiones
en el Póker. Actualmente se dice que es una de las principales amenazas del Póker
Online, y esto se debe a que los jugadores que han sido generados, a pesar de que no
son capaces de vencer a jugadores expertos, sí que son capaces de ganar a jugadores
amateur y estándar.
Es por ello que actualmente se intentan introducir técnicas para poder expulsar a
jugadores automáticos. Técnicas como la resolución de los cada vez más inservibles
captchas o de problemas más específicos como preguntas, etc.
Además de empresas dedicadas a este propósito también las universidades se
encargan de organizar concursos, uno de los más conocidos es el First Man-Machine
Poker Championship, promocionado por la universidad de Alberta (Edmonton, Canadá).
Debido al secretismo que genera este terreno, por su directa productividad, es
difícil que las empresas comenten su relación con este tipo de investigaciones, y por
tanto es difícil obtener datos de manos y jugadas, así con información relacionada con la
aplicación directa de este tipo de solución.
Los principales usos de IA en el póker son:
• Programas que aprendan a jugar como una persona: como ya hemos
mencionado.
• Clústering para agrupar tipos de jugadores: para intentar inferir posibles
conjuntos de tipos de jugadores. Sus resultados no son buenos. Y
estadísticamente ya existen otras soluciones bastantes buenas.
• Clústering para agrupar rangos de manos de los jugadores: para intentar
delimitar las cartas con las que juegan otros jugadores, en función de la
situación. Existen ya técnicas estadísticas que funcionan bien para hacer esto.
• Técnicas de aprendizaje para construir modelos estadísticos del oponente: La
Universidad de Alberta ha desarrollado programas siguiendo estas técnicas.
4
5. 3. Datos de Trabajo
3.1. Datos de Entrada
Nuestros datos son manos de póker de un jugador profesional.
Las salas de póker online, permiten guardar las manos que un jugador juega, para
posteriormente poder estudiar estas.
Estas manos se almacenan en unos ficheros de texto, con un formato parecido al
siguiente:
PokerStars Mano n.º 32760618860: Torneo n.º 193734964, Freeroll Hold'em No Limit -
Nivel I (10/20) - 12-09-2009 21:00:54 CET [12-09-2009 15:00:54 ET]
Mesa '193734964 218' 9-max Asiento n.º 2 es el botón
Asiento 1: alvaroRobles (1500 en fichas)
Información de la mano que comienza
Asiento 2: Cepiblan (1490 en fichas)
Asiento 3: pitufo_verde (1500 en fichas) fuera de la mano (trasladado de otra mesa a
la ciega pequeña)
Asiento 4: diazpetit (1480 en fichas)
Asiento 5: sinchan607 (1500 en fichas) Información de los jugadores que
están en la mano
Asiento 6: aticap (4530 en fichas)
Asiento 7: worldblade (1500 en fichas) está ausente
Asiento 8: pokkerwinner (1500 en fichas) está ausente
Asiento 9: terelumi45 (1500 en fichas) está ausente
diazpetit: pone ciega pequeña 10
sinchan607: pone ciega grande 20 Información de las apuestas
obligatorias
*** CARTAS PROPIAS ***
Repartidas a sinchan607 [8s 9d]
aticap: iguala 20
Información de las cartas de nuestro
worldblade: se retira jugador
pokkerwinner: se retira
terelumi45: se retira
worldblade está conectado Información de la primera ronda de
worldblade ha vuelto apuestas
alvaroRobles: iguala 20
Cepiblan: se retira
Información de la acción preflop de
diazpetit: iguala 10 nuestro jugador
sinchan607: pasa
*** FLOP *** [4d Kc Kh]
Información de las 3 primeras cartas
diazpetit: pasa
comunitarias (Flop)
sinchan607: pasa
aticap: pasa
alvaroRobles: pasa Información de la segunda ronda de
apuestas
5
6. *** TURN *** [4d Kc Kh] [9s]
diazpetit: pasa Información de la cuarta carta
sinchan607: apuesta 60 comunitaria (Turn)
aticap: se retira
alvaroRobles: iguala 60
Información de la tercera ronda de
diazpetit: se retira apuestas
*** RIVER *** [4d Kc Kh 9s] [Kd]
sinchan607: apuesta 60
Información de la quinta carta
alvaroRobles: iguala 60
comunitaria (River)
*** SHOW DOWN ***
sinchan607: muestra [8s 9d] (full house de Reyes y Nueves)
alvaroRobles: descarta su mano sin mostrar
sinchan607 recaudó 320 de bote Información de la cuarta ronda de
*** RESUMEN *** apuestas
Bote total 320 | Comisión 0
Comunitarias [4d Kc Kh 9s Kd] Información de quien gana la mano
Asiento 1: alvaroRobles descartó sin mostrar [2h Ah]
Asiento 2: Cepiblan (botón) se retiró antes del Flop (no apostó)
Asiento 4: diazpetit (ciega pequeña) se retiró en el Turn
Asiento 5: sinchan607 (ciega grande) mostró [8s 9d] y ganó (320) con full house de
Reyes y Nueves
Asiento 6: aticap se retiró en el Turn
Asiento 7: worldblade se retiró antes del Flop (no apostó)
Asiento 8: pokkerwinner se retiró antes del Flop (no apostó)
Asiento 9: terelumi45 se retiró antes del Flop (no apostó)
La información que está en gris, no será necesaria para nosotros, ya que sólo nos
centramos en el preflop, y las rondas posteriores no nos importan.
6
7. 3.2. Datos Adicionales
Información adicional podría ser otra información que tuviese el jugador, que no
fuese sólo la mesa de juego, los oponentes, las fichas y las cartas, es decir, que no fuese
sólo la información que te da la sala de póker, que es la mínima para poder jugar.
Existen programas que usan los datos de las manos para generar estadísticas de
tus contrincantes. Y estas estadísticas se pueden mostrar sobreimpresas en la mesa de la
sala de póker online. A esto se llama HUD (head up display).
A continuación mostramos una mesa sin HUD y después una con HUD:
Figura 1: Mesa de Póker sin HUD
Figura 2: Mesa de Póker con HUD
Estadísticas del HUD
Esta información define a los jugadores, pudiéndose así saber si el jugador va a
muchas manos o a pocas, si es agresivo o pasivo, etc.
La ventaja del póker online son estas herramientas que te dan información extra
de mucha utilidad durante el juego.
Tener esta información podría servir como información adicional a nuestros datos.
7
8. 3.3. Datos de Salida
Los datos de entrada necesitan un procesamiento que se explicará en el siguiente
apartado. De nuestro clasificador se espera que, dada una mano, sepa que decisión
tomar en cuanto a Retirarse (Fold), Igualar (Call), Subir (Raise), Resubir (Re-Raise).
En cuanto a la mano se necesitará toda la información que hemos mencionado en
el apartado 3.1.
8
9. 4. Procesamiento inteligente de los datos
4.1. Esquema de procesamiento
Primero, haremos un programa que coja nuestros ficheros de datos en bruto,
extraiga la información que necesite y genere el fichero de datos que necesita la
herramienta a utilizar.
Después, probaremos varias técnicas de IA, que permita la herramienta elegida.
4.2. Preprocesado de los datos de entrada
Para realizar el clasificador habíamos pensado utilizar WEKA, ya que es una
herramienta de Aprendizaje Automático muy completa ya que tiene multitud de
algoritmos.
WEKA nos permite procesar los datos antes de usarlos con alguna técnica.
También, permite ampliar el espacio de memoria que usa, por lo que la cantidad
de datos que usemos no es un problema.
WEKA también nos deja hacer test con un conjunto de datos, para probar el
modelo, con lo que podríamos plantear una mano y ver qué solución toma.
A los datos en bruto tenemos que procesarlos para poner el formato “arff” de
WEKA.
Cada patrón tendrá, a priori, los siguientes atributos:
• Número de la primera Carta
• Palo de la primera Carta
• Número de la segunda Carta
• Palo de la segunda Carta
• Tipo de Partida (Torneo, Cash, Sit&Go)
• Ciega Pequeña
• Ciega Grande
• Posición en la mesa
• Stack propio
• Número de jugadores con los que se enfrenta
• Stack de cada jugador
• Acción de cada jugador
Después analizaremos estos datos con WEKA para ver si hay atributos
innecesarios o repetidos.
9
10. 4.3. Aplicación de técnicas de IA
Como técnicas principales de IA utilizaríamos aprendizaje supervisado, ya que le
vamos a decir si su salida es o no correcta. Usaremos clasificadores, y no regresores, ya
que la salida toma valores discretos.
Utilizaremos Redes de Neuronas, Perceptrón Multicapa (MLP), y jugaremos con sus
parámetros (Número de capas Ocultas y Neuronas de Estas, Tasa de Aprendizaje,…) para
ver cómo obtener el mejor clasificador.
4.4. Post-procesado de los datos de entrada
Como con WEKA podemos evaluar con unos nuevos datos de test, podríamos
procesar la información de salida para crear un fichero como el de datos en bruto. Y
finalmente, usar programas reproductores de manos de póker, para ver gráficamente
esta mano.
10
11. 5. Evaluación de las soluciones obtenidas
5.1. Método de Evaluación
En este apartado nos centraremos en explicar el método de evaluación para
nuestra práctica. Utilizaremos uno principalmente:
- Nos encargaremos de recoger las manos de los mejores jugadores.
- Posteriormente compararemos las jugadas de los jugadores con la salida de
nuestro clasificador de manos preflop, atendiendo a los siguientes atributos:
o La mano inicial con la que juega el jugador.
o La acción realizada por ese jugador en la jugada.
De esta forma, si a una entrada determinada por la dos cartas iniciales de la mano,
nos da una salida determinada a la salida del clasificador (Fold, Call, Raise, Re-Raise),
compararemos lo que habría hecho el jugador experto con esa misma mano.
Con este método podríamos determinar si nuestro clasificador actúa adecuadamente,
aunque hay que tener en cuenta que el depende de muchos factores, y no siempre
coincidirán los resultados.
Aún así, estaremos abiertos a otros posibles métodos de evolución.
11
12. 6. Análisis de Dificultades, Riesgos y Aplicabilidad
6.1. Dificultades en la Obtención de la Solución
Describir brevemente en este apartado las dificultades inherentes al problema y a
las técnicas propuestas, analizando las posibles soluciones o mitigaciones.
La principal dificultad a la hora de realizar el trabajo ha sido la obtención de los
datos preliminares. Debido a que estos datos suelen ser de carácter privado, o en su
defecto de carácter comercial, es muy complicado encontrarlos en la red. Para ello nos
hemos encargado de pedirlos a diversas páginas y particulares, esperando a su
contestación.
Otra de las dificultades encontradas es la necesidad de tener un gran número de
datos, así como que estos sean de jugadores de un nivel medio-alto, labor bastante difícil
de realizar.
La tercera dificultad aparecerá a la hora de eliminar datos innecesarios dentro de
los datos preliminares, los cuales pueden desvirtuar el resultado final de no detectarlos
con anterioridad. Esto se arreglará con el análisis con Weka, con el que nos encargarnos
de eliminar estos datos innecesarios.
6.2. Riesgos Previstos
La principal incertidumbre que se nos plantea viene determinada por la obtención
de los datos. Esto es debido a que, aparte de necesitar una buena cantidad de manos
para poder realizar la práctica con unos buenos resultados, sería interesante que estas
manos fuesen de buena calidad para que el aprendizaje fuese correcto.
Otro de los riegos, como en cualquier proyecto de estas características, es que a la
hora de obtener los resultados, estos no sean todo lo buenos que se esperaba, y nos
obligue a replantearnos el procedimiento.
6.3. Análisis de Implantación
Para poder llevar a cabo este proyecto necesitaremos un ordenador de nivel medio
para poder llevarlo a cabo. Las especificaciones recomendadas serían:
Procesador: Intel Pentium4 2,4 Ghz
Disco duro: 200 Gb
Memoría RAM: 2 Gb
El principal problema que se nos planteaba era que Weka tenía un espacio de
memoria limitado, pero se puede ampliar sin problemas.
12