BAGGRUND: AlphaZero spiller skak på en overnaturlig måde

11. december 2017 kl. 11:4220
BAGGRUND: AlphaZero spiller skak på en overnaturlig måde
AlphaZero spiller skak som fremmede civilisationer vil gøre det, mener dansk stormester. Illustration: Kerdkanno/Bigstock.
Dansk stormester: »Jeg har altid tænkt over: Hvis vi fik besøg fra rummet, hvordan ville de så spille skak? Nu ved jeg det.« AlphaZero spiller fordomsfrit med en genialitet, andre programmer ikke besidder.
Artiklen er ældre end 30 dage

Folkene fra DeepMind i London har gjort det igen. Lavet et nyt system, der mestrer kunsten at spille brætspil bedre end nogen på Jorden.

Det nye program AlphaZero er en generalisering af det tidligere program AlphaGo Zero, der lærte sig selv at spille det komplicerede asiatiske spil Go. Det nye program spiller ikke alene Go bedre end alle andre. Det er også verdens bedste til skak og shogi, også kaldet japansk skak.

Læs også: AlphaGo beviser: Kunstig intelligens bliver bedre uden ekspertviden fra mennesker

Illustration: Thomas Dorigo.

Artiklen fortsætter efter annoncen

Det er genialt, det der

Partikelfysikeren og skakentusiasten Thomas Dorigo peger på denne situation som et godt eksempel på AlphaZeros næsten overnaturlige evne til at spille skak.

Sort er kommet i en låst situation, hvor løberen på de hvide felter ikke er til megen nytte, mens hvid (AlphaZero) har mere rum for at udvikle spillet, men hvordan kommer hvid bedst videre?

De fleste vil nok flytte tårnet til c1 eller måske overveje at bringe kongen i sikkerhed via e2 og f2, mener Dorigo, men AlphaZero valgte noget helt andet, nemlig at flytte kongen til e3.

Det er normalt ikke anbefalelsesværdigt at flytte kongen ud på midten af brættet, men her åbner det for flere angrebsmuligheder for de øvrige brikker.

Måske kunne de allerbedste skakspillere finde på noget lignende, men ingen andre skakprogrammer ville gøre det, mener Thomas Dorigo.

I løbet af et døgn lærte AlphaZero sig selv at spille alle tre spil uden noget som helst andet input end reglerne for de forskellige spil.

Programmet blev ikke fodret med tidligere spillede spil, det modtog ingen ekspertviden om åbninger, taktik eller godt råd. Intet.

Selv om det er 20 år siden IBM’s DeepBlue slog verdens bedste skakspiller, Garry Kasparov, og interessen inden for kunstig intelligens de senere har været fokuseret på Go, som er meget kompliceret at analysere, så er det nok den måde, som AlphaZero spiller skak på, der har vakt mest interesse i denne omgang.

Til internationale medier har den danske stormester Peter Heine Nielsen, der er træner for den norske verdensmester Magnus Carlsen, sagt det rammende på denne vis:

Artiklen fortsætter efter annoncen

»Jeg har altid tænkt over, at hvis vi fik besøg fra rummet, hvordan ville de så spille skak? Nu ved jeg det.«

Til Ingeniøren tilføjer han;

»Det er det mest fascinerende og skræmmende jeg har set.«

Tavlen var visket ren fra begyndelsen

AlphaZero begyndte som nævnt på bar bund som den dummeste amatørspiller eller med en 'rengjort tavle' - tabula rasa som det betegnes inden for erkendelsesteorien.

Søgeprocedurer

I skak og for den sags skyld Go og shogi forsøger man at forudse spillets udvikling mange træk længere frem - hvad enten man er menneske eller computerprogram.

Computerprogrammer kan analysere mange flere kombinationer end mennesker, som i høj grad må bruge deres erfaring og intuition til at analysere meget få muligheder i dybden.

Selv computerprogrammer må dog søge at begrænse antallet af søgninger bedst muligt for at komme gennem deres opgave.

Den traditionelle teknik til at beskære i søgetræet går under navnet alfa-beta-beskæring og har sin oprindelse helt tilbage i 1950’erne. Med denne metode kan man på enkel vis finde grene i søgetræet, som det unødvendigt at undersøge, fordi de ikke kan lede til et resultat, som er bedre end et allerede fundet.

AlphaZero bruger i stedet Monte Carlo-søgning, hvor man udvælger de dele af træet, der ser mest lovende ud.

Denne metode har hidtil i praksis været dårligere end alfa-beta-beskæring, men DeepMind har udviklet deres egen version af denne søgeteknik, og med denne kan AlphaZero nøjes med at analysere 80.000 positioner i sekundet i skak, mens Stockfish analyserer 70 millioner - og alligevel gøre det meget bedre.

Med en teknik kaldet reinforcement learning justerede AlphaZero løbende sit neurale netværk, så det blev bedre og bedre end alle andre programmer og mennesker på denne jord. Og det gik rasende hurtigt.

Det foregår ved, at AlphaZero spiller mod en variant af sig selv, hvor det neurale netværk er justeret en smule anderledes. På den måde opdateres det neurale netværk løbende, der bliver også tilført lidt støj til opdateringen af det neurale netværk under indlæringen , så det får afprøvet nogle indstillinger, som det ellers ikke ville have undersøgt.

Læs også: Nysgerrige maskiner lærer hurtigere

Efter fire timer træning var programmet bedre end verdens bedste hidtil bedste skakspiller programmet Stockfish. Det tog kun to timer at blive bedst til shogi.

Artiklen fortsætter efter annoncen

Den samlede træningstid i skak var ni timer, og i denne periode spillede AlphaZero 44 millioner spil.

Stockfish blev nedspillet

Efter at have lært sig selv skak spillede AlphaZero mod verdens stærkeste kommercielle skakprogram Stockfish i en match over 100 partier.

I de 50 partier, hvor AlphaZero havde de hvide brikker, blev resultatet 25 sejre til AlphaZero og 25 remis.

Med de sorte brikker vandt AlphaZero 3 partier og spillede 47 remis. Altså ingen nederlag overhovedet.

I lyset af Peter Heine Nielsens kommentar er det interessant at se nærmere på, hvordan AlphaZero spiller skak.

Favoritåbninger skifter under læring

Af den videnskabelige artikel fremgår det, at AlphaZero selv lærer de 12 mest almindelige åbninger i skak. De opstår gradvist i læringsperioden.

Nogle af disse åbninger syntes AlphaZero dog at blive træt af igen.

Speciel hardware

AlphaZero kører på en enkelt maskine med fire tensorprocessorer (TPU), som er specielt udviklet af Google til dette formål. DeepMind er et datterselskab under Alphabet, som også er moderselskab for Google.

Tensorprocessorer er optimeret med hensyn til antallet af beregninger og input/operationer på bekostning af beregningsnøjagtigheden. De er særligt velegnede til maskinlæring.

Det gælder f.eks. Caro-Kann, som AlphaZero opdager efter to timer og spiller forholdsvis jævnligt, indtil der er gået seks timer, hvorefter programmet stort set ikke længere spiller denne åbning,

Det tager til gengæld lang tid for AlphaZero at opdage dronningegambit, som hører til AlphaZeros foretrukne åbninger ved afslutningen af de ni timers træning.

DeepMind har offentliggjort 10 partier spillet mellem AlphaZero og Stockfish. Diverse skak-sites har kastet sig over disse med stor interesse, og mange venter på endnu flere partier i håbet om at lære om det klassiske brætspil fra den nye mester i byen.

Er AlphaZero så det optimale skakprogram?

På ingen vis. I den videnskabelige artikel gør DeepMind opmærksom på, at der er lang række teknikker, som findes i en række tidligere programmer inkl. DeepBlue, der måske med fordel kan bruges i AlphaZero. I første omgang har forskerne dog valgt at fokusere på den rene form for reinforcement learning og efterlade dette til fremtiden.

20 kommentarer.  Hop til debatten
Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
20
15. december 2017 kl. 17:50

Mortens link viser også det sidste parti, som jeg nævnte, at Kasparov må have tabt med vilje. Han må have kendt denne velkendte, barnlige åbningsfejl!

Det tror jeg ikke, for inden partiet stod det 2½ - 2½, så hvis han havde vundet det sidste parti, havde han vundet matchen, som ville have været hans anden sejr over Deep Blue. Derudover havde han med nogen held spillet samme åbning i et tidligere parti, som endte uafgjort. Jeg ville heller ikke kalde det en barnlig fejl; jeg er ikke skaknovice, og jeg kunne godt være blevet ramt af det trick. Som udgangspunkt forventer man jo ikke at modstanderen ofrer en så godt placeret springer for at tage en dækket bonde.

19
15. december 2017 kl. 10:30

Mortens link viser også det sidste parti, som jeg nævnte, at Kasparov må have tabt med vilje. Han må have kendt denne velkendte, barnlige åbningsfejl!

18
14. december 2017 kl. 19:37
17
13. december 2017 kl. 11:29

God pointe, Per.

Det sidste afgørende parti, som Kasparov tabte, var latterligt. Han lavede en kendt åbningsfejl, der tabte øjeblikkeligt. Selvfølgelig kendte han den fejl, men han gad ikke fortsætte matchen, hvis formål var, at IBM i sidste ende skulle vinde, - eller han var blevet for træt eller fik et større beløb for at tabe. IBM har rigtigt udnyttet gevinsten uden at nævne at det afgørende parti ikke var reelt!

Skak er er en sportsgren, hvor fysisk og psykisk velbefindende er mindst lige så vigtig som regnekraft. Maskinen har ikke disse biologiske problemer og bliver ikke træt, men spiller konstant.

At sammenligne spillestyrken for mennesker og en maskine er irrelevant. Man kan sikkert også fremstille maskiner/robotter, der løber en hurtigere 100 meter end Verdensmesteren, men robotterne får naturligvis ikke lov til at deltage i normale konkurrencer.

16
12. december 2017 kl. 11:57

Men når grenene deles vælger den pludselig en gren hvor den ofrer en bonde! Resultatet er at den giver "Stockfish" en indeklemt stilling.
Dens nye overlegne spillestil, kan være et eksempel til efterfølgelse. Der er viden at hente der.

Det kunne være spændende at se, hvordan spillestilen ville have været hvis, der intet stokastisk element havde været i træsøgningen, i sammenligning med hvordan den spiller nu. Om det er det stokastiske element der har fået den til at spille overraskende.

15
12. december 2017 kl. 11:38

Over mange spil midler det ud til noget der fungerer.

Ja, men det kan kun være fordi det midler ud at det fungere. Det var iøvrigt en løsning i samme retning jeg i sin tid endte med at vælge. Jeg besluttede også, at der ikke var andet at gøre end at se på slutresultatet. Hvis man havde vundet så måtte ethvert træk i spillet have været godt, og havde man tabt måtte det have været skidt. Og så ellers bare håbe på at det midlede ud til noget der kunne fungere.

AlphaZero's princip med at korrigere efter den forudsagte sandsynlighed for at vinde er selvfølgelig mere sofistikeret og nok også smartere. Da det nok er bedre til at undgå at belønne dårlige træk og straffe gode træk.

14
12. december 2017 kl. 11:36

Det er ikke snyd! Jeg har set de fremlagte partier. "AlphaZero" starter uden menneskelig viden. Kun reglerne er dens baggrund. Den spiller anderledes end en normal skakcomputer. Spillestilen er helt anderledes. Skal man sammenligne, så minder dens stil om "Paul Morpy" og "Adolf Andersen", de gamle mestre. Den ofrer både bønder og officerer, for at komme frem på brættet. De første åbningstræk ligner det vi kender. Men den har flyttet sine åbnings-præferancer over tid, henimod de åbninger den valuerer som bedre. Med e4 er det "Berlin defence" i spansk. Med hvid starter den med Sf3 og udvikler løber på g2 samt d4 og c4. Men når grenene deles vælger den pludselig en gren hvor den ofrer en bonde! Resultatet er at den giver "Stockfish" en indeklemt stilling. Dens nye overlegne spillestil, kan være et eksempel til efterfølgelse. Der er viden at hente der. Den spillede 100 partier imod "Stockfish". resultatet var 28 gevinster og 72 remis. Et knusende resultat. Menneskelig åbningsteori betyder intet. Selv trak den kun ud fra egne vurderinger.

13
12. december 2017 kl. 11:16

At Deep Blue vandt over verdensmesteren Kasparov bliver gentaget i en uendelighed. Ren faktuelt vandt Kasparov faktisk 1. parti over maskinen, hvordan kunne det lade sig gøre? At han endda var i gevinststilling i et andet parti, men tabte på en såkaldt "buk" nævnes heller ikke? Måske er forklaringen den, at IBM med stor præcision slog til umiddelbart efter en meget anstrendende turnering, hvor Kasparov ikke var frisk og udhvilet, er uden tvivl et meget nøje beregnet tidspunkt, hvor IBM stod med den helt store check.
IBM ville ikke give en udhvilet Kasparov en revancematch, hvilket er forståeligt. De har fået maksimal effekt af den nøje tilrettelagte match.

12
12. december 2017 kl. 08:39

I øvrigt rammer du vel lige ned i humlen i det her. De har fundet en arkitektur med et mere effektivt træningsdesign.

Design af netværk, justering af vægte, hardware osv. er der tonsvis af litteratur på (hardwaremæssigt har de dog nok haft en fordel af at have adgangs til Alphabets resurser). Med det mere effektive træningsdesign bliver det praktisk at træne ved bare at spille mod sig selv.

11
12. december 2017 kl. 01:46

Godt spørgsmål. Jeg tror det er besvaret i deres foreløbige paper på arXiv: AlphaZero har en policy-funktion og en evaluerings-funktion, og sidstnævnte opdateres så vidt jeg forstår blot således at selv-spillets slutresultat anses for at være "den rigtige værdi" af hver position undervejs i spillet. Over mange spil midler det ud til noget der fungerer. Der skulle komme et mere detaljeret paper senere, og ellers er der DeepMind's gamle AlphaGo paper i Nature.

10
12. december 2017 kl. 00:35

<a href="https://www.nature.com/articles/nature2427..">https://www.nature.com/ar…;
<p>Der er flere detaljer i artiklen.

Tak for linket. Figure 1 med tilhørende undertekst forklarer det faktisk meget godt. Man spiller et parti (et spil) igennem med et sæt vædier for det neurale netværk. Og når man så har vinderen, så går man tilbage og kigger på hvert foretaget træk. For hvert træk korrigere man så netværket, så den forudsagte styrke af hvert trækmulighed passer bedre med hvad Monte Carlo søgningen fandt, og så forudsigelsen af sandsynligheden af hvem der vil vinde med det faktisk foretagne træk, stemmer bedre overens med spillets udfald.

Man korrigere med andre ord efter, hvor godt en forudsigelse af det foretagne træks styrke stemmer med spillets udfald.

9
11. december 2017 kl. 23:35

Udviklingen af AlphaZero må have budt på et lignende problem. Er der oplysninger om hvordan det er løst her?

De justerer vægtene ved hvert træk ved at rette dem ind så netværket kommer tættere på at vurdere situationen på samme måde som en mere udtømmende Monte Carlo-søgning, så vidt jeg kan dechifrere ud fra følgende:

The neural network in AlphaGo Zero is trained from games of self-play by a novel reinforcement learning algorithm. In each position s, an MCTS search is executed, guided by the neural network fθ. The MCTS search outputs probabilities π of playing each move. These search probabilities usually select much stronger moves than the raw move probabilities p of the neural network fθ(s); MCTS may therefore be viewed as a powerful policy improvement operator. Self-play with search—using the improved MCTS-based policy to select each move, then using the game winner z as a sample of the value—may be viewed as a powerful policy evaluation operator. The main idea of our reinforcement learning algorithm is to use these search operators repeatedly in a policy iteration procedure: the neural network’s parameters are updated to make the move probabilities and value (p, v) = fθ(s) more closely match the improved search probabilities and self-play winner (π, z); these new parameters are used in the next iteration of self-play to make the search even stronger.

https://www.nature.com/articles/nature24270.epdf?author_access_token=VJXbVjaSHxFoctQQ4p2k4tRgN0jAjWel9jnR3ZoTv0PVW4gB86EEpGqTRDtpIz-2rmo8-KG06gqVobU5NSCFeHILHcVFUeMsbvwS-lxjqQGg98faovwjxeTUgZAUMnRQ

Der er flere detaljer i artiklen.

Alpha Zero-resultaterne er såmænd interessante selvom de vist stadig er et godt stykke fra at kunne tæve et menneske med samme søgedybde, men jeg synes artiklerne er rodet skrevet.

8
11. december 2017 kl. 22:33

Kære Jens, jeg er sikker på at Max - som du formentlig refererer til - har forsøgt at være venlig og give et godt råd. På Max´ vegne må jeg så undskylde at du ikke kan bruge svaret til noget.

Men tak til Max herfra for hans venlighed.

7
11. december 2017 kl. 19:30

Det simple svar er at google reinforcement learning, der finder du svaret

Hvis du nu havde forstået hvad der var problem jeg beskrev, eller måske viste lidt om reinforcement learning, så ville du også vide, at jeg ikke finder svaret ved at google reinforcement learning. Somme tider er det godt at tænke sig om, inden man prøver at være en smart arse.

6
11. december 2017 kl. 19:13

Enig. Håber det også kunne bruges til at finde nogle mere snedige løsninger til sygdomme - f.eks virusser der gemmer sig i nervebaner, kræft og andre trælse lidelser - frem for krig og magt.https://news.cancerresearch/ai-uses-biggest-disease-database-to-fight-cancer/

Meeeen - der plejer at blive fokuseret en del på indtjeningsmuligheden, før end man påbegynder et projekt - så allerede der, er der en stor chance for at det vil blive brugt til såvel krig, som mere fredelige formål.

5
11. december 2017 kl. 15:46

Det simple svar er at google reinforcement learning, der finder du svaret

4
11. december 2017 kl. 14:50

Hvor er det godt at vi med egne øjne kan se og indse at mennesket kun er en skabning, altså skabt af en Skaber, og at vi derfor ikke ved alt, ikke nødvendigvis forstår alt, og der er klogskab højere end mennesket. Det giver lidt ydmyghed! Så bliver vi jo nødt til at sætte vores lid til Skaberen!

3
11. december 2017 kl. 14:27

Hej Imponerende, ja nærmest skræmmende! Man må tage hatten af for Google, som er i stand til at samle nogle af de klogeste personer i verden, og få noget godt ud af det. Skal det næste være Ludo? Bridge er måske en anelse sværere, idet der både indgår meldinger og spilføring. Programmet lærer efterhånden af sig selv gode åbninger! Aarhus by, hvordan optimeres trafik og trafiksignaler, så køretiden fra A til B minimeres. En god praktisk opgave. Den mest uhyggelige vinkel på det, er KRIG og strategi. Jeg vil slet ikke tænke på det.

2
11. december 2017 kl. 13:59

Først tak for en klart skrevet artikel, der ikke er bange for at være fagligt præcis og anvende begreber som alpha-beta pruning. Jeg har et lille spørgsmål, som jeg ikke ved om der findes oplysninger om.

For omkring 30 år siden, morede jeg mig selv med at skrive et spilprogram. Ikke til skak, men til fire-på-stribe. Det skader aldrig at øve sig på noget nemmere først, og så havde jeg ikke samme computer ressourcer som folkene bag AlphaZero. Det var helt traditionel A* med alpha-beta pruning. Men ideen var så at programmet selv skulle danne evalueringsfunktionen. Dog ikke ved selv at opdage forskellige spilpositionskvaliteter fra bunden med et neuraltnetværk (igen det med computer ressourcer), men ved at justerer vægte på en lang række spilpositionskvaliteter og kombinationer af disse, som var forhåndsdefineret. Dette skete ved at lade forskellige versioner af programmet spille mod hinanden. Min egentlige nysgerrighed gik på, om de ville ende op med at spille på samme måde.

Nå, men altså et stort problem var, at finde ud af hvilke træk undervejs til slutresultatet (tabt eller vundet), der kunne gøres ansvarlige for resultatet, og hvilke træk der måske havde virket modsat det endelig resultat. Dette er nødvendig viden når vægtene skal justeres. Det stort set eneste jeg fik ud af at litteratursøge på dette problem var, at det var vanskeligt. Hvilket jeg jo godt vidste.

Udviklingen af AlphaZero må have budt på et lignende problem. Er der oplysninger om hvordan det er løst her?

Og som en der selv har arbejdet med simuleret annealing, kan jeg godt lide at de bruger en stokastisk metode til søgetræsbeskæring. Det må også give mulighed for at opdage nogle vindende træk, der ellers ikke ville være blevet taget i overvejelse. Måske en forklaring på at programmet spiller lidt som en "alien".

1
11. december 2017 kl. 13:01

Folk har prøvet at simulere spillene på Stockfish, og der spillede Stockfish bedre end i de officielle. Bedste bud hidtil er at Stockfish ikke havde fuld adgang til hele åbnings- og slutspilsdatabaserne, muligvis fordi de skal bruge mere RAM end projektet havde til rådighed med så mange samtidige spil kørende.

Men det ændrer ikke at ved AlphaZero spiller aldeles blændende.