Next: Propuesta de Parámetros de
Up: Comparación de Avances en
Previous: Función de Evaluación
  Índice General
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: Propuesta de Parámetros de
Up: Comparación de Avances en
Previous: Función de Evaluación
  Índice General
Santiago de Chile, Julio 2003