Publicació en Github pages
Aquest lloc es troba publicat en Github pages, en l'adreça https://cescacs.github.io
Recull de continguts diversos
Aquest lloc es troba publicat en Github pages, en l'adreça https://cescacs.github.io
En aquest enllaç n'hi ha un hexcaquer en format .SVG per a imprimir-lo. Es recomana imprimir-ho en format DINA-1, que pot fer-se dividint-lo en quatre parts DINA-3, per poder plegar-lo. Les DINA-3 es poden retallar deprés d'imprimir, doncs per la proporció llarg-ample de l'hexàgon, es perd una mica de paper; la mida final resultant és en realitat inferior a DINA-1.
Imprimint en la mitad, en cuatro DINA-4, obtenim un hexcaquer per a peces miniatura, molt justa, però una mida encara suficient per jugar una partida dues persones: una mida d'hexcac d'uns 2.4 cm que requereix fitxes petites. També es pot imprimir aquest hexcaquer petit en una alternativa equivalent: imprimir en dues parts DINA-3, com es veu en la foto. Potser és la millor alternativa per a un tauler petit plegable.
La capsa l'he feta per incloure-hi només les fitxes addicionals. Per a cada jugador:
Bé, cal començar dient que estic segur que Bobby Fischer coneix perfectament la variant de Capablanca, tot i que pugui semblar que no en les referències que hi fa, però probablement això ho fa conscientment, doncs la seva pretensió és referir-se en general a les variants dels escacs.
Però sí, és completament cert que, qui coneix la complexitat que poden arribar a tenir els escacs, es pot sentir intimidat per una variant com C'escacs. El consell, si algú se sent intimidat per les variants hexagonals dels escacs, és començar provant el Mini Hexchess, una petita joguina que permet perdre-li la por a la geometria hexagonal.
Els Mini Hexchess són uns escacs hexagonals miniatura, en un hexcaquer de 37 hexcacs, dissenyats per Dave McCooey. Són un gran passatemps, i una manera alternativa d'introduir-se en els Hexcacs Hexagonals, diferent i més frivola a l'alternativa de jugar una partida als escacs de Gliński, o la variant de McCooey.
Aquí podem obtenir un hexcaquer per jugar, i les regles en català, anglès i castellà. El material és mínim, només nou peces per a cada jugador, doncs només fa servir cinc Peons, una Torre, un Cavall, un Alfil i el Rei. No es fa servir la Dama, i es juga només amb un Alfil.
Els escacs hexagonals van tenir uns inicis incerts: Thomas Hanmer Croughton en 1853, Hexagònia en 1864, Lord Baskerville en 1929... però finalment Władysław Gliński en 1936 inventà els escacs hexagonals, perfectament jugables.
Els hexcaquers, i en general, els taulers de joc fets d'hexàgons, han estat una curiositat matemàtica des de la seva introducció en el món dels jocs, destacant Hex, joc inventat pel matemàtic danès Piet Hein en 1942. En 1950 Claude Shannon construí una màquina analògica que jugava a Hex raonablement. Més tard, el joc va ser comentat per Martin Gardner en la seva columna del Scientific American.
El món dels taulers hexagonals està descrit en el lloc web Hexagonal Grids, de Red Blob Games. Aquí trobarem algorismes per implementar jocs en taulers hexagonals, els sistemes de Coordenades, on podem trobar descrit el sistema que fa servir C'escacs, que ell anomena Doubled coordinates. No parla en concret dels escacs hexagonals; els escacs de Gliński i els escacs de McCooey fan servir un sistema de coordenades que podriem anomenar axial doble, doncs fan servir un sistema de coordenades axial diferent en cada meitat de l'hexcaquer.
També trobarem en el lloc web de Red Blob Games un apartat per a programadors, referent a l'implementació.
Els finals dels escacs hexagonals varen començar a ser estudiats per Władysław Gliński, i posteriorment han estat estudiats en profunditat per Dave McCooey amb computador. Els resultats s'apliquen tant als escacs de Gliński com als de McCooey.
En general els resultats en hexcaquers de 91 hexcacs són extrapolables als hexcaquers de 169 hexcacs, pero amb una notable excepció:
L'apartat més important era recuperar
el que en el seu moment va haver en un Applet de Java
fet servir tecnologies més modernes, sempre amb execució en el client, sense dependència de servidor.
Principalment permet l'enregistrament de partides, tot i que actualment encara no compta amb un emmagatzematge en línia, però es poden descarregar, tant com a posició, o detallant tots els moviments de la partida. Aquestes partides descarregades posteriorment es poden carregar; aquestes funcionalitats són les mateixes que tenia inicialment el Applet Java.
Els plans de futur consisteixen en incorporar un WebAssembly desenvolupat en Rust per aportar una poda d'arbre minimax amb una proposta de millor jugada per part de la màquina, però sense participar un servidor aquesta opció clàssica és la màxima opció abastable de manera senzilla, i la participació de tècniques d'IA queda de moment fora de l'horitzó d'implementacions immediates.
El joc permet triar la que es denomina variant Grand C'escacs
, i fins i tot, en broma
es fa servir el nom Grand Hunigcamb Chess
. No es racomana aquesta variant, si no és que sou
experimentats en C'escacs i voleu provar noves coses; no és una variant gaire provada,
i probablement requereix perfeccionament, però incorpora alguns canvis interessants:
moviment esquiu, i el peó amb qui es trobava enfrontat el pot capturar ortogonalment després de haver fet la captura; observar que, en aquest cas el peó captura ortogonalment, però a més a més la captura és cap a enrera, un cas encara més excepcional.
No es poden considerar aquestes regles com a definitives
;
senzillament és un camp de proves per a algunes regles i per a la peça de l'Almogàver.
Típicament, per a jugar a escacs, els ordinadors han fet servir el teorema de Minimax de John von Neumann.
Aquest teorema s'aplica per a jocs d'imformació perfecta entre dos adversaris, amb suma zero, establint
que n'hi ha una estratègia que permet a tots dos jugadors minimitzar la pèrdua màxima esperada.
El jugador juga, doncs, amb l'estratègia que resulta en la minimització de la seva màxima pèrdua,
considerant totes les respostes possibles del jugador adversari i la pèrdua màxima que pot comportar.
Si fos possible estudiar tot l'arbre de jugades, és a dir, totes les possibles jugades futures, es podria determinar
una estratègia guanyadora; en la pràctica això és impossible. Va ser Claude Shannon en el seu text
sobre escacs de 1950 Programming a Computer for Playing Chess
qui proposà limitar la profunditat de la recerca
en l'arbre de possibilitats, determinant llavors el seu valor mitjançant una funció heurística.
L'algorisme requereix, doncs, l'ús d'un heurístic, una funció d'avaluació d'una posició, una vegada s'ha fet l'exploració de les diferents jugades possibles, de manera que es pugui determinar quina és la millor. L'heurístic més evident consisteix en considerar el valor de les fitxes de cada jugador, però incorporar conceptes de posició en l'heurístic no és senzill, i requereix traspassar els coneixements d'un expert.
El gran problema de l'algorisme minimax és la seva dependència de l'heurístic, doncs el valor d'aquest heurístic té un factor d'error que es propaga cap amunt, i pot comportar errors en el resultat final de l'algorisme.
Aquest heurístic és doncs una funció fonamental en l'avaluació minimax, i és difícil establir una funció que no deixi descuidat algún punt; la correcció d'aquests defectes de l'heurístic s'aconsegueix fent un anàlisi amb una profunditat més gran, intentant obtenir una valoració més certera.
A més, aquesta funció d'avaluació (heurístic) és difícil de determinar en situacions poc estables, en situacions d'escac o situacions on existeix una amenaça a una peça. Aquest concepte d'estabilitat es denomina quiescència, i l'algorisme explora en major profunditat fins trobar un estat que compleix la quiescència, per poder avaluar correctament l'heurístic.
Per a certes jugades interessants es pot extendre la búsqueda en més profunditat; és un concepte una mica diferent de la quiescència, però de vegades la pot remplaçar, doncs la funció de l'extensió per a la quiescència és trobar una posició avaluable, sense amenaces que puguin desvirturar el resultat de l'heurístic, però l'extensió de la búsqueda pretèn analitzar en profunditat una posició que sembla interessant. Aquesta tècnica es va fer servir ampliament en Deep Blue, però actualment n'hi ha més interés en retallar les jugades poc interessants que en extèndre l'anàlisi de les interessants.
L'extensió de búsqueda es pot fer servir per analitzar situacions de: escac, situació amb pocs moviments possibles, seguretat del rei crítica, peons que coronen o es troben aprop de fer-ho, anàlisi per a amenaces detectades (generalment amb la tècnica del moviment null, que es detalla més endavant)...
El cost de l'algorisme és O(bd), sent b el factor de ramificació, quantes jugades diferents possibles es poden fer en promig, i d la profunditat d'exploració, és a dir, quants nivells en davant s'exploren. Es escacs el valor per a b és lleugerament superior a 30, de vegades estimat fins i tot com a 36; explorant quatre nivells ja es requereixen més d'un milió i mig d'avaluacions, en cinc nivells més de 60 milions, i en sis nivells més de 2_100 milions.
El factor de ramificació b per a C'escacs és quatre vegades superior als escacs, aproximadament 144, fent que quatre nivells d'exploració comportin més de 400 milions d'avaluacions, en comptes d'un milió i mig. L'increment en el nombre d'avaluacions és degut a diversos factors: un escaquer més gran, més fitxes per a cada jugador i moviments addicionals deguts a la geometria hexagonal. En termes de profunditat d'exploració, comporta el cost d'un nivell i mig addicional comparat amb els escacs ortodoxos; és a dir, que per a explorar 5 nivells es requereix avaluar gairebé 62_000 milions de nodes.
La gran quantitat de moviments que s'han d'analitzar comporta que es donin repeticions degudes a l'execució de moviments en diferent ordre; aquest fenòmen és en realitat força freqüent només cal que recordem que s'han d'analitzar tots els moviments possibles, i per a cada moviment possible, tots els moviments possibles, i així successivament degut a la transposició de l'ordre en què es realitzen els moviments. La repetició de posicions és fins i tot un problema, particularment en l'anàlisi de finals, quan queden poques fitxes en joc, doncs l'ànalisi de moviments podria acabar analitzant un cicle de les mateixes posicions si no es detecta la repetició que tanca el cicle.
Aquesta tècnica també es fa servir per aplicar la regla de repetició de posició, que permet a un jugador exigir taules si la mateixa posició es repeteix tres vegades, i en qualsevol cas seran taules quan una mateixa posició es repeteix cinc vegades.
Les posicions ja valorades s'emmagatzemen, i a més de la valoració per no haver de repetir els càlculs, es pot afegir informació com la millor jugada seleccionada, la profunditat on s'ha estudiat la posició... formant les taules de transposició. Aquestes taules s'emmagatzemen com a taules hash, que fan servir una clau, generalment un número de 64 bits en realitat 64 bits encara és un número massa gran per a indexar la taula, i com a índex es fa servir una reducció d'aquest valor, mòdul una potència de dos, que es calcula com a un valor únic o signatura associada a la posició, típicament fent servir tècniques com les fórmules de Zobrist, què faciliten la seva manipulació amb operacions xor.
El gran problema és que la búsqueda minimax és una búsqueda en profunditat, és a dir, que s'explora una branca fins la profunditat establerta, abans de començar a explorar una altra branca. Aquesta estratègia resulta funesta quan el programa ha de tenir control del temps, doncs és molt difícil estimar el temps que pot costar l'anàlisi només fixant la profunditat, i si s'interromp l'anàlisi poden quedar encara alternatives importants per explorar.
La profundidad iterativa crida repetidament a una rutina de cerca augmentant la profunditat, fins a
aconseguir el valor desitjat. Per a això, es realitza repetidament una cerca, augmentant la profunditat de
manera incremental. D'aquesta manera sempre tindrem una estimació d'un bon moviment per a l'última profunditat
aconseguida, i en cas que s'acabi el temps sempre tindrem assegurada una acció a realitzar.
Aquest algorisme és possible gràcies a les taules de transposició, que permeten recuperar els càlculs
previs, tot i que s'ha de considerar que, sent un algorisme exponencial, el cost de tornar a avaluar un nivell
es petit en comparació amb el cost de l'avaluació del següent nivell si el nivell de
ramificació b
fos només de 2, el cost seria equiparable, el cost del següent nivell
serà b-1
vegades el cost de tots els càlculs fets fins llavors, i el valor tant com b
creix, un valor que ja hem aproximat en 36 pels escacs, o 144 per a C'escacs.
Els avantatges addicionals són també importants, característiques que una mica més endavant comprovarem que són de gran importància:
Sovint les referències, en comptes de referir-se a minimax, es refereixen a negamax, que senzillament és una simplificació de minimax considerant que és un joc de suma zero per a dos jugadors; aquest algorisme fa servir valoracions positives per a les jugades un jugador i negatives per les jugades de l'oponent. En la pràctica és una implementació de minimax.
La poda alfa-beta és un algorisme de cerca que busca disminuir el nombre de nodes que són avaluats per l'algorisme minimax en el seu arbre de cerca. Deixa d'avaluar una jugada quan s'ha trobat almenys una possibilitat que demostri que la jugada és pitjor que una jugada examinada anteriorment. No és necessari continuar avaluant aquestes jugades. Quan s'aplica a un arbre minimax estàndard, retorna la mateixa jugada que el minimax, però elimina les branques que no poden influir en la decisió final. Això comporta un gran estalvi en la quantitat de càlculs necessaris.
L'algorisme sembla que ha estat reinventat
diverses vegades:
Arthur Samuel tenia una versió primerenca per a una simulació de dames; posteriorment
Richards, Timothy Hart, Michael Levin i Daniel Edwards varen fer servir conceptes de l'algorisme
alfa-beta de manera independent en els EUA, i també McCarthy va proposar idees
similars durant el taller de Dartmouth en 1956 i el va suggerir a un grup dels seus estudiants.
Finalment, Alexander Brudno, informàtic rus, va concebre
l'algorisme alfa-beta de manera independent i va publicar la descripció, funcionament i resultats
en 1963. Tot i les aproximacions prèvies, fou Alexander Brudno qui va presentar formalitzada
i justificada la idea sencera, que Donald Knuth i Ronald W. Moore varen refinar en 1975.
L'efectivitat de l'esporgada té una gran dependència de l'ordre en què s'avaluen les diferents opcions
(jugades), de manera que si l'ordre és incorrecte pot arribar a donar-se el cas de no tenir cap benefici,
però per a un ordre òptim, avaluant la millor jugada primer, el benefici és radical, permetent l'avaluació del doble
de profunditat; és a dir, un cost de O(bd/2)
. La reducció és dràstica, i
considerant els escacs amb un factor de ramificació de 36 es pot arribar a reduir el cost d'exploració per a
quatre nivells només a 3_000 nodes, en comptes de milió i mig, una reducció del 99.8%.
Per obtenir uns resultats òptims en l'algorisme alfa-beta, es requereix un nou heurístic: l'ordenació de les jugades, considerant primer les més favorables.
L'efectivitat de l'algorisme alpha-beta, que pot resultar dràstica, depèn de l'efectivitat d'aquest heurístic, d'una primera estimació de quina és la millor jugada, que es confirmarà amb l'exploració minimax. Aquest heurístic té una afectació directa en el rendiment de l'algorisme, i, per tant, de la profunditat amb què és possible fer l'anàlisi, però un error en l'ordenació pot arribar a eliminar l'aventatge de la poda alpha-beta, resultant una exploració minimax sense cap optimització.
Es fa servir una ordenació dinàmica, on l'ordenació dels nodes no avaluats es canvia quan s'avaluen els nodes anteriors i obtenim noves informacions per millorar l'heurístic d'ordenació. Sense incloure-hi les situacions d'escac, l'ordenació tindrà en consideració:
La poda alpha-beta estableix que alguns nodes no requereixen ser avaluats, doncs no són opcions a considerar, però sempre, la creença en aquest fet, depèn de l'heurístic d'avaluació. A més, trobar eficientment els nodes que no requereixen avaluació depèn de la correcta ordenació, avaluant primer els nodes més significatius, que tenen les jugades millors.
La poda alpha-beta, encara que la seva eficiència depén d'un heurístic d'ordenació, no és un heurístic,
és un algorisme que permet la simplificació de branques que no aportan informació. Les podes en davant són
heurístics que permeten descartar nodes sense motius plenament justificats, només per certes creences
.
Veiem tècniques que són indicadors de branques de búsqueda que no aportaran nova informació, i poden
deixar de considerar-se:
Generació d'un moviment buit, és a dir, un canvi de torn sense cap moviment. Tot i no ser una acció vàlida en el joc, en el motor de cerca resulta d'utilitat; es fa servir en el node arrel amb una cerca limitada en profunditat.
Aquesta tècnica es basa en el fet que, en escacs, no moure condueix a una situació pitjor que fer una jugada correcta, excepte en comptades excepcions, denominades Zugzwang. Aquestes situacions de Zugzwang són extranyes, encara més extranyes en C'escacs que en els escacs ortodoxos, malgrat es donen amb més freqüència en la part final del joc, quan queden poques fitxes.
Podes d'inutilitat: Aquesta poda es basa en el valor d'alpha, estimant quan una branca no té potencial d'obtenir un valor suficientment alt. A més, permet fer un càlcul incremental de l'heurístic d'avaluació: Com es coneix el valor d'alpha que s'ha d'obtenir per tenir en consideració la branca, es pot avaluar primer els trets que més afecten al valor final, com les fitxes de cada jugador, i algunes condicions posicionals més subtils i costoses d'avaluar no es requereix que siguin avaluades si el valor no arriba a mínim significatiu, sumant-hi amb un marge màxim.
Típicament aquesta poda es fa en els nivells més inferiors de la búsqueda, podant només un nivell, però els programes més actuals opten per incrementar el número de nivells afectats per la poda en els moviments que ha s'han considerat com a menys favorables, és a dir, posicionats al final de l'ordenació.
Reducció del moviment tardà: Descartar els moviments menys prometidors, és a dir, els que són al final de l'ordenació. En realitat no es tracta de descartar-los del tot, encara que algunes versions modernes basades en xarxes neuronals (Evolving Neural Networks to Focus Minimax Search, 1994, David Moriarty) sí fan directament una reducció dels nodes a considerar, però la tècnica a què ens referim només fa una reducció en el nivell d'exploració d'aquests nodes poc prometidors.
Com que normalment aquests nodes no produeixen bons resultats, no tindran potencial d'incrementar α i es podria reduir el temps que s'ocupa a explorar aquests nodes. Això és oposat a la poda de moviment buit que tracta de trobar valors que superin el límit de β.
Es realitza una cerca de finestra mínima per cada moviment poc prometedor, pel fet que només es desitja comprovar si el moviment pot superar el límit inferior α. Per a realitzar aquesta cerca es fa ús d'una reducció en la profunditat de cerca. Si l'avaluació torna una valor inferior a α indica que el moviment serà pobre i no valdrà la pena invertir més temps determinant el seu valor. Si la cerca torna un valor superior a α, indica que existeix alguna cosa interessant en la posició, i s'ha de realitzar la cerca amb els límits reals de la finestra de cerca i utilitzar la profunditat regular.
El mateix que en les podes d'inutilitat, en les reduccions dels moviments tardans és convenient fer servir un càlcul dinàmic de l'heurístic d'avaluació. Els programes actualment fan servir profunditats de poda més grans en tant els moviments han quedat ordenats per a ser considerats més tardanament, combinant-les amb finestres mínimes de cerca.
Tot i que aquesta poda en un inici es limitava a una poda de l'últim nivell, sense cap altra reducció de profunditat, s'ha anat incrementant el seu ús en tant s'ha verificat la seva efectivitat, particularment quan es fa servir conjuntament amb tècniques d'ordenació dinàmiques.
Els punts més febles dels algorismes minimax són les obertures i els finals, envers dels bons resultats en el joc mig. Es dona el cas que obertures i els finals són punts ja ampliament estudiats per la teoria dels escacs. Les obertures permeten una correcta distibució inicial que difícilment es pot aconseguir amb l'estudi del joc a curt termini, i és per això que els programes d'escacs compten amb un llibre d'obertures.
Anàlogament, els finals comporten dificultats per la profunditat d'anàlisi que requereixen; les taules de transposició combinades amb les consideracions de simetria de l'escaquer són fonamentals per a un anàlisi que pot requerir una gran profunditat d'exploració, doncs, malgrat que el nombre de ramificació sigui més limitat que en la fase mitja del joc, un anàlisi amb gran profunditat d'exploració encara és una opció inabastable sense aquestes eines. Tot i això, el càlcul de finals és molt costòs i les bases de taules (tablebase) de finals de joc permeten tenir els moviments òptims precalculats. Iniciades per Thomas Ströhlein en 1970 amb els finals KQK, KRK, KPK, KQKR, KRKB i KRKN. Ken Thompson i altres les van completar per a tots els finals de quatre i cinc peces, amb els casos particulars KBBKN, KQPKQ i KRPKR. En 2005 s'havien completat tots els finals amb fins a sis peces, en 2018 amb set peces (els dos reis i cinc altres peces), i actualment, en 2023, encara es treballa per obtenir tots els finals amb vuit peces.
L'algorisme minimax amb la poda alfa-beta és l'algorisme que s'ha fet servir per als programes d'escac d'ordinador des dels anys 70 del segle XX fins ja entrat el segle XXI. Els programes van anar incorporant característiques, com la búsqueda de la quiescència o la confirmació de jugades prometerdores, incrementant la profunditat de búsqueda en alguns punts, les taules de transposició, que emmagatzemen posicions ja estudiades per no tornar-les a considerar, els llibres d'obertures, les bases de taules de finals... També la poda alfa-beta ha incorporat millores, pràcticament totes fonamentades en les tècniques d'estretament de la finestra de búsqueda, fixant un valor per a alfa-beta, en comptes de calcular-ho, de manera que tots els nodes amb una avaluació dins d'aquesta finestra alfa-beta establerta no són avaluats. El cas més senzill és la búsqueda por aspiració, on es treu partit de la profunditat iterativa per obtenir una estimació dels valors alpha i beta. Tot i que és una tècnica fonamentada en heurístics, no afecta el resultat final, doncs quan el valor no es troba en la finestra estimada detectarem l'error, i ens veurem obligats a tornar a avaluar per obtenir els valors correctes. Les finestres nul·les són una tècnica semblant, però en aquest cas no es deixa marge entre els valors alpha i beta, quan estimem que el moviment no generarà alteracions d'aquests valors, amb l'intenció de detectar els casos que no compleixin les nostres estimacions. Aquesta tècnica es feia servir tant per anàlisis de quiescència, o per la poda dels moviments tardans, però finalment ha evolucionat en el PVS i finalment en el MTD(f).
La PVS: Principal variation search (NegaScout) estableix una jugada com a millor jugada, i mira de demostrar que la resta de jugades no són millors fent la búsqueda de les altres jugades amb una finestra nul·la; la dependència de l'heurístic d'ordenació de les jugades esdevé encara més fonamental, doncs una incorrecta ordenació resulta en la penalització del cost final de l'algorisme.
PVS es va fer servir des de la seva aparició en l'any 1980, fins l'aparició de MTD(f), Memory-enhanced Test Driver with value f en l'any 1994. Aquest nou algorisme fa servir tota la búsqueda amb una finestra nul·la o molt estreta, partint d'una estimació inicial del valor; la finestra alfa-beta s'estableix en una petita variació d'aquesta estimació final i, considerant que la finestra de búsqueda és molt estreta, moltes branques no requereixen avaluació. Si l'algorisme retorna un valor fora de la finestra establerta s'ha de tornar a fer l'avaluació ampliant la finestra; els nodes ja avaluats es troben a una taula de transposició, per evitar haver de tornar a fer la seva exploració.
Actualment el millor programa per a jugar a escacs amb aquest enfocament d'algorisme clàssic (minimax amb heurístics i algorismes de desbroçament) és el programa Open Source Stockfish, que, en el moment de revissar aquest text ja es troba en la versió 15.1. La versió Stockfish 8 va ser derrotada en desembre de 2017. Havia arribat l'era de la cerca de Montecarlo i les xarxes neuronals en els escacs, i era el final dels tan patits heurístics i desbroçaments alfa-beta.
Les tècniques minimax requereixen un heurístic d'avaluació, i les tècniques alfa-beta un haurístic addicional d'ordenació; les tècniques de millora de la poda alfa-beta requereixen a més a més un oracle que faci una estimació del valor de l'heurístic d'avaluació que s'obtindrà per poder estretar la finestra... El problema és que els heurístics són estimacions que intenten formular el coneixement expert, però són difícils d'establir, a més a més considerant que la manera de veure el problema un expert, generalment molt adaptable a diferents situacions, no sempre coincideix amb els requeriments, molt fixes d'un algorisme; resumint: un algorisme amb fortes dependències d'un heurístic té grans debilitats.
L'enfocament més conservador
podria ser incorporar un sistema d'aprenentatge per a aquest heurístic, per
a provar d'obtenir-ho empíricament, però un joc es resistia a l'enfocament minimax durant anys; aquest joc
era el Go,
que té un factor de ramificació molt alt, de l'ordre d'entre 150 i 250 moviments diferents possibles per a
cada jugador, degut al seu tauler quadrat amb 19 caselles per costat, fent un total de 361 caselles, més del doble
en caselles que C'escacs.
El mètode de cerca de Montecarlo consisteix en fer servir un mostreig al·leatori, per a casos on no és possible una altra tècnica. i data dels anys 1940. Però va ser en 1987 que Bruce Abramson va combinar la búsqueda minimax amb continuacions aleatòries fins el final de la partida, en comptes de fer servir una funció heurística d'avaluació.
Aquestes tècniques varen ser també molt útils per millorar els
algorismes de demostració automàtica de teoremes, una altra aportació de la teoria de jocs a altres branques que
es poden considerar més serioses
, de la mateixa manera que minimax s'ha generalitzat al camp de la
presa de decisions.
B. Brügmann va fer servir l'algorisme per resoldre el problema del joc del Go en 1992. No va ser fins a 2006 que Rémi Coulom va descriure l'aplicació del mètode de Montecarlo a la búsqueda d'arbres de joc, i el va anomenar com a cerca de Montecarlo. L. Kocsis i Cs. Szepesvári desenvoluparen l'algorisme UCT (Upper Confidence bounds applied to Trees).
Deepmind, adquirida per Google en 2014, en 2015 presentà AlphaGo, el primer programa que derrota un humà al Go en nivell campionat, i en març de 2016 es declarà campió.
L'algorisme consta de quatre fases:
El gran aventatge d'aquest algorisme és que no existeix cap dependència d'heurístics, tot i que es poden fer servir sesgant el comportament aleatori per mirar de millorar-ho.
L'inconvenient més gran és que requereix una gran potència de càlcul per a l'entrenament de la xarxa neuronal. Per a decrementar la potència de càlcul requerida per a l'entrenament es pot començar amb un comportament inicial fonamentat en heurístics, i fer servir la xarxa neuronal únicament per a l'aprenentatge d'un nivell superior de coneixement del joc. Preferiblement aquests heurístics hauran de ser senzills i efectius, per evitar sobrecostos i biaixos.
AlphaGo fou el primer programa de jugar a Go a nivell de mestre, aconseguint el títol de campió del
món en 2016. El programa incorporava coneixement específic per a la incorporació d'heurístics, i havia aprés
amb una gran base de dades existent amb partides.
L'experiència d'AlphaGo es va aprofitar per construir AlphaGo Zero, que ara només
tenia coneixement de les regles del joc, sense cap altre mena d'heurístic ni coneixement específic del joc. El
programa havia aprés
jugant partides simulades contra ell mateix, fent servir una tècnica
d'aprenentatge
per reforç.
AlphaGo Zero es va generalitzar a AlphaZero, que era capaç de jugar a diferents jocs: els escacs i el Shogi, a més del Go, tot només incorporant les regles del joc. Aquest programa aviat va guanyar al millor programa que feia servir les tèniques minimax tradicionals, amb poda alfa-beta i moltes altres tècniques que s'havien desenvolupat al llarg dels anys, però totes elles fortament fonamentades en l'existència d'heurístics.
Aquest programa fa servir una cerca de Montecarlo incorporant aprenentatge del joc per reforç per a
programar una xarxa neuronal d'aproximadament vuitanta nivells, sumant un total de centenars de milers de
nodes (neurones
).
Podem veure com algunes de les tècniques d'escacs
d'AlphaZero han sorprés fins i tot els grans experts dels escacs, doncs
els moviments, no tan limitats
pels heurístics que s'exigeixen als programes d'escacs, sovint
són inesperats i sorprenents. En el blog zugzwang podem veure quatre exemples comentats d'aquest desafiament.
També podem veure comentada una partida d'un posterior
desafiament en desembre de 2018, d'una versió renovada
d'AlphaZero contra la mateixa versió Stockfish 8, tot i ja existir la versió 10 del programa.
º
És cert que, tot i que inicialment AlphaZero va derrotar el millor programa del moment, Stockfish 8, es critica el desequilibri en el maquinari que han fet servir les dues parts. Stockfish incorpora millores en les seves successives versions, en el moment d'escriure aquest text, la versió 15.1. També AlphaZero ha incorporat millores; la versió d'alpha-zero actual és la 16, però una versió d'un codi que ja no pertany a Deepmind Google, sinó reproduccions implementades per tercers, però ens permet veure algunes partides més, doncs la versió de Deepmind ha deixat d'estar accessible:
En 2019 DeepMind publicà un nou artícle on detalla MuZero, un nou algorisme capaç de generalitzar AlphaZero, per a jugar a jocs de taula i jocs Atari (Arcade) sense conèixer les regles o representacions del joc; el programa MuZero fa servir tres xarxes neuronals, en comptes d'una sola, i no ha millorat a AlphaZero, però l'ha igualat sense tenir informació del joc. Com s'ha comentat, la versió d'AlphaZero ja no és mantinguda per Deepmind Google, però s'han desenvolupat clons des de la informació que es va publicar.