next up previous contents
Next: Propuesta de Parámetros de Up: Comparación de Avances en Previous: Función de Evaluación   Índice General

Conclusiones del capítulo

En los 60 con una capacidad muy limitada de Hardware los intentos de implementar programas de estrategia "B" no lograron un nivel de juego mínimamente aceptable. Esto influyó que en los 70 se descartase la idea de implementar los programas en base a búsqueda selectiva tomando un cambio hacia la búsqueda de fuerza bruta.

Los 80 fueron un periodo de tremendos cambios tecnológicos con el precio de pequeñas computadoras cayendo por debajo del precio de los automóviles. Durante este periodo la velocidad de los procesadores se duplicaba cada dos años, y las computadoras de uso personal se hicieron comunes. Las capacidades de memoria crecieron también en forma considerable así como la capacidad de disco para mantener información. Esto trajo como consecuencia algunos hechos interesantes:

Primero, los programas de ajedrez migraron rápidamente de computadoras de propósito general (mainframes) a máquinas de uso personal dedicadas a una aplicación a la vez. Segundo, los mecanismos de orden de movimientos continuaron siendo importantes con lo cual se realizaron nuevos avances respecto de ellos. Por ejemplo, el uso de "movimientos asesinos" fue cambiado por el uso de heurísticas históricas - tablas de 64x64 las cuales mantienen información de cuan a menudo ciertos movimientos han causado cortes de variantes [67]. Finalmente, la capacidad adicional de memoria y mayores espacios de dirección hicieron posible el incremento de la capacidad de las tablas de transposición con lo cual fueron utilizadas para más funciones que el sólo mantener la información de búsquedas en sub-árboles de variantes.

A ser verdad, las tablas de transposición comenzaron a ser el mecanismo más popular de orden de movimientos, guiando a la búsqueda desde una iteración a otra a través de la mejor opción encontrada por este método. Por este medio en algunas ocasiones se evita la generación de movimientos (por causa de algún corte) o bien es aplazada hasta que sea claro que algún otro movimiento debe ser examinado.

A pesar del creciente poder computacional logrado en la década de los 80 los mejores programas estaban lejos aún del nivel de un Gran Maestro de ajedrez en un juego a ritmo de torneo, si bien ya lograban dar sorpresas en juego rápido. El fin de la década vio el nacimiento de computadores con hardware dedicado y el aumento de la confianza en el uso de tablas de transposición no sólo para apoyar la búsqueda iterativa sino que también para acelerar la búsqueda con horizonte de posiciones estables. Este periodo vio también mucho desarrollo en la producción de bases de datos de finales de 3,4 y 5 piezas, y la revisión de algunos finales de partidas que se creían tablas por la regla de los 50 movimientos [71]. El inicio de la década de los 90 contaba entonces con todas las herramientas para que las computadoras derrotaran a los Grandes Maestros.

Las continuas mejoras en hardware, la creación de máquinas dedicadas y las mejoras en técnicas de búsqueda junto con aplicación de conocimiento en la función de evaluación terminaron por lograr lo que por muchos años se esperó con ansiedad, lograr derrotar a Grandes Maestros en condiciones de torneo.

En la actualidad es claro que los avances de hardware seguirán sorprendiéndonos año a año, mientras que en temas de software aún hay campo abierto para avances específicos en temas de podas en búsquedas avanzadas y mejoras en la inclusión de conocimiento en la función de evaluación, para lo cual se están trabajando con técnicas de aprendizaje. A pesar de esto, cabe preguntarse si los avances en Hardware fueron en cierta medida la causa de una ansiosa espera por parte de los investigadores para dar mayor atención a todas las técnicas mejorables desde este punto de vista más que del software.

¿Fuerza Bruta o Inteligencia?

Las técnicas de "fuerza bruta" fueron el método por excelencia ocupado durante la década de los 70 por los programadores, quienes dejaron muy de lado mejoras a otros aspectos del programa (como por ejemplo, la función de evaluación) como una forma de "asegurar" el recorrido por la mayor cantidad de nodos del árbol. Mucho se habló de cómo apoyar esta búsqueda por medios como selectividad de movimientos o bien podas de variantes, pero poco se habló de cómo hacer entender a la máquina inmediatamente, sin tener que profundizar en variantes, el por qué un movimiento es peor respecto de otro y así descartarlo inmediatamente, algo que los humanos establecen de una sola ojeada muchas veces sin la necesidad de calcular.

Esta idea trató de ser el primer tipo de implementación en los años 60, siendo mencionada por Botvinick en [2] como la única y mejor manera en la cual las máquinas pueden tener éxito en ajedrez, simulando el razocinio de los grandes maestros. A pesar de la buena intención de esta medida, su fracaso radicó en la dificultad de implementar una selectividad previa de movimientos y la insuficiente capacidad de los programas de evaluar con precisión una posición, errando muy a menudo en las aseveraciones y cometiendo errores de principiante. Ante este escenario tan desalentador resulta casi lógico entender que luego de las notables mejoras en máquinas desarrolladas bajo la estrategia de fuerza bruta ésta fuese la forma de desarrollo de programas durante la siguiente década.

¿Podríamos entonces plantear el que los programadores prefirieron sacrificar el hacer a las máquinas más "inteligentes" por aprovechar la capacidad de cálculo de ellas? Esto es cierto en el sentido de que se desecharon técnicas propias de la mentalidad humana al jugar ajedrez, pero por otro lado se prefirió potenciar la mayor capacidad de los computadores de entonces en el rápido calculo de miles de operaciones lo cual trajo mejores resultados en el juego de los programas.

En cierta medida la velocidad empezó a ser un parámetro de mayor consideración que la inteligencia y sapiencia ajedrecística de la máquina, y la diferencia entre una y otra se daba en base a esta mayor capacidad de ver movimientos futuros. Resultó curioso entonces el fenómeno ocurrido ya a inicios de los 80 en donde si bien existían máquinas capaces de realizar cálculos en profundidad de hasta 6 movimientos éstas aún estaban lejos de la posibilidad de derrotar a un gran maestro, puesto que carecían del conocimiento ajedrecístico suficiente para poder determinar con precisión la influencia a largo plazo de factores posicionales del juego. Este fue entonces el siguiente objetivo de los programadores. Poder combinar la ya buena capacidad de cálculo con una función de evaluación lo suficientemente "buena" la cual pudiese discriminar de acuerdo a parámetros posicionales.

La tarea resultó bastante más difícil de lo que se creía y sólo a principios de los 90 aparecieron máquinas capaces de combinar ambas capacidades y competir a nivel de Grandes Maestros. Un ejemplo interesante es la evolución de Deep Blue y algunos hitos que marcaron su desarrollo. En 1987 luego de la estrepitosa derrota de Deep Thought (versión previa de DeepBlue) frente a Kasparov, sus creadores mencionaban la carencia aún de capacidad de hardware para poder realizar un cálculo que superara la capacidad de su rival humano,y que esto fue el principal motivo de la estrepitosa derrota en ese match. Ya como Deep Blue y luego de la derrota por 4-2 en 1996, Feng-Hsiung Hsu expresa en [8] acerca de las conclusiones luego del match:

"Nuestra primera conclusión fue de que la velocidad de búsqueda de DeepBlue parecía ser ya la adecuada. Garry estaba venciendo a DeepBlue posicionalmente pero no tácticamente. Esto nos llevó hacia nuestra segunda conclusión, Deep Blue poseía un inadecuado nivel de conocimiento ajedrecístico comparado al que poseía el campeón del mundo".

Un muy buen ejemplo de esta "ineptitud posicional" de DeepBlue fue la partida 6 del match (Partida 32) en donde la máquina no evaluó adecuadamente el encierro de un alfil y torre por el resto de la partida, lo cual a largo plazo fue un problema insolucionable. Los trabajos realizados en DeepBlue durante el año siguiente apuntaron a mejorar la función de evaluación del programa mediante el trabajo realizado con Grandes Maestros.

El resultado del año de trabajo entre un match fue una versión de DeepBlue la cual poseía gran cantidad de Hardware dedicado y una función de evaluación con mas de 80 parámetros modificables en "peso" y optimizados mediante el trabajo con una base de datos de partidas de grandes maestros. La gigantesca capacidad de hardware de esta máquina hizo contar con los suficientes medios para realizar cálculos y evaluaciones en tiempos ínfimos y con resultados más que asombrosos.

Por supuesto el caso de DeepBlue es algo totalmente extremo dentro del desarrollo histórico de las máquinas que juegan ajedrez, pero que nos lleva a cuestionarnos acerca de cómo se relacionan las limitancias en la capacidad de hardware de una máquina con su correspondiente implementación de software, o más bien preguntarnos qué tan buenos programas de ajedrez se pueden realizar en este momento bajo límites de memoria y velocidad de procesamiento.

Esto no es comparable a repetir la situación de 20 años atrás, cuando se desarrollaba justamente bajo una tecnología bastante más limitada, puesto que el desarrollo de software también ha evolucionado así como otras perspectivas de cómo darle fuerza ajedrecística a los programas (función de evaluación!). Con esto podríamos definir y comparar los aspectos importantes a la hora de "confeccionar" un programa de ajedrez tanto desde el punto de vista de software como ajedrecístico, tomando en cuenta características propias del hardware bajo el cual el programa va a funcionar. Este es el punto de inicio de la discusión del siguiente capítulo.

next up previous contents
Next: Propuesta de Parámetros de Up: Comparación de Avances en Previous: Función de Evaluación   Índice General
Santiago de Chile, Julio 2003