Un test objetivo de 'humanidad' para motores de ajedrez.

Ver el tema anterior Ver el tema siguiente Ir abajo

Un test objetivo de 'humanidad' para motores de ajedrez.

Mensaje por Kaxte el Miér Nov 09, 2011 9:32 pm

Este tema lo posteó el forero istolacio en el antiguo foro, lo reposteo aquí con su permiso.



En qué consiste el test.

Se ha afirmado en buen número de ocasiones que ciertos motores de ajedrez se comportan de manera 'humana' por su elección de jugadas en ciertas posiciones. Entre otras cosas, es interesante encontrar el motor más 'humano' para usarlo en el análisis de partidas entre jugadores de alto nivel. Aquí presento un método para medir esa 'humanidad' objetivamente, sin depender de las apreciaciones personales.

El húngaro Emil Gelenczei escribió el libro "Juegue con/contra los grandes maestros" ("Spiel mit-gegen Grossmeister", Sportverlag Berlin-1977) para orientar al aficionado sobre su fuerza ajedrecística. Este libro se publicó antes de que se popularizaran las computadoras personales y los programas de ajedrez, de forma que sus valoraciones no están influenciados por la tecnología. Es humano al 100%.

Basado en 64 partidas reales de alto nivel (con jugadores como Capablanca, Alekhine, Botvinnik, Tal, Petrosian, Spassky, Fischer, Nimzowitsch, Keres, Larsen, etc.) el lector debe, una vez superada la apertura, intentar encontrar la mejor jugada para uno de los dos bandos (el vencedor, salvo en casos de tablas). Por cada jugada que coincide con la que se jugó en realidad se le dan puntos, en función de la dificultad de cada movimiento (dificultad que Gelenczei calcula en base a los análisis humanos de su época). Tras ver la contestación del rival se le vuelve a pedir la mejor jugada, hasta terminar la partida. La suma total de los puntos obtenidos da una estimación de su categoría ajedrecística.

Puede utilizarse este test para valorar la 'humanidad' de un motor de ajedrez, es decir, para evaluar qué motor elige sus jugadas de una forma más ajustada a cómo lo hicieron los maestros humanos. Así lo hizo el miembro de la SSDF Gunnar Blomstrand (véase http://biphome.spray.se/gunnar.blomstrand/topplista_64.htm y http://hem.bredband.net/b221753/topplista_64.htm, ambas con el texto en sueco) pero no actualiza los resultados desde 2009.

Un motor no puede en modo alguno jugar al ajedrez de igual forma a como lo hace un ser humano. Por citar algunos factores, los seres humanos juegan con un plan, se fatigan, les afectan los factores psicológicos, adaptan su juego al rival o a la clasificación del torneo, cometen errores de cálculo y de vista, usan de forma ineficiente el tiempo de que disponen, no siguen una norma fija para valorar una posición y aprenden de sus fallos. Los motores no hacen nada de esto, ni siquiera piensan en el sentido humano del término, pero con sus algoritmos de cálculo simulan el pensamiento humano (los programadores solo crean modelos que mejoran paulatinamente). Hay motores que juegan (es decir, han sido programados) de una forma más posicional, otros más combinativa, unos juegan más sólido otros son más especulativos.

Pero, ¿qué motor produce mayor cantidad de movimientos idénticos a los jugados por humanos de alto nivel? Si llamamos a esto 'humanidad', este test da una medida objetiva de esa 'humanidad'. El test NO mide la calidad del juego de los motores (los humanos, aunque sean maestros, no siempre hacen la mejor jugada) ni el ELO de los motores (que solo se puede conocer estadísticamente, haciendo que los motores jueguen un gran número de partidas entre sí) ni su estilo (algo difícil de definir y de medir de manera objetiva).


Cómo se ha hecho el test.

(El método seguido por Blomstrand me es desconocido en algunos detalles clave de los que se enumeran a continuación).






  1. Como no he podido disponer de ninguna edición del libro de Gelenczei, he tenido que basarme en las partidas y puntuaciones tal y como aparecen en las páginas de Blomstrand. Se han revisado, corrigiendo pequeños errores que contenían. Ha servido de ayuda la versión de Ivan Ivanov de las partidas del libro (en formatos pgn y cbv) que puede encontrarse en http://www.gambitchess.com/semi/db5.htm pero no están exentas de error y carecen de puntuación (el archivo cbv permite, al pasarlo a cbh, entrenar en los GUI de Chessbase a un humano, pero no correr una batería de test a un motor).
  2. Convertí las posiciones (en total 1049, Blomstrand da erróneamente 1047) de las partidas a formato epd poniendo como mejor movimiento (bm) el que debe encontrarse (en algunos casos, se aceptan dos y hasta tres) y que se jugó en la partida real. Las posiciones epd se han obtenido a partir de las partidas en PGN con pgn2epd.exe (http://remi.coulom.free.fr). Se añadió como 'id' el número de la partida y de movimiento en que aparece, y como 'c0' la puntuación o puntuaciones. La puntuación máxima es 3221 (que se obtendría realizando en las 1049 posiciones el movimiento que proporciona mayor puntuación, aunque en el libro de Gelenczei la puntuación máxima es 3200. ¿Añadió Blomstrand posibles respuestas y puntuaciones?).
  3. Cada posición se evalúa durante el tiempo equivalente a 30 segundos CCRL. (En mi computadora, Pentium IV 3GHz 1GB de RAM, eso equivale a 47 segundos. Se puede ver en qué consiste esa medida de tiempo en http://kirill-kryukov.com/chess/discussion-board/viewtopic.php?f=7&t=1486&sid=0a0aaf42d42a0b798ce98f52d10cba84 o en http://www.husvankempen.de/nunn/testers/conditions.htm). Ese tiempo se consume por entero: Es indiferente si el motor encuentra la jugada buscada antes de ese tiempo, el tiempo se usa hasta el final para asegurar que el motor no cambia de opinión. (En mi computadora eso supone casi 14 horas de cálculo por cada motor). Usando este tiempo se pueden tomar las puntuaciones ELO de la lista CGT 40/20. Blomstrand usaba 3 minutos por movimiento (o bien 40/120) con un procesador Celeron a 450 MHz; el equivalente en un Pentium IV 3GHZ es, razonablemente, 47 segundos por jugada.
  4. Los motores se han elegido con dos criterios: 1. Su fuerza ELO (Houdini 1.5a, Critter 1.2, Rybka 4.1, Stockfish 2.1.1 PA GTB Gran2c, Komodo 2.03, Shredder 12, Hiarcs 13.2, Junior 12.5) y 2. Su consideración habitual como 'más humanos' (Rybka 3, Rybka 3 Human, Hiarcs 10, Junior 11.1, Shredder 10.1, Shredder 9.1, ProDeo 1.6). En total, 15 motores. De estos, Blomstrand probó Rybka 3, Hiarcs 10, Shredder 10, Shredder 9 y ProDeo 1.6 (en su versión comercial Rebel).
  5. Cada motor dispondrá de una memoria Hash de 128 MB y, si pueden usarlas, tablas de finales de 3, 4 y 5 piezas (Nalimov, Gaviota y Shredderbases).
  6. Puesto que habrá que valorar cada jugada hecha por los motores se usa un GUI que guarde la jugada (o la PV) encontrada por el motor. Mi preferido es ShredderClassic 4, pero si un motor no es capaz de analizar posiciones automáticamente con él uso Polyglot 1.4.67b (que permite correr tests epd) y si con éste el motor tampoco puede utilizarse (es el caso de ProDeo 1.6), Arena 3.0.

    La estadística de resultados y la gráfica resumen se ha realizado mediante una hoja de cálculo en Microsoft Excel. Se han hecho comprobaciones extra para asegurar que la cuenta, tanto de posiciones acertadas como de puntos obtenidos, es correcta. Se ha añadido información de cómo los motores han resuelto cada una de las 64 partidas y otras estadísticas que comentaré después.

    El cálculo del ELO resultante del test se ha hecho siguiendo la fórmula de Blomstrand (véase en http://biphome.spray.se/gunnar.blomstrand/forklaring_64.htm), pero tomando el ELO base de la lista CGT 40/20 (por el tiempo elegido, Blomstrand usa la lista SSDF 40/120) y haciendo el promedio sobre los mejores 5 motores en lugar de solo 3 (que son los que toma Blomstrand).



El índice de partidas, el archivo pgn con las partidas, el archivo epd con las posiciones y un archivo cbv equivalente a este último (con los análisis de dos motores que se citan después) se pueden descargar en: mediafire.com ?ho3mfroap9k6yj6 (101 KB).
En las partidas pgn se ha añadido como un comentario el número de la partida en el test de Gelenczei (el mismo que se usa en las posiciones epd o en el archivo Chessbase) y el título que Gelenczei pone a cada partida. Espero haber captado bien el significado correcto del original alemán.

Los logs de los análisis de cada motor están disponibles para su revisión. Basta con solicitarlo. Pongo todo el material a disposición del interesado, no puedo entender que alguien que realice cualquier tipo de test no haga lo mismo, pues eso anula la fiabilidad del trabajo presentado.

El documento de Microsoft Excel con las estadísticas se puede descargar en: mediafire.com ?f71do8g2h54ddha (624 KB). Este archivo funcionará en versiones de Office 2000 y posteriores, y en versiones de OpenOffice y LibreOffice.


Los resultados del test.

El primer número indica posiciones resueltas, el segundo los puntos obtenidos, el tercero el ELO deducido del test:

NMotorCorr.PuntosELO_test
1.Houdini 1.5a73922143055
2.Critter 1.273622393089
3.Hiarcs 1072821943027
4.Rybka 4.172721973031
5.Komodo 2.0372421873018
6.Junior 12.572421602980
7.Rybka 372321953029
8.Shredder 9.172321682991
9.Rybka 3 Human71921903022
10.Junior 11.1a71921522969
11.StockFish 2.1.171321632984
12.Shredder 1271321402953
13.Hiarcs 13.270821302939
14.Shredder 10.170620952891
15.ProDeo 1.669020222790


Por lo tanto, el motor que encuentra más jugadas idénticas a los humanos es Houdini 1.5a (un 70.4% del total) y el que obtiene más puntos es Critter 1.2 (un 69.5% del total). Los datos obtenidos son consistentes con los obtenidos por Blomstrand, aunque ligeramente inferiores -a falta de conocer la mecánica exacta de sus pruebas-. (En la clasificación de Blomstrand parece que todos los motores analizaron durante tres minutos cada posición, independientemente del procesador en que se efectuaron las pruebas. Pero no hay información al respecto).

En forma gráfica se ve así:






Valoración de los resultados.

Lo más llamativo de los resultados es que los motores no superan el 71% de acuerdo con los jugadores humanos. En mi opinión, y vistas las jugadas realizadas por humanos y motores, esto se debe a cuatro causas:

a) Cuando una posición está igualada, el criterio posicional de los motores es menos fiable que el de los humanos,

b) los humanos planean ataques y defensas que no darían resultado contra un motor pero que sí funcionan contra otro humano por su ineficiencia en el cálculo,

c) la falta de precisión de los humanos, que en muchos casos prefieren una jugada 'clara' a la 'mejor' jugada o que no ven una jugada ganadora que para los motores es evidente, y

d) en algunos casos (que posiblemente sean aquellos movimientos en los que los motores con mayor ELO CGT disienten) los motores podrían necesitar más tiempo del usado en este test para encontrar la mejor jugada (y que tal vez sea la que eligió el jugador humano, puesto que algunos de los jugadores implicados en el test son genios reconocidos).

También es llamativo que hay poca dispersión entre los resultados de los distintos motores, pese a que su ELO CGT cubre un espectro bastante amplio. Tal parece que, al compararlos con jugadores humanos, los motores demuestran ser bastante similares entre sí y por tanto bien diferentes a los ajedrecistas humanos, sin importar mucho que hablemos de un motor u otro. Como comprobación adicional de ello se ha sometido al mismo test al programa Delfi 5.4 ajustado a su menor potencia (ELO 1000) con un tiempo máximo de 5 segundos por movimiento y ha resuelto correctamente 655 posiciones. Esto es tan sorprendente que he decidido añadir estadísticas sobre las posiciones.

Debido a esta similitud de resultados entre motores, en mi opinión el ELO resultante de este test solo tiene valor anecdótico. Y por la misma razón no he establecido la clasificación por los puntos obtenidos (que dependen, además, de la decisión personal de Gelenczei) sino por el número de posiciones resueltas correctamente.


Sobre las posiciones del test.

Llamaré 'posición unánime' a aquella en la que TODOS los motores responden con la misma jugada. Dado que los motores elegidos son de fuerza y estilo diverso, en principio no era esperable que hubiese muchas 'posiciones unánimes'. Pues entre las 1049 hay nada menos que 510. Esto muestra lo similares que son los motores entre sí.

Vamos a llamar 'posición fácil' a aquella que es resuelta por el jugador humano, por TODOS los motores y además por Delfi 5.4 con ELO 1000, el número de posiciones fáciles es: 434 (del total de 1049). Estas posiciones serían adecuadas para ser resueltas por jugadores de club y no deberían considerarse en un test con motores de ELO elevado como los usados aquí.

Para bajar el listón de habilidad, también se ha sometido al test al motor König Schwarz (motor exclusivo para los GUI de Chessbase que responde de manera instantánea y tiene una fuerza muy baja, tal vez 1100 ELO, se usa como entrenador de principiantes). König Schwarz resuelve 301 posiciones. Las posiciones que además de estar en la categoría 'posición fácil' también son resueltas por König Schwarz las llamo 'posiciones triviales'.

El número de 'posiciones triviales' es 193 del total de 1049, y supuestamente tienen una dificultad mínima.

Por último llamaré 'posición dudosa' a aquella que es 'unánime', coinciden en la respuesta TODOS los motores, pero en discrepancia con la jugada o jugadas que dan puntos. El número de posiciones dudosas es 48 (un 4.6% del total). Estas posiciones merecerían un estudio con más tiempo en MultiPV, lo más probable es que indiquen un error por el bando 'humano' (pero alguna podría ser una genialidad). Es razonable pensar que, aparte de estas, haya más errores en las puntuaciones de Gelenczei, pero al menos estas posiciones son errores casi con certeza. Es seguro que Gelenczei habría cambiado más de una de las puntuaciones de haber dispuesto de computadoras y motores de ajedrez como los actuales.

Ya podemos ajustar el resultado de nuestro test mirando solo las posiciones 'interesantes' es decir las que no son 'fáciles' ni 'dudosas'. Estas posiciones 'interesantes' son 567. Houdini 1.5a resuelve 305 posiciones 'interesantes', el 53.8% de ellas. (Como las posiciones fáciles las resuelven todos y las dudosas no las resuelve ninguno, todos los motores descienden por igual en el número de posiciones resueltas).


Conclusiones.

La conclusión no es una novedad (véase por ejemplo http://blog.chess.com/gwhuebner/wccc-2003-van-oosterom-games-analyzed-with-chessanalyse-26): A 30 segundos CCRL por jugada, no parece existir un motor de ajedrez que se comporte como los humanos de alto nivel en más de un 71% de las jugadas una vez superada la apertura (descartando, por supuesto, el caso de las tablas rápidas entre maestros). Pese a eso, si hubiera que elegir el motor más cercano a los humanos de alto nivel, por el número de posiciones correctamente resueltas sería Houdini 1.5a.

El motor de mayor ELO (Houdini 1.5a) encabeza la clasificación de posiciones resueltas. Eso mismo es lo que obtuvo Blomstrand (en su caso, Rybka 3). Tal vez la puntuación sería mejor dandoles a los motores más tiempo y/o usando MultiPV. Sin embargo, no hay concordancia entre ELO y puntos obtenidos.

Un corolario interesante: Si un humano juega de tal manera que un 80% (concediendo un poco de margen) o más de sus jugadas son idénticas a las que elige uno de los motores punteros, es muy probablemente un tramposo (o bien, cosa poco probable, ha nacido un genio superior a los campeones de antaño).

Espero que esta aportación al tema de la 'humanidad' de los motores de ajedrez les parezca útil. Pido disculpas por la longitud del texto, por alguna afirmación demasiado categórica o por los posibles errores cometidos, en ese caso agradecería que me lo hicieran saber. A quienes hayan soportado la lectura hasta aquí, muchas gracias por su atención y su paciencia.

Un saludo.

Kaxte

Mensajes : 36
Fecha de inscripción : 08/11/2011

Volver arriba Ir abajo

Re: Un test objetivo de 'humanidad' para motores de ajedrez.

Mensaje por Kaxte el Miér Nov 09, 2011 9:40 pm

Otro mensaje en este mismo hilo del forero istolacio:

El resultado del test para Deep Junior 10.1 ha sido: 684 posiciones resueltas. El resultado es inferior en comparación con los motores que lo hacen mejor (55 menos que Houdini), al nivel de ProDeo 1.6 (que resuelve 690).

No ha sido posible hacer el test con ShredderClassic ni con Polyglot. Una parte del problema parece deberse a que Junior 10.1 no entiende el comando ucinewgame que ambos GUI envían al principio de cada análisis de posición. La respuesta del motor es info string Error (Unknown command): ucinewgame
ShredderClassic da cuenta del mensaje de error pero continúa con el análisis. Sin embargo, después de unas cuantas posiciones (entre 20 y 40) el análisis no se corta al llegar al tiempo estipulado, por falta de respuesta del motor.

Por ello el análisis lo he realizado con el GUI Fritz 12. Con Fritz no ha habido problema (o bien filtra el error o bien trabaja de otra forma). Pero no registra la jugada elegida por el motor, tan solo si es la correcta o no. La batería de test se ha ejecutado a 47 segundos por movimiento (equivalentes a 30 segundos CCRL en mi computadora) y con extra_Ply de 99 (para que use todo el tiempo).

El archivo cbv correspondiente se puede descargar en: mediafire.com ?n79wu7y4og3fuwy

En las posiciones que he estado viendo mientras se resolvían Junior 10 y ProDeo parecen más prácticos, menos sutiles que -por ejemplo- Houdini. En situaciones de ventaja suelen responder igual, pero en posiciones igualadas prefieren jugadas distintas.

En estas posiciones igualadas las jugadas de los humanos de alto nivel son -la mayoría de las veces- un misterio para mí (mi nivel ajedrecístico dista muchísimo del que tienen los humanos representados en el test) y me asombra que haya motores que prefieran la misma jugada. Tengo que revisar las jugadas propuestas por Junior 10.1, que su puntuación sea baja en este test puede que lo haga preferible como contrincante (cosa que es inimaginable con Houdini).

Kaxte

Mensajes : 36
Fecha de inscripción : 08/11/2011

Volver arriba Ir abajo

Re: Un test objetivo de 'humanidad' para motores de ajedrez.

Mensaje por Kaxte el Miér Nov 09, 2011 9:43 pm

Posiciones extraídas del test de Gelenczei por su dificultad: mediafire.com ?dazshv916k2c3q3

  • gelenczei6.epd contiene las posiciones del test de Gelenczei puntuadas con 6 puntos o más. Son 153 posiciones.
  • gelenczei8.epd contiene las posiciones del test de Gelenczei puntuadas con 8 puntos o más. Son 80 posiciones.

Kaxte

Mensajes : 36
Fecha de inscripción : 08/11/2011

Volver arriba Ir abajo

Re: Un test objetivo de 'humanidad' para motores de ajedrez.

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.