AI och schack – Karl Magnusson - Research
AI och schack – Karl Magnusson - Research
AI och schack – Karl Magnusson - Research
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