En neuronnätsbaserad ansats för att extrahera information ur en enkel schackslutspelsdatabas

Storlek: px
Starta visningen från sidan:

Download "En neuronnätsbaserad ansats för att extrahera information ur en enkel schackslutspelsdatabas"

Transkript

1 En neuronnätsbaserad ansats för att extrahera information ur en enkel schackslutspelsdatabas JOHN BERGBOM Examensarbete Stockholm, Sverige 00 TRITA-NA-E0

2 Numerisk analys och datalogi Department of Numerical Analysis KTH and Computer Science 00 Stockholm Royal Institute of Technology SE-00 Stockholm, Sweden En neuronnätsbaserad ansats för att extrahera information ur en enkel schackslutspelsdatabas JOHN BERGBOM TRITA-NA-E0 Examensarbete i datalogi om 0 poäng vid Programmet för datateknik, Kungliga Tekniska Högskolan år 00 Handledare på Nada var Mikael Huss Examinator var Anders Lansner

3 Sammanfattning För enkla schackslutspel existerar databaser med perfekt information, som talar om avståndet till matt för olika positioner. Dessa databaser är mycket utrymmeskrävande, vilket gör dem otympliga och vållar olika praktiska problem vid användningen av dem. Skulle det vara möjligt att på något sätt extrahera högnivåinformation ur dessa slutspelsdatabaser? Syftet med detta examensarbete är att undersöka hur väl ett artificiellt neuronnät är lämpat för denna uppgift. För mycket enkla slutspel, som till exempel krk (kung-torn-kung), är det en smal sak att skriva regler som mattar den ensamme kungen. Därför är nyttan med att använda ett neuronnät för att spela den sortens slutspel diskutabel särskilt då forskning visat att en neuronnätslösning är långsammare än en regelbaserad lösning. För de lite svårare slutspelen finns dock inte lika enkla regler. Denna undersökning försöker utröna om ett neuronnät kan lära sig att spela kbnk-slutspelet (kung-löpare-springare-kung). Genom att utnyttja slutspelsdatabaser lär sig nätet avståndet till matt för olika positioner. Resultaten av undersökningen antyder att denna typ av problem är för svårt för ett neuronnät att lära sig. Nätverket lär sig den grundläggande strategin för mattsättning, men den inlärda målfunktionen är för inexakt för att nätet ska spela bra nog att vara användbart i praktiken. I den avslutande delen av rapporten ges förslag på framtida forskningsuppgifter inom området.

4 A Neural Network Approach for Extracting Information from a Simple Chess Endgame Database Abstract For simple chess endgames, there exists databases with perfect knowledge, that give the distance-to-mate (dtm) for any board state. These databases are very large, which makes them inconvenient in several ways. Would it somehow be possible to extract higher-level information and knowledge from these tablebases? This thesis tries to investigate how well a neural network is suited to this task. For really simple endgames, such as krk (king-rook-king), it is a trivial task to write a set of rules that mates the lone king. So the benefit of using a neural network for playing these kind of endgames is not so high especially since research has indicated that a neural network solution gives slower performance than a rulebased solution. Can a neural network be used for learning how to play a little harder endgame, where the rules of play are not so easily defined? This thesis tries to answer this question by teaching a neural net to play the kbnk-endgame (king-bishop-knightking). The net learns to play by learning the distance-to-mate values for different positions. The results indicate that this problem domain is too difficult for a neural network. The network learns the basic strategic concepts of mating, but the learned target function is too inaccurate to make the solution usable in practice. In the final section of the report, suggestions are made for future work in the field.

5 Förord Detta examensarbete i datalogi är utfört vid NADA på KTH. Handledare har varit Mikael Huss, och jobbet är gjort i NADA:s datasalar. Uppgiftsformuleringen har tänkts ut av undertecknad, och sedan godkänts av NADA som en lämplig examensarbetesuppgift.

6 Innehåll Bakgrund. Slutspelsdatabaser..... Hurskapasslutspelsdatabaser?..... Problem med slutspelsdatabaser Syfte.... Forskningsresultatinomområdet... Teori 8. Neuronnät Artificiellanoder Artificiellaneuronnät Kortomslutspel.... Kopplingentillenschackmotor... Undersökning. Prototyp.... Slutspelet kbnk Enkelnät Multipelnät... Slutsatser. Sammanfattning.... Analysavresultat.... Slutsatser.... Framtida forskningsuppgifter inom området Referenser 0 A Schackställningar B Schackställningar för krk-prototypen

7 Kapitel Bakgrund Under ca 0 år har forskning bedrivits med avsikt att skapa datorprogram som spelar schack. En av de första artiklarna inom området skrevs 90 av Shannon [], som skisserar algoritmer för hur schackspelande ska gå till. Han beskrev två olika strategier: Titta på alla olika drag i en given position, och expandera alla möjliga dragsekvenser rekursivt, ända till en viss sökhorisont, dvs. ett visst antal drag framåt jämfört med nuvarande position. Denna teknik brukar kallas brute force. Gör en analys av en given position, för att bestämma de bästa dragen, och bygg sedan ett sökträd rekursivt, där endast de bästa dragen (och deras bästa svarsdrag) gås igenom. Detta kallas selektiv sökning. Under schackprogrammeringens barndom användes i huvudsak selektiv sökning. Under hela 0-talet spelade datorerna väldigt dåligt. År 98 presenterade Newell m.fl. [] alfabeta-beskärning, vilken gör det möjligt att undvika att söka igenom en stor del av noderna i ett sökträd. I början av 0-talet började de flesta program gå över till brute force, dvs. ingen selektiv sökning görs, utan alla drag beaktas i sökträdet. År 98 blev Belle det första schackprogrammet som fick en U.S. Master-titel. Första gången ett schackprogram slog en stormästare i turneringsspel skedde 988, och programmet hette Deep Thought. År 99 spelade IBM:s schackdator Deep Blue en match mot regerande världsmästaren Garri Kasparov. I denna match blev världsmästaren för första gången besegrad av en dator, i ett parti. Kasparov vann dock matchen. Ett år senare fick IBM-teamet en returmatch mot Kasparov, och då vann Deep Blue med,, i en match över sex partier. Detta är schackhistoria, eftersom det var första gången en dator slog världsmästaren i en match. Ett antal detaljer som faller utanför ramen för denna rapport, antyder dock att Deep Blue inte nödvändigtvis är en bättre schackspelare än Kasparov. [] Vi kan nog säga att det inte är helt klarlagt vem som är bäst, människan eller datorn. De bästa programmen spelar mycket jämnt mot de allra bästa mänskliga spelarna.

8 Är det inte bara en tidsfråga innan datorerna enkelt vinner över människan i schack, med ökad beräkningskapacitet? Ja, det ligger mycket i detta. Men det är samtidigt en förenkling av sanningen. Människan och datorn är bra på olika saker. Datorernas starka sida är att de är otroligt snabba, och kan bedöma tals ställningar i sekunden. En människa kan endast bedöma en eller ett par ställningar per sekund. En människa är dock otroligt överlägsen datorn när det gäller att vaska fram intressanta ställningar att bedöma. En människa går igenom en eller ett par troliga varianter, och räknar ett antal drag framåt på dessa. Detta innebär att datorn kastar bort 99% av sin tid med att bedöma värdelösa ställningar, som knappast kommer att uppkomma i praktiken. Datorprogram bedömer i första hand en ställning efter den materiella balansen, som innebär att man poängsätter de olika pjäserna. Dessutom ges poäng efter olika positionella faktorer såsom exempelvis ägande av en öppen linje, central placering av pjäser, osv. Människan är dock bättre än datorn på positionell bedömning, dvs. datorn bedömer en ställning snabbt, men människans bedömning är bättre. Orsaken till det är att en schackmästares instinktiva känsla för en viss ställning, är svår att formalisera i ett datorprogram. Som exempel kan vi ta en springare jämfört med en löpare. Normalt räknas löparen som något starkare än springaren. Om dessa pjäser ges olika värden, kommer dock datorn att byta bort sina springare mot motståndarens löpare så fort den får chansen. Detta är inte optimalt, och måste därför förhindras. Ofta kan det vara oklart i en given ställning, om löparen eller springaren är starkast. Dessutom finns det väldigt många ställningar där springaren är överlägsen. Det är svårt att uttrycka dessa avvägningar i programkod. Så för att besvara vår fråga: Datorerna blir bättre och bättre med ökad beräkningskapacitet, och förmodligen kommer en dag de bästa mänskliga spelarna vara helt chanslösa mot datorerna. Hur bra en dator spelar är mycket starkt beroende av hur många drag framåt den kan räkna. Den så kallade förgreningsfaktorn beskriver det genomsnittliga antalet drag som är möjliga i varje given ställning. Schack har en förgreningsfaktor på omkring [], vilket är relativt högt. Det innebär att en dubbelt så snabb dator ändå inte kommer att kunna tänka så mycket djupare. En dator måste vara många gånger snabbare än föregångaren för att kunna tänka endast ett halvdrag djupare framåt. Det finns även vissa moment som datorn förmodligen alltid kommer att ha svårt för. En dator kan endast se det som ligger inom dess sökhorisont, vilket ger datorn stora svårigheter att hantera offer som på lång sikt kan ge en fördel. En människa kan se att ett visst offer är fördelaktigt eftersom det t.ex. ger den offrande parten ett mycket aktivt spel, vilket troligtvis ger utdelning betydligt längre fram i partiet. Viktigt att notera är att människan vet detta instinktivt, utan att behöva räkna igenom alla kombinationer. Detta klarar inte en dator. Lite förenklat kan man säga Detta skulle kräva att datorn ser över sin sökhorisont. Vissa enkla fall kan dock programmeras in i evalueringsfunktionen. Till exempel kan datorn i ett bondeslutspel se hur långt ifrån en fribonde dess egen kung befinner sig, och utifrån det avgöra om bonden kan stoppas. Detta kan alltså avgöras utan att faktiskt behöva spela alla drag. Faktum kvarstår dock att en dator i det generella fallet har mycket stora svårigheter att se saker bortom horisonten.

9 att datorn endast ser mer material = fördel. (Datorprogram försöker även som ovan nämnts att bedöma ställningars positionella element, men de är inte på långt när lika bra som människor på detta.) Taktiska offerkombinationer vars nytta framgår inom datorns sökhorisont hanteras dock galant av ett program. Ytterligare en faktor som är värd att nämna, är att det visat sig att nyttan med ökat sökdjup blir mindre och mindre ju djupare sökning man gör. [] Det innebär att vid en viss gräns ger ytterligare sökning troligen inte så mycket bättre prestanda åt schackprogrammet. Då är det förmodligen bättre att utnyttja de extra klockcyklerna till en förbättrad evalueringsfunktion, än till att söka djupare.. Slutspelsdatabaser Ett schackparti består av tre distinkta faser, som är relativt olika varandra, även om ingen väldefinierad gräns finnes mellan dem. Det är öppningen, mittspelet och slutspelet. I öppningen finns det färdiga databaser med bra drag, och utöver dessa finns enkla regler om att erövra centrum, utveckla pjäserna, ej flytta en pjäs många gånger (tempoförlust), osv. Även i slutspelet finns regler för spelföringen. Det är mittspelet som är det svåra, både för en dator och för en människa. I denna rapport ska vi koncentrera oss på slutspelet. Det har gjorts experiment med att räkna ut de perfekta dragen i enkla schackslutspel. Tanken är att en tabell skapas över alla möjliga positioner som kan uppkomma i ett visst slutspel. För varje position lagras ett värde som beskriver positionen, och tabellen sparas sedan i en så kallad slutspelsdatabas. Allmänt kan sägas att det finns två typer av slutspelsdatabaser: Distance To Mate (DTM), och Distance To Conversion (DTC). DTM innebär att för varje position lagras ett värde som talar om antalet halvdrag kvar till schack och matt. DTC innebär att värdet som lagras representerar antalet halvdrag till förvandling. (Som förvandling räknas något avgörande i partiet, som bondeförvandling, erövring av pjäs eller schack och matt.) DTM-databaser är de vanligast förekommande. En pionjär inom området är Thompson [], som tidigt gjorde experiment med slutspelsdatabaser. Thompsons skapelse interagerade dock inte så bra med sättet ett schackprogram genomför sökningar. Edwards [] skapade en förbättrad typ av databas för att komma till rätta med bristerna i Thompsons variant. Edwards indexering av schackpositioner är långt ifrån optimal, vilket leder till att databaserna kräver mycket större lagringsutrymme än nödvändigt. Nästa förbättring gjordes av Nalimov [, ], vars huvudmål var att lagra databaserna effektivare. Nalimovs databaser är numera de mest använda, och dessa har använts även i detta arbete. För närvarande finns det kompletta slutspelsdatabaser för upp till pjäser, och för många av slutspelen med pjäser. Slutspelsdatabaser för pjäser är idag och inom en överskådlig tid framöver en beräkningsmässig och/eller lagringsmässig omöjlighet. Slutspelsdatabaser kallas för tablebases på engelska.

10 .. Hur skapas slutspelsdatabaser? För att skapa en slutspelsdatabas går man igenom alla möjliga ställningar som kan förekomma i det aktuella slutspelet. Alla ställningar där motspelaren är mattad kallas matt i 0 -ställningar. Sedan går man igenom alla ställningar igen, och ser vilka ställningar som på ett halvdrag kan nå en matt i 0 -ställning, och kallar dessa matt i -ställningar. På detta sätt fortsätter man tills inga vidare framsteg görs. Man vet då att alla ställningar som ejär uppräknade, är remipartier. Exempel: se figurerna.,. och.. 8 RZ0Z0ZkZ 0Z0Z0ZKZ 8 0Z0Z0ZkZ 0Z0Z0ZKZ RZ0Z0Z0Z 8 0Z0Z0Z0j 0Z0Z0ZKZ RZ0Z0Z0Z Figur.. Matt i 0,spelet slut. Figur.. Matt i, vit vid draget. Figur.. Matt i, svart vid draget... Problem med slutspelsdatabaser Dessa slutspelsdatabaser måste hantera en otroligt stor mängd olika positioner. Som ett räkneexempel tas krk-slutspelet (kung-torn-kung), som består av endast tre pjäser. Den första pjäsen kan placeras på en av rutor, nästa på en av rutor, och den sista på en av rutor. ** blir en kvarts miljon. Dessutom krävs information om vem som är vid draget, svart eller vit, vilket ger en halv miljon positioner. Exemplet visar tydligt att att antalet positioner är mycket stort. Detta ställer krav på att databaserna lagras på ett listigt sätt, för att de inte ska bli allt för stora. Även om lagringen är mycket effektiv, kräver dock databaserna för de större Vissa av dessa positioner är dock illegala, och behöver inte lagras. De två kungarna får ju inte stå på två närliggande rutor. Dessutom kan inte t.ex. svart stå i schack samtidigt som det är vits tur. I de flesta slutspel finns även andra typer av ställningar som omöjligt kan uppstå. Ett exempel är kpk-slutspelet, i följande position: vit kung a, vit bonde a, svart kung a8. Denna ställning kan uppstå om svart är vid draget, och då blir partiet patt (remi), men ställningen kan omöjligt uppkomma om vit är vid draget. För mer information angående otillåtna ställningar hänvisas till Lippolds artikel i ämnet. [8] Ett möjligt sätt att ytterligare minska antalet positioner som behöver lagras, är att ej inkludera speglingar. Exempelvis är ställningen (vit: kung b, bonde c, svart: kung c) endast en spegling av ställningen (vit: kung g, bonde f, svart: kung f). Ett listigt utnyttjande av speglingar ger en signifikant minskning av antalet ställningar som behöver lagras.

11 slutspelen mycket stort lagringsutrymme. Till exempel beräknas hela mängden av -pjäsers slutspel ta upp minst en terabyte (000 GB). [, sekt. A0] Detta leder till praktiska problem att använda dessa slutspelsdatabaser. De tar lång tid att generera, lång tid att ladda ner, och kräver mycket stort hårddiskutrymme. Dessutom tar det lång tid att göra uppslagningar.. Syfte Det står klart att användandet av slutspelsdatabaser medför vissa problem. Syftet med detta arbete är att undersöka om ett artificiellt neuronnät kan användas för att extrahera högnivåinformation ur dessa databaser. Med högnivåinformation avses här den bakomliggande teorin för spelföring i ett visst slutspel. Tanken är att nätverket genom att titta på olika exempelställningar ska förmås att dra slutsatser om spelföringen, och generalisera denna kunskap till nya osedda positioner. I avsnitt. förklaras mer utförligt hur ett artificiellt neuronnät fungerar. För tillfället räcker det om läsaren ser det som en konstgjord hjärna. Det är känt att artificiella neuronnät kan lära sig att spela enkla slutspel (se avsnitt.). Det är dock oklart hur långt neuronnätens kapacitet sträcker sig. Målet med denna undersökning är att ta reda på det genom att lära ett neuronnät att spela ett något svårare slutspel. Slutspelet som väljs är det så kallade kbnk-slutspelet, vilket innebär att kung, löpare och springare spelar mot en ensam motståndarkung. För motivering till varför detta slutspel valdes, se slutet av avsnitt.. Innan vi går vidare behövs först en kort kommentar angående de termer som kommer att användas då vi talar om slutspel. De vedertagna engelska förkortningarna kommer att användas. Varje pjäs betecknas med en bokstav: k = king/kung, q = queen/dam, r = rook/torn, b = bishop/löpare, n = knight/springare, p = pawn/bonde. Vits kung skrivs alltid ut först, och sedan vits övriga pjäser, varefter svarts kung skrivs ut, samt slutligen resterande svarta pjäser. Ex. kpk = vit kung och bonde mot ensam svart kung, krk = vit kung och torn mot ensam svart kung, kbnk = vit kung, löpare och springare mot ensam svart kung.. Forskningsresultat inom området Schackprogrammering är ett relativt stort forskningsområde, och det samma gäller forskning rörande artificiella neuronnät. Det finns dock relativt lite forskning gjord som kombinerar dessa områden. Heinz [] gjorde en väldigt effektiv implementation av en evalueringsfunktion för (exempelvis) schack. Idén är att man avbildar ett neuralt nätverk på ett träd. På så sätt får man ett system som kombinerar fördelarna med artificiella neuronnät, nämligen jämnheten, anpassningsförmågan och enkelheten, med ett träds fördelar, nämligen effektivitet. Thrun [8] skapade NeuroChess, som är ett program som lär sig spela schack genom att spela igenom stormästarpartier. Målet är att hitta en evalueringsfunktion V, som rankar schackpositioner efter hur fördelaktiga de är. V representeras av ett

12 artificiellt neuronnät. Inlärningen av V sker genom att träna på hela schackpartier, och av slutresultatet (vinst, förlust eller remi) utröna vilka ställningar som är bra och vilka som är dåliga. Denna typ av inlärning kallas temporal difference. För träningen av V utnyttjas en schackmodell M, som representeras av ett neuronnät och som hanterar domänspecifik kunskap (schackteori). Denna schackmodell tränas med hjälp av en databas med 0000 partier spelade av experter. NeuroChess har lyckats lära sig att skydda sitt material, att byta ner material, och att skydda kungen. Den spelar dock mycket dåligt i spelöppningsfasen. NeuroChess vinner ungefär % av alla partier mot GNU-chess, om bägge använder samma sökmotor. Haworth & Velliste [0] undersöker huruvida ett artificiellt neuronnät kan lära sig att klassificera kpk-positioner som antingen vinst eller remi. De rapporterar att nätet lyckades relativt bra med denna uppgift. Det blev dock inte klarlagt om det existerar någon intern representation för nätverket som är överlägsen andra. Greer m.fl. [8] undersökte om dragföljden i alfabeta-sökning kan förbättras med hjälp av ett neuronnät. Neuronnätet tränas att ordna olika sektorer av brädet efter hur stort territorium varje spelare kontrollerar. Dragen görs sedan i en ordning som beror på vilka sektorer de påverkar. Denna metod rapporteras söka igenom färre noder än vad andra vanliga metoder för dragordning gör. Problemet är att det tar så lång tid att ordna dragen, att den totala tiden ändå inte minskas jämfört med att använda andra tillgängliga metoder för dragordning. Robertsson [] gjorde ett examensarbete som undersöker om ett neuronnät kan spela krk-slutspelet. Neuronnätet lär sig hur många halvdrag det är kvar till matt från en viss position. Slumpmässiga positioner används, och information om antalet halvdrag kvar till matt hämtas från en slutspelsdatabas. Robertsson rapporterar att nätet lärde sig att förstå strategiska koncept i schackslutspel. Det är dock tveksamt om man tjänar något på att använda ett neuronnät i evalueringsfunktionen, eftersom det är så enkelt att skriva regler för hur spelföringen ska gå till. Dessutom är en neuronnätsbaserad lösning långsammare än en regelbaserad lösning. Kort motivering till varför kbnk-slutspelet valdes Det är akademiskt intressant att Robertsson lyckats skapa ett neuronnät som spelar krk-slutspelet. Den praktiska nyttan är dock tvivelaktig. Om ett neuronnät istället skulle kunna lära sig ett svårare slutspel, kanske lösningen skulle bli praktiskt användbar. Dels är det svårare att skapa regler för spelföringen för ett svårare slutspel, och dels är det för de svårare slutspelen problemen uppkommer med mycket stora slutspelsdatabaser. Denna undersökning avser att kasta ljus över ämnet. Riktigt svåra slutspel kommer dock inte att behandlas. Som tidigare nämnts valdes kbnkslutspelet, vilket bedömdes vara ett lämpligt mellanting av ett lätt slutspel och ett svårt slutspel. kbnk-slutspelet är svårt för en människa att lära sig, men består av Vid användning av alfabeta-sökning, som är den metod som används i nästan alla schackprogram idag, är det mycket viktigt att söka igenom dragen i rätt ordning, för att få ett så litet sökträd som möjligt. [, 9]

13 så få pjäser att möjligheterna att få ett neuronnät att lära sig det, bedömdes som goda. För den intresserade läsaren kan nämnas att en komplett slutspelsdatabas för krk-slutspelet är ca kb stor, medan den för kbnk-slutspelet är ca Mb stor. Som jämförelse tar kbbnkb-slutspelet ca, Gb i anspråk. kbbnkb = kung, två löpare och springare mot kung och löpare

14 Kapitel Teori Detta kapitel beskriver hur neuronnät fungerar, hur de tränas, samt vissa problem som kan uppstå vid träningen. Vidare sägs några ord om slutspel i schack. Kapitlet avslutas med en beskrivning av hur ett neuronnät som spelar slutspel kan användas av ett schackprogram. I kapitlet kommer termerna artificiellt neuronnät och neuralt nätverk att användas synonymt.. Neuronnät Den mänskliga hjärnan består av uppskattningsvis ca 00 miljarder nervceller, eller neuroner. Dessa nervceller är ihopkopplade i så kallade synapser, och de kommunicerar via svaga elektriska signaler. Till varje neuron är kopplat ett stort antal andra neuroner. Förenklat kan man säga att de inkommande signalerna summeras, och om de kommer över ett visst tröskelvärde genereras en utgående puls. Nervcellerna är alltså ihopkopplade i ett stort nätverk, eller ett så kallat neuronnät. Bearbetningsförmågan hos nätet är lagrad i styrkan hos förbindelsen mellan neuronerna. Kopplingen mellan olika nervceller består av en elektrokemisk process, som vidarebefordrar signalerna. Denna koppling är inte speciellt snabb. Den snabbaste vidarebefordringen av signaler kan ske på runt en tusendels sekund. Detta är mycket långsamt jämfört med en dator, som kan utföra miljarder instruktioner per sekund. För en människa tar det runt en tiondels sekund att känna igen en bild av sin egen mor, vilket innebär att kedjan av neuroner som reagerar inte kan vara längre än högst ett par hundra steg. [0, sida 8] Orsaken till att den mänskliga hjärnan ändå har så stor kapacitet är att informationsbehandlingen sker i en massivt parallell process. Ett artificiellt neuronnät (ANN) är ett försök att modellera beteendet hos den mänskliga hjärnan i ett datorprogram. Naturligtvis arbetar man då med förenklingar, men inspiration är tagen från verklig neural informationsbehandling. Ofta införs vissa trick som effektiviserar beräkningarna, även om de i vissa fall är biologiskt orealistiska. Vid implementationen av ANN-ramverket kom Freeman & Skapura:s bok [] till stor nytta. Här ges en kortfattat beskrivning av funktionaliteten hos ett 8

15 ANN. För en utförligare beskrivning hänvisas till litteratur inom området... Artificiella noder Den mänskliga hjärnans nervceller motsvaras i vår artificiella modell av noder. På samma sätt som en riktig nervcell, har en artificiell nod flera inputs och en output. De olika inputarna summeras och bildar en så kallad aktivering för noden, se figur.. x w x w x n. w n Σ Aktivering a n a = w i x i i= Figur.. En nod i ett artificiellt nätverk. Denna aktivering används inte direkt som output för noden. Orsaken till det är att aktiveringens belopp kan vara väldigt skiftande. Normalt vill man begränsa outputen till ett visst intervall, och för det används en aktiveringsfunktion. Olika varianter existerar av aktiveringsfunktionen. I detta projekt användes en så kallad semilinjär squashingfunktion, eller sigmoid, se figur.. y a a Output y y = +e a Figur.. Aktiveringsfunktion för en semilinjär nod... Artificiella neuronnät De noder som beskrivits kopplas i sin tur ihop till större nätverk. En vanlig typ av nätverk består av ett inlager, ett gömt lager, och ett utlager. Varje nod i det gömda lagret tar input från hela inlagret och varje utnod tar input från alla outputs i det gömda lagret. Värden propagerar då från inlagret, via det gömda lagret, till utlagret, som ger output. Figur. illustrerar detta. 9

16 Inlager Gömt lager Utlager x x x x Figur.. Exempel på tvålagersnät. Hur tränas ett neuralt nätverk? Ett neuralt nätverk kan initialt ingenting, utan måste först tränas. Under träningen presenteras en mängd träningsexempel, eller mönster, genom att visa nätet en viss indata och samtidigt visa vilken utdata som önskas för denna indata. Tanken är att nätet ska anpassa sin interna struktur så att utdata genereras som mer liknar den önskade utdatan. Denna typ av inlärning kallas övervakad inlärning. Ett multilagernäts förmåga att automatiskt upptäcka en användbar representation i de gömda lagren, är en nyckelegenskap inom ANNinlärning. Det hela handlar om att få vikterna i nätet att ställa in sig på bra värden. Saken kan ses på olika sätt. Ett nät som har n stycken inputs, kan betraktas som en mönsterrymd med n-dimensioner. Nätverket ska då hitta en partitionering av denna mönsterrymd, som korrekt klassificerar de träningsexempel nätverket får. Ett annat sätt att se funktionaliteten, är att se det som att nätet upptäcker karakteristiska egenskaper i träningsdatat som representerar väsentlig information för att beskriva eller klassificera dessa träningsexempel. Den vanligaste träningsalgoritmen kallas error backpropagation. Den går ut på att man försöker minimera en felfunktion E. Denna funktion uttrycker diskrepansen mellan önskad och faktisk output hos nätverket, och är en funktion av utnodens vikter, E = E(w,w,...,w x ). Varje utnod tränas genom att felfunktionens gradient följs nedåt. Sedan avgörs vilken påverkan de gömda noderna har på felet, varvid dess vikter uppdateras. Vikterna bör inte förändras drastiskt, för då görs tidigare inlärning om intet. Mängden med träningsexempel visas flera gånger, i olika epoker, 0

17 och för varje exempel som visas modifieras vikterna gradvis. Detta indikerar att artificiella neuronnät tar lång tid att träna. Att använda en inlärd målfunktion går dock fort. Generalisering och överträning. Målet med träningen är att nätverket ska upptäcka karakteristiska egenskaper hos träningsmängden, så att det färdigtränade nätverket korrekt kan klassificera nya mönster som ejingick i träningen. Om detta uppnås sägs nätet generalisera väl. Om nätet får träna nog länge kommer dess felfunktion att gå mot noll. Det är dock inte samma sak som att generaliseringen blir bättre. Faktum är att det oftast är dåligt att träna nätverket för länge. Det som sker vid överdriven träning är att nätet överanpassar sig till träningsdatat, så att de underliggande trenderna glöms bort. Beslutsytan i mönsterrymden blir väldigt veckad. Beslutsyta Vit Svart Beslutsyta Vit Svart Figur.. Generalisering och överträning i mönsterrymden. Graferna i figur. visar ett nät som korrekt ska klassificera en cirkel som antingen svart eller vit. I den vänstra delen har nätet inte tränat så länge, och beslutsytan har därför inte hunnit bli så veckad. Alla träningsexempel utom två är korrekt klassificerade. Antag nu att två tidigare osedda mönster visas för nätet. Dessa nya mönster representeras av den vita respektive svarta kvadraten, och bilden visar att de klassificeras korrekt. Det verkar alltså som att detta nät generaliserar väl trots att alla träningsexempel inte klassificerades korrekt. På den högra bilden är beslutsytan betydligt mer veckad. Alla träningsexempel klassificeras korrekt. De två nya mönstren som visas för nätet blir dock båda felklassificerade. Man kan misstänka att det finns många mönster som kommer att klassificeras fel, särskilt mönster som ligger nära beslutsgränsen. Utan att gå in på en massa matematik vill vi med detta resonemang antyda att en jämn beslutsyta ger en bättre generalisering. Det är också så att ju fler gömda neuroner och/eller gömda lager ett nät har, desto större frihet får nätet att välja beslutsyta och ju större frihet nätet har, desto mer veckad blir beslutsytan. Av detta dras slutsatsen att en så enkel representation för nätet som möjligt är önskvärd.

18 Hur avgörs när träningen ska avslutas, så att överträning undviks? Träningsdatat delas upp i två delmängder: en träningsmängd T,ochenvalideringsmängd V.Nu tränas nätet med T, och då och då beräknas felet med avseende på V. Felet med avseende på T kommer att minska och minska med ökande träning. Felet med avseende på V däremot, kommer att minska till en början, för att sedan öka. Se figur.. Figuren är visserligen en idealiserad bild av verkligheten, men principen gäller i det normala fallet. Fel Valideringsmängd Träningsmängd Antal epoker Figur.. Felfrekvens för träningsdata och valideringsdata. När valideringsfelet är som lägst, är nätets generalisering med avseende på de osedda exemplen i V som bäst. Av detta följer att den bästa tidpunkten att avsluta träningen är då valideringsfelet når sitt minimum. Denna träningsteknik kallas early stopping. Detta var en kort introduktion till artificiella neuronnät. Det är ejämnat som en utförlig beskrivning av NN:s funktionalitet, utan den intresserade läsaren hänvisas till litteratur i ämnet.. Kort om slutspel För enkla slutspel är det relativt lätt att skapa regler för hur spelföringen ska gå till. I krk-slutspelet ska vit försöka driva den ensamme svarte kungen mot kanten av brädet, och vits kung ska följa efter i bakhasorna (fig..). Mattsättningen sker då den svarte kungen befinner sig vid kanten och inte har någonstans att fly då vit schackar (fig..). Hur sker mattsättningen i det slutspel som valts ut för neuronnätsinlärning, nämligen kbnk? Den ensamme svarte kungen måste drivas till ett hörn som har samma färg som de rutor löparen går på. Endast då kan en matt tvingas fram. Det är inte alls självklart på vilket sätt den svarte kungen ska drivas framåt, och det är inte heller självklart hur svart bäst ska försvara sig genom att försöka hålla sig Svart kan inte hålla remi om vit spelar korrekt, men svart bör försöka fördröja matten så många drag som möjligt. Det kan nämligen hända att vit gör något misstag, och därför inte klarar av att sätta matt inom 0 drag, vilket skulle leda till remi.

19 8 RZ0j0Z0Z 0Z0J0Z0Z 8 RZ0j0Z0Z 0Z0J0Z0Z Figur.. Svarts kung drivs mot kanten. Figur.. Svarts kung har ingenstans att ta vägen. Matt. kvar på mitten av brädet, eller genom att söka sig till ett hörn av fel färg. Det är betydligt svårare att skriva regler för kbnk- änkrk-slutspelet.. Kopplingen till en schackmotor Hur kan ett neuronnät som spelar ett visst slutspel användas i praktiken? För att förklara det beskrivs här med några korta ord hur ett schackprogram är uppbyggt. Ett schackprogram består förenklat av tre delar: draggenerering, sökning och en evalueringsfunktion. [, 9, 0] Sökningsmodulen skapar ett träd av alla möjliga kombinationer som kan uppstå ett visst antal halvdrag framåt. Draggenereringsfunktionen anropas för att skapa varje ny nod i trädet. Trädet söks igenom i djupet först-ordning och evalueringsfunktionen ger ett värde åt varje löv som stöts på. I evalueringsfunktionen finns schackkunskaperna inlagda. Det absolut viktigaste attributet för att bedöma hur bra en ställning är, är att titta på hur mycket material spelarna har kvar på brädet. Hänsyn tas även till positionella faktorer, såsom dubbelbönder (ger minuspoäng), behärskande av en linje (ger pluspoäng), kungens säkerhet, osv. Det är här i evalueringsfunktionen det tränade neuronnätet placeras. Noderna i figur.8 representerar schackställningar. Lövens värden har getts av evalueringsfunktionen. Ett positivt värde är bra för vit, och ett negativt värde är bra för svart. Lövens värden propageras upp till roten av trädet med den så kallade minmax-proceduren. [] Minmax innebär enkelt att en nod ges samma värde som dess bästa barn. Motståndaren antas alltid spela optimalt. Vad innebär detta i figuren? I nod B kommer svart att välja det bästa draget, dvs. det som har värdet - (vilket är minimum för vit). Därför får nod B värdet -. På samma sätt får nod C värdet. I A väljs det drag som ger störst utdelning för vit, och det blir då den högra noden som har värdet. Dvs. i varannan nivå väljs det drag som maximerar vits utdelning, och i varannan det drag som minimerar vits utdelning därav namnet minmax. För den intresserade läsaren rekommenderas webbsidan gargamellachess/papers.htm, som innehåller en mängd olika forskningsrapporter över mer avancerade områden inom schackprogrammering.

20 Vits drag (Max) Nuvarande ställning A Svarts drag (Min) B C D - E F G Figur.8. Exempel på sökning två halvdrag framåt. I denna undersökning används en schackmotor som heter Amundsen. [] Den programversion som användes (v. 0,) har inte implementerat dragupprepningsregeln, som säger att om en identisk ställning uppkommer tre gånger i partiet, blir det remi. Ett tillägg gjordes därför i programmet, så att dragupprepningar hanteras korrekt. Amundsen är ett program som jag skrivit själv för en annan kurs. Den materiella balansen räknas ut på konventionellt sätt, utan hjälp av neuronnät. Neuronnätet ger endast den positionella bedömningen, dvs. det som skiljer två materiellt lika ställningar från varandra.

21 Kapitel Undersökning För att testa olika idéer inleddes detta arbete med att skapa en prototyp. Som prototyp valdes att skapa ett neuronnät som spelar krk-slutspelet, vilket är samma som Robertssons [] exjobb. Tanken är att få prototypen att spela så bra som möjligt, genom att införa lämpliga inattribut (eng: input features) och diverse trick som höjer nätets prestanda. Slutsatserna från skapandet av prototypen utnyttjas sedan för att skapa ett neuronnät för ett svårare slutspel, nämligen kbnk. De träningsexempel neuronnätet tränas med, är konstruerade så att det alltid är vit som har en löpare och en springare, och svarts kung är ensam. För att undvika överträning har en stor mängd träningsexempel använts (0000 stycken), och träningen har inte drivits så långt. Förhoppningen är att nätverket ska ha så många exempel att hålla reda på, att det endast kan lära sig de stora dragen, och inte hinner börja lära sig egenheter hos enskilda exempel. Valideringsmängden innehåller 00 exempel, och det gäller genom hela undersökningen. Alla träningsexempel är skapade slumpmässigt, och de ska vara giltiga schackpositioner, dvs. kungarna kan ejplaceras bredvid varandra, och svart kan inte stå i schack om det är vits tur. Positionerna får ejheller vara sådana att de leder till remi, dvs. att någon av vits pjäser kan tas av svart eller att svart blir pattställd. Varje träningsexempel består av en ställning tillsammans med ett målvärde som fås från en slutspelsdatabas. Målvärdet anger antalet halvdrag som är kvar till matt för ställningen i fråga. Tanken är att för varje exempel nätverket ser, ska dess interna struktur förändras så att nätet ger en output som mer liknar målvärdet. Ett problem är dock att den aktiveringsfunktion som används, sigmoiden (se figur.), endast kan ge output i intervallet 0 till, medan antalet halvdrag till matt alltid är ett heltal. Därför måste det värde slutspelsdatabasen ger transformeras, innan exemplet kan visas för neuronnätet. Då det talas om felet i nätverkets output, avses om inget annat sägs, felet på valideringsmängden. Det är nämligen valideringsfelet som är det intressanta, för det ger ett mått på hur väl nätverket generaliserar för osedda exempel. Figur. visar även att det ejär önskvärt att ha ett så lågt träningsfel som möjligt. (Figuren är Patt = Spelaren vid draget står ej i schack, och kan ej göra något legalt drag. Leder till remi.

22 visserligen en idealiserad bild av verkligheten, men det förändrar ingenting.) Felet på valideringsmängden E v räknas ut som E v = V p= (t p o p ),där V är antalet valideringsexempel, t p är målvärde för exempel p, ocho p är den output nätverket ger då exempel p ges som input.. Prototyp Här beskrivs krk-prototypen, dvs. ett neuronnät som spelar vit kung och torn mot ensam svart kung. I alla försök med krk-slutspelet används ett gömt lager och stycken gömda neuroner. Robertsson [] skapade ett neuronnät med ett mycket högdimensionellt inlager, nämligen stycken inputs för varje pjäs, plus en nod som uttrycker vem som är vid draget. Tanken med detta var att nätet självt skulle lista ut vilka topologiska aspekter som är viktiga för att spela krk-slutspelet. Prestandan hos ett neuronnät kan dock höjas betydligt om inlagrets dimensionalitet minskas. [, kap. 8] Detta låter sig göras genom att lägga till ett förbearbetningssteg som ur en ställning extraherar olika attribut som bedöms lämpliga, och som presenterar dessa attribut för neuronnätet. Vid bedömningen av vilka attribut som är lämpliga används tillgänglig schackteori. Därför eftersträvas vid skapandet av prototypen en lösning med färre dimensioner i inlagret än vad Robertsson hade. Det är inte självklart vilka attribut som ska medtas, utan detta är föremål för efterforskningar. För övrigt medför få inputnoder även att nätet totalt sett blir mindre, och detta innebär i sin tur minskade träningstider. I krk-slutspelet sker matt inom maximalt drag, eller halvdrag, från godtycklig utgångsposition (vid perfekt spel). Robertsson [, sida 9] rapporterar att en bra transformering är att låta det önskade målvärdet för en viss ställning vara n,därn är antalet halvdrag till matt. Denna formel är bra eftersom den går mellan 0 och, och nätverkets sigmoidfunktion kan hantera värden i detta intervall. I detta arbete används dock initialt formeln n istället, som mer korrekt avspeglar att matt sker inom halvdrag. Ett högre tal innebär en mer näraliggande matt. Första ansatsen Den första ansatsen hade som inattribut: rad och kolumn för varje pjäs, en siffra 0 eller som talar om vems tur det är, samt slutligen ett attribut för bias-termen. Totalt blev detta alltså 8 stycken inattribut. Detta nätverk klarar av att matta för det mesta. I ställningar då den svarta kungen är placerad nära den 8:nde raden, och vits kung är placerad närmare mitten, är dock nätverket dåligt på att matta. Nätet verkar ha problem med att driva den svarta kungen uppåt mot kanten. En bias-term innebär att ett neuronnät får en extra vikt i inlagret som alltid har en etta som invärde. På så sätt kan tröskling av nätets beslutsyta i mönsterrymden hanteras på samma sätt som vikter. [9, sida 9 0]

23 8 0Z0j0Z0Z 0Z0J0Z0Z S0Z0Z0Z0 Med första ansatsens neuronnät lyckades inte vit sätta matt inom 0 drag från denna utgångsställning. Andra ansatsen Det borde inte vara någon skillnad mellan nätverkets förmåga att driva kungen framför sig, beroende på vilket hörn kungen drivs mot. I ett försök att få nätverket att lära sig principen för hur detta drivande går till, ändrades sättet träningsexempel genereras på. Istället för att generera 0000 träningsexempel, genereras nu 00 exempel, som sedan roteras för att nätverket ska hantera alla riktningar lika bra. Först placerades alla rotationer av en viss utgångsställning efter varandra i listan över träningsexempel. Detta gav ingen minskning av felet på valideringsmängden. Sedan gjordes en test där exemplen blandades, så att olika rotationer av samma ställning ejhamnade bredvid varandra. Detta gav ett lägre fel. Orsaken till detta är att ett nätverk lär sig snabbast då exemplen som presenteras är oväntade. [, sekt...] Så här långt har träningsexemplen skapats slumpmässigt, men utan någon kontroll av att de är unika. Nu läggs en test till, så att alla exempel blir unika. Totalt sett blev felet på valideringsmängden något lägre än i första ansatsen. Nätverket spelade dock inte nämnvärt bättre. Tredje ansatsen Tidigare beskrevs att neuronnätet för varje ställning tränas att ge en output n, där n är antalet halvdrag till matt. Denna formel ger extremvärdena 0 och, och det visar sig att det är bättre om målvärdena ejsätts till dessa asymptotvärden (sigmoidfunktionen ger ju också output endast i intervallet 0 till ). [, sekt...] Träningsprocessen kommer att driva outputen från nätverket så nära målvärdena som möjligt, och målvärdena 0 och kan endast nås asymptotiskt. Detta leder till att vikterna får större och större värden, vilket ökar risken för att nätet överanpassar sig till träningsexemplen. Dessutom tenderar stora vikter att tvinga all output till sigmoidens extremvärden, vilket motverkar avsikten att få en jämn spridning inom intervallet. Därför modifierades funktionen som beräknar nätverkets output till n 0, vilket ger extremvärdena 0, resp. 0,9. Detta gav nätverket betydligt bättre generaliseringsförmåga. Felet minskade med ca 0%. Nu är nätverket bättre på att matta jämfört med den första ansatsen.

24 Delresultat Den första ansatsen och den tredje ansatsen jämförs genom att dessa nät får spela 0 stycken partier med slumpmässig utgångsposition. Motståndaren är en slutspelsdatabas, som alltid gör perfekta drag. Om ingen matt åstadkommes inom 0 drag (00 halvdrag) är partiet remi. Tabellen nedan till vänster visar för varje parti hur många drag mattsättningen tog. Det är ejmotiverat att lista utgångsställningarna för alla 0 partier. Istället har sex stycken partier valts ut, som får representera de övriga. Utgångsställningarna för dessa partier finns listade i bilaga B (partierna har i tabellen markerats med ). parti drag till matt :a ansats :e ansats remi remi remi remi totalt

25 Tabellen indikerar att den tredje ansatsen troligen spelar något bättre än den första, men skillnaden var inte så stor som förväntat. Det finns många möjligheter till ytterligare förbättringar av detta nätverk, varav tester med andra inattribut kanske är det viktigaste. Ytterligare sätt är normalisering av inputs, annan sigmoidfunktion, osv. LeCun m.fl. ger en bra översikt över olika trick som kan användas, i rapporten Efficient BackProp. [] Denna prototyp får dock anses tillräckligt bra för att det nu ska vara möjligt att gå vidare till att behandla ett svårare slutspel. Ett par ord bör nämnas om hur en slutspelsdatabas agerar perfekt motståndare. Det fungerar på så sätt att alla svarts tillåtna drag utifrån aktuell ställning genereras, varvid en slutspelsdatabas konsulteras för varje ställning som uppstår då dessa drag utförs. Det drag väljs som leder till den mest avlägsna matten.. Slutspelet kbnk Nu skapas alltså ett neuronnät som förhoppningsvis lär sig spela med vit kung, löpare och springare mot ensam svart kung. Haworth & Velliste [0] betraktade hanteringen av vit vid draget-positioner (wtm white to move) och svart vid dragetpositioner (btm black to move) som två olika problem. Även här används separata nätverk för wtm resp. btm, för att göra nätverket så litet som möjligt. För att förenkla nätverket införs begränsningen att endast vitlöpare används, dvs. endast sådana träningsexempel genereras där löparen står på vit ruta. Det innebär att vit måste driva svarts kung till a8- eller h-hörnet, som båda har vit färg. I alla försök används endast ett gömt lager. På grund av att beräkningarna är så tunga, har ingen välstrukturerad genomsökning gjorts gällande vilket antal gömda neuroner som är bäst. Rimliga uppskattningar har gjorts av vilka tester som är lämpliga, och resultaten från dessa tester har legat till grund för bedömningen av vilket antal gömda neuroner som fungerar bäst. Utförandet har gått till på så sätt att tio stycken partier har skapats med slumpmässig utgångsposition. Sedan görs olika försök med olika representationer, där de producerade nätverken får försöka sätta matt utifrån dessa tio genererade utgångsställningar. Motståndet är samma som för prototypen, nämligen en slutspelsdatabas, som spelar perfekta drag. Utgångsställningarna finns listade i bilaga A. Det eftersträvades att hålla nere tiden för testning av neuronnäten, och det är orsaken till att inte fler än tio testpartier användes. Vid skapandet av prototypen upptäcktes att neuronnätets generaliseringsförmåga blir bättre om målvärden mellan 0, och 0,9 används istället för mellan 0 och. För kbnk-slutspelet tar mattsättning maximalt drag ( halvdrag) vid perfekt spel. Därför kan neuronnätet med fördel tränas att ge en output 9 n 0,därn är Att det är vit som har löpare och springare, är egentligen ingen begränsning. Det färdigtränade nätverket kan även användas om det istället är svart som har löpare och springare, genom att i ett förbearbetningssteg invertera spelplanen. 9

26 antalet halvdrag till matt. Denna formel förenklas till n 80, vilket lägger outputen i ungefär samma intervall... Enkelnät Prototypen visade att det är bra att rotera träningsexemplen om man vill få nätet att klara olika riktningar lika bra. I kbnk-slutspelet sker matten i det hörn som har samma färg som löparen, dvs. i a8- eller h-hörnet, eftersom endast vitlöpare används i denna undersökning. Därför kan endast 80 -rotationer användas, och ej som för prototypen då rotationer i fyra riktningar användes. Dvs. i de försök som innehåller rotationer (ansats ett till och med fyra) genereras 000 träningsexempel, som roteras. Första ansatsen Representationen för den första ansatsen var väldigt enkel, nämligen rad och kolumn för varje pjäs, plus en bias-term, vilket blir totalt 9 inattribut. I det gömda lagret användes gömda neuroner. Felet på valideringsmängden blev betydligt lägre för btm-nätverket än för wtm-nätverket. Detta är genomgående i hela undersökningen, och Haworth & Velliste [0, sida ] rapporterar samma resultat. Orsaken till att btm ger ett lägre fel är ejklarlagd. Haworth & Velliste har inte heller någon förklaring till detta. Resultatet för denna första ansats blev en matt på tio partier. Mattsättningen skedde i parti nummer sex, och det tog drag i anspråk. En test gjordes att skapa ett sådant sökträd att alla löv blev btm-positioner, så det blev möjligt att endast utnyttja btm-nätet, som har lägre fel. Det ledde till samma resultat, nämligen mattsättning i parti sex, och remi i alla andra partier. Matten skedde nu på drag jämfört med tidigare drag, vilket stödjer hypotesen att btm-nätet är bättre. Andra ansatsen Istället för att använda absoluta koordinater gjordes en test med relativa avstånd. Ruta a8 valdes ut som referenspunkt för svarts kung, och som input till nätverket användes avståndet mellan denna ruta och svarts kung. Avståndet beräknades som (rad + kolumn), vilket som exempel ger oss avståndet fyra rutor mellan ruta a8 och b. Input för de vita pjäserna räknades ut som ett avståndsmått relativt den svarta kungens placering, enligt formeln abs(x x )+abs(y y ),därx och y är den vita pjäsens position, och x och y är svarts kungs position. Totalt gav detta stycken inputs, plus en bias-term. Antalet gömda neuroner var. Jämfört med första ansatsen gav denna representation ett något lägre fel för wtm-nätet, medan btm-nätet gav ett något högre fel. (Fortfarande ger dock btm ett betydligt lägre fel än wtm.) Resultatet blev snarlikt första ansatsen, nämligen mattsättning efter drag i parti sex då båda näten användes, och mattsättning 0

27 efter drag i parti sex då endast btm-nätet användes. Inget annat parti ledde till någon mattsättning. Tredje ansatsen Nu testades en kombination av första och andra ansatsen, dvs. som inattribut användes både de absoluta pjäskoordinaterna och ett avståndsmått. Med biastermen blev det stycken inputs. En test gjordes av vilken storlek på det gömda lagret som är bäst. Valideringsfel 0 0 Gömda neuroner Vilket är det optimala antalet gömda neuroner? Med neuroner blev felet marginellt lägre än med 0 neuroner. Av 0 och stycken är därför 0 att föredra, eftersom nätet är enklare, vilket minskar risken för överanpassning, samtidigt som generaliseringen i stort sett är lika bra. Vad är då att föredra av 0 och 0 stycken gömda neuroner? Det finns inget givet svar på den frågan. Träningstiden för nätet med 0 stycken gömda neuroner var betydligt längre än för stycken (runt gånger längre). Intressant nog gav gömda neuroner ett större fel än vad 0 stycken gav. Detta tros bero på överanpassning. Resultatet för nätet med 0 gömda neuroner blev matt på 0 partier då båda näten användes ( drag för parti ). Då endast btm-nätet användes mattade nätet i två av partierna ( drag för parti, och drag för parti ). Fjärde ansatsen Nästa test gick ut på att utöver de attribut som fanns i föregående ansats, även lägga till attribut som beskriver positionerna för vits pjäser relativt varandra. Relationen beskrivs med samma formel som i föregående ansats, dvs. abs(x x )+abs(x y ), där x och y beskriver koordinaterna för de olika (vita) pjäserna. Detta gav tre extra inputs, och totalt blir det därför inputs inklusive biastermen. Felet på valideringsmängden blev ungefär lika stort som i föregående ansats, men träningstiden blev kortare. Femte ansatsen I detta försök används samma inattribut som i föregående försök. I det gömda lagret används neuroner. Nu tas speglingen av genererade träningsexempel bort, så att nätet nu tränas på 0000 helt unika träningsexempel. Jämfört med tredje ansatsen minskade felet med ca % för wtm-nätet, medan felet ökade något för btm-nätet.

Schackprogrammet Amundsen

Schackprogrammet Amundsen Schackprogrammet Amundsen (2D1464 Större avancerad individuell kurs i datalogi) John Bergbom (d99-jbe@nada.kth.se) 27 april 2004 Innehåll 1 Bakgrund 2 2 Ett schackpartis beståndsdelar 3 3 Schackprogrammering

Läs mer

Symmetrireducering av slutspelsdatabas i Schack

Symmetrireducering av slutspelsdatabas i Schack Kungl. Tekniska Högskolan NADA Symmetrireducering av slutspelsdatabas i Schack (Symmetrical reduced tablebases in chess) Vårterminen 2004 Författare: Jonas Forsslund E-post: jofo02@kth.se Kursledare: Dmitry

Läs mer

2D Potentialen i en nervcell definieras normalt som skillnaden i spänning mellan dess axon och dendrit.

2D Potentialen i en nervcell definieras normalt som skillnaden i spänning mellan dess axon och dendrit. 2D1432 Artificiella Neuronnät och andra lärande system Lösningsförslag till Tentamen 2003-03-06 Inga hjälpmedel. Uppgift 1 Vilka av följande påståenden är sanna? Korrigera de som är fel. 1. Potentialen

Läs mer

729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann

729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann 729G43 Artificiell intelligens / 2015 Maskininlärning 3 Marco Kuhlmann Förra gången: Perceptroninlärning Beslutsregel predicerat y-värde Exempel: AND Välj parametrar θ 0, θ 1, θ 2 sådana att perceptronen

Läs mer

ARTIFICIELLA NEURALA NÄT. MARCO KUHLMANN Institutionen för datavetenskap

ARTIFICIELLA NEURALA NÄT. MARCO KUHLMANN Institutionen för datavetenskap ARTIFICIELLA NEURALA NÄT MARCO KUHLMANN Institutionen för datavetenskap Example Alt Bar Fri Hun Pat Price Rain Res Type Est WillWait 1 Yes No No Yes Some $$$ No Yes French 0 10 Yes 2 Yes No No Yes Full

Läs mer

MinMax Algoritmen Implementation och optimering. Joakim Östlund 15 juni 2004

MinMax Algoritmen Implementation och optimering. Joakim Östlund 15 juni 2004 MinMax Algoritmen Implementation och optimering Joakim Östlund 15 juni 2004 1 Samanfattning MinMax är en algoritm som kan användas i turbaserade spel för att skapa en virituell motståndare. Algoritmen

Läs mer

1(15) Bilaga 1. Av Projekt Neuronnätverk, ABB Industrigymnasium, Västerås Vt-05

1(15) Bilaga 1. Av Projekt Neuronnätverk, ABB Industrigymnasium, Västerås Vt-05 1(15) Bilaga 1 2(15) Neuronnätslaboration Räknare Denna laboration riktar sig till gymnasieelever som går en teknisk utbildning och som helst har läst digitalteknik samt någon form av styrteknik eller

Läs mer

729G43 Artificiell intelligens (2016) Maskininlärning 3. Marco Kuhlmann Institutionen för datavetenskap

729G43 Artificiell intelligens (2016) Maskininlärning 3. Marco Kuhlmann Institutionen för datavetenskap 729G43 Artificiell intelligens (2016) Maskininlärning 3 Marco Kuhlmann Institutionen för datavetenskap Modell med vektornotation parametervektor särdragsvektor Perceptron kombinerar linjär regression med

Läs mer

Linköpings universitet

Linköpings universitet Översikt Kognitionsvetenskaplig introduktionskurs Föreläsning 4 Informationsbearbetningsmodeller Vad är kognitionsvetenskap? Kort bakgrund/historik Representation och bearbetning av information Vetenskapliga

Läs mer

Enlagersnät Flerlagersnät Generalisering. Artificiella Neuronnät

Enlagersnät Flerlagersnät Generalisering. Artificiella Neuronnät Artificiella Neuronnät 1 Karaktäristiska egenskaper Användningsområden Klassiska exempel Biologisk bakgrund 2 Begränsningar Träning av enlagersnät 3 Möjliga avbildningar Backprop algoritmen Praktiska problem

Läs mer

UPPGIFT 1 V75 FIGUR 1.

UPPGIFT 1 V75 FIGUR 1. UPPGIFT 1 V75 FIGUR 1. Varje lördag året om spelar tusentals svenskar på travspelet V75. Spelet går ut på att finna sju vinnande hästar i lika många lopp. Lopp 1: 5 7 Lopp 2: 1 3 5 7 8 11 Lopp 3: 2 9 Lopp

Läs mer

Självlärande Othello-spelare

Självlärande Othello-spelare Självlärande Othello-spelare Kan en dator lära sig att spela Othello? KLAS BJÖRKQVIST och JOHAN WESTER Examensarbete Stockholm, Sverige 2010 Självlärande Othello-spelare Kan en dator lära sig att spela

Läs mer

Artificiella Neuronnät

Artificiella Neuronnät Artificiella Neuronnät 2 3 4 2 (ANN) Inspirerade av hur nervsystemet fungerar Parallell bearbetning Vi begränsar oss här till en typ av ANN: Framåtkopplade nät med lagerstruktur 3 4 Fungerar i princip

Läs mer

Utförliga regler för TRAX

Utförliga regler för TRAX Utförliga regler för TRAX Innehållsförteckning Vad är TRAX? Sid 2 Grundregler för TRAX Sid 3 Vad är en tvingad yta? Sid 4 Vad är en vinnande ögla? Sid 6 Vad är en vinnande linje? Sid 7 Grundläggande strategiska

Läs mer

Programmering II (ID1019) :00-11:00

Programmering II (ID1019) :00-11:00 ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren

Läs mer

Kort Sammanfattning av Schack MAS

Kort Sammanfattning av Schack MAS Kort Sammanfattning av Schack MAS Krister Ljung kljung@kth.se 6th April 2003 1 Bamse 1.1 Agenter 1.1.1 Bamse Bestämmer vilket drag som skall skickas till spelplanen. Har även nio öppningar att spela dom

Läs mer

Schackledarens blad Lektion 1

Schackledarens blad Lektion 1 Schackledarens blad Lektion 1 Inledning Det är viktigt med en tydlig rutin för när schacklektionen börjar och slutar. Genom att samlas kring runda bordet när lektionen ska börja respektive avslutas uppnås

Läs mer

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET.

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET. UPPGIFT 1 TVÅPOTENSER. 2 ½ ¾ = 5575186299632655785383929568162090376495104 n = 142 är det minsta värde på n för vilket 2 Ò inleds med siffrorna 55. Uppgiften består i att skriva ett program som tar emot

Läs mer

Genetisk programmering i Othello

Genetisk programmering i Othello LINKÖPINGS UNIVERSITET Första versionen Fördjupningsuppgift i kursen 729G11 2009-10-09 Genetisk programmering i Othello Kerstin Johansson kerjo104@student.liu.se Innehållsförteckning 1. Inledning... 1

Läs mer

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1 Inlämningsuppgift : Finn 2D1418 Språkteknologi Christoffer Sabel E-post: csabel@kth.se 1 1. Inledning...3 2. Teori...3 2.1 Termdokumentmatrisen...3 2.2 Finn...4 3. Implementation...4 3.1 Databasen...4

Läs mer

1. Inledning, som visar att man inte skall tro på allt man ser. Betrakta denna följd av tal, där varje tal är dubbelt så stort som närmast föregående

1. Inledning, som visar att man inte skall tro på allt man ser. Betrakta denna följd av tal, där varje tal är dubbelt så stort som närmast föregående MATEMATISKA INSTITUTIONEN STOCKHOLMS UNIVERSITET Christian Gottlieb Gymnasieskolans matematik med akademiska ögon Induktion Dag 1 1. Inledning, som visar att man inte skall tro på allt man ser. Betrakta

Läs mer

729G43 Artificiell intelligens (2016) Maskininlärning 2. Marco Kuhlmann Institutionen för datavetenskap

729G43 Artificiell intelligens (2016) Maskininlärning 2. Marco Kuhlmann Institutionen för datavetenskap 729G43 Artificiell intelligens (2016) Maskininlärning 2 Marco Kuhlmann Institutionen för datavetenskap Förra gången: Gradientsökning tangentens lutning i punkt θ steglängdsfaktor Översikt Introduktion

Läs mer

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs... OBS! För flervalsfrågorna gäller att ett, flera eller inget alternativ kan vara korrekt. På flervarlsfrågorna ges 1 poäng för korrekt svar och 0,5 poäng om skillnaden mellan antalet korrekta svar och antalet

Läs mer

Inlärning utan övervakning

Inlärning utan övervakning Översikt Biologiska mekanismer bakom inlärning Inlärning utan övervakning Inlärning utan övervakning Hebbiansk modellinlärning Självorganisering Arbetsfördelning mellan noder i ett lager som utvecklas

Läs mer

HKGBB0, Artificiell intelligens

HKGBB0, Artificiell intelligens HKGBB0, Artificiell intelligens Kortfattade lösningsförslag till tentan 3 november 2005 Arne Jönsson 1. Vad karaktäriserar dagens AI-forskning jämfört med den AI-forskning som bedrevs perioden 1960-1985.

Läs mer

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS Matematiska institutionen Optimeringslära TENTAMEN TAOP/TEN KOMBINATORISK OPTIMERING GRUNDKURS Datum: augusti 0 Tid:.00-.00 Hjälpmedel: Miniräknare Kurslitteratur: Kaj Holmberg: Optimering Anteckningar

Läs mer

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl Matematiska Institutionen KTH Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL och Media, SF60 och 5B8, onsdagen den 7 augusti 0, kl 4.00-9.00. Examinator: Olof Heden Hjälpmedel: Inga

Läs mer

UPPGIFT 1 KANINER. Håkan Strömberg 1 Pär Söderhjelm

UPPGIFT 1 KANINER. Håkan Strömberg 1 Pär Söderhjelm UPPGIFT 1 KANINER Kaniner är bra på att föröka sig. I den här uppgiften tänker vi oss att det finns obegränsat med hannar och att inga kaniner dör. Vi ska försöka simulera hur många kaninhonor det finns

Läs mer

Datormetaforen. Från människa till dator Från dator till människa o.s.v.

Datormetaforen. Från människa till dator Från dator till människa o.s.v. Datormetaforen Från människa till dator Från dator till människa o.s.v. Det mekaniska tänkandet Räknemaskin tillverkad av Pascal 1642 Hjärnan ett avancerat urverk 1800-talet Henry Colebrooke, (president

Läs mer

Vad kan biologiskt plausibla modeller säga oss?

Vad kan biologiskt plausibla modeller säga oss? Förra föreläsningen Vad kan biologiskt plausibla modeller säga oss? Beräkningsmässig kognitiv neurovetenskap Simulering av modeller kan ge insikt i mänskligt tänkande Kognitiva fenomen Simulering beräkningsprinciper

Läs mer

AI och schack. En överblick

AI och schack. En överblick 1 AI och schack En överblick Jakob Danielsson - jdn11003@student.mdh.se Sam Vaezi - svi11001@student.mdh.se Information - kunskap - vetenskap - etik 3/10/2014 2 SAMMANFATTNING Schack anses ofta vara ett

Läs mer

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs... OBS! För flervalsfrågorna gäller att ett, flera eller inget alternativ kan vara korrekt. På flervarlsfrågorna ges 1 poäng för korrekt svar och 0,5 poäng om skillnaden mellan antalet korrekta svar och antalet

Läs mer

Allmänt om Pidro. Spelets uppbyggnad

Allmänt om Pidro. Spelets uppbyggnad Allmänt om Pidro Pidro är ett kortspel för fyra personer där ett par spelar mot ett annat par. Lagmedlemmarna sitter mittemot varandra. Pidro liknar t.ex. Bridge i det avseendet att spelet är uppdelat

Läs mer

Vinjetter TDDC91 Datastrukturer och algoritmer

Vinjetter TDDC91 Datastrukturer och algoritmer Vinjetter TDDC91 Datastrukturer och algoritmer 17 augusti 2015 2 Scenario 1 Man har inom Posten Logistik AB skrivit programvara för sortering av kundinformation och vill standardisera användningen av sorteringsalgoritmer.

Läs mer

Handbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll

Handbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Hur man spelar 6 3 Spelets regler, strategi och tips 7 3.1 Spelets grunder.......................................

Läs mer

Sub-symbolisk kognition & Konnektionism. Kognitionsvetenskaplig Introduktionskurs (729G01) Mats Andrén,

Sub-symbolisk kognition & Konnektionism. Kognitionsvetenskaplig Introduktionskurs (729G01) Mats Andrén, Sub-symbolisk kognition & Konnektionism Kognitionsvetenskaplig Introduktionskurs (729G01) Mats Andrén, mats.andren@liu.se 1 Konnektionism Neutrala nät baseras på en (förenklad) modell av hur hjärnan fungerar.

Läs mer

Nätverksprogrammering, EDA095

Nätverksprogrammering, EDA095 Nätverksprogrammering, EDA095 Projekt: Chess game, 2013-05-21 Handledare: Roger Henriksson Axel Hildingsson, a.hildingson@gmail.com Hoang Huyuh Truong, artiq90@yahoo.se Lisa Lindberg, rys07lli@student.lu.se

Läs mer

Lutande torn och kluriga konster!

Lutande torn och kluriga konster! Lutande torn och kluriga konster! Aktiviteter för barn under Vetenskapsfestivalens skolprogram 2001 Innehåll 1 Bygga lutande torn som inte faller 2 2 Om konsten att vinna betingat godis i spel 5 3 Den

Läs mer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4 Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

kl Tentaupplägg

kl Tentaupplägg Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer

Läs mer

! "# # # $ # " % & # # '(") " " )## (")"#*+*(, ( - " ' # (") #. % % /

! # # # $ #  % & # # '()   )## ()#*+*(, ( -  ' # () #. % % / ! "# # # $ # " % & # # '(") " " )## (")"#*+*(, ( - " ' # (") #. % % / Hageltal Problem ID: hageltal Tänk dig att du skriver upp alla positiva heltal på ett oändligt stort papper. Från varje tal n>1 ritar

Läs mer

Resurscentrums matematikleksaker

Resurscentrums matematikleksaker Resurscentrums matematikleksaker Aktiviteter för barn och vuxna Innehåll 1 Bygga lutande torn som inte faller 2 2 Om konsten att vinna betingat godis i spel 5 3 Den snåle grosshandlarens våg 6 4 Tornen

Läs mer

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Läsanvisning och uppgifter Broarna

Läs mer

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Läsanvisning och uppgifter Broarna

Läs mer

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Broarna i Königsberg, Euler, 17 Grafer

Läs mer

Flervariabel Analys för Civilingenjörsutbildning i datateknik

Flervariabel Analys för Civilingenjörsutbildning i datateknik Flervariabel Analys för Civilingenjörsutbildning i datateknik Henrik Shahgholian KTH Royal Inst. of Tech. 2 / 9 Utbildningens mål Gällande matematik: Visa grundliga kunskaper i matematik. Härmed förstås

Läs mer

Programmeringsolympiaden 2012 Kvalificering

Programmeringsolympiaden 2012 Kvalificering Programmeringsolympiaden 2012 Kvalificering TÄVLINGSREGLER Tävlingen äger rum på ett av skolan bestämt datum under sex timmar effektiv tid. Tävlingen består av sex uppgifter som samtliga ska lösas genom

Läs mer

Sagaforms spelregler SCHACK, FIA MED KNUFF, BACKGAMMON, DOMINO

Sagaforms spelregler SCHACK, FIA MED KNUFF, BACKGAMMON, DOMINO Sagaforms spelregler SCHACK, FIA MED KNUFF, BACKGAMMON, DOMINO SCHACK Schack matt När en av motståndarens pjäser hotar kungen säger man att den står i schack. Schack matt - I schack vinner den som först

Läs mer

UPPGIFT 1 WILL ROGERS FENOMEN

UPPGIFT 1 WILL ROGERS FENOMEN UPPGIFT 1 WILL ROGERS FENOMEN Will Rogers (1879-1935) var en amerikansk komiker känd för bland annat följande citat: When the Okies left Oklahoma and moved to California, they raised the average intelligence

Läs mer

Googles sidrankning - linjär algebra värt en förmögenhet

Googles sidrankning - linjär algebra värt en förmögenhet Googles sidrankning - linjär algebra värt en förmögenhet Outline 1 Sökmotorer 2 Grafteori Linjär algebra 3 Målet Utifrån användarens sökord lista de mest relevanta webbsidorna. Dessutom i en ordning som

Läs mer

AGA-regler. goforbundet.se/ Referens: AGA 1991

AGA-regler. goforbundet.se/ Referens: AGA 1991 AGA-regler Referens: AGA 1991 Varje formulering av dessa regler vars innehåll är identiskt, är godtagbar som ett uttryck för AGAs goregler, så länge de hänvisar till de mer kompletta regler som ges i AGAs

Läs mer

Informationsteknologi Tom Smedsaas 19 augusti 2016

Informationsteknologi Tom Smedsaas 19 augusti 2016 Informationsteknologi Tom Smedsaas 19 augusti 016 VL-träd Definition Ett VL-träd är ett binärt sökträd där det för varje nod gäller att skillnaden i höjd mellan nodens vänster och höger subträd är högst

Läs mer

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER Matematiska institutionen Optimeringslära TENTAMEN TAOP/TEN OPTIMERING FÖR INGENJÖRER Datum: augusti 0 Tid:.00-.00 Hjälpmedel: Miniräknare Kurslitteratur: Kaj Holmberg: Optimering Anteckningar i boken

Läs mer

729G43 Artificiell intelligens / Maskininlärning 2. Marco Kuhlmann

729G43 Artificiell intelligens / Maskininlärning 2. Marco Kuhlmann 729G43 Artificiell intelligens / 2015 Maskininlärning 2 Marco Kuhlmann Förra gången: Linjär regression Gradientsökning Vandra ner i felets dal. Steg 0: Börja med ett godtyckligt värde för θ. Steg 1: Räkna

Läs mer

Övningshäfte 2: Induktion och rekursion

Övningshäfte 2: Induktion och rekursion GÖTEBORGS UNIVERSITET MATEMATIK 1, MMG200, HT2017 INLEDANDE ALGEBRA Övningshäfte 2: Induktion och rekursion Övning D Syftet är att öva förmågan att utgående från enkla samband, aritmetiska och geometriska,

Läs mer

UPPGIFT 1 TVETYDIGA DATUM

UPPGIFT 1 TVETYDIGA DATUM UPPGIFT 1 TVETYDIGA DATUM Datum skrivs på olika sätt i olika länder. Till exempel skulle datumet 03/05/01 i Sverige betyda 1 maj 2003, medan det i USA skulle vara 5 mars 2001 och i en del andra länder

Läs mer

Uppgift 1. Kylskåpstransporter

Uppgift 1. Kylskåpstransporter Uppgift 1. Kylskåpstransporter 1. Här kan du se de två bilarna lastade med kylskåp på väg mot stormarknaden En fabrik som tillverkar kylskåp ska leverera ett större parti med n, 1 n 1000, kylar till en

Läs mer

Memory Det kombinatoriska spelet

Memory Det kombinatoriska spelet Institutionen för naturvetenskap och teknik Memory Det kombinatoriska spelet Simon Sjölund & Erik Åstrand Örebro universitet Institutionen för naturvetenskap och teknik Matematik C, 76 90 högskolepoäng

Läs mer

Rektangelpussel 1. Använd tre bitar vilka som helst och gör en 3 5-rektangel.

Rektangelpussel 1. Använd tre bitar vilka som helst och gör en 3 5-rektangel. PEDER CLAESSON I Nämnarens geometrinummer, nr 3 81/82, presenterar Andrejs Dunkels pentominobrickorna. Under rubriken Kvadratpussel finns de beskrivna i Martin Gardners bok, Rolig matematik, som kom ut

Läs mer

Problem: FIL File Paths

Problem: FIL File Paths Problem: FIL File Paths swedish BOI 2015, dag 2. Tillgängligt minne: 256 MB. 1.05.2015 Byteasar tycker om att leva farligt. Han springer med saxar, skickar in lösningar på tävlingsproblem utan att testa

Läs mer

Projektdokumentation för Othello

Projektdokumentation för Othello Projektdokumentation för Gustav Fransson Nyvell gusfr229@student.liu.se Tomas Franzén tomfr819@student.liu.se 1. Inledning Vi har gjort ett -spel som går ut på att man turas om att lägga brickor på en

Läs mer

Lär datorn att spela luffarschack

Lär datorn att spela luffarschack Lär datorn att spela luffarschack Laboration utvecklad av: Sofia Max och Mårten Björk, 2002 Reviderad Fredrik Linusson 2006 Datorlaborationen tar ca 60 minuter. Ägna 10 minuter till den första delen och

Läs mer

ANN fk. Örjan Ekeberg. Framåtkopplade Nät. återkopplade nät. Olika arkitekturer. BackPropagation through Time. Kalman-Filter tekniker

ANN fk. Örjan Ekeberg. Framåtkopplade Nät. återkopplade nät. Olika arkitekturer. BackPropagation through Time. Kalman-Filter tekniker Hantering av Tid Återkopplade Återkopplade Återkopplade t Återkopplade Återkopplade Temporala signaler är svåra Gör om temporal signal till spatial t 1 t 2 t 3 t 4 Återkopplade t Enklaste formen Neuronal

Läs mer

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering... Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering... 4 Bussen (projektförslag)... 5 Bakgrund... 5 Klassen Buss

Läs mer

Histogram över kanter i bilder

Histogram över kanter i bilder Histogram över kanter i bilder Metod Både den svartvita kanstdetekteringen och detekteringen av färgkanter följer samma metod. Först görs en sobelfiltrering i både vertikal och horisontell led. De pixlar

Läs mer

Föreläsning 5: Grafer Del 1

Föreläsning 5: Grafer Del 1 2D1458, Problemlösning och programmering under press Föreläsning 5: Grafer Del 1 Datum: 2006-10-02 Skribent(er): Henrik Sjögren, Patrik Glas Föreläsare: Gunnar Kreitz Den här föreläsningen var den första

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Draw_Hexagones, som ritar ut en bikupa enligt körexemplen nedan. Exempel 1: Mata in storlek på bikupan: 1 Exempel 3: Mata in storlek på bikupan: 3 \ / \

Läs mer

Ekvivalensrelationer

Ekvivalensrelationer Abstrakt datatyp för disjunkta mängder Vi skall presentera en abstrakt datatyp för att representera disjunkta mängder Kan bl.a. användas för att lösa ekvivalensproblemet avgör om två godtyckliga element

Läs mer

Schackspelande datorer Hur fungerar de? Joakim Östlund Patrik Lindegrén 19 oktober 2004

Schackspelande datorer Hur fungerar de? Joakim Östlund Patrik Lindegrén 19 oktober 2004 Schackspelande datorer Hur fungerar de? Joakim Östlund Patrik Lindegrén 19 oktober 2004 1 1 Sammanfattning Schack är ett komplicerat brädspel som kräver mycket list och skicklighet för att spela. Kan man

Läs mer

729G11 Artificiell Intelligens Marcus Johansson Marjo581. Fuzzy logic. Marcus Johansson Marjo581

729G11 Artificiell Intelligens Marcus Johansson Marjo581. Fuzzy logic. Marcus Johansson Marjo581 Fuzzy logic 880328-2535 Innehåll Fuzzy logic... 1 1. Inledning... 4 2. Jämförelse mellan fuzzy logic och tvåvärdeslogik.... 4 3. Fuzzy sets.... 4 4. Linvistiska variabler... 5 5. Operatorer... 5 6. If-

Läs mer

Statistisk mönsterigenkänning

Statistisk mönsterigenkänning Statistisk mönsterigenkänning Jonas Sandström Artificiell intelligens II Linköpings universitet HT 2011 Innehållsförteckning 1. Innehållsförteckning sid 2 2. Inledning sid 3 3. Statistisk mönsterigenkänning

Läs mer

Manual för ett litet FEM-program i Matlab

Manual för ett litet FEM-program i Matlab KTH HÅLLFASTHETSLÄRA Manual för ett litet FEM-program i Matlab Programmet består av en m-fil med namn SMALL_FE_PROG.m och en hjälp-fil för att plotta resultat som heter PLOT_DEF.m. Input För att köra programmet

Läs mer

SELF- ORGANIZING MAPS

SELF- ORGANIZING MAPS LINKÖPINGS UNIVERSITET Kognitionsvetenskapliga Programmet Examinator: Arne Jönsson SELF- ORGANIZING MAPS - Ett fördjupningsarbete inom Artificiell Intelligens Fack 52 katwa676@student.liu.se Sammanfattning

Läs mer

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS Matematiska institutionen Optimeringslära TENTAMEN TAOP/TEN KOMBINATORISK OPTIMERING GRUNDKURS Datum: 1 mars 01 Tid: 8.00-1.00 Hjälpmedel: Miniräknare Kurslitteratur: Kaj Holmberg: Optimering Anteckningar

Läs mer

Registerforskning Oktober 2018, Stockholm City Conference Centre. Möjligheter med Artificiell Intelligens inom registerforskningen

Registerforskning Oktober 2018, Stockholm City Conference Centre. Möjligheter med Artificiell Intelligens inom registerforskningen Registerforskning 2018 17 Oktober 2018, Stockholm City Conference Centre Möjligheter med Artificiell Intelligens inom registerforskningen Peter Funk Mälardalens Högskola Vem är Peter Funk? Artificiell

Läs mer

[][] Arrayer med två index

[][] Arrayer med två index [][] Arrayer med två index Exempel på saker med två index: En digital bild: bilden har rader (y) och kolumner (x) Mätdata i en tabell med rader och kolumner Spel: o Schack o Sudoku o Luffarschack Arrayer

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Handbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll

Handbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Hur man spelar 6 3 Spelets regler, strategi och tips 7 3.1 Spelets grunder.......................................

Läs mer

Lösning till fråga 5 kappa-06

Lösning till fråga 5 kappa-06 Lösning till fråga 5 kappa-06 Figurer till uppgift a) ligger samlade efter uppgiften. Inledning Betrakta först N punkter som tillhör den slutna enhetskvadraten inlagd i ett koordinatsystem enligt figur

Läs mer

getsmart Grå Regler för:

getsmart Grå Regler för: (x²) 1 2 Regler för: getsmart Grå Algebra 8 _ (x²) 1 2 Algebra 4 (2 2³) 1 4 _ xy (2 2³) 1 4 _ xy (x²) 1 2 _ (2 2³) 1 4 _ xy (x²) 1 2 _ (2 2³) 1 4 _ xy 4 Algebra Algebra _ 8 Det rekommenderas att man börjar

Läs mer

1 Minkostnadsflödesproblem i nätverk

1 Minkostnadsflödesproblem i nätverk Krister Svanberg, april 2012 1 Minkostnadsflödesproblem i nätverk Ett nätverk består av en given mängd noder numrerade från 1 till m (där m är antalet noder) samt en given mängd riktade bågar mellan vissa

Läs mer

Oppositionsprotokoll-DD143x

Oppositionsprotokoll-DD143x Oppositionsprotokoll-DD143x Datum: 2011-04-26 Rapportförfattare Sara Sjödin Rapportens titel En jämförelse av två webbsidor ur ett MDI perspektiv Opponent Sebastian Remnerud Var det lätt att förstå vad

Läs mer

Programmeringsolympiaden 2008 Kvalificering

Programmeringsolympiaden 2008 Kvalificering Programmeringsolympiaden 2008 Kvalificering TÄVLINGSREGLER Tävlingen äger rum på ett av skolan bestämt datum under sex timmar effektiv tid. Tävlingen består av sex uppgifter som samtliga ska lösas genom

Läs mer

Självlärande Dots & Boxes-spelare

Självlärande Dots & Boxes-spelare Självlärande Dots & Boxes-spelare ANDREAS PETTERSSON Kandidatexamensarbete inom datalogi, grundnivå Kurs 143X Handledare: Johan Boye Examinator: Mads Dam andrepet@kth.se Vintrosagatan 5 124 73 Bandhagen

Läs mer

Ökat personligt engagemang En studie om coachande förhållningssätt

Ökat personligt engagemang En studie om coachande förhållningssätt Lärarutbildningen Fakulteten för lärande och samhälle Individ och samhälle Uppsats 7,5 högskolepoäng Ökat personligt engagemang En studie om coachande förhållningssätt Increased personal involvement A

Läs mer

Programmeringsolympiaden 2018

Programmeringsolympiaden 2018 Programmeringsolympiaden 2018 TÄVLINGSREGLER FÖR SKOLKVALET Tävlingen äger rum på av skolan bestämt datum under fyra timmar. Ingen förlängning ges för lunch eller raster. Eleven ska i förväg komma överens

Läs mer

a = a a a a a a ± ± ± ±500

a = a a a a a a ± ± ± ±500 4.1 Felanalys Vill man hårddra det hela, kan man påstå att det inte finns några tal i den tillämpade matematiken, bara intervall. Man anger till exempel inte ett uppmätt värde till 134.78 meter utan att

Läs mer

LARS ULVELAND HOPFIELDNÄTVERK FÖR IGENKÄNNING AV DEGRADERADE BILDER OCH HANDSKRIVNA TECKEN

LARS ULVELAND HOPFIELDNÄTVERK FÖR IGENKÄNNING AV DEGRADERADE BILDER OCH HANDSKRIVNA TECKEN LARS ULVELAD HOPFIELDÄTVERK FÖR IGEKÄIG AV DEGRADERADE BILDER OCH HADSKRIVA TECKE E PROJEKTRAPPORT FÖR PROJEKTKURSE I BILDAALYS HT 02 Teori för Hopfieldnätverk Hopfieldmodellen är en typ av neuronnät,

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Graärgning och kromatiska formler

Graärgning och kromatiska formler Graärgning och kromatiska formler Henrik Bäärnhielm, d98-hba 2 mars 2000 Sammanfattning I denna uppsats beskrivs, för en ickematematiker, färgning av grafer samt kromatiska formler för grafer. Det hela

Läs mer

Algoritm för uppskattning av den maximala effekten i eldistributionsnät med avseende på Nätnyttomodellens sammanlagringsfunktion

Algoritm för uppskattning av den maximala effekten i eldistributionsnät med avseende på Nätnyttomodellens sammanlagringsfunktion Algoritm för uppskattning av den maximala effekten i eldistributionsnät med avseende på Nätnyttomodellens sammanlagringsfunktion Carl Johan Wallnerström December 2005 Kungliga Tekniska Högskolan (KTH),

Läs mer

En skola på vetenskaplig grund gränsöverskridande mellan akademi, lärarutbildning och skolpraktik

En skola på vetenskaplig grund gränsöverskridande mellan akademi, lärarutbildning och skolpraktik En skola på vetenskaplig grund gränsöverskridande mellan akademi, lärarutbildning och skolpraktik Stephan Rapp Högskolan för lärande och kommunikation Gränsöverskridande 3. Skolpraktik 1. Lärarutbildning

Läs mer

Trädsökning och datorschack

Trädsökning och datorschack Trädsökning och datorschack Johnny Bigert Nada, KTH johnny@kth.se Datorschack Hobby: schackdatorn Rainman http://www.nada.kth.se/~johnny/chess_comp.html Påbörjad i oktober 2002 Spelar på free internet

Läs mer

Funktionsstudier med derivata

Funktionsstudier med derivata Funktionsstudier med derivata Derivatan ett kraftfullt verktyg för att studera och tolka funktioner Det här avsnittet handlar om att man kan använda derivatan till att bestämma en funktions egenskaper

Läs mer

Kaliningrad) låg vid bägge sidor av floden Pregel samt på

Kaliningrad) låg vid bägge sidor av floden Pregel samt på Grunder i matematik och logik (2018) Grafteori Marco Kuhlmann Grafteori är det område inom matematiken som undersöker egenskaper hos grafer. Inom grafteorin har begreppet graf en annan betydelse än graf

Läs mer

Regression med Genetiska Algoritmer

Regression med Genetiska Algoritmer Regression med Genetiska Algoritmer Projektarbete, Artificiell intelligens, 729G43 Jimmy Eriksson, jimer336 770529-5991 2014 Inledning Hur många kramar finns det i världen givet? Att kunna estimera givet

Läs mer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18 TDDC74 Programmering: Abstraktion och modellering Datortenta - 017-10-7, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis

Läs mer

Schackborgarmärket. Matt med två torn! Namn:

Schackborgarmärket. Matt med två torn! Namn: Schackborgarmärket Matt med två torn! Namn: Samarbete: Matt med två torn I schack gäller det att pjäserna samarbetar så att man kan fånga motståndarens kung. Det är just vad vits torn har lyckats med här.

Läs mer