Computer Go este o ramură a inteligenței artificiale pentru crearea de programe de calculator care joacă Go .
Oamenii simt că sunt mai buni la Go decât computerele, deoarece îi compară cu oamenii. „Poate că nu este că computerele joacă prost, dar oamenii joacă prea bine.” Go, în comparație cu alte jocuri cu informații complete, are caracteristici care îl fac deosebit de ușor de jucat pentru oameni. Pietrele nu se mișcă ca piesele de șah, nu își schimbă culoarea ca în reversi. Aceste caracteristici permit oamenilor să calculeze lanțuri lungi de mișcări, ceea ce este foarte dificil pentru o mașină.
Cu toate acestea, în acele rare ocazii când pietrele sunt capturate și reluate în mod repetat în aceleași puncte, oamenii au probleme în timp ce sunt ușor de utilizat pentru computere.
Pentru o lungă perioadă de timp, computerul Go a fost considerat a fi semnificativ diferit de șahul pe computer , deoarece metodele bazate pe căutare rapidă în comparație cu experiența umană, combinate cu cunoștințe de domeniu relativ scăzute, nu ar fi eficiente pentru Go. Prin urmare, s-a depus mult efort în domeniul computerului Go pentru a combina cunoștințele de specialitate cu căutarea locală pentru a răspunde la întrebări despre natura tactică a jocului. Rezultatul acestor eforturi au fost programe care au fost capabile să găsească soluții bune în unele situații locale, dar au avut slăbiciuni evidente în procesarea generală a jocului. În plus, aceste programe clasice au primit puțină putere de redare, deoarece hardware-ul a devenit mai puternic și, prin urmare, dezvoltarea în acest domeniu a fost în general lentă. Prin urmare, s-a crezut că un program care joacă bine în Go poate fi creat doar într-un viitor îndepărtat și numai cu ajutorul cunoștințelor generale în domeniul inteligenței artificiale acumulate până la acel moment. Chiar și scrierea unui program care ar putea determina câștigătorul unui joc finalizat a fost percepută ca o sarcină netrivială.
În 2006, au apărut programe bazate pe căutarea Monte Carlo . Puterea jocului de inteligență artificială s-a îmbunătățit. Dar decalajul cu nivelul de joc al jucătorilor profesioniști de Go a rămas, și unul semnificativ în acest sens.
Totuși, în 2015, un program de calculator ( AlphaGo , de la DeepMind ) a câștigat pentru prima dată un meci egal împotriva unui profesionist ( Fan Hui , al 2-lea dan profesionist) (cu scorul de 5-0) [1] .
În martie 2016, AlphaGo l-a învins pe profesionistul Lee Sedol în primele trei seturi de cinci jocuri. [2] Aceasta a fost prima dată când un profesionist de 9 dan, unul dintre cei mai puternici jucători din lume, a jucat un computer fără handicap. [3] În al patrulea joc, Li a reușit să câștige, dar computerul a câștigat al cincilea joc, astfel meciul s-a încheiat cu un scor de 4:1. [4] [5] (vezi detalii: meciul AlphaGo vs. Lee Sedol )
În mai 2017, la Future of Go Summit s-a disputat un mini-meci de 3 jocuri între AlphaGo și unul dintre cei mai puternici jucători din lume, liderul clasamentului mondial Elo Ke Jie , unde toate jocurile au fost câștigate de către program [6] [7] [8 ] . Pe același forum, AlphaGo a învins o echipă de 5 profesioniști ai 9-lea dan ( Mi Yuting (nr. 3 în clasamentul celor mai puternici jucători, rating înainte de meci 3571 puncte), Chen Yaoye (nr. 8, 3513)) , Zhou Ruiyang (Nr. 10, 3509), Xi Yue (Nr. 11, 3508), Tang Weixing (Nr. 18, 3474)) [9] .
Placa mare (19x19, 361 intersecții) este adesea citată ca un obstacol major în construirea unor programe Go puternice. Problema cu placa mare este că previne căutările profunde de tăiere alfa-beta .
Până acum, cea mai mare tablă pe care s-a efectuat până acum o enumerare completă a posturilor este o tablă 6x7 [10] .
Continuând comparația cu șahul, trebuie menționat că mișcările în go aproape că nu sunt limitate de reguli. În timp ce prima mutare în șah poate fi făcută în douăzeci de moduri, prima mutare în Go are 55 de opțiuni, având în vedere simetria tablei. Dupa primele cateva miscari in diferite colturi ale tablei, simetria situatiei de joc se pierde si numarul de miscari posibile creste, ajungand la numarul de puncte libere de pe tabla.
Etapa inițială a jocului în go - fuseki - se supune anumitor principii generale pentru dezvoltarea configurațiilor de pietre, dar se caracterizează printr-o varietate mult mai mare de mișcări decât în șah. Noutățile pot apărea nu la a 20-a mutare, ci deja la a treia sau a patra, iar jocul de deschidere competent este imposibil fără a înțelege perspectivele strategice ale construcțiilor care apar pe tablă. Joseki (scheme tipice pentru a juca o poziție pe o parte limitată a tablei, în special în colțuri), care într-un anumit sens poate fi considerat un analog al deschiderilor de șah dezvoltate, nu permit utilizarea mecanică și nu oferă o rezultat garantat, deoarece efectul utilizării lor depinde de poziția generală pe întreaga placă, deci chiar și alegerea joseki-ului potrivit pentru o anumită poziție într-un anumit colț este o sarcină intelectuală dificilă.
Regula ko duce adesea la o schimbare dramatică a naturii luptei, ale cărei consecințe sunt greu de evaluat chiar și pentru un jucător experimentat. De fapt, este necesar de fiecare dată să se măsoare consecințele „non-răspunsului” la o ko-amenințare (atât a propriei, cât și a adversarului) cu costul pierderii ko-luptei. O persoană trebuie să se bazeze pe experiența și intuiția sa, în timp ce pentru un computer aceste concepte sunt greu de oficializat.
La șah, ca și în multe alte jocuri, în timpul jocului sunt mai puține piese pe tablă, ceea ce simplifică enumerarea mutărilor. În go, dimpotrivă, fiecare mișcare următoare adaugă o piatră pe tablă (deși retragerile sunt posibile), creând momente de joc suplimentare.
Programele Computer Go au fost mult mai slabe decât programele de șah. Abordările care au fost aplicate în programele de șah s-au dovedit a fi mediocre în computer Go.
Regulile de șah sunt ușor de oficializat și pot fi prezentate unei mașini într-o formă convenabilă care îi va permite să joace la un nivel înalt.
Dar regulile de poziție simple folosite în șah nu vor fi eficiente în Go. Determinarea valorii unei pietre necesită o analiză complexă, chiar dacă doar pentru a determina dacă grupul căruia îi aparține este în viață, cât de mare este influența grupului și ce pericole îl amenință.
O altă provocare este crearea unei bune funcții de evaluare pentru Go. Pot exista mai multe mișcări bune la fiecare mișcare și, pentru a alege cea mai bună mișcare, computerul trebuie să evalueze diferitele rezultate posibile. Aceasta devine o sarcină dificilă în Go. De exemplu, este posibil să capturați pietrele adversarului prin fortificarea grupului său în altă parte. A decide dacă un astfel de schimb este benefic poate părea copleșitor chiar și pentru un jucător uman. Se poate dovedi, de asemenea, că mutarea într-o altă parte a tablei și forma de construire acolo poate fi mai importantă.
Uneori se menționează că unele probleme combinatorii dificile (de fapt orice problemă NP-completă ) pot fi transformate așa cum sunt aplicate la Go; totuși, același lucru este valabil și pentru alte jocuri de societate, cum ar fi șahul, generalizate la o tablă de dimensiuni arbitrare. Problemele NP-complete nu pot fi rezolvate de oameni mai repede decât de computere: este îndoielnic că o persoană este capabilă, de exemplu, să rezolve problema vânzătorului călător într-un timp comparabil cu cel pentru care o rezolvă un computer. Prin urmare, capacitatea de a aplica metode NP-complete de rezolvare a problemelor la computer Go nu explică superioritatea oamenilor față de computere în acest joc.
Având în vedere că jocul final al go (yose) conține mai puține mișcări posibile decât începutul sau mijlocul, s-ar crede că ar fi mult mai ușor pentru un computer să joace această parte a jocului. Dar și aici au fost probleme:
Astfel, este foarte dificil de programat un algoritm eficient chiar și pentru a juca etapa finală a Go, darămite întregul joc [11] .
Oamenii simt că sunt mai buni la Go decât computerele, deoarece îi compară cu oamenii. „Poate că nu este că jocul computerelor merge prost, dar oamenii îl joacă prea bine” [12] . Go, în comparație cu alte jocuri cu informații complete, are caracteristici care îl fac deosebit de ușor de jucat pentru oameni. Pietrele nu se mișcă ca piesele în șah, nu își schimbă culoarea ca în reversi . Aceste caracteristici permit oamenilor să calculeze lanțuri lungi de mișcări, ceea ce este foarte dificil pentru o mașină.
Cu toate acestea, în acele rare ocazii când pietrele sunt capturate și reluate în mod repetat în aceleași puncte, oamenii au probleme în timp ce sunt ușor de utilizat pentru computere.
O parte foarte importantă a jocului Go, care se ocupă cu determinarea ce grupuri de pietre pot supraviețui și care pot fi capturate, este cunoscută sub numele de „viață și moarte”. Strategia cea mai directă pentru determinarea vieții și a morții este de a construi un arbore de căutare pentru mișcările care afectează grupul în cauză și de a determina starea grupului la nodurile finale ale acelui arbore.
Cu toate acestea, în limitele de timp și RAM disponibilă, este imposibil să se determine cu acuratețe deplină care mișcări afectează grupul selectat. Nu este neobișnuit, de exemplu, pentru situațiile în care viața unui grup poate fi asigurată doar prin capturarea altuia. Aceasta înseamnă că, pentru a rezolva problema în cauză, trebuie aplicate unele euristici pentru a determina mișcările care trebuie luate în considerare. Ca urmare, programele care joacă Go arată o corelație între timpul petrecut cu gândirea și calitatea determinării viabilității grupurilor.
Există o problemă de reprezentare a poziției în Go pentru programe. Dacă există o căutare intensă pentru o mutare în procesul de gândire la o mutare, atunci vizualizarea are nevoie de o cantitate mică de date care pot fi ușor copiate și distruse. Dacă informațiile despre poziție conțin date foarte structurate, va fi greu de copiat și de încetinirea procesului de căutare.
Cel mai simplu mod de a-l reprezenta este de a crea o matrice unidimensională sau bidimensională, care va conține informații despre ce culori sunt pietrele în fiecare poziție a câmpului și posibilitatea de a trece în poziții goale.
Cu toate acestea, majoritatea programelor folosesc mai multe informații brute de bord pentru a reprezenta o poziție. Acestea pot fi informații despre modul în care pietrele sunt conectate în fiecare linie și despre modul în care liniile sunt asociate între ele, informații despre grupuri de pietre care riscă să fie capturate și care sunt în viață. Și deși această informație poate fi extrasă dintr-o reprezentare directă, va fi mult mai rapid să o schimbi la fiecare tură și să o transferi în formă finită. Astfel de modificări suplimentare necesită mai multe informații pentru a fi memorate și pot reduce viteza de copiere, astfel că problema reprezentării situației de joc este acută și pentru creatorii programelor Go.
Alternativ, puteți păstra o singură copie a tablei și, atunci când faceți o mișcare, să vă amintiți modificările făcute. Acest lucru reduce costurile de memorie și viteza de copiere și vă scutește de la copierea informațiilor redundante din nou și din nou. Dar trebuie remarcat faptul că această formă de prezentare poate necesita abordări diferite ale interpretării sale decât stocarea informațiilor complete despre bord.
Utilizarea reprezentărilor non-directe în Go se confruntă cu o altă capcană legată de însăși structura jocului. O poziție în Go constă din pietre unice care formează structuri diferite (grupuri și seturi de grupuri). Din punctul de vedere al strategiei și tacticii jocului, sunt mai utile opțiunile de reprezentare care conțin în mod explicit informații despre structuri și stări. Dar astfel de informații se pot schimba semnificativ literal la fiecare mișcare (de exemplu, o singură mișcare care creează o conexiune între două grupuri care au câte un ochi fiecare transformă de fapt aceste două grupuri, care sunt amenințate, într-unul, garantat a fi în viață, care ar trebui să se reflecte în reprezentarea ca unire a acestor grupuri). Sarcina de a schimba în mod adecvat o reprezentare complexă în astfel de cazuri este în sine extrem de netrivială.
Din punct de vedere istoric, principala abordare a problemei computerului Go a fost „IA veche și bună”. Mai târziu, rețelele neuronale au început să fie considerate o alternativă la această abordare . Unul dintre programele care utilizează algoritmul rețelei neuronale pentru a juca Go este WinHonte [13] .
Rezultatele acestor dezvoltări în domeniul computerului Go sunt utilizate în alte domenii: știința cognitivă , recunoașterea modelelor și învățarea automată [14] . Teoria jocurilor , o ramură a matematicii aplicate , se aplică și computerului Go [14] .
Singurul lucru pe care programul trebuie să-l facă ca urmare a gândirii la mutare este să indice locul în care ar trebui să fie plasată următoarea piatră. Cu toate acestea, chiar și o decizie atât de simplă este greu de acceptat din cauza ambiguității pozițiilor la care poate duce această formulare. Au fost adaptate diferite arhitecturi pentru a rezolva această problemă. Cele mai populare se bazează pe utilizarea unui arbore de căutare , aplicarea metodelor Monte Carlo , crearea de sisteme expert și utilizarea învățării automate . Puține programe folosesc doar unul dintre acestea; majoritatea combină mai multe abordări.
Arborele de căutare MinimaxUna dintre tehnicile tradiționale AI pentru crearea de programe care joacă jocuri este utilizarea unui arbore de căutare minimax . Pentru a face acest lucru, luați în considerare toate secvențele ipotetic posibile de mișcări până la o anumită adâncime și apoi utilizați funcția de evaluare pentru a estima valoarea mișcării de la care a început fiecare secvență. Mișcarea care duce la cel mai bun rezultat se repetă pe tablă și apoi se efectuează aceeași procedură pentru fiecare mișcare a jucătorului computerizat. În timp ce metodele arborelui de căutare au avut succes în șah , au avut mai puțin succes în Go.
Acest lucru se datorează parțial deoarece este dificil să se creeze o funcție de evaluare eficientă și parțial din cauza numărului mare de mișcări posibile, care are ca rezultat un factor de ramificare mare. Acest lucru face ca tehnica arborelui de căutare să consume prea mult resurse. Prin urmare, programele care folosesc intens arbori de căutare pot juca bine doar pe o placă mică de 9x9, dar nu și pe o placă mare de 19x19.
Există tehnici care pot îmbunătăți performanța arborilor de căutare, atât din punct de vedere al vitezei, cât și al memoriei. Metodele de tăiere alfa-beta , Găsirea abaterilor fundamentale , MDT-f pot reduce factorul de ramificare aproape fără pierderi de putere de joc. În mod similar , tabelul de permutare permite o reducere a recalculărilor, mai ales atunci când este utilizat împreună cu metoda de aprofundare iterativă . Pentru acces rapid la datele aflate în tabelul de permutare, este necesar să utilizați hashing . Hashingul Zobrist este obișnuit în programele Go, deoarece oferă un număr redus de coliziuni și vă permite să actualizați rapid informațiile despre fiecare mișcare folosind doar două operațiuni XOR în loc de un calcul complet.
Chiar și cu aceste tehnici de reducere a timpului, un arbore de căutare complet este încă foarte lent. Căutarea poate fi accelerată prin limitarea ramificării și mai mult, prin neconsiderarea opțiunilor de mișcare în zona de influență a adversarului sau prin alegerea de a lua în considerare în primul rând grupurile de pietre care se află în poziția atari . Cu toate acestea, ambele metode riscă să nu ia în considerare mișcările vitale care ar putea schimba cursul jocului.
Rezultatele competițiilor pe calculator arată că metodele de potrivire a modelelor pentru selecția lanțului de trepte, combinate cu căutarea tactică limitată rapidă (explicată mai sus), sunt suficiente pentru a produce un program competitiv. De exemplu, GNU Go este competitiv, dar nu folosește căutări complete.
Sisteme expertÎncepătorii învață adesea urmărind înregistrări ale jocurilor vechi de către maeștrii jocului. Există o ipoteză puternică că acumularea de cunoștințe este cheia creării unei IA puternice. De exemplu, Tim Kinger și David Mechner spun: „Noi credem că doar folosind instrumentele de acumulare și menținere a cunoștințelor în domeniul Go, puteți crea programe mult mai puternice decât avem în prezent.” Ei sugerează două căi: luarea în considerare a formelor generale și utilizarea lor sau luarea în considerare a opozițiilor locale. „...Software-ului Go încă îi lipsește atât calitatea, cât și cantitatea de cunoștințe.” [cincisprezece]
După implementare, utilizarea cunoștințelor cu experiență s-a dovedit a fi foarte eficientă. Sute de linii directoare și reguli de bază pentru un joc puternic au fost formulate atât de amatori de nivel înalt, cât și de profesioniști. Sarcina programatorului este să ia aceste euristici , să le oficializeze în codul mașinii și să folosească potrivirea și recunoașterea modelelor pentru a afla când să le folosească. De asemenea, merită să dezvoltați un sistem pentru a identifica cea mai bună soluție atunci când se aplică mai multe principii simultan.
Cele mai multe dintre rezultatele relativ de succes se bazează pe abilitățile de Go-playing ale programatorilor care au scris programele și ipotezele lor personale despre jocul maeștrilor, și nu pe baza unor calcule matematice greșite formale; încearcă să facă computerul să imite modul în care ei înșiși joacă Go. „Majoritatea programelor competitive au necesitat 5-15 ani de efort uman și conțin 50-100 de module care se ocupă de diverse aspecte ale jocului.” [16]
Această metodă a fost până de curând cea mai de succes tehnică în producerea de programe Go competitive pe un domeniu de dimensiune completă. Exemple de programe care s-au bazat mai mult pe cunoștințele experiențiale sunt Handtalk (cunoscut mai târziu ca Goemate), The Many Faces of Go, Go Intellect și Go++, toate fiind considerate la un moment dat cel mai bun program Go din lume.
Cu toate acestea, adăugarea de cunoștințe de specialitate slăbește uneori programul, deoarece orientarea pur și simplu superficială într-o situație poate duce la erori. „Cele mai bune programe fac de obicei mișcări bune la nivel de maestru, dar, după cum știu toți jucătorii, o mișcare proastă poate strica un joc bun.” [16]
Metode Monte CarloUna dintre principalele alternative la utilizarea cunoștințelor codificate și la găsirea mișcărilor este metoda Monte Carlo . Esența acestei metode este că primele poziții sunt selectate pe tabla curentă la care puteți merge, iar apoi, începând secvențial de la fiecare dintre ele, se joacă un număr mare de jocuri aleatorii. Poziția care oferă cel mai mare raport dintre victorii și pierderi este aleasă pentru următorul turn. Avantajele acestei metode sunt că necesită foarte puține cunoștințe ale domeniului problemei și nu necesită multă memorie. Cu toate acestea, această metodă are și dezavantaje evidente. Datorită faptului că mișcările sunt generate aleatoriu și nu sunt luate în considerare toate continuările posibile, unele mișcări vor fi apreciate în mod eronat drept bune. Chiar dacă selecția aleatorie a continuărilor va fi favorabilă, adversarul poate avea câteva mișcări, dar destul de evidente, care îi vor permite să câștige un avantaj. Aceste mișcări fie nu vor cădea în eșantionul aleatoriu, fie numărul continuărilor bune va fi mai mare. Rezultatul este un program puternic strategic, dar slab din punct de vedere tactic. Această problemă poate fi atenuată prin adăugarea unor experiențe și căutări mai profunde. Programele Monte Carlo includ Zen , The Many Faces of Go v12 , Leela , MoGo , Crazy Stone [17] , Olga și Gobble.
În 2006, a fost dezvoltată o nouă tehnică, limitele superioare de încredere aplicate arborilor [18] , care este folosită în multe programe pentru a juca Go pe o placă 9x9 cu rezultate excelente. Tehnica UCT, împreună cu multe alte tehnici de optimizare pentru jocul pe o tablă 19x19, a permis MoGo să devină unul dintre cele mai puternice programe. Tehnica UCT pentru a juca pe o placă de 19x19 este folosită de următoarele programe: MoGo, Crazy Stone, Mango . MoGo a câștigat Olimpiada de calculatoare din 2007 și a câștigat unul dintre cele trei jocuri blitz împotriva lui Guo Juan [1] , al 5-lea Dan. În 2008, The Many Faces of Go a câștigat Olimpiada de calculatoare după ce a adăugat UCT la mecanismul său expert bazat pe cunoștințe.
În 2008, MoGo a câștigat unul din cele trei jocuri [19] împotriva Cătălinei Țăranu , 5 pro-dan, pe o tablă 9x9 cu timp standard (30 de minute pe joc per jucător). MoGo a fost lansat pe un computer cluster (32 de noduri cu 8 nuclee la 3 GHz). Aceste rezultate au fost aprobate de Federația Franceză Go [20] . MoGo a jucat si pe o tabla de 19x19 impotriva aceleiasi Catalina Taranu si a pierdut cu un avans de 9 pietre. De remarcat, totuși, programul a jucat puternic și a pierdut pur și simplu din cauza alegerilor slabe de ko-fight la sfârșitul jocului, în care computerele sunt în mod tradițional slabe.
Pe 7 august 2008, MoGo a câștigat un joc de masă 19x19 împotriva lui Kim MyungWan, 8p, cu un avans de 9 pietre cu 1,5 puncte. Kim a folosit 13 minute pentru a gândi, în timp ce MoGo a folosit aproximativ 55, dar a simțit că utilizarea mai mult timp nu l-ar ajuta să câștige. MoGo a fost lansat din Olanda pe un supercomputer cu 800 de noduri care conține 4 nuclee per nod, 4,7 GHz și 15 Teraflopi de performanță . [21] . Myeonghwan și MoGo au jucat patru jocuri cu handicap și limite de timp diferite și au câștigat câte două jocuri. Rapoartele jocului sunt disponibile la KGS [22] unde MoGo a jucat sub numele de MogoTitan.
În februarie 2009, MoGo a obținut o victorie și mai mare - cu un handicap de 7 pietre, l-a învins pe jucătorul 9 dan Jun-Xun Zhou, iar cu un handicap de 6 pietre a spart rezistența jucătorului 1 dan Li-Chen Chien [23 ] .
Până la începutul anului 2012 CrazyStone [24] , bazat pe aceeași metodă Monte Carlo ca MoGo, are un 5 dan stabil pe serverul KGS [25] .
În decembrie 2010, programul de calculator Zen a atins nivelul 4 dan pe serverul KGS. Programul Zen a fost creat de programatorul japonez Yoji Ojima. În iunie 2011, programul de calculator Zen19d a atins nivelul de 5 dan pe serverul KGS, jucându-se cu o viteză de 15 secunde pe tură. Această versiune a programului rula pe un computer cu 26 de nuclee. În martie 2012, programul de calculator Zen19D a atins nivelul de 6 dan pe serverul KGS, jucându-se cu o viteză de 15 secunde pe tură. Această versiune a programului rula pe un computer cu 28 de nuclee [26] .
În martie 2012, Zen19D a câștigat 9 dan cu 4 pietre de handicap împotriva lui Takemiya Masaki . Pentru acest meci am folosit un grup de 4 computere (dual 6-core Xeon X5680/4.2 GHz, 6-core Xeon W3680/4 GHz și două 4-core i7 920/3.5 GHz) conectate prin GbE LAN. Același echipament este folosit pentru Zen19S și Zen19D pe serverul KGS [27] .
Învățare automatăProgramele bazate pe cunoștințe pentru jocul Go sunt foarte eficiente, dar nivelul lor de cunoștințe este strâns legat de nivelul programatorilor și experților în domeniu. Această problemă poate fi ocolită prin utilizarea metodelor de învățare automată , care permit programului să genereze modele și strategii de comportament care nu sunt încorporate în el în prealabil.
Practic, această abordare este implementată folosind rețele neuronale sau algoritmi genetici , care vă permit fie să găsiți situația potrivită într-o bază de date mare de jocuri, fie să jucați multe jocuri împotriva dvs. sau a altor programe sau oameni. Programele cunoscute care folosesc rețele neuronale sunt NeuroGo și WinHonte.
Există mai multe competiții anuale binecunoscute între programele de calculator care joacă Go, dintre care cea mai faimoasă este Olimpiada de calculatoare. Competiții regulate și mai puțin formale au loc la KGS (lunar) și CKS (continuu).
Cele mai cunoscute programe Go-playing includ Starul de argint nord-coreean KCC Igo, Handtalk (de Chen Zhixing), GoPlusPlus (Michael Reiss) și Many Faces of Go de David Fotland. GNU Go este un software gratuit care a câștigat și concursuri de computere.
Primele competiții computer go au fost sponsorizate de USENIX. Au avut loc în 1984-1988. Aceste competiții au lansat Nemesis, primul program competitiv Go-playing de la Bruce Wilcox și David Fotland G2.5, care mai târziu avea să evolueze în Cosmos și The Many Faces of Go.
Unul dintre primele stimulente pentru dezvoltarea computerului Go a fost Ing Cup, o competiție relativ mare cu premii în bani, sponsorizată de bancherul taiwanez și fondatorul Ing Cup , Ing Chang-ki, desfășurată la fiecare patru ani din 1988 până în 2000. Câștigătorul acestui turneu i sa permis să provoace tinerii profesioniști într-un joc cu handicap cu timp scurt. Dacă programul a câștigat, atunci autorul său a primit un premiu în bani și a fost stabilit un nou premiu pentru victoria unui profesionist cu un handicap mai mic. Premiile ing trebuiau să se încheie 1) în 2000 2) când programul a învins un jucător profesionist dan într-un joc egal (NT 40.000.000 USD ). Ultimul câștigător a fost Handtalk în 1993, primind 250.000 dolari NT pentru că i-a învins pe profesioniști de 8-9 ani cu 11 pietre. Până în 2000, premiul de 400.000 USD pentru învingerea unui profesionist cu un handicap de 9 pietre a rămas nerevendicat [28] .
În mod surprinzător, Japonia a început abia recent să-și sponsorizeze propriile campionate Go computer. Competiția Cupei FOST a avut loc anual din 1995 până în 1999 la Tokyo. A fost înlocuită de Provocarea Gifu, organizată anual din 2003 până în 2006 în Ogaki, Prefectura Gifu .
În octombrie 2015, AlphaGo , dezvoltat de DeepMind , l-a învins pe trei ori campion european Fan Hui (al doilea dan profesionist) într-un meci de cinci jocuri cu scorul de 4-1. Este pentru prima dată în istorie când un computer a învins un profesionist într-un joc egal [1] [29] [30] .
În martie 2016, AlphaGo l -a învins pe profesionistul al 9-lea dan Lee Sedol în patru din cinci jocuri. [2]
În mai 2017, la Future of Go Summit , AlphaGo a câștigat trei jocuri din trei într-un mini-meci cu unul dintre cei mai puternici jucători din lume, liderul mondial Elo Ke Jie [6]
Când două computere joacă Go unul împotriva celuilalt, imaginea ideală a jocului ar trebui să fie de la om la om. Cu toate acestea, acest lucru este greu de realizat, mai ales în jocul târziu. Problema principală este că programul nu poate duce un dialog cu inamicul. Deci, dacă există vreun dezacord cu privire la statutul grupurilor, atunci nu există nicio modalitate ca programele să le rezolve. O modalitate de a rezolva această problemă ar putea fi introducerea unui arbitru uman sau a unui mediu software foarte specializat pentru a evalua poziția finală. O metodă alternativă este de a lăsa programele să facă mișcări până când stările tuturor grupurilor litigioase sunt în cele din urmă determinate. Principalul obstacol în calea implementării acestei soluții este că în unele variante ale regulilor Go (de exemplu, regulile japoneze), jucătorii sunt penalizați pentru mișcări suplimentare, pierzând puncte. Prin urmare, există riscul ca, după ce se îndoiește de avantajul său, programul să piardă după ce a jucat situația câștigătoare.
Merge | |||||
---|---|---|---|---|---|
| |||||
Inventar | |||||
Reguli |
| ||||
Etapele jocului | |||||
Terminologie | |||||
Descărcări | |||||
Organizații | |||||
Titluri | |||||
Turnee internaționale |
| ||||
Intră în artă |
| ||||
Alte | |||||
|