Informatica. les 7. Slimme (deel II: hoofdstuk 9) versus intelligente (deel III: hoofdstuk 10) algoritmen

Vergelijkbare documenten
Waarmaken van Leibniz s droom

Addendum bij hoofdstuk 5 Generieke implementatie van de zoekalgoritmen

Informatica. les 6. Slimme (deel II: hoofdstuk 5) versus intelligente (deel III: hoofdstuk 9) algoritmen

Informatica. les 6. Slimme (deel II: hoofdstuk 5) versus intelligente (deel III: hoofdstuk 9) algoritmen

Informatica 2e semester

Informatica 2e semester

Informatica 2e semester

Hoofdstuk 9. Beslissingsalgoritmen

Informatica. Deel II & III: les 5. Basis- & slimme algoritmen. Jan Lemeire Informatica deel II & III februari mei Parallel Systems: Introduction

Informatica 2e semester

Informatica. Deel II: les 2. Leibniz - erven - digitaal. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Informatica. Deel II&III: les 7. AI linked lists - chips. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Informatica 2e semester

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Informatica 2e semester

Waarmaken van Leibniz s droom

Informatica. Deel II & III: les 5. Von Neumann, basis- & slimme algoritmen. Jan Lemeire Informatica deel II & III februari mei 2015

Waarmaken van Leibniz s droom

Modelleren en Programmeren

Overerving & Polymorfisme

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Informatica 2e semester

Uitwerking tentamen Algoritmiek 9 juni :00 17:00

Informatica. Deel II&III: les 2. Leibniz - erven - digitaal. Jan Lemeire Informatica deel II&III februari mei Parallel Systems: Introduction

Python (gem=1,86) Java (gem=1,57) Enquete cursus informatica 1e bachelors oefeningen beter aansluiten bij project?

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Elementary Data Structures 3

Waarmaken van Leibniz s droom

Java Programma structuur

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Vakgroep CW KAHO Sint-Lieven

Halma Bot: Monte Carlo versus Alpha-Beta

Informatica. Deel II: les 3. Electronica Arrays. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Uitwerking tentamen Algoritmiek 9 juli :00 13:00

ALGORITMIEK: answers exercise class 7

Ontwerp van Informatiesystemen

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Genetische algoritmen in Java met JGAP

Modelleren en Programmeren

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber

Opgaven Kunstmatige Intelligentie 1 maart 2017

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

NAAM: Programmeren 1 Examen 29/08/2012

Lessen Java: Reeks pag. 1

Zoekproblemen met tegenstanders. Zoekalgoritmen ( ) College 9: Zoeken met een tegenstander (I) Een zoekprobleem met een tegenstander

Intelligente Spelen. Pieter Spronck. TouW Informatica Symposium, Open Universiteit, Universiteit van Tilburg

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Modelleren en Programmeren

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Programmeren in Java 3

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Tentamen in2705 Software Engineering

Ingebouwde klassen & methodes

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Planning. 1. Mini College. 2. Introductiecursus Imperatief Programmeren. 3. Crash and Compile (vanaf 17:00 uur)

IMP Uitwerking week 13

Tentamen Kunstmatige Intelligentie

Examen Datastructuren en Algoritmen II

Zelftest Programmeren in Java

Tentamen Kunstmatige Intelligentie (INFOB2KI)

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, uur

Modelleren en Programmeren

Informatica 2e semester

Computationale Intelligentie Dirk Thierens

Algoritmen abstract bezien

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

Stacks and queues. Hoofdstuk 6

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Een voorbeeld. Computationele Intelligentie Zoeken met een tegenstander. Een voorbeeld vervolg. Een zoekprobleem met een tegenstander

Tentamen Kunstmatige Intelligentie (INFOB2KI)

Kleine cursus PHP5. Auteur: Raymond Moesker

Informatica: C# WPO 11

Zelftest Inleiding Programmeren

Dynamisch Programmeren. Het Rugzakprobleem

Abstracte klassen & Interfaces

Informatica. Deel II&III: les 4. geheugen set, stacks & queues - interfaces. Jan Lemeire Informatica deel II&III februari mei 2015

Mijn project noemt Het Wari-spel. De doelgroep van mijn programma is iedereen die houdt van strategische spelen.

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

Nascholing Algoritmisch Denken. Martin Bruggink Renske Smetsers

Programmeren (1) Examen NAAM:

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Minder Big data Meer AI.

Twaalfde college complexiteit. 11 mei Overzicht, MST

Informatica. Deel II&III: les 1. Java versus Python. Jan Lemeire Informatica deel II&III februari mei Parallel Systems: Introduction

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

(Kunst)Matige intelligentie

Presentatie Michiel. Informaticastage najaar 2004

Datastructuren en Algoritmen voor CKI

Nascholing Algoritmisch Denken. Martin Bruggink Renske Smetsers

Intelligentie: hoe gaan we hier intelligent mee om in de neuropsychologie?

Examen Datastructuren en Algoritmen II

Hoofdstuk 2. Week 4: Datastructuren. 2.1 Leesopdracht. 2.2 Bomen. 2.3 Definitie

Examen Datastructuren en Algoritmen II

Programmeren in C++ Efficiënte zoekfunctie in een boek

VI. Klassen en objecten

Transcriptie:

Informatica les 7 Slimme (deel II: hoofdstuk 9) versus intelligente (deel III: hoofdstuk 10) algoritmen Jan Lemeire Informatica deel II & III februari mei 2014 Parallel Systems: Introduction

Is er een machine die even slim of zelfs slimmer is als de mens!?

HAL Film 1968

Computer HAL

Hoofdstuk 10: Artificiële intelligentie Jan Lemeire Pag. 5 / 94

Waarmaken van Leibniz s droom (10) Artificiële intelligentie (9) Communicatie & internet (8) Operating system (7) Computatietheorie & Software (6) Efficiënt productieproces (5) Hardware architectuur Electronica: (3) relais -schakeling, (4)geheugen (2) Digitaal & binair (1) Het idee Informatica deel III: technologie, historiek en economische aspecten

Wat is intelligentie? Informatie Redeneren Begrijpen Wikipedia: abstract thought, understanding, selfawareness, communication, reasoning, learning, having emotional knowledge, retaining, planning, and problem solving. Taal (noodzakelijk?) Verschil tussen slimme algoritmen en intelligentie! Er is nog geen eenduidige definitie van intelligentie! Jan Lemeire Pag. 7 / 94

Wanneer spreken we over intelligentie? Er is een verschil tussen slimme algoritmen en intelligentie! Veel van wat we intelligent noemen is in feite slechts gebaseerd op een goed doordacht algoritme Intelligentie heeft, volgens mij, te maken met begrijpen Jan Lemeire Pag. 8 / 94

Internet 3.0: het semantische web Internet 1.0: door informatie browsen Internet 2.0: interactiviteit, gebruiker die informatie uploadt Internet 3.0: een web van verbanden tussen informatie op het internet => semantische pagina s Een overzicht van alle staatshoofden van Europa kan alleen beantwoord worden als er een webpagina over bestaat. Ipv enkel informatie, ook inhoud (semantiek - betekenis) datasets combineren en er informatie uithalen Askjeeves.com Vb: who won the latest contest on the turing test? Begrijpen heeft te maken met semantiek, een droom voor het volgende internet. Zijn we daar kortbij? Ik vrees van niet. Jan Lemeire Pag. 9 / 94

De uitvinder van het internet 1989: maakte de eerste webserver en browser 1999: dacht verder: Tim Berners-Lee I have a dream for the Web [in which computers] become capable of analyzing all the data on the Web the content, links, and transactions between people and computers. A Semantic Web, which should make this possible, has yet to emerge, but when it does, the dayto-day mechanisms of trade, bureaucracy and our daily lives will be handled by machines talking to machines. The intelligent agents people have touted for ages will finally materialize. Jan Lemeire Pag. 10 / 94

Turing Test (1950) 'Can machines think? Artificiele intelligentie Kunnen we verschil maken tussen mens en computer? Computer Mens Alan Turing 1912-1954 Hoever staan we? Omdat er geen duidelijke definitie bestaat over wat intelligentie inhoudt en wij als mens prototype zijn van intelligentie, bedacht Turing een test. Door vragen te stellen tracht je te ontdekken of er achter het scherm een computer of mens Informatica bevindt. II: les 7Als we geen verschil meer kunnen maken, kunnen we de Jan Lemeire Pag. 11 / 94 computer intelligent noemen.

Turing test http://www.turinghub.com/ http://www.loebner.net/prizef/loebner-prize.html Je kan je intelligent programma opladen 100.000 dollar als je programma slaagt voor de Turing test http://cleverbot.com/ Communiceer je met een computer of met een mens? Jan Lemeire Pag. 12 / 94

Turing test for bots The idea is to evaluate how we can make game bots, which are Non-Player Characters (NPCs) controlled by AI algorithms, appear as human as possible. Unreal Tournament 2004 (results) tournament against one another and about an equal number of humans tag opponents as human or bot. Jan Lemeire Pag. 13 / 94

Jan Lemeire Pag. 14 / 94

Digibeet-test Computers zijn de stomste dingen die er zijn. Als ik een probleem heb met het gebruik van de computer en hij kan dit kan oplossen, is hij intelligent. Als hij weet wat ik wil. Kunnen we zeggen dat onze computer intelligent is? Begrijpt hij wat we in feite willen? Het is eerder dat wij moeten weten hoe hem te gebruiken (digibeten hebben hier moeite weten). Jan Lemeire Pag. 15 / 94

Piet Vroon Drie soorten hersens Instinct (Hersenstam/hypothalamus - reptielenherses) Conditionering (Limbisch systeem - zoogdierenbrein) Intelligentie (Neocortex meest recente hersens) 1 miljoen jaar geleden: evolutionaire sprong (vuur werktuigen) 50.000 jaar geleden: finale evolutionaire sprong (taal?) Geest is federatie van delen Daden gevolg van combinatie 3 hersens 1990 Jan Lemeire Pag. 16 / 94

Vandaag 1. Artificiële Intelligentie 2. Puzzel 3. NP-complete problemen 4. Leren 5. Spel: minimax 6. Non-zero sum games 7. Artificiële Intelligentie (conclusive)

Schuifpuzzel

p. 108 Puzzel: Tot nu toe Alle mogelijke zetten: zoekboom Score-functie Greedy search Score-optimalisatie met horizon Jan Lemeire Pag. 19 / 94

p. 119 Verdere verbeteringen a) Leren (type 5): zie later b) puzzel rij-per-rij afwerken. Behalve de laatste twee rijen, die tegelijkertijd aanpakken Beperkte horizon OK c) Regels opstellen Type 1 probleem Jan Lemeire Pag. 20 / 94

NP-complete problemen

NP-compleet: traveling salesman problem p. 122 Meest efficiënte volgorde om alle steden af te lopen? 15! = 1.307.674.368.000 mogelijke volgorden Jan Lemeire Pag. 22 / 94

p. 122 NP-compleet Klasse van problemen Voor optimale oplossing: alle mogelijkheden afgaan (Type 3) Met Type 4-oplossingen nooit zeker! Jan Lemeire Pag. 23 / 94

Een goede oplossing Maar niet te bewijzen dat optimaal zie http://ai4r.rubyforge.org/geneticalgorithms.html Jan Lemeire Pag. 24 / 94

Leren

Oplossingsmethoden p. 124 Type 1: De oplossing kan berekend worden met een formule (analytisch). Type 2: Je kunt de oplossing gericht zoeken of construeren (rechttoe-rechtaan). Type 3: Je gaat alle mogelijke actiesequenties af om een oplossing te vinden. Type 4: Door slimme keuzes (heuristieken) te maken, kan je verschillende actiesequenties uitsluiten. Type 5: Je leert al doende welke de juiste keuzes zijn. Jan Lemeire Pag. 26 / 94

p. 124 Kanon richten op doel Opgave: raak doel Instelbare parameter: hoek Feedback: te ver of te kort bij Leren: hoek iets verkleinen of vergroten Risico: oscillatie -> delta hoek goed kiezen α Jan Lemeire Pag. 27 / 94

Leerproces 23 => 27 => 31 => 29 => 30 => 29.5 Convergentie (hopelijk) streven naar convergentie lijkt op nulpunt zoeken! als feedback beperkt is, moet je dalfa zelf uitzoeken Voorbeeld: je komt enkel te weten als raak of niet raak Wordt reinforcement learning genoemd Voordeel: kan zich aanpassen aan wisselende omstandigheden Jan Lemeire Pag. 28 / 94

Varianten Feedback: hoeveel te ver/te kort Je kan delta hoek kiezen evenredig aan fout Meerdere instelparameters: naast hoek ook munitie Jan Lemeire Pag. 29 / 94

Meerdere parameters parameters: variërende kracht en willekeurig gekozen hoek Jan Lemeire Pag. 30 / 94

Kanon richten op wisselende doelen Opgave: kies alfa om gevraagde afstand te bereiken Feedback: behaalde afstand Leren is niet altijd t beste α Jan Lemeire Pag. 31 / 94

Experimentele data Jan Lemeire Pag. 32 / 94

Regressie of curve fitting functie fout distance = 122 + 12.2 angle - 0.166 angle 2 + 0.00015 angle 3 187 distance = 142 + 10.95 angle - 0.14 angle 2 188 distance = 522-4.58 angle 267 distance = 0.042 angle 2 311 distance = 0.00046 angle 3 314 Jan Lemeire Pag. 33 / 94

Leren van hoek= f(afstand) Wanneer: als functie varieert (door wind bvb) Als je afstand tot doel niet kent Als feedback enkel te ver of te dichtbij Kwadratische functie met 3 parameters willekeurige beginwaarden voor de drie parameters Parameters bijstellen na feedback a b c 23.4 6.7 1.4 +5% +5% +5% Jan Lemeire Pag. 34 / 94

Engineering noodzakelijk Inzicht en doordachtheid is noodzakelijk, het vakmanschap van een ingenieur. Er bestaat geen algemene leermethode Of artificiële intelligentie (volgende week!) Jan Lemeire Pag. 35 / 94

Hoe programmeren? niet te kennen, optioneel als vervangvraag

Pijlers van object-georiënteerde programmeertalen I. Encapsulatie 2.4 Conclusies ArrayList versus array p. 34 3.2 Stapel-datastructuur p. 39 5.2 Java s LinkedList p. 52 6.7.2 AVL-boom p. 70 II. Overerving (inheritance) 4.3 FunctieMetAfgeleide-interface p. 47-48 6.7.4 AVLTree subklasse p. 72 III. Polymorfisme en abstractie 4.2 Functie-interface p. 45 8.6 Mapimplementaties p. 97 9.2.2 Abstract zoekalgoritme p.100 9.2.7 Vergelijking van zoekalgoritmes p.110

p. 109 public class Zoekboom<Actie> { } ZoekNode<Actie> root; class ZoekNode<Actie>{ // beschrijving van de boom ZoekNode<Actie> parent; List<ZoekNode<Actie>> children; } // eigenschappen van node ZoekToestand<Actie> toestand; Actie actie; int diepte;

Uitdaging: algemene oplossing onafhankelijk van het specifieke probleem dat je wenst op te lossen! Wat moet je weten om de boom aan te maken? Je moet de mogelijke acties kennen. Met de actie kom je in een nieuwe situatie, je bereikt een nieuwe toestand. Je wilt ook weten of je de gevraagde eindsituatie bereikt hebt. Allemaal operaties op de toestand Jan Lemeire Pag. 39 / 94

ZoekToestand interface public interface ZoekToestand<Actie> { } List<Actie> possiblemoves(); ZoekToestand<Actie> domove(actie actie); boolean isendgoal(); De uitwerking van de methodes is afhankelijk van het probleem Meer moeten we niet weten van het probleem Jan Lemeire Pag. 40 / 94

p. 112 Probleemspecifieke code Link tussen algoritme en probleem gegeven door interface

public class Schuifpuzzel implements ZoekToestand<Schuifpuzzel.Actie>{ public enum Actie { UP, RIGHT, DOWN, LEFT } // enumeratie int breedte, hoogte; // afmetingen van de puzzel int[][] puzzel; // het lege vakje krijgt de waarde 0 int leegvakjerij, leegvakkolom; // coordinaten van het lege vakje /** een schuifpuzzel met een willekeurige begintoestand */ Schuifpuzzel(int breedte, int hoogte){ this.breedte = breedte; this.hoogte = hoogte; puzzel = new int[breedte][hoogte]; // TODO: opvullen met random waarden } /** een schuifpuzzel met een gegeven begintoestand bvb new int[][]{ {0, 5, 2}, {1, 8, 3}, {4, 7, 6}}; */ Schuifpuzzel(int[][] begintoestand){ this.hoogte = begintoestand.length; this.breedte = begintoestand[0].length; puzzel = begintoestand; // TODO: leegvakjerij, leegvakkolom bepalen }

// Methodes van interface } @Override public List<Actie> possiblemoves(){ // TODO Auto-generated method stub return null; } @Override public Schuifpuzzel domove(actie actie){ // TODO Auto-generated method stub return null; } @Override public boolean isendgoal() { // TODO Auto-generated method stub return false; }

p. 111 void expand(int maximalediepte){ if ( diepte < maximalediepte){ List<Actie> acties = toestand.possiblemoves(); for(actie actie: acties){ ZoekToestand<Actie> nieuw = toestand.domove(actie); ZoekNode<Actie> childnode = new ZoekNode<Actie>(nieuw, actie, diepte + 1); children.add(childnode); childnode.expand(maximalediepte);// recursieve oproep } } } Opbouw boom

Nu: generieke oplossing aanmaken zoekboom kan nu algemeen (generiek), onafhankelijk van het specifiek probleem Herbruikbaar Eenvoudiger probleem-specifieke dingen zijn er uit Software engineering Jan Lemeire Pag. 45 / 94

p. 114 Gebruik van code Je geeft concreet object mee met het abstract algoritme public static void main(string[] args) { int[][] begintoestand = new int[][]{ {0, 5, 2}, {1, 8, 3}, {4, 7, 6}}; Schuifpuzzel puzzel = new Schuifpuzzel(beginToestand); Zoekboom<Schuifpuzzel.Actie> zoekboom = new Zoekboom<Schuifpuzzel.Actie>(puzzel); } zoekboom.maakboom(10); ZoekNode<Schuifpuzzel.Actie> oplossing = zoekboom.vindbesteoplossing(); List<Actie> actiesequentie = zoekboom.actiesequentie(oplossing); System.out.println(actieSequentie); Jan Lemeire Pag. 46 / 94

Code herbruikbaar voor analoge problemen p. 112 Implementeer interface Jan Lemeire Pag. 47 / 94

p. 113-114 Depth-first brute force public ZoekNode<Actie> vindbesteoplossing(){ return vindbesteoplossing(root, null); } private ZoekNode<Actie> vindbesteoplossing(zoeknode<actie> node, ZoekNode<Actie> bestenodetotnu){ if (node.toestand.isendgoal()){ if (bestenodetotnu == null bestenodetotnu.diepte > node.diepte) bestenodetotnu = node; // betere gevonden } for(zoeknode<actie> child: node.children) // recursie bestenodetotnu = vindbesteoplossing(child, bestenodetotnu); return bestenodetotnu; } Jan Lemeire Pag. 48 / 94

Visibiliteit van attributen en p. 2 methoden Public: voor iedereen toegankelijk Private: enkel toegankelijk voor de klasse zelf Protected: ook toegankelijk voor subklasses Geen keywoord = package scope vrij toegankelijk binnen package Jan Lemeire Pag. 49 / 94

p. 114 actiesequentie afleiden public List<Actie> actiesequentie(zoeknode<actie> node){ ArrayList<Actie> actiesequentie = new ArrayList<Actie>(); while (node.parent!= null){ actiesequentie.add(0, node.actie); // voeg toe aan de voorkant } } node = node.parent; return actiesequentie; Jan Lemeire Pag. 50 / 94

Vergelijken van algoritmen niet te kennen

Andere zoekalgoritmen Greedy search Score-optimalisatie met horizon Varianten van score We willen deze gaan vergelijken! framework voor zoekalgoritmes die een probleem oplossen Abstractie! Jan Lemeire Pag. 52 / 94

p. 119 Abstract zoekalgoritme Wat willen we doen met algoritme? We moeten het algoritme kunnen starten met een gegeven beginsituatie. Eenmaal het algoritme geëindigd bereikte eindtoestand gevraagde eindsituatie bereikt? de actiesequentie tot de oplossing? het aantal acties (de lengte van de sequentie) de score? Met een score kunnen we ook algoritmen bestuderen die niet de gewenste eindconfiguratie bereiken, maar die in de buurt stranden. Jan Lemeire Pag. 53 / 94

p. 120 public interface ZoekAlgoritme<Actie> { void vindoplossing(zoektoestand<actie> beginsituatie); boolean solutionfound(); List<Actie> actiesequentie(); int aantalacties(); float score(); } ZoekToestand<Actie> bereiktetoestand();

p. 122 p. 120

public class ZoekBruteForce<Actie> implements ZoekAlgoritme<Actie> { int maximalediepte; List<Actie> actiesequentie; ZoekToestand<Actie> eindtoestand; p. 120 public ZoekBruteForce(int maximalediepte){ this.maximalediepte = maximalediepte; } @Override public void vindoplossing(zoektoestand<actie> beginsituatie) { Zoekboom<Actie> zoekboom = new Zoekboom<Actie>(beginSituatie); zoekboom.maakboom(maximalediepte); ZoekNode<Actie> besteoplossing = zoekboom.vindbesteoplossing(); actiesequentie = zoekboom.actiesequentie(besteoplossing); eindtoestand = besteoplossing.toestand; } @Override public boolean solutionfound() { return score() == 0; } @Override public List<Actie> actiesequentie() { return actiesequentie; }

@Override public int aantalacties() { return actiesequentie.size(); } @Override public float score() { return eindtoestand.score(); } @Override public ZoekToestand<Actie> bereiktetoestand() { return eindtoestand; } @Override public String tostring() { return "bruteforce (max "+maximalediepte+")"; } } p. 121

public static void main(string[] args) { p. 122 // definitie van het probleem int[][] begintoestand = new int[][]{ {0, 5, 2}, {1, 8, 3}, {4, 7, 6}}; Schuifpuzzel puzzel = new Schuifpuzzel(beginToestand); // lijst alle beschikbare algoritmes op List<ZoekAlgoritme<Schuifpuzzel.Actie>> algoritmes = new ArrayList<ZoekAlgoritme<Schuifpuzzel.Actie>>(); algoritmes.add( new ZoekBruteForce<Schuifpuzzel.Actie>(10) ); algoritmes.add( new ZoekBruteForce<Schuifpuzzel.Actie>(15) ); // andere algoritmes kunnen hier toegevoegd worden... } // laat alle algoritmes hun werk doen for(zoekalgoritme<schuifpuzzel.actie> alg: algoritmes){ System.out.print("Algoritme "+alg+": "); alg.vindoplossing(puzzel); System.out.println(" vindt oplossing met score "+alg.score() +" te bereiken in "+alg.aantalacties()+" stappen."); }

Spel

p. 126 Spel Je speelt tegen een tegenstander, hebt een aantal acties ter beschikking, speelt om beurten en er is een einddoel of eindscore bepaald. Of varianten hierop. Jan Lemeire Pag. 60 / 94

p. 126 OXO X begint 255.168 possible games Zonder symmetrieen: 26.830 Winst voor X: 131.184 Winst voor O: 77.904 Gelijkspel: 46.080 Jan Lemeire Pag. 61 / 94

p. 127 Schaken Evaluatiefunctie (score) 1. Waarde van de stukken 2. Positie van de koning 3. Controle over het middenveld (de 4 middelste vakjes) 4. Positie van de pionnen Bijvoorbeeld, of ze aaneensluitend gepositioneerd zijn 5. Positie van de stukken bijvoorbeeld, hoeveel de bewegingsvrijheid van elk stuk Jan Lemeire Pag. 62 / 94

p. 127 Minimax Wit & zwart spelen om beurten Score te maximaliseren door wit Wat moet wit doen: links of rechts? 4 White plays 5 6 Black plays 3 4 5 6 White plays 8 7 5 6 7 6 8 9 Black plays 7 6 4 5 8 7 5 3 2 8 3 8 7 9 9 6 Jan Lemeire Pag. 63 / 94

p. 128 Minimax: wat doet zwart? Kiest zet die score minimaliseert White plays Enkel score van de laagste nodes is van belan!!! Black plays White plays Black plays MIN 7 6 4 5 8 7 5 3 2 8 3 8 7 9 9 6 Jan Lemeire Pag. 64 / 94

Minimax: wat doet wit? Kiest zet die score maximaliseert White plays Black plays White plays MAX Black plays MIN 6 7 6 4 7 3 2 3 7 6 4 5 8 7 5 3 2 8 3 8 7 9 9 6 Jan Lemeire Pag. 65 / 94

Minimax: zwart White plays Black plays MIN 6 White plays MAX 6 4 Black plays MIN 7 6 4 5 7 3 7 7 3 2 3 7 6 8 7 5 3 2 8 3 8 7 9 9 6 Jan Lemeire Pag. 66 / 94

Minimax: wit beslist Links geeft score 6 6 White plays MAX Black plays MIN White plays MAX Black plays MIN 6 7 6 6 4 4 5 6 7 8 7 7 3 5 3 2 2 8 3 3 3 8 3 7 7 9 7 6 9 6 Jan Lemeire Pag. 67 / 94

Snoeien van de boom Pruning Alfa-beta pruning: als tegenstander beschikt over een succesvolle actiesequentie => geen zin om dit deel verder te bekijken Voor sommige situaties dieper gaan Regels die hierover beslissen Jan Lemeire Pag. 68 / 94

Computer wint van Mens 1997: IBM s Deep Blue verslaat wereldkampioen Gary Kasparov Nadien enkele revanches van de mens, verschillende gelijke spelen, maar nu wordt geaccepteerd dat de computer sterker is Computer Brute-force search: veel rekenen, weinig redeneren Evalueert 200 millioen posities per seconde Niet goed in strategisch denken Jan Lemeire Pag. 69 / 94

Is dit Artificiële Intelligentie? p. 130 Betwijfel het Jan Lemeire, An Alternative Approach for Playing Complex Games like Chess, Annual machine learning conference of Belgium and The Netherlands (BeneLearn 2008), Spa, Belgium 2008. zie mijn homepage Idee: opportuniteit (patronen) checken of einddoel gehaald kan worden enkel branches nagaan die relevant zijn? Gericht zoeken in boom mogelijk pattern -> Effects(pattern) -> win Jan Lemeire Pag. 70 / 94

Go Strategisch-tactisch bordspel waarbij mens nog steeds wint Regel: als vijandelijke stukken zijn ingesloten => weg Jan Lemeire Pag. 71 / 94

p. 132 Probleem: explosie van staten Stel: voor elke toestand (staat) willen we beste zet leren Schuifpuzzel: 9! mogelijke configuraties Schaken: nog groter Te veel mogelijkheden om te leren! Oplossing: regels gebruiken Als X, doe actie Y X: eigenschap van staat geldt dus voor meerdere staten Leren van relevantie van de regels Jan Lemeire Pag. 72 / 94

Leren van evaluatiefunctie Aanpassen van parameters met behulp van feedback (winst of verlies) Voorbeeld: gewichten van de score-functie Jan Lemeire Pag. 73 / 94

Non-zero sum game

p. 130 Prisoner s dillema Henry & Dave beschuldigd van misdrijf Rechter roept hen apart bij zich en vraagt hen of de ander schuldig is Antwoord bepaalt straf: Jan Lemeire Pag. 78 / 94

Iterative Prisoner s dillema Samenwerken of bedriegen? Iteratief toepassen Op termijn speelt vertrouwen mee Cf vertrouwen op het internet Jan Lemeire Pag. 79 / 94

Jan Lemeire Pag. 80 / 94

Iterative Prisoner s dillema Samenwerken of bedriegen? Wat is beste strategie? Toernooien worden gespeeld Elk duel bestaat uit 100 opeenvolgende beslissingen Winnaar: oog-om-oog, tand-om-tand Voorbeeld: strategie te leren met reinforcement learning Staat = 2/3 laatste beslissingen MEER UITLEG!! Hier reinforcement learning toepassen Jan Lemeire Pag. 81 / 94

Mijn masterproef De evolutie naar coöperatie Egoistische robotjes leren samenwerken omdat het hun wederzijds voordeel oplevert (win-win) Mijn onderzoek: onder welke voorwaarden ontstaat er coöperatie? Jan Lemeire Pag. 82 / 94

Artificiële Intelligentie, de grote uitdaging

Wanneer spreken we over intelligentie? Er is verschil tussen slimme algoritmen en intelligentie! Jan Lemeire Pag. 85 / 94

AI: actuele toepassingen Stemherkenning Spreken met de computer, zullen we/willen we? Objectherkenning Vb: security, gezichtsherkenning in facebook, verkeersbordherkenning Vertalingen Consumentenprofiel adhv historische egevens Grootwarenhuizen Facebook, google: aangepaste reclame Is dit intelligentie?? Jan Lemeire Pag. 86 / 94

Lemeire-test Als mens het kan, moet er een computerprogramma bestaan die het ook kan Programmeren in natuurlijke taal Begrijpen van natuurlijke taal hier achter Jan Lemeire Pag. 87 / 94

Niet in cursus Wat is intelligentie? Marvin Minsky Marvin Minsky Founding father of AI 1927- Ontdekker van artificiele neurale netwerken The Society of Mind theory. Intelligentie ontstaat uit het samenvoegen van vele domme building blocks die elk iets kunnen. Het geheel is intelligent. Jan Lemeire Pag. 90 / 94

Volgens mij Met een graduele verbetering van de huidige technieken komen we er niet Echte ontdekking moet nog gebeuren Hoe we informatie opslaan/verwerken/gebruiken Natuurlijke taal? Waar is het genie die dit gaat ontdekken? Jan Lemeire Pag. 91 / 94

Conclusie voor ingenieur Er is gespecialiseerd onderzoek naar A.I. Maar meestal is engineering nog noodzakelijk Meestal zijn simpele, slimme oplossingen even goed Zware A.I.-technieken nog weinig in gebruik, nog niet voor meteen Gebruik je intelligentie en ingenioziteit om adequate oplossing te vinden Jan Lemeire Pag. 92 / 94

Willen we wel een slimme computer? Die beslissingen voor ons neemt In de film 2001 neemt de computer HAL de controle over van het ruimteschip en negeert de bevelen van de mens Voorbeeld: slimme paperclip van Windows Office Assistant 1997-2004 Controlekamer van chemisch bedrijf/kerncentrale Computer die fouten analyseert en beslist wat er moet gebeuren Nog een voorbeeld: automatische piloot (vliegtuig) => auto?? Jan Lemeire Pag. 93 / 94