Uporaba genetskih algoritama u razvoju jednostavne umjetne inteligencije
Uporaba genetskih algoritama u razvoju jednostavne umjetne inteligencije Marko Deak Voditelj: Prof. dr. sc. Domagoj Jakobović
Sadržaj 1) Uvod (GA i umjetna inteligencija) 2) Opis problema i rješenja 3) Rezultati 4) Zaključak 1/15
Genetski algoritmi Stohastička metoda optimizacije Spadaju u veću skupinu evolucijskih algoritama Simuliranjem procesa evolucije pretražuju rješenja iz određene generirane populacije 2/15
Ključne točke genetskih algoritama Generiranje početne populacije Funkcija dobrote (engl. fitness function) Selekcija Genetski operatori – križanje (binarni) - mutacija (unarni) Uvjet zaustavljanja 3/15
Umjetna inteligencija “Znanost i inženjerstvo izrade inteligentnih strojeva” – John Mc. Carthy Osnovna teza – inteligencija (ili svijest) može se tako precizno opisati da ju stroj može simulirati Primjer komercijalne primjene - računalne igre 4/15
Inspiracija – Tetris AI (autor: Bai Li) 5/15
Parametri umjetne inteligencije za igranje Tetrisa Ocjena svakog poteza koji je trenutno moguć provodi se preko formule: A*(ukupna visina)+B*(broj maknutih blokova) + C*(broj rupa) + D*(broj blokada) Zatim se provodi potez s najvišom ocjenom Koeficijenti A, B, C i D predmet su optimizacije genetskim algoritmom 6/15
Konačna vrijednost parametara Tetris. AI nakon optimizacije ◦ ◦ A = -3. 71 (pretpostavljeno -0. 03) B = -1. 87 (pretpostavljeno +8. 0) C = -4. 79 (pretpostavljeno -7. 5) D = +1. 4 (pretpostavljeno -3. 5) Velike razlike od onoga kako je programer postavio parametre, neke nelogičnosti, ali ukupno BOLJI REZULTATI 7/15
Opis problema Postavljen cilj: razviti umjetnu inteligenciju koja je sposobna igrati ajnc (engl. blackjack) Ideja: iskoristiti poznatu metodu brojanja karata Stvara se problem postavljanja parametara, tj. vrijednosti karata i odluka (jako velik prostor rješenja) 8/15
Primjena GA na problem ajnca Predmet optimizacije su vrijednosti karata korištene pri brojanju, te reakcije na sume dobivene brojanjem karata Simulira se igra koristeći program pisan u programskom jeziku C, te se na kraju najbolja jedinka testira igrom protiv korisnika programom pisanim u Javi 9/15
Kratki opis GA Nasumično generirana populacija originalno sa 400 jedinki Turnirska selekcija Funkcija dobrote detaljnije opisana kasnije Uvjet zaustavljanja je broj generacija (originalno 500) 10/15
Funkcija dobrote Unaprijed se generira 15 “špilova” Svaka jedinka na svakom od tih 15 “špilova” samo vuče karte, zaustavlja se kad misli da je prikladno, te se njenom konačnom broju bodova u ruci pridjeljuje neka ocjena Ukupna vrijednost funkcije dobrote je suma svih ocjena postignutih na svim “špilovima” 11/15
Ocjene za pojedine brojeve bodova BROJ BODOVA OCJENA >21 -50 21 25 19, 20 10 17, 18 5 15, 16 -20 12, 13, 14 -40 12/15
Ovisnost dobrote najbolje jedinke o parametrima GA (1/2) -2400 100 200 300 400 500 600 700 800 900 1000 -2500 Dobrota najbolje jedinke -2600 -2700 -2800 -2900 -3000 -3100 Broj generacija 13/15
Ovisnost dobrote najbolje jedinke o parametrima GA (2/2) -500 100 200 300 400 500 600 700 800 900 1000 -1000 Dobrota najbolje jedinke -1500 -2000 -2500 -3000 -3500 Broj jedinki 14/15
Konačni rezultati – igra protiv korisnika U 30 odigranih ruku, umjetna inteligencija je 11 puta bila bolja od korisnika, a korisnik od nje 14 puta Također je bila 8 puta bolja od djelitelja (korisnik 10) Zaključak testa: prilično jednostavan model nakon optimizacije genetskim algoritmom uspijeva polučiti rezultate slične ljudskima 15/15
HVALA VAM NA PAŽNJI ! . . . a sad pitanja (ako ih imate)
- Slides: 17