Problemas de Ajedrez para engines y humanos

Página 2 de 2. Precedente  1, 2

Ver el tema anterior Ver el tema siguiente Ir abajo

Re: Problemas de Ajedrez para engines y humanos

Mensaje por istolacio el Jue Nov 24, 2011 7:58 pm

No hay nada que agradecer, es un placer ayudar.

CHESSMASTER escribió:...con la interface Shredder Classic...
En Shredder: Selecciono como módulo Houdini 2.0c, elijo el nivel 'Tiempo por jugada', digamos a 60 segundos. Pego la posición. Por último, elijo 'Órdenes/Jugar'. Y encuentra el mate de forma instantánea.

Las órdenes que manda Shredder al motor son diferentes que las que manda Fritz y a eso parece deberse la discrepancia. Pero la culpa de que los resultados sean diferentes es (según creo) del motor.

istolacio

Mensajes : 41
Fecha de inscripción : 09/11/2011
Edad : 53
Localización : Valencia

Volver arriba Ir abajo

Re: Problemas de Ajedrez para engines y humanos

Mensaje por CHESSMASTER el Jue Nov 24, 2011 8:38 pm

Pues muy extraño Istolacio considerando que estamos trabajando diría yo, con los mismos elementos en este caso, las pruebas deberían arrojar resultados similares. Sin embargo a mí en la interfaz de Shredder tampoco me funciona Houdini. Aquí dejo una imagen. Según esa imagen, veras que lo probé con tus mismas condiciones, ósea 60 segundos por cada movimiento y en ordenes di Jugar, pero solo ve la variante de tablas.


CHESSMASTER

Mensajes : 66
Fecha de inscripción : 11/11/2011

Volver arriba Ir abajo

Re: Problemas de Ajedrez para engines y humanos

Mensaje por Tony74 el Jue Nov 24, 2011 9:18 pm

Yo os cuento que uso houdini 1.5a. El problema lo resuelve en unos 3 segundos pero en modo análisis. Si lo pongo a jugar solo ve tablas y da igual la GUI, Fritz 13, Fritz 10, Arena, Shrdeer Classic. La GUI creo no tiene nada que ver. Hay algo extraño en todo esto pero creo que es debido al motor houdini. Habrá que seguir investigando.

Tony74

Mensajes : 59
Fecha de inscripción : 12/11/2011

Volver arriba Ir abajo

Re: Problemas de Ajedrez para engines y humanos

Mensaje por CHESSMASTER el Jue Nov 24, 2011 9:26 pm

¡Bienvenido al club de los investigadores! Gracias por tu aporte Tony74. Entre más pruebas reunamos mayor será la certeza de que aquí hay un Elefante del que no nos habíamos percatado.

CHESSMASTER

Mensajes : 66
Fecha de inscripción : 11/11/2011

Volver arriba Ir abajo

Re: Problemas de Ajedrez para engines y humanos

Mensaje por Tony74 el Jue Nov 24, 2011 9:51 pm

Gracias CHESSMASTER, intentaré ser de utilidad en la búsqueda de esta rareza (aunque sea con un pc prehistórico como dijeron por ahí, total que puede pasar que encuentre las soluciones en unos segundos mas?). Aqui el caso no es cuestión de tiempo si no de que houdini por lo que sea no hace la mejor jugada cuando jugamos contra el (mas bien no la encuentra) y eso es algo bastante raro que si lo haga analizando dicha posición. Ahora sería bueno que los usuarios que entren por aqui y lean esto, probaran dicha posición y jugaran contra houdini poniendo por ejemplo 1 minuto por jugada y ver cuantos dicen que houdini ganó y cuantos entablaron para tener una primera aproximación.

Tony74

Mensajes : 59
Fecha de inscripción : 12/11/2011

Volver arriba Ir abajo

Re: Problemas de Ajedrez para engines y humanos

Mensaje por CHESSMASTER el Jue Nov 24, 2011 10:21 pm

Tony74 escribió:Gracias CHESSMASTER, intentaré ser de utilidad en la búsqueda de esta rareza (aunque sea con un pc prehistórico como dijeron por ahí, total que puede pasar que encuentre las soluciones en unos segundos mas?). Aqui el caso no es cuestión de tiempo si no de que houdini por lo que sea no hace la mejor jugada cuando jugamos contra el (mas bien no la encuentra) y eso es algo bastante raro que si lo haga analizando dicha posición. Ahora sería bueno que los usuarios que entren por aqui y lean esto, probaran dicha posición y jugaran contra houdini poniendo por ejemplo 1 minuto por jugada y ver cuantos dicen que houdini ganó y cuantos entablaron para tener una primera aproximación.

Así es Tony, sin embargo no estamos hablando de unos pocos segundos, en realidad mientras que en análisis infinito Houdini da con la solución en 1 a 5 segundos dependiendo de la maquina, en análisis normal de jugar partida Houdini solo llega a encontrar la respuesta correcta al cabo de ¡15 minutos y eso que a veces definitivamente no la encuentra!
Ahora bien como tú dices es algo bastante raro. Pero a mí no me preocupa que sea raro Tony, Es decir lo que te quiero decir en realidad es que mas que "raro" aquí lo que tenemos (en mi concepto) "es un problema grave" Te voy a decir porque y ya tú tendrás la oportunidad de rebatirme mi preocupación:
Veo que si este problema llega a ser generalizado con Houdini una vez descubramos que hay mas posiciones "difíciles" en las cuales Houdini nos va a arrojar una valoración diferente dependiendo de la técnica que usemos en su análisis, bien sea con la opción análisis infinito o con la opción pensar y jugar. Lo que veo aquí más grave e interesante es que si se comprueba mi corazonada entonces podrían surgir muchos interrogantes al respecto, uno de esos posibles interrogantes que mas me preocupan con el BUG en mención es por ejemplo cuando desarrollemos una partida Humano vs Houdini o Engine vs Houdini y ya sea que Houdini pierda, gane o entable, la pregunta que nacería seria que opción de análisis abra utilizado Houdini para ganar, perder o empatar determinada partida, la que usa en análisis infinito o la que usa en la opción "pensar y jugar" Y fíjate Tony, de este mismo interrogante nacería otro sub interrogante adicional que seria que abría pasado o cual abría podido ser el resultado de la partida si Houdini hubiera jugado empleando su otra fuerza diferente. Fíjate que en este último párrafo nace un tercer interrogante: Que tipo de fuerza de juego está usando Houdini cuando juega una partida normal? La fuerza que utiliza en la opción análisis infinito que al parecer es la más eficiente he ideal o la fuerza que utiliza en la opción pensar y jugar.
Ves, por eso aunque muchos aquí estén sorprendidos con mi interés por este tema la razón es debido a que a mí esto me parece de vital importancia, ya que tras este problema de este bug descubierto pueden nacer muchos más interrogantes que conducirán a otra serie de problemas en mi concepto preocupantes...

CHESSMASTER

Mensajes : 66
Fecha de inscripción : 11/11/2011

Volver arriba Ir abajo

Re: Problemas de Ajedrez para engines y humanos

Mensaje por pedrox el Vie Nov 25, 2011 2:37 am

istolacio escribió:Debo decir que, ahora que Chessmaster y yo hemos arreglado unas cuestiones previas, hay algo interesante en las comunicaciones previas de Chessmaster. He podido reproducir el comportamiento anómalo que él refirió.

En la posición que hemos citado ya un buen número de veces:

krb5/pr1p1p2/3P1p2/3B1P2/2K5/8/3B4/8 w – - 0 1


pasa algo curioso con Houdini 2.0c, al menos en los GUI Fritz 12 y 13. En el menú 'Inicio' se elige un tiempo fijo de juego, digamos dos minutos por jugada, se pega la posición anterior y se pulsa el botón 'Juega', resulta que Houdini 2.0c no es capaz de ver el mate que sí ve de manera inmediata en Análisis Infinito.

Esto no sucede con el GUI Shredder Classic 4. Me parece interesante buscar una explicación a esto.

>> Ambos GUI manejan de forma diferente cómo le indican al motor que juegue, es decir qué indican después de la opción 'go'. Esta es la única diferencia. En palabras más técnicas, si se le indica 'go movetime xxxx' Houdini no responde igual que si se le indica 'go wtime xxxx btime xxxx winc xxxx binc xxxx'. Me inclino a creer que es un error del motor Houdini 2.0c.

Desconozco si lo que ocurre con Houdini es un error, pero voy a tratar de dar una explicación.

Primero decir que lo mismo ocurre con Houdini 1.5 como han dicho otros usuarios y que estás en lo cierto de que el motor se comporta de diferente forma en función de que reciba el comando go, el motor se comporta igual con el comando "go movetime ..." y también con el comando "go infinite", en estos casos yo diría que el motor está en modo análisis resolviendo el mate y cuando el motor recibe "go wtime ..." entra en un modo de juego viendo solo unas tablas.

Para intentar encontrar una explicación, quizás sea bueno primero estudiar la posición que se ha planteando en este caso para resolver a Houdini. 13 movimientos hasta el mate significan una profunidad de 25 para el motor. Imaginaros que una posición tiene 20 movimientos posibles y después de jugar otros 20, así 25 veces. 20x20x20 ........ así hasta 25 veces sale un número tal de posiciones que aunque el motor sea capaz de examinar 5 millon de posiciones en un segundo, tardaría añós en hacerlo. Si os fijaís en el problema en este caso las negras solo tienen todo el rato una posibilidad, lo cual reducirá mucho el número de posiciones a examinar, pero aún así son elevadisimas. Por tanto los motores hoy en día para poder llegar a alcanzar ese tipo de profundidades necesitan de técnicas para cortar lo que se llama el árbol de posibilidades o para reducirlo.

Una de esas técnicas es el famoso movimiento nulo, creo que inventado por el programador de Fritz, en este caso el programa trata de cortar el árbol simulando la forma de pensar de un humano, antes de mover, pasamos el turno al contrario y vemos si este nos puede amenazar y mejorar su posición, si su posición es ya lo suficientemente mala para no poder mejorarla entonces eso permite podar el árbol. Con esta técnica, un motor en el medio juego consigue 2 ó 3 niveles más de profundidad seguramente y eso da posiblemente 100 puntos de Elo o más. Es una técnica sencilla de programar, no muchas líneas y que funciona para el 99% de los motores. El movimiento nulo tiene la pega que no se puede utilizar en posiciones en las que se produce el Zugzwang, esto en ajedrez significa que quien mueve pierde, ya que en este caso no tendría sentido pasar el turno.

Creo que en la posición que se ha dado para analizar se produce este efecto, quizás no visto de la forma en quien mueve pierde, pero se puede ver fácilemnte que hay ocasiones que si les tocara mover a las negras sería tablas por ahogado.

Afortunadamente el Zugzwang no se produce en todas las partidas y los motores tienen a utilizar el movimiento nulo mientras haya piezas en el juego, cuando solo hay peones lo desactivan.

Entonces aquí podríamos tener una explicación porque unos motores ven Mate y otros motores solo ven tablas, estamos en una posición dónde hay Zugzwang. Houdini lo hace casi perfecto viendo un Mate en 13 en profundidad 25 y en unos segundos (quizás tenga un movimeinto nulo perfecto o lo tenga desactivado en esta posición). Otro motor que ve el mate es SOS 5.1 que viene con Arena pero lo hace en profundidad 33, parece que tiene el movimiento nulo activado y esto le hace retrasar el mate. Fritz no lo ve aunque alcance profunidad 40, posiblemente porque tiene activado un movimiento nulo más agresivo. Aquellos motores que no ven el mate, si desactivan el movimiento nulo es posible que pudieran ver un Mate también en el movimiento 25. Mi motor también ve el mate desactivando el movimiento nulo, pero debido a esta desactivación le cuesta muchísimo más alcanzar los niveles de profundidad y quizás le cueste de esa forma una hora encontrar el mate.

Creo que esta es una buena explicación de porque unos motores ven el mate y otros solo tablas y esta explicación quizás hace que tenga sentido la siguiente.

Podemos considerar que en un motor puede estar haciendo ahora que se me ocurra 4 cosas.

1. Nada

2. Pensando en su turno en una jugada mientras está jugando una partida.

3. Pensando en el turno del contrario mientras está jugando en una partida.

4. Analizando una posición.

La mayoría de los motores (¿ 99% ?) utilizan la misma programación tanto si el motor está jugando en su tiempo, en el tiempo del contrario o analizando una posición. Pero nada impide que se utilice dirente programación para cada una de esas opciones.

Habrá personas que utilicen el motor para jugar con él, pero habrá personas que solo lo utilicen para analizar posiciones. Así que los programadores y sobretodo los comerciales deben cuidar no solo que el motor tenga el mayor Elo jugando, sino también que los análisis que proporcione sean buenos.

Se me ocurre pensar que Rober Houdart ha cuidado su motor no solo para que tenga la mayor fuerza posible, sino que también lo haga bien en los análisis y quizás esto explicaría la diferencia cuando hacemos un análisis o estamos en un juego (o simulando un juego). En el análisis no se mide la fuerza del motor, se pretende que el motor de la mejor respuesta posible, quizás el autor desactiva en el análisis antes el movimiento nulo o lo utiliza de una forma menos agresiva. Sin embargo en los juegos utiliza el movimiento nulo al máximo, como dije al principio el movimiento nulo puede dar más de 100 puntos de Elo durante los juegos, eso explicaría que Houdini en una partida solo viese las tablas, parecería más fuerte si viese el mate en 13, pero no sería real, en esa jugada concreta lo haría mejor pero en el resto de jugadas lo haría con menos profundidad y peor.

Esta es la única explicación que he encontrado si en realidad no se trata de un error. Estaría bien si alguién se lo pregunta directamente al programador y confirma algo de lo que dije.

Pedro

pedrox

Mensajes : 81
Fecha de inscripción : 14/11/2011

Volver arriba Ir abajo

Re: Problemas de Ajedrez para engines y humanos

Mensaje por istolacio el Vie Nov 25, 2011 9:46 am

Gracias Pedrox. Ya se me había ocurrido que se trataba de un problema relacionado con null move. Debo leer tu respuesta con mayor detenimiento, pues intuyo que es correcta pero no estoy seguro de todas las implicaciones que esto tiene.

istolacio

Mensajes : 41
Fecha de inscripción : 09/11/2011
Edad : 53
Localización : Valencia

Volver arriba Ir abajo

Re: Problemas de Ajedrez para engines y humanos

Mensaje por istolacio el Vie Nov 25, 2011 9:53 am

Incluyo aquí la respuesta de Azaad, del foro Immortal sobre este mismo asunto:

Nice catch istolacio!! Houdini changes its search behaviour with the type
of time control. With x'+y" or x moves/y minutes type of
TC it doesn't find the mate even with relatively longer time. With time
per move
type of TC it finds the mate in a second. It seems that
with time per move TC its search behavior is like in analysis mode.


To test this save the following as a PGN

Code:

[Event "Computer Chess Test Suite"]
[Site "istolacio"]
[Date "2011.11.24"]
[Round "?"]
[White "?"]
[Black "?"]
[Result "*"]
[SetUp "1"]
[FEN "krb5/pr1p1p2/3P1p2/3B1P2/2K5/8/3B4/8 w - - 0 1"]

1.*

And run a tournament with this PGN with different types of TC.
Houdini will not find the mate with blitz or tournament TC but will find
it easily with fixed time per move type of TC.


krb5/pr1p1p2/3P1p2/3B1P2/2K5/8/3B4/8 w - - 0 1

My guess is that with fixed time per move TC it doesn't indulge in fancy
time management tricks (like don't "waste time" by looking at other
lines if a line gives it a draw in an "inferior" position) and this
helps it to find the mate.

--------

Realmente, lo que falta por determinar es si se trata de un error o bien de una prestación.

Agradezcamos a Chessmaster su constancia, no rindiéndose ante un resultado inesperado, aunque a muchos otros el problema original les pareciera excesivamente simple.

istolacio

Mensajes : 41
Fecha de inscripción : 09/11/2011
Edad : 53
Localización : Valencia

Volver arriba Ir abajo

Re: Problemas de Ajedrez para engines y humanos

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Página 2 de 2. Precedente  1, 2

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

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