La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 1: Técnicas heurísticas en juegos

Presentaciones similares


Presentación del tema: "Tema 1: Técnicas heurísticas en juegos"— Transcripción de la presentación:

1 Tema 1: Técnicas heurísticas en juegos
Introducción Estrategias básicas: Estrategia exhaustiva: MiniMax Estrategia de poda: alfa-beta Estrategia: SSS* Estrategia de test previo: Scout Técnicas avanzadas. Técnica de bajada progresiva. Poda heurística. Continuación heurística.

2 Introducción ¿Porqué los juegos en Inteligencia Artificial? Historia:
Wolfgam Kempelem, el ajedrecista mecánico 1760. El Ajedrecista, Leonardo Torres Quevedo, 1912. Turing 1952. Shanon. Arthur Samuel, damas, 1963. El campo de batalla: El Ajedrez. Nuevos retos: El GO.

3 ¿Porqué los juegos en Inteligencia Artificial?
Entorno controlado. REGLAS CONCISAS. Se requiere “inteligencia”. La máquina imita al humano. Fácil evaluación.

4 Introducción Programación de las máquinas para juegos de estrategia
Basados en búsqueda (complejos espacios de búsqueda) La existencia de un oponente introduce incertidumbre Existen limitaciones en el tiempo de respuesta Pueden competir contra la inteligencia humana En general, se trata de construir sistemas que sean capaces de tomar decisiones en un entorno adverso.

5 Introducción Tipos de juegos: Información completa, deterministas:
ajedrez, damas Información completa, con azar: backgammon Información incompleta, con azar: juegos de cartas

6 Características y ejemplos
Características de los juegos que vamos a estudiar en este tema: Juegos bipersonales. Los jugadores mueven alternativamente. La ventaja para un jugador es desventaja para el otro. Los jugadores poseen toda la información sobre el estado del juego. Hay un número finito de estados y decisiones. No interviene el azar (reglas y configuración jugada).

7 Características y ejemplos
Ejemplos de juegos de ese tipo: Ajedrez, damas, go, otelo, 3 en raya, nim, ... Ejemplos de juegos que no son de ese tipo: Backgammon, poker, bridge, ...

8 Historia El turco. Wolfgang von Kempelen en 1769.
En 1809, el Turco derrotó a Napoleón Bonaparte.

9 Historia El turco.

10 Historia Leonardo Torres Quevedo.
El ajedrecista hizo su debut durante la Feria de París de 1914, generando gran expectación en aquellos tiempos y hubo una extensa primera mención en la Scientific American como "Torres and His Remarkable Automatic Device“. Jugaba automáticamente el final rey y torre contra rey desde cualquier posición sin ninguna intervención humana.

11 Historia En 1952 Turing escribió un programa de ajedrez.
A falta de una computadora lo suficientemente potente como para ejecutarlo, él simulaba el funcionamiento de la computadora, tardando más de hora y media en efectuar un movimiento. Una de las partidas llegó a registrarse; el programa perdió frente a un amigo de Turing.

12 Historia Claude Shannon.
Se dio cuenta que el gran problema de las máquinas que pretendiesen jugar al ajedrez sería el gran número de evaluaciones. A-Strategy: búsqueda exhaustiva, hardware. Shannon predijo que buscando las 30^6 (más de ) posiciones contenidas en los primeros tres movimientos (de ambos bandos, lo que son 6 plies), tardaría aproximadamente 16 minutos, incluso en el caso "muy optimista" que el programa evaluara un millón de posiciones por segundo. 40 años para conseguir esa velocidad. B-Strategy: cortar las ramas de evaluación y reducir el número de evaluaciones de forma inteligente. Software. Los Maestros internacionales evalúan entre posiciones.

13 Historia Arthur L. Samuel. 1963.
Pensaba que enseñar a las computadoras jugar juegos era muy útil para desarrollar tácticas apropiadas para problemas generales. Las damas son simples pero tienen una compleja estrategia. Chinook El problema ha sido completamente resuelto explorando todas las posibles posiciones.

14 Historia Ajedrez: El campo de Batalla
En 1968, el MI David Levy realizó una famosa apuesta, en la cual afirmaba que ninguna computadora de ajedrez sería capaz de derrotarle en diez años, bajo condiciones de torneo. Ganó la apuesta en 1978, venciendo por 3'5-1'5.

15 Historia Deep blue Feng-hsiung Hsu y Murray Campbell desarrollaron un chip dedicado al cálculo de jugadas llamado ChipTest. Escrito en C, era capaz de evaluar 200 millones de posiciones por segundo.

16 Historia Deep blue vs Kasparov 1996 1997

17 Historia Profundidad de búsqueda vs ELO

18 Historia Un equipo de computadoras (Hydra, Deep Junior y Fritz), gana contra un fuerte equipo de humanos formado por Veselin Topalov, Ruslan Ponomariov y Sergey Karjakin, que tenía una media de ELO de 2681. En el campeonato del mundo oficioso, Vladimir Kramnik es derrotado por Deep Fritz 4-2.

19 Historia http://www.bobby-fischer.net/bobby_fischer_video_18.htm

20 Historia Nuevos retos: EL GO.
El tablero es muy grande 19x19, 361 intersecciones. Hay muchos movimientos posibles. Complejidad creciente. Función de evaluación. difícil de definir. Nivel de aficionado.

21 Estrategias básicas: Objetivo: búsqueda de la mejor jugada
Nos centraremos en un juego genérico. Dos jugadores, jugando por turnos. Cada jugador está perfectamente informado de las reglas del juego y conoce en todo momento la configuración de cada jugada (no hay azar). De estos dos jugadores cada uno intenta ganar para sí. Si decimos que un jugador gana, el otro pierde y viceversa. Puede existir un estado de empate. Etiquetamos a los jugadores con MAX y MIN. Por norma siempre empezará a jugar MAX y vamos a querer que gane dicho jugador.

22 Estrategias básicas: Estado(N): configuración del juego en un momento dado. Árbol de juego. Cada arista de ese árbol indica un posible movimiento. Una rama completa contempla una posible jugada. En cada nivel se van alternando los jugadores. Factor de ramificación: número de posibles movimientos que se pueden realizar.

23 Árboles de juego: tres en línea

24 Estrategias básicas: Imposible generar todo el árbol de búsqueda
Generar hasta un determinado nivel de profundidad. Aplicar alguna función de evaluación f(N). Devuelve un valor numérico cómo de bueno es un estado. MAX maximizará esta función y MIN minimizará dicha función. En algunos casos la función nos puede devolver valores como PIERDE, GANA o EMPATA, siempre referidos a MAX. Objetivo del análisis del árbol: determinar valor del nodo raíz (inicio de la jugada). A este valor se le denomina valor MiniMax.

25

26

27

28

29

30

31

32 Árboles de juego Representación de todas las posibles situaciones que se pueden dar en el juego, a partir de un estado dado Cada nivel corresponde a un jugador (el primero para MAX).

33 Estrategia exhaustiva: MiniMax
El problema de decidir el movimiento adecuado. En su turno, la máquina debe decidir que movimiento hacer. Idea: En cada turno, construir el árbol de juego completo cuyo nodo raíz sea la situación actual, desarrollándolo hasta los estados finales. Valorar los finales según la función de utilidad. Propagar hacia arriba los valores de la función. Elegir el movimiento que lleve al estado sucesor del actual con mejor valoración.

34 Estrategia exhaustiva: MiniMax
La propagación de valores se hace según el principio minimax: MAX siempre escogerá lo mejor para MAX y MIN lo peor para MAX. Un nodo de MAX toma el valor del sucesor con mayor valor. Un nodo de MIN toma el valor del sucesor con menor valor

35

36

37

38 Heurística: función de evaluación estática
Dado un estado del juego y un turno, es una estimación de la bondad de tal situación respecto de MAX En los estados finales, deberá coincidir con la de utilidad Esta función heurística codifica todo el conocimiento que poseemos acerca del juego Cuanto mayor el valor, mejor el estado para MAX Lo importante es la comparación del valor entre los estados Calidad de la f.e.: En estados terminales f.e.=f.u. ¡Su cálculo no debe ser muy lento!. Compromiso precisión-costo en tiempo. La f.e. debe reflejar con precisión las posibilidades reales de ganar.

39 Heurística: función de evaluación estática
Implementación: En lo que sigue, asumiremos que en lugar de una función f-utilidad(estado,turno), disponemos de una función f-e-estatica(estado,turno), definida sobre todos los estados También necesitaremos dos variables: *maximo-valor* y *minimo-valor* almacenando, respectivamente, cotas para el mayor y el menor valor que puede tomar la función de evaluación estática

40

41

42 Complejidad de minimax
Sea r es el factor de ramificación y m el nivel de profundidad. Complejidad en tiempo: O(rm). Complejidad en espacio: O(rm). Aún es ineficiente en la práctica: En el ajedrez, con 150 segundos por turno, solo sería posible analizar nodos, luego sólo se podría generar un árbol de profundidad menor que 4 Por tanto, la calidad del juego de la máquina será muy baja (un jugador humano medio puede planificar al menos 6 jugadas por adelantado) La poda alfa-beta mejora : En algunos casos, es posible podar el árbol sin que afecte a la decisión que se toma finalmente

43 Estrategia de poda: alfa-beta

44

45 Minimax con poda alfa-beta
Idea: Cada nodo se analiza teniendo en cuenta el valor que por el momento tiene y el valor que por el momento tiene su padre Esto determina en cada momento un intervalo de posibles valores que podría tomar el nodo Significado intuitivo de en cada momento: Nodos MAX: es el valor actual del nodo (que tendría eso o más) y es el valor actual del padre (que tendría eso o menos) Nodos MIN: es el valor actual del nodo (que tendría eso o menos) y es el valor actual del padre (que tendría eso o más)

46 Minimax con poda alfa-beta
La poda se produce si en algún momento : Y no hace falta analizar los restantes sucesores del nodo En nodos MIN, se denomina poda y en los nodos MAX, poda

47 Minimax con poda alfa-beta
6 (10,6) 6 (6,+inf) (6,10)

48 Minimax con poda alfa-beta

49 Complejidad de alfa-beta
Sea r es el factor de ramificación y m el nivel de profundidad. Complejidad en tiempo: O(r3m/4). Complejidad en espacio: O(rm). En la práctica, si los sucesores se exploran en orden de valor minimax (creciente o decreciente dependiendo de si es un nodo MIN o MAX, resp.), se produce la máxima poda, y en ese caso la complejidad temporal es O(rm/2)

50 Complejidad de alfa-beta
Esto hace que en el mismo tiempo se puedan considerar el doble de jugadas por adelantado (haciendo a la máquina más competitiva) Métodos (aproximados) para generar los sucesores en orden: Usar el valor de la función de evaluación estática para ordenar Usar búsqueda en profundidad iterativa y guardar los valores minimax calculados en cada iteración

51 SSS* Mejora, en algunos casos al algoritmo alfa-beta: ordenación de los nodos terminales. Desventaja: incremento de la complejidad espacial. SSS* utiliza subárboles del árbol de juego (normalmente ramas de dicho árbol). Estos subárboles tienen asignados el límite inferior más alto de sus constituyentes. El valor asignado al subárbol siempre será mayor o igual que la mejor solución encontrada dentro de ese subárbol. El valor asignado a un subárbol permite realizar la ordenación. Suponemos que empieza jugando MAX por lo que buscamos el valor más alto posible entre todos los valores asignados a los nodos terminales.

52 SSS* SSS* utiliza la notación decimal de Dewey para representar los nodos en el árbol. Nodo raíz:ε Resto de nodos: N.n (hijo n, desde la izquierda, del nodo N). Tripleta(N, s, h) para cada estado N: numeración del nodo. s = {VIVO, SOLUCIONADO}: estado de la solución de N. h = [-∞, +∞] es el valor del estado. Un nodo etiquetado con VIVO indica que aún se puede seguir generando sucesores del nodo, SOLUCIONADO indica que todos los sucesores ya han sido generados.

53 SSS* Funcionamiento en dos etapas:
Generación de un conjunto de ramas, expandiendo el primer hijo si se trata de un nodo MIN y todos los hijos si se trata de un nodo MAX. Seleccionando estados según su valor h, se generan sucesores de los nodos no solucionados hasta que se solucionen. En el caso de que un nodo esté solucionado se soluciona el padre (si es nodo MIN o el último hermano de un MAX) o se genera el siguiente hermano, en el caso de tratarse de un nodo MAX que no sea último hermano.

54 SSS*

55 SSS*

56 SSS* Ejemplo de ejecución del algoritmo SSS*

57 SCOUT Condición indispensable: se dispone de un método rápido para comprobar desigualdades. Conocemos una función que permite comprobar si el valor MiniMax de un nodo es menor o mayor que un determinado valor. SCOUT utiliza dos rutinas TEST: Resuelve la desigualdad. Parámetros de entrada: Nodo al que aplicar el test. Valor de comparación. Desigualdad a aplicar (> ó ≥). Salida: verdadero o falso, según se cumpla o no la desigualdad. EVAL: Calcula el valor MiniMax de un nodo. Hace uso de TEST para comprobar si debe explorar una determinada rama.

58 SCOUT

59 SCOUT

60 SCOUT

61 SCOUT Negascout: ventana (α, α+1)
En ajedrez se ha estimado una mejora del rendimiento del 10%. function negascout(node, depth, α, β) if node is a terminal node or depth = 0 return the heuristic value of node b := β foreach child of node v := -negascout (child, depth-1, -b, -α) if α < v < β and not the first child v := -negascout(child, depth-1, -β, -v) (* re-búsqueda *) α := max(α, v) if α≥β return α (* poda *) b := α (* nueva ventana *) return α

62 Técnicas avanzadas Uso de movimientos de libros
Técnica de bajada progresiva Poda heurística Continuación heurística Poda “movimiento nulo” (null-move prunning) Transposition table

63 Técnicas avanzadas Imposible seleccionar siempre un movimiento consultando la configuración actual del juego en un catálogo y extrayendo el movimiento correcto. Razonable para algunas partes de ciertos juegos. En ajedrez, tanto la secuencia de apertura como los finales están muy estudiados. El rendimiento del programa puede mejorarse si se le proporciona una lista de movimientos (de libro) que deberían realizarse en dichos casos. Se usa el libro en las aperturas y los finales combinado con el procedimiento MiniMax para la parte central de la partida Conocimiento + búsqueda

64 Técnica de bajada progresiva
Restricciones de tiempo: algoritmos presentados anteriormente no adecuados. Técnica de bajada progresiva Recorrer nodos por niveles. Al llegar la petición de jugada, devolver la solución del último nivel que se haya completado.

65 Técnica de bajada progresiva
No se produce una evaluación de excesivos nodos (comparando con métodos anteriores): El número de nodos terminales de un árbol con un factor de ramificación de B y una profundidad de d es igual a Bd nodos. El número de nodos no terminales en dicho árbol se puede calcular con la serie: B0+B1+..+Bd-1 = (Bd-1)/(B-1) Al dividir el número de nodos terminales entre el número de nodos no terminales: Bd(B-1)/(Bd-1) ≈ B-1 El número de nodos terminales es B-1 veces mayor que el número de nodos no terminales, por lo que no se produce sobre evaluación de nodos.

66 Poda heurística Objetivo: reducir B desarrollando únicamente los mejores movimientos de cada nivel. g(N): Función adicional de evaluación De bajo coste. Versión simplificada de f(N). Reordenación de nodos: el primer nodo de un nivel es el de mayor g(N). Factor de ramificación: Factor(Nodo) = Factor(Padre(Nodo)) - Rango(Nodo)

67 Continuación heurística
Intento de evitar el efecto horizonte. Provocado por la limitación en profundidad: solo se puede tener conocimiento hasta la profundidad seleccionada. Secuencia: Desarrollar en anchura hasta un determinado nivel. Seleccionar un subconjunto de nodos terminales para desarrollar búsquedas más profundas. Selección dada por un conjunto de heurísticas directamente relacionadas con el juego. En ajedrez: Rey en peligro. Peón a punto de convertirse en dama. Jaque….

68 Movimiento nulo Null-move forward prunning permite a un programa de ajedrez reducir de forma drástica el factor de ramificación con un cierto riesgo de perder información importante. Chrilly Donniger, 1993. La idea es dar al oponente una jugada de ventaja, y si tu posición sigue siendo buena, (alfa mayor que beta), se asume que el alfa real seguirá siendo mayor que beta y por tanto podamos esa rama y seguimos examinando otros nodos. No se suelen permitir dos movimientos nulos seguidos. Inestabilidad en la búsqueda. Los valores de beta pueden cambiar.

69 Transposition table En muchos juegos es posible llegar a la misma posición a partir de diferencias secuencias de movimientos. En ajedrez, por ejemplo: 1. d4 Nf6 2. c4 g6 tiene 4 posibles “transposiciones”. Se utiliza una hash table, por cada una de las posiciones analizadas a partir de una determinada profundidad. Cada vez que llegamos a una nueva posición el programa comprueba en la tabla para ver si ya se ha analizado esa posición. (Key, tiempo constante). Si está, se recoge el valor anteriormente asignado a esa posición y el valor es usado directamente. Si no se encuentra, se calcula el valor con la función de evaluación y se inserta esa posición-valor en la tabla. Se pueden evitar evaluaciones de subárboles completos.

70 Cuestiones Técnicas Existen numerosas mejoras a las técnicas descritas, que permiten crear máquinas que juegan a nivel competitivo Decisiones sobre la profundidad (>donde parar la busqueda?) Diseño de funciones de evaluación estática Combinación lineal de características Pesos para ponderar la importancia de cada característica Aprendizaje automático Aprendizaje de los pesos, tras una serie de partidas consigo misma Redes neuronales, algoritmos genéticos, etc.

71 Bibliografía Russell, S. y Norvig, P. “Inteligencia Artificial. Un enfoque moderno” (Prentice Hall, 1996). Cap. 5: Juegos". M.A.Cazorla, P. Campaña, F. Escolano y R. Rizo, “Fundamentos de Inteligencia Artificial” (Pub. Universidad Alicante, 1999). Cap. 5: Búsqueda en Juegos". F. Escolano, M.A.Cazorla, I. Alfonso, O. Colomina y M.A. Lozano, “Inteligencia Artificial. Modelos, Técnicas y Áreas de Aplicación” (Thomson, 2003). Cap. 2: Búsqueda Heurística (sección 2.3)".


Descargar ppt "Tema 1: Técnicas heurísticas en juegos"

Presentaciones similares


Anuncios Google