Una función de evaluación , también conocida como función de evaluación heurística o función de evaluación estática , es una función utilizada por los programas informáticos de juegos para estimar el valor o la calidad de una posición (generalmente en un nodo hoja o terminal) en un árbol de juego. [ 1 ] La mayoría de las veces, el valor es un número real o un entero cuantificado , a menudo en n partes del valor de una pieza de juego como una piedra en el go o un peón en el ajedrez, donde n puede ser décimas, centésimas u otra fracción conveniente, pero a veces, el valor es una matriz de tres valores en el intervalo unitario , que representan los porcentajes de victoria, empate y derrota de la posición.
No existen modelos analíticos ni teóricos para las funciones de evaluación de juegos sin resolver, ni dichas funciones son del todo arbitrarias. La composición de las funciones de evaluación se determina empíricamente insertando una función candidata en un autómata y evaluando su rendimiento posterior. Actualmente existe un importante conjunto de evidencia sobre la composición general de las funciones de evaluación para varios juegos, como el ajedrez, el shogi y el go.
Los juegos en los que los programas de computadora que juegan juegos emplean funciones de evaluación incluyen ajedrez , [ 2 ] go , [ 2 ] shogi (ajedrez japonés), [ 2 ] othello , hex , backgammon , [ 3 ] y damas . [ 4 ] [ 5 ] Además, con la llegada de programas como MuZero , los programas de computadora también utilizan funciones de evaluación para jugar videojuegos , como los de Atari 2600. [ 6 ] Algunos juegos como el tres en raya están fuertemente resueltos y no requieren búsqueda o evaluación porque hay un árbol de soluciones discreto disponible .
Relación con la búsqueda
Un árbol de dichas evaluaciones suele formar parte de un algoritmo de búsqueda, como la búsqueda en árbol de Monte Carlo o un algoritmo minimax como la búsqueda alfa-beta . Se presume que el valor representa la probabilidad relativa de ganar si el árbol del juego se expandiera desde ese nodo hasta el final de la partida. La función solo considera la posición actual (es decir, en qué casillas se encuentran las piezas y su relación entre sí) y no tiene en cuenta el historial de la posición ni explora posibles movimientos posteriores al nodo (por lo tanto, es estática). Esto implica que, para posiciones dinámicas donde existen amenazas tácticas, la función de evaluación no será una valoración precisa de la posición. Estas posiciones se denominan no quiescentes ; requieren al menos un tipo limitado de extensión de búsqueda llamada búsqueda quiescente para resolver las amenazas antes de la evaluación. Algunos valores devueltos por las funciones de evaluación son absolutos en lugar de heurísticos, si se produce una victoria, una derrota o un empate en el nodo.
Existe una relación compleja entre la búsqueda y el conocimiento en la función de evaluación. Una búsqueda más profunda prioriza los factores tácticos a corto plazo y los motivos posicionales a largo plazo, más sutiles. Asimismo, existe una compensación entre la eficacia del conocimiento codificado y la complejidad computacional: el cálculo de conocimiento detallado puede consumir tanto tiempo que el rendimiento disminuye, por lo que las aproximaciones al conocimiento exacto suelen ser mejores. Dado que la función de evaluación depende tanto de la profundidad nominal de la búsqueda como de las extensiones y reducciones empleadas, no existe una formulación genérica o independiente para dicha función. Una función de evaluación que funciona bien en una aplicación generalmente requerirá un reajuste o reentrenamiento sustancial para funcionar eficazmente en otra.
En ajedrez
En el ajedrez por computadora , las evaluaciones más altas indican un desequilibrio material o una ventaja posicional, o que una victoria material suele ser inminente. Las evaluaciones muy altas pueden indicar que el jaque mate es inminente. Una función de evaluación también codifica implícitamente el valor del derecho a mover, que puede variar desde una pequeña fracción de un peón hasta la victoria o la derrota.
Funciones de evaluación hechas a mano
El resultado de una función de evaluación manual suele ser un número entero cuyas unidades se denominan peones . El término «peón» se refiere al valor que tiene un jugador cuando posee un peón más que el oponente en una posición, como se explica en el apartado «Valor relativo de las piezas de ajedrez» . El número entero 1 suele representar una fracción de peón, y en el ajedrez por ordenador se utilizan comúnmente los centipeones , que equivalen a una centésima parte de un peón.
Históricamente, en el ajedrez computacional, los términos de una función de evaluación son construidos (es decir, diseñados manualmente) por el desarrollador del motor, en lugar de ser descubiertos mediante el entrenamiento de redes neuronales . El enfoque general para construir funciones de evaluación diseñadas manualmente consiste en una combinación lineal de varios términos ponderados que influyen en el valor de una posición. Sin embargo, no todos los términos de una función de evaluación diseñada manualmente son lineales, como la seguridad del rey y la estructura de peones. Cada término puede considerarse compuesto por factores de primer orden (aquellos que dependen únicamente del espacio y de cualquier pieza en él), factores de segundo orden (el espacio en relación con otros espacios) y factores de enésimo orden (dependencias del historial de la posición).
Una función de evaluación manual suele tener un término de balance material que generalmente domina la evaluación. Los valores convencionales utilizados para el material son: Reina=9, Torre=5; Caballo o Alfil=3; Peón=1; al rey se le asigna un valor arbitrariamente grande, generalmente mayor que el valor total de todas las demás piezas. [ 1 ] Además, suele tener un conjunto de términos posicionales que generalmente no suman más que el valor de un peón, aunque en algunas posiciones los términos posicionales pueden ser mucho mayores, como cuando el jaque mate es inminente. Las funciones de evaluación manual suelen contener de docenas a cientos de términos individuales.
En la práctica, las funciones de evaluación manuales eficaces no se crean ampliando la lista de parámetros evaluados, sino ajustando o entrenando cuidadosamente las ponderaciones relativas entre sí, de un conjunto modesto de parámetros como los descritos anteriormente. Para ello, se utilizan posiciones de diversas bases de datos, como partidas de maestros, partidas de motores de ajedrez, partidas de Lichess o incluso autoaprendizaje, como en el aprendizaje por refuerzo .
Ejemplo
Un ejemplo de función de evaluación manual para ajedrez podría ser el siguiente:
- c 1 * material + c 2 * movilidad + c 3 * seguridad del rey + c 4 * control del centro + c 5 * estructura de peones + c 6 * tropismo del rey + ...
Cada uno de los términos es un peso multiplicado por un factor de diferencia: el valor de los términos materiales o posicionales de las blancas menos los de las negras.
- El término material se obtiene asignando un valor en unidades de peón a cada una de las piezas.
- La movilidad es el número de movimientos legales disponibles para un jugador, o bien la suma del número de casillas atacadas o defendidas por cada pieza, incluyendo las ocupadas por piezas propias o contrarias. También se puede tener en cuenta la movilidad efectiva, es decir, el número de casillas "seguras" a las que una pieza puede moverse.
- La seguridad del rey es un conjunto de bonificaciones y penalizaciones que se aplican según la ubicación del rey y la configuración de los peones y piezas adyacentes o frente al rey, así como las piezas opuestas que ocupan los espacios alrededor del rey.
- El control del centro se deriva de la cantidad de peones y piezas que ocupan o influyen en los cuatro espacios centrales y, a veces, en los 12 espacios del centro extendido.
- La estructura de peones es un conjunto de penalizaciones y bonificaciones para diversas fortalezas y debilidades en dicha estructura, como penalizaciones por peones duplicados y aislados.
- El tropismo del rey es una bonificación por la cercanía (o una penalización por la distancia) de ciertas piezas, especialmente las reinas y los caballos, al rey contrario.
Mesas de piezas cuadradas
Una técnica importante en la evaluación desde al menos principios de la década de 1990 es la tabla pieza-casilla (también llamada tabla de valor de pieza). [ 7 ] [ 8 ] Cada tabla es un conjunto de 64 valores que corresponden a las casillas del tablero de ajedrez. La implementación más básica de la tabla pieza-casilla consiste en tablas separadas para cada tipo de pieza por jugador, lo que en ajedrez resulta en un total de 12 tablas pieza-casilla. Los valores en las tablas son bonificaciones/penalizaciones por la ubicación de cada pieza en cada casilla, y codifican una combinación de muchos factores sutiles difíciles de cuantificar analíticamente. En las funciones de evaluación elaboradas manualmente, a veces hay dos conjuntos de tablas: uno para la apertura/medio juego y otro para el final; las posiciones del medio juego se interpolan entre ambos. [ 9 ]
Redes neuronales
Aunque las redes neuronales se han utilizado en las funciones de evaluación de los motores de ajedrez desde finales de la década de 1980, [ 10 ] [ 11 ] no se popularizaron en el ajedrez computarizado hasta finales de la década de 2010, ya que el hardware necesario para entrenar redes neuronales no era lo suficientemente potente en ese momento, y aún no se habían desarrollado algoritmos de entrenamiento rápidos ni topologías y arquitecturas de red. Las funciones de evaluación basadas en redes neuronales generalmente consisten en una red neuronal entrenada mediante aprendizaje por refuerzo o aprendizaje supervisado para aceptar un estado del tablero como entrada y generar un valor real o entero como salida.
Las redes neuronales profundas se han utilizado, aunque con poca frecuencia, en el ajedrez computacional después de que Giraffe de Matthew Lai [ 12 ] en 2015 y AlphaZero de Deepmind en 2017 demostraran la viabilidad de las redes neuronales profundas en las funciones de evaluación. El proyecto de computación distribuida Leela Chess Zero se inició poco después para intentar replicar los resultados del artículo AlphaZero de Deepmind. Aparte del tamaño de las redes, las redes neuronales utilizadas en AlphaZero y Leela Chess Zero también difieren de las utilizadas en los motores de ajedrez tradicionales en que predicen una distribución a través de los movimientos subsiguientes (el cabezal de política ) además de la evaluación (el cabezal de valor ). [ 13 ] Dado que las redes neuronales profundas son muy grandes, los motores que utilizan redes neuronales profundas en su función de evaluación generalmente requieren una unidad de procesamiento gráfico para calcular eficientemente la función de evaluación.
La función de evaluación utilizada por la mayoría de los motores principales es la red neuronal actualizable eficientemente (NNUE), una red neuronal dispersa y poco profunda propuesta originalmente para el shogi computarizado en 2018 por Yu Nasu. [ 14 ] [ 15 ] [ 16 ] De hecho, la arquitectura NNUE más básica es simplemente las 12 tablas de piezas y casillas descritas anteriormente, una red neuronal con una sola capa y sin funciones de activación . Una arquitectura de red neuronal actualizable eficientemente se portó por primera vez al ajedrez en un derivado de Stockfish llamado Stockfish NNUE, lanzado públicamente el 30 de mayo de 2020, [ 17 ] y se incorporó al motor oficial de Stockfish el 6 de agosto de 2020. [ 18 ] [ 19 ]
Tablas de final de partida
Los programas de ajedrez suelen utilizar bases de datos de finales para evaluar de forma rápida y precisa las posiciones finales.
En Go
Históricamente, las funciones de evaluación en el Go computarizado tenían en cuenta tanto el territorio controlado como la influencia de las piedras, el número de prisioneros y la supervivencia de los grupos en el tablero. Sin embargo, los programas informáticos modernos para jugar al Go, como AlphaGo , Leela Zero , Fine Art y KataGo , utilizan principalmente redes neuronales profundas en sus funciones de evaluación y generan un porcentaje de victorias, empates o derrotas en lugar de un valor en número de piedras.
Referencias
- 1 2 Shannon, Claude (1950), Programación de una computadora para jugar ajedrez (PDF) , Ser. 7, vol. 41, Philosophical Magazine , consultado el 12 de diciembre de 2021
- 1 2 3 Silver, David ; Hubert, Thomas; Schrittwieser, Julian; Antonoglou, Ioannis; Lai, Matthew; Guez, Arthur; Lanctot, Marc; Sifre, Laurent; Kumaran, Dharshan; Graepel, Thore; Lillicrap, Timothy; Simonyan, Karen; Hassabis, Demis (7 de diciembre de 2018). "Un algoritmo general de aprendizaje por refuerzo que domina el ajedrez, el shogi y el juego por sí mismo" . Science . 362 (6419): 1140– 1144. Bibcode : 2018Sci...362.1140S . doi : 10.1126/science.aar6404 . PMID 30523106 .
- ↑ Tesauro, Gerald (marzo de 1995). "Aprendizaje por diferencia temporal y TD-Gammon" . Communications of the ACM . 38 (3): 58– 68. doi : 10.1145/203330.203343 . S2CID 8763243. Recuperado el 1 de noviembre de 2013 .
- ↑ Schaeffer, J.; Burch, N.; Y. Björnsson; Kishimoto, A.; Müller, M.; Lake, R.; Lu, P.; Sutphen, S. (2007). "Checkers is Solved" (PDF) . Science . 317 (5844): 1518– 22. Bibcode : 2007Sci...317.1518S . doi : 10.1126 /science.1144079 . PMID 17641166. S2CID 10274228 .
- ↑ Schaeffer, J.; Björnsson, Y.; Burch, N.; Kishimoto, A.; Müller, M.; Lake, R.; Lu, P.; Sutphen, S. "Resolviendo ajedrez" (PDF) . Actas de las Conferencias Conjuntas Internacionales de 2005 sobre Organización de la Inteligencia Artificial .
- ↑ Schrittwieser, Julián; Antonoglou, Ioannis; Hubert, Thomas; Simonyan, Karen; Sifré, Laurent; Schmitt, Simón; Guez, Arturo; Lockhart, Eduardo; Hassabis, Demis; Graepel, Thore; Lillicrap, Timoteo (2020). "Dominar Atari, Go, ajedrez y shogi planificando con un modelo aprendido". Naturaleza . 588 (7839): 604– 609. arXiv : 1911.08265 . Código Bib : 2020Natur.588..604S . doi : 10.1038/s41586-020-03051-4 . PMID 33361790 . S2CID 208158225 .
- ↑ Beal, Don; Smith, Martin C., Aprendizaje de valores de piezas cuadradas mediante diferencias temporales , vol. 22, ICCA Journal
- ↑ Jun Nagashima; Masahumi Taketoshi; Yoichiro Kajihara; Tsuyoshi Hashimoto; Hiroyuki Iida (2002), "Un uso eficiente de las tablas de piezas cuadradas en el shogi informático" ,情報処理学会研究報告 = Informes técnicos de IPSJ SIG , no. 69, Sociedad de Procesamiento de Información de Japón, págs. 29 a 36
- ↑ Guía de evaluación del bacalao seco , consultada el 12 de diciembre de 2021
- ↑ Thurn, Sebastian (1995), Aprender a jugar al ajedrez (PDF) , MIT Press , consultado el 12 de diciembre de 2021.
- ↑ Levinson, Robert (1989), Un programa de ajedrez autoaprendizaje orientado a patrones , vol. 12, ICCA Journal
- ↑ Lai, Matthew (4 de septiembre de 2015), Giraffe: Using Deep Reinforcement Learning to Play Chess , arXiv : 1509.01549v1
- ↑ "Topología de redes neuronales" . lczero.org . Consultado el 12 de diciembre de 2021 .
- ↑ Yu Nasu (28 de abril de 2018). "Función de evaluación basada en redes neuronales actualizable de manera eficiente para el Shogi computarizado" (PDF) (en japonés).
- ↑ Yu Nasu (28 de abril de 2018). "Función de evaluación basada en redes neuronales actualizable de manera eficiente para el Shogi computacional (traducción no oficial al inglés)" (PDF) . GitHub .
- ^ Gary Linscott (30 de abril de 2021). "NNUE" . GitHub . Consultado el 12 de diciembre de 2020 .
- ^ Noda, Hisayori (30 de mayo de 2020). "Lanzamiento stockfish-nnue-2020-05-30" . Github . Consultado el 12 de diciembre de 2021 .
- ↑ "Presentación de la evaluación NNUE" . 6 de agosto de 2020.
- ↑ Joost VandeVondele (25 de julio de 2020). "oficial-stockfish / Stockfish, fusión NNUE" . GitHub .
- Slate, D y Atkin, L., 1983, "Ajedrez 4.5, el programa de ajedrez de la Universidad Northwestern" en Habilidad ajedrecística en el hombre y la máquina, 2.ª ed., págs. 93-100. Springer-Verlag, Nueva York, NY.
- Ebeling, Carl, 1987, All the Right Moves: A VLSI Architecture for Chess (Tesis doctoral distinguida de la ACM), págs. 56–86. MIT Press, Cambridge, MA
Enlaces externos
- Claves para evaluar puestos
- GameDev.net - Programación de ajedrez, Parte VI: Funciones de evaluación
- ajedrez por computadora
- Inteligencia artificial en juegos
- Heurísticas