03.09.2013 Views

AI och schack – Karl Magnusson - Research

AI och schack – Karl Magnusson - Research

AI och schack – Karl Magnusson - Research

SHOW MORE
SHOW LESS

Transform your PDFs into Flipbooks and boost your revenue!

Leverage SEO-optimized Flipbooks, powerful backlinks, and multimedia content to professionally showcase your products and significantly increase your reach.

Schack <strong>och</strong> artificiell intelligens<br />

<strong>Karl</strong> <strong>Magnusson</strong><br />

Spelutveckling<br />

kmn06001@student.mdh.se<br />

1


Sammanfattning<br />

Rapporten hanterar <strong>schack</strong> <strong>och</strong> den artificiella intelligensen som styr <strong>schack</strong>datorerna. För att<br />

ett program skall kunna hantera ett <strong>schack</strong>parti måste den kunna beskriva ett <strong>schack</strong>bräde,<br />

vilka pjäser som finns på brädet <strong>och</strong> även specifik information om <strong>schack</strong>drag. Den måste<br />

kunna söka bland de möjliga <strong>schack</strong>dragen <strong>och</strong> sortera dessa på ett strukturerat sätt. För att<br />

kunna välja vilket <strong>schack</strong>drag som bör spelas måste datorn kunna evaluera olika typer av<br />

<strong>schack</strong>ställningar så att den kan välja det drag som är lämpligast i ställningen.<br />

Med utgångspunkt ur kunskapen om hur en <strong>schack</strong>dator fungerar finns det möjligheter för<br />

mänskliga motståndare att anpassa sin speltyp för att kunna besegra en <strong>schack</strong>dator <strong>och</strong> för att<br />

kunna av effektivisera datorns överlägsna beräkningsförmåga.<br />

2


Innehållsförteckning<br />

Schack <strong>och</strong> artificiell intelligens ............................................................................................. 1<br />

Sammanfattning ....................................................................................................................... 2<br />

Innehållsförteckning ................................................................................................................ 3<br />

Inledning .................................................................................................................................... 3<br />

Historik över <strong>schack</strong>datorer ............................................................................................... 3<br />

Grundpricniper i en <strong>schack</strong>dator ....................................................................................... 4<br />

Representation av <strong>schack</strong>brädet ................................................................................... 4<br />

Sökrutiner .......................................................................................................................... 5<br />

Ställningsevalluering ....................................................................................................... 5<br />

Hur besegrar man en dator? .............................................................................................. 7<br />

Slutsatser .................................................................................................................................. 8<br />

Referenser ................................................................................................................................ 8<br />

Inledning<br />

Schack är ett spel som i århundrade har fascinerat människan. För att bemästra <strong>schack</strong> måste<br />

du vara analytisk så du kan bedöma en ställning utefter de förutsättningar du ser på brädet, du<br />

måst även vara kombinatorisk <strong>och</strong> kunna räkna bland alla de drag som finns att välja mellan.<br />

Enda sedan <strong>schack</strong>spelandet spred sig har bemästring av spelet varit ett tecken på intelligens.<br />

Så när datorernas utveckling stegrade så föll det sig naturligt att även datorerna skulle börja<br />

spela <strong>schack</strong>. När sedan datorerna blev kraftfullare <strong>och</strong> kunde hantera <strong>schack</strong>spelet bättre<br />

ställde sig alla frågan, är <strong>schack</strong>datorer bättre än människan <strong>och</strong> i så fall är en dator smartare<br />

än en människa?<br />

Den här rapporten är till för att ge en överblick av <strong>schack</strong>datorerna <strong>och</strong> den artificiella<br />

intelligensen som gör de så kraftfulla, men även ge förslag på hur vi människor bör lägga upp<br />

vårt spel för att kunna besegra en dator.<br />

Historik över <strong>schack</strong>datorer<br />

Den första som utgjorde sig för att ha skapat en <strong>schack</strong>dator var Wolfgang von Kempelen<br />

som redan på 1770-talet hävdade att han hade skapat en maskin som kunde spela <strong>schack</strong>.<br />

Maskinen kallades för ”the Turk” <strong>och</strong> ligger bakom några av <strong>schack</strong>värdens mest berömda<br />

partier, bland annat mot Napoleon Bonaparte[ChessG]. Men det hela var givetvis en bluff då<br />

det inuti the Turk satt en operatör som spelade mot motståndaren.<br />

Det var betydligt senare som de första verkliga <strong>schack</strong>datorerna uppfanns. Men 1949, innan<br />

det fanns någon riktig implementering av ett <strong>schack</strong>spelande program på en dator, skrev<br />

Claude E Shannon[CESh50] en uppsats där han teoretiserade för de grundprinciper som en<br />

<strong>schack</strong>dator skulle vara tvungen att ha. Han beskrev hur en <strong>schack</strong>positions kan beskrivas för<br />

en dator men ännu viktigare hur en <strong>schack</strong>ställning kan värderas utav en dator, så att datorn<br />

kan välja den bästa av möjliga varianter.<br />

3


Nästan tio år senare, 1958 lanserades en grupp ryska programmerare det första<br />

<strong>schack</strong>programmet som var helt kapabel att spela ett <strong>schack</strong>parti. Spelstyrkan på dessa första<br />

<strong>schack</strong>datorer var väldigt låg i fårhållande till mänskliga toppspelare. Med utvecklingen av<br />

datorer <strong>och</strong> dess förmåga att räkna snabbare utvecklades även <strong>schack</strong>datorerna <strong>och</strong> 1997<br />

lyckades Deep Blue [DeepB95], som var en superdator speciellt skapad för att behandla<br />

<strong>schack</strong>spelet, besegra dåvarande världsmästaren Garry Kasparov i en mycket<br />

uppmärksammad match.<br />

Nu mera finns det en mängd <strong>schack</strong>program, som till skillnad från Deep Blue kan köras av en<br />

vanlig PC, vilka håller en spelstyrka som kan besegra världseliten av mänskliga<br />

<strong>schack</strong>spelare.<br />

Grundprinciper i en <strong>schack</strong>dator<br />

För att ett program skall kunna hantera ett <strong>schack</strong>parti måste den innehålla några grundstenar,<br />

det är finputsningen på dessa grundstenar som utgör hur effektiv en <strong>schack</strong>dator är. Det alla<br />

<strong>schack</strong>program måste kunna hantera är:<br />

• Representation av <strong>schack</strong>brädet<br />

• Sök rutiner<br />

• Ställnings evaluering<br />

De flesta av dagens <strong>schack</strong>program innehåller även opening books, vilket är en databas där de<br />

första dragen i ett <strong>schack</strong>parti, den så kallade öppningsteorin, har samlats. Om en dator har<br />

tillgång till en sådan databas med öppningar som spelats <strong>och</strong> dokumenterats av mänskliga<br />

spelare har det visat sig att spelstyrkan ökar stark.<br />

En del <strong>schack</strong>program har även möjlighet att använda sig av endgame table[EndgT], vilket är<br />

en databas som analyserat olika <strong>schack</strong>ställningar i alla möjliga varianter till slutet. Initiativet<br />

till endgame table kom 1970 då Richard Bellman föreslog att lösningen till alla<br />

<strong>schack</strong>ställningar kunde hittas om man började analysera <strong>och</strong> dokumentera ställningarna<br />

utifrån en retrograd analys, dvs. att utgå från en känd ställning, t.ex. <strong>schack</strong>matt i en ställning<br />

med bara två kungar <strong>och</strong> en dam på brädet, <strong>och</strong> arbeta sig bakåt utifrån den ställningen. Vid<br />

tidpunkten för denna rapport klarar endgame table alla ställningar med sex eller mindre<br />

pjäser, inklusive kungarna.<br />

Representation av <strong>schack</strong>brädet<br />

Ett <strong>schack</strong>bräde utgörs av ett rutnät av 8x8 rutor. En datasamling med 64 poster är lämplig för<br />

att representera brädet. Varje post i datasamlingen representerar en av rutorna på<br />

<strong>schack</strong>brädet. Den informationen posten bör innehåller är då:<br />

• Om rutan är ledig<br />

• Om rutan uppehålls av en pjäs<br />

• Om rutan är en möjlig an-pasante ruta<br />

Utöver ovanstående måste även representationen av brädet ha så kallade flaggor (en datatyp<br />

som bara innehåller två värden) som anger vem av spelarnas tur det är <strong>och</strong> om det finns<br />

möjlighet att utföra en rockard.<br />

4


Sökrutiner<br />

De möjliga dragföljderna som kan uppkomma ur en <strong>schack</strong>ställning representeras för en dator<br />

lämpligast med en trädstruktur. Ur utgångssällningen på ett <strong>schack</strong>bräde har vit 20 olika drag<br />

att välja mellan, svart i sin tur har sedan 20 drag att välja på, redan finns det 20*20 alltså 400<br />

olika varianter. Alla dessa olika kombinationer av drag bildar väldigt stora trädstrukturer<br />

[MaBr] som illustreras av figur 1<br />

Det finns ett större antal <strong>schack</strong>ställningar än vad det finns atomer i universum, en dator kan<br />

inte beräkna alla dessa varianter men under rimliga tidsramar för ett <strong>schack</strong>parti kan en dator<br />

räkna miljontals. Beroende på datorns beräkningskapacitet kan en dator räkna alla möjliga<br />

varianter 10 eller 15 drag fram.<br />

För att datorn skall kunna välja bland de möjliga dragen i en <strong>schack</strong>ställning måste den<br />

evaluera löven (nedersta nivån i trädet) i variantträdet. Dessa evalueringsmetoder, som i<br />

princip är ett sätt för programmeraren att förklara för en dator vad som gör en ställning bra<br />

eller dåligt, är lika viktiga för datorns spelstyrka som beräkningsförmågan hos datorn.<br />

Figur 1. Trädstruktur över möjliga <strong>schack</strong>drag<br />

Med väl bearbetade evalueringsfunktioner kan datorn inte bara göra effektiva val, utan även<br />

effektivisera sökningen då varianter som är dåliga ur datorns synpunkt kan tas bort ur<br />

sökningen.<br />

Ställningsevaluering<br />

När en <strong>schack</strong>ställning skall evalueras så finns det vissa självklara ställningar som anses som<br />

högt värderade. Har motståndaren blivit <strong>schack</strong> <strong>och</strong> matt så är det en direkt dödande variant.<br />

Efter sådana direkt vinnande varianter så kan ställningar med materialistiska (vilka pjäser som<br />

finns kvar i spel) fördelar värderas som väldigt bra för datorn. För att datorn skall kunna räkna<br />

igenom materialet i en <strong>schack</strong>ställning tillskrivs alla pjäser en poängsumma. Denna<br />

poängsumma illustreras av figur 2 <strong>och</strong> är samma pjäsvärdering som lärs ut till alla<br />

<strong>schack</strong>spelare världen över.<br />

5


Figur 2. Schackpjäsers värde<br />

Efter dessa värderingssynpunkter finns det många olika sätt att värdera en ställning, dessa<br />

värderingsmetoder varierar väldigt mycket mellan <strong>schack</strong>programmet precis som det varierar<br />

mellan mänskliga <strong>schack</strong>spelare. Gemensamt för dessa är att de inte finns något tydligt sätt att<br />

bevisa att dessa värderingssynpunkter verkligen beskriver ställningsfördelar utan det är<br />

genom erfarenheten från tidigare <strong>schack</strong>partier som dessa har visat sig starka. Det som är<br />

ännu svårare för en dator likväl som en människa är att väga dessa mot varandra.<br />

Crafty ([Craft])är ett open source <strong>schack</strong>program skapat av Dr. Robert Hyatt. Programmet har<br />

länge vart bland de starkaste <strong>schack</strong>programmen <strong>och</strong> har placerat sig högt på ett stort antal<br />

tävlingar för <strong>schack</strong>datorer. De evalueringsmetoder som beskrivs nedan är en generalisering<br />

av de som används av Crafty.<br />

Crafty behandlar, utöver de metoder som redan beskrivits, tre olika ställningstyper i sin<br />

evaluering. Värderingen mellan dessa varierar på vilket skeende som partiet befinner sig i, om<br />

det är öppningsspel, slutspel etc.<br />

Bondestrukturer: Bondestrukturer behandlar böndernas positionering på brädet. Då en bonde<br />

närmar sig motståndarens sida (Figur 3) ökar möjligheten till att promovera (förvandla<br />

bonden) till en pjäs av ett högre poängvärde. En bonde som är passerade (Figur 3)har ingen av<br />

motståndarens bönder framför sig <strong>och</strong> den har därmed fri lejd till motståndarens sida <strong>och</strong><br />

promovering.<br />

Figur 3. Vits bonde är 2 steg från promovering <strong>och</strong> har ingen bonde framför sig<br />

Pjäsernas placering: Placeringen av pjäserna har stor betydelse för hur effektivt de kan<br />

användas på brädet. En springare placerad i mitten (Figur 4) av brädet har större rörelsefrihet<br />

än en springare placerad i ett hörn. En pjäs som kan röra sig till rutor i det absoluta området<br />

av motståndarens kung har större möjlighet att användas i en mattsättning.<br />

Figur 4. Vits springare har 8 möjliga drag medan svarts har 2<br />

6


Kungens placering: En kung som har många bönder kring sig är bättre försvarad än en kung<br />

som står ensam på brädet. Kungens säkerhet har stor betydelse i ställningar med många pjäser<br />

kvar på brädet. Men när det är bara bönder <strong>och</strong> kungar kvar på brädet (bondeslutspel) så är<br />

det en fördel om kungen är aktiv <strong>och</strong> kan användas för att attackera motståndarens bönder.<br />

Det finns givetvis många fler sätt att bedöma ställningen men en <strong>schack</strong>dator måste hela tiden<br />

göra valet av vad den skall lägga ner sin tid <strong>och</strong> beräkningsstyrka på. Att evaluera ett träd<br />

med tusentals löv är väldigt tidskrävande <strong>och</strong> en snabbare evalueringsmetod kan göra att<br />

trädet får ett större djup (fler antal nivåer innan löven).<br />

Hur besegrar man en dator?<br />

En människa har inte i närheten samma möjlighet att beräkna varianter som en dator. Då en<br />

dator kan räkna miljontals varianter kan en människa enbart räkna ett hundratal. Det som get<br />

människan en fördel är evalueringen av <strong>schack</strong>ställningar. En människa kan på mycket kort<br />

tid leta efter ett mycket stort antal av bedömningsprinciper <strong>och</strong> väga dessa mot varandra<br />

genom sin erfarenhet <strong>och</strong> intuition, medan en dator måste basera all sin evaluering på<br />

bestämda algoritmer som inte har samma möjlighet att anpassa sig efter ställningen på brädet.<br />

Med hjälp av dessa bedömningsprinciper kan människan fokusera sina beräkningar på de<br />

varianter som med största sannolikhet kommer att spelas.<br />

Schackdatorn har många fördelar gentemot människan. En dator kan inte drabbas av stress,<br />

utmattning eller yttre faktorer. En dator kan inte heller göra fel i sina beräkningar, den missar<br />

inte några drag eller varianter då den räknar på alla möjliga varianter till ett visst djup.<br />

Med kunskapen om hur ett <strong>schack</strong>program fungerar <strong>och</strong> vilka dess styrkor respektive<br />

svagheter den har gentemot en människa, hur kan en <strong>schack</strong>spelare anpassa sitt spel för att<br />

besegra dator?<br />

• I <strong>schack</strong>ställningar där det finns specifika varianter som är intressanta kan människan<br />

fokusera sina beräkningar på ett fåtal varianter <strong>och</strong> i specifika fall få ett större djup i<br />

sina beräkningar än en dator som måste räkna på betydligt fler.<br />

• I ställningar där det inte finns möjlighet för varianter i vilka materialet på brädet<br />

riskerar att förloras eller bytas av, kan en dator inte använda sig av de<br />

evalueringsmetoder som räknar på materialet utan i stället använda sig av<br />

evalueringsmetoder som bedömer pjäsernas positionering. Att bedöma sådana<br />

ställningar är en människa med stark spelstyrka betydligt bättre på <strong>och</strong> kan använda<br />

sig den intuition han/hon samlat på sig vilket dagens datorer inte kan hantera.<br />

• Där det finns möjlighet för en mänsklig spelare att offra(ge bort <strong>schack</strong>pjäser) för att<br />

få fördelar som inte leder till återvunnet material, utan i stället kan ge positions<br />

fördelar. Ett exempel kan vara att den mänskliga spelaren offrar en bonde för att få en<br />

mycket stark passerad bonde i utbyte, den bonden kanske inte har möjlighet att<br />

promoveras för än långt senare i partiet men i ett senare skede av partiet kommer den<br />

kunna bli avgörande för partiets utgång. En dator bedömer ofta sådana ställningar<br />

felaktigt eftersom den allt för mycket litar till en materialistisk bedömning.<br />

• Undvik byten av material. Då det finns mycket material kvar på brädet växer<br />

variantträdet mycket snabbare än då det finns mindre material. En dator får då ett<br />

mindre djup i sin sökning.<br />

• Välj öppningar som det inte spelas ofta. Öppningsböcker ger datorn en stor fördel i<br />

början av partiet då den kan förlita sig till sin databas med varianter utan att behöva<br />

7


göra beräkningar. I ovanliga varianter måste datorn börja beräkna mycket tidigare <strong>och</strong><br />

det finns fortfarande mycket material på brädet vilket påverkar datorns sökdjup.<br />

Slutsatser<br />

När Kasparov förlorade mot Deep Blue var det många som hävdade att datorer nu är<br />

intelligentare än människan. Det är en orättvis beskrivning då <strong>schack</strong>datorers styrka mycket<br />

ligger i dess beräkningskapacitet. Schack är ett symetriskt spel som alltid följer samma regler,<br />

det gör att <strong>schack</strong>spelet är mycket lämpligt för en dator att hantera <strong>och</strong> designen av en<br />

<strong>schack</strong>dator kan rikta sig mycket på beräkning <strong>och</strong> sökning i träd, vilket en dator är mycket<br />

lämplig för.<br />

Tidigare har <strong>schack</strong>spelet vart en drivkraft för att utveckla sökalgoritmer <strong>och</strong> trädstrukturer<br />

som lämpar sig för artificiell intelligens, alpha-beta pruning ([MaBr]) är ett exempel, men jag<br />

tror att påverkan <strong>och</strong> intresset för dessa kommer att sjunka nu när datorerna uppnått målet att<br />

överträffa människans spelstyrka.<br />

Schackdatorer har lämnat ett betydande avtryck i <strong>schack</strong>spelet. I princip alla professionella<br />

<strong>schack</strong>spelare använder datorns hjälp för att analysera <strong>och</strong> förbättra sitt spel. Det har även<br />

haft negativa effekter på <strong>schack</strong>et då de klassiska korrispondans<strong>schack</strong>et (partiet spelas<br />

genom att spelarna skickar brev med sina drag) har förlorat mycket av sin charm när spelarnas<br />

datorer <strong>och</strong> <strong>schack</strong>program påverkar deras spelstyrka.<br />

Sammanfattningsvis kan man säga att romansen mellan <strong>schack</strong> <strong>och</strong> artificiell intelligens har<br />

svalnat. Då datavetenskapen ständigt växer kommer det nya områden, så som spel <strong>och</strong><br />

robotik, där den artificiella intelligensen har möjlighet att utvecklas. Man kan säga att vi har<br />

uppnått målet med <strong>schack</strong>datorerna när vi lyckades besegra människan.<br />

Referenser<br />

[CESh50] C.E. Shannon. Programming a computer for playing chess. Philosophical<br />

Magazine, 41:256-275, 1950.<br />

[ChessG] Chess Games. Parti spelat mellan the Turk <strong>och</strong> Napoleon Bonaparte<br />

< http://www.chessgames.com/perl/chessgame?gid=1250610>, 1809.<br />

[Craft] Crafty Chess, “Dr. Robert Hyatt’s Home Page”<br />

Winner of 1983 and 1986 World Computer Chess Championship<br />

< http://www.cis.uab.edu/info/faculty/hyatt/hyatt.html/><br />

[DeepB95] Feng-hsiung Hsu, Murray S. Campbell, A. Joseph Hoane, Jr. Deep Blue System<br />

overiew, IBM T.J Watson <strong>Research</strong> Center, 1995<br />

[EndgT] Endgame Table, Interface för endgame table analys,<br />

< http://www.shredderchess.com/online-chess/online-databases/endgame-database.html/>,<br />

[MaBr] Brain, Marshall. "How Chess Computers Work." 01 April 2000.<br />

HowStuffWorks.com. 04 March 2010.<br />

8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!