Citat:
Ursprungligen postat av
borskungen
"Datorn har fått ett färdigt program för att spela schack"
Nja, AlphaZero utvecklades ursprungligen för att spela go och klarar av go, schack och shogi. AlphaZero använder en generell algoritm (plus schackreglerna) och skapar sin egen schackmotor inne i en svart låda. Konventionella schackmotorer är däremot ett lapptäcke av tumregler och trick skapade av människor och vi kan i realtid följa vilka varianter de räknar på.
AlphaGo Zero utvecklades för att spela go och kan bara spela go. AlphaZero är en vidareutveckling av AlphaGo Zero där algoritmerna generaliserats så att samma program kan spela go, schack och shogi. Det är alltså inte frågan om att man utvecklat ett program för att spela go som helt plötsligt lärde sig spela schack till allas förvåning, utan man har aktivt utvecklat ett program för att kunna spela bland annat schack.
Go, schack och shogi tillhör en klass av problem som kan lösas optimalt med
minimax-algoritmen och i princip alla schackdatorer bygger på implementationer av den nämnda algoritmen. Eftersom sökträdet är exponentiellt stort så går det inte att realisera algoritmen utan heuristisk trädbeskärning där man begränsar antalet drag som utvärderas.
Första gången jag spelade mot ett schackprogram så hade datorn 8kB arbetsminne, programmet använde minimax-algoritmen med
alfabeta-beskärning och ett maximalt sökdjup på fyra drag. Med den begränsade minneskapaciteten kunde programmet inte lagra data från tidigare partier utan var tvungen att tänka ut alla drag själv. Programmet torde ha vunnit mot en genomsnittlig svensk men fick naturligtvis stryk av kompetenta schackspelare som lärde sig utnyttja programmets horisont då det inte kunde se längre än fyra drag. Sedan dess har schackprogrammen förfinat heuristiken genom bättre lägesanalys och dynamiskt sökdjup, men i princip använder de fortfarande minimax-algoritmen.
AlphaZero är inget undantag. Enligt
rapporten bygger AlphaZero på
montecarlo-trädsökning, vilket är en strategi för att beskära minimax-algoritmens sökträd genom att bara undersöka utvalda drag. Det neurala nätverket används för att göra statisk lägesanalys i noderna. Träningen består av att man försöker optimera parametrarna i det neurala nätverket genom att låta datorn spela mot sig själv för att hitta de parameterinställningar som leder till flest segrar.
Citat:
"De som programmerade AlphaZero visste hur andra schackprogram fungerar och naturligtvis är AlphaZero baserad på sådan kunskap." De vet förvisso hur andra schackprogram fungerar men AlphaZero har ingenting gemensamt med konventionella schackmotorer. Enda relevanta kunskapen är i så fall att veta hur man inte ska göra.
Det som skiljer är hur man gör lägesanalysen, annars är det i princip samma algoritmer som alltid.