Professional Documents
Culture Documents
Digobr Dokumentacija
Digobr Dokumentacija
PROJEKT
MEMORY AI
1 UVOD......................................................................................................................................1
2 Opis tehnologije.......................................................................................................................2
2.1 Tehnologije.......................................................................................................................2
2.2 Python...............................................................................................................................2
3 Treniranje modela.....................................................................................................................4
3.1 Uvod..................................................................................................................................4
4 Razvoj aplikacije......................................................................................................................7
4.1 Uvod..................................................................................................................................7
4.2 Igra....................................................................................................................................7
5 ZAKLJUČAK........................................................................................................................13
LITERATURA..............................................................................................................................14
1 UVOD
Strojno učenje je jedna od najbrže rastućih grana IT sektora. Mnogi izazovi koji su prije bili
gotovo pa nemogući postaju mogući korištenjem strojnog učenja te je upravo to razlog zašto se
sve više ljudi bavi tim sektorom. Postoji značajna razlika između čovjekove inteligencije i
računalne inteligencije ali obje proizlaze iz naučenih činjenica. Kao što malo dijete nauči igrati
ovu igru sistemom pokušaja i pogrešaka tako će na sličan način i ovaj model naučiti postizati
vrlo visoke rezultate u ovoj igri. Svrha ovog seminara je kreirati model koji će sam naučiti igrati
vrlo poznatu igru zmija.
1
2 Opis tehnologije
2.1 Tehnologije
2.2 Python
Python je programski jezik opće namjene, interpretiran i visoke razine kojeg je stvorio Guido
van Rossum 1990. godine. Prednost ovog jezika kod strojnog učenja je jednostavnost pisanja te
postojanje mnogih funkcija koje uvelike olakšavaju mnoge zadatke. Jednostavan primjer Python
programa možemo vidjeti na slici 1.
Poticajno učenje je područje strojnog učenja u kojemu program računa moguće akcije koje može
obaviti i odabire onu koja pruža najveću nagradu. Može se objasniti i tako da poticajno učenje
pomaže programu naučiti kako se ponašati u određenom naučenom okolišu. Jednostavan primjer
Poticajnog učenja možemo vidjeti na slici 2.
2
Slika 2 Primjer poticajnog učenja
Duboko Q-učenje se također klasificira kao strojno učenje a u našem slučaju će poslužiti za
predviđanje akcija u samoj igri pomoću već poznatog principa dubokih neuronskih mreža. Na
slici 3 možemo vidjeti kako se pomoću duboke neuronske mreže može naučiti model da za svaku
unesenu vrijednost odabere određenu akciju.
3
3 Treniranje modela
3.1 Uvod
Postupak učenja modela da samostalno nauči najbolji mogući način za igranje ove igrice se
temelji na gore spomenute dvije tehnologije ali ako zanemarimo određene faktore i
pojednostavnimo možemo reći da će model naučiti na sistemu pokušaja i pogrešaka.
Za treniranje je potrebno pokrenuti igru kroz agenta koji će kordinirati pokretanje igre,
zapisivanje bodova te pokretanje file-a model koji stvara graf sa slike 4. Možemo primijetiti da
prvih nekoliko pokušaja se nije dogodio niti jedan pogodak u hranu dok model nije naučio da
udarac u rub prozora završava pogibeljno. Rezultati koje model trenutno ostvaruje nisu značajni
ali je vidljiv napredak. Značajniji rezultati će biti vidljivi u sljedećim fazama treniranja.
4
3.3 Prijelazno stanje
U sljedećoj fazi se jasno vidi kako je model naučio neka osnovna pravila igre te kako napreduje
u odnosu na nekoliko početnih igri gdje je rezultat bio jako blizu nuli a sada nakon 80+ pokušaja
je rezultat već prešao 40 kao što vidimo na slici 5. Rezultat ne može rasti u nedogled te je vrlo
važan faktor veličina polja na kojem se odvija igra te je ono u ovom slučaju 500*500 piksela.
Konačno stanje je treća te ujedno i zadnja faza učenja modela. Glavna karakteristika ove faze po
čemu ujedno možemo i prepoznati da je model završio s učenjem je opadanje trenda rasta broja
konačnih bodova nakon terminiranja igre što je vidljivo na grafu sa slike 6.
5
Slika 6 Konačno stanje
6
4 Razvoj aplikacije
4.1 Uvod
4.2 Igra
Potrebno je razviti igru neovisno o modelu jer model pristupa igri kao i što bih joj pristupao i
stvarni igrač. Na donjoj slici 7 vidimo primjer pokrenute igre. Sučelje je vrlo jednostavno jer
naglasak seminara nije na samoj igri već na modelu samostalnog treniranja. Igra se sastoji od
polja na kojem se igra, zmije i hrane koja se pojavljuje na slučajno odabranim lokacijama unutar
polja.
7
Slika 7 Primjer igre
U slučaju našeg programa imamo četiri glavne datoteke: igra, agent, helper te sami model. Na
slikama 8, 9, 10, 11 i 12 možemo vidjeti te datoteke. File igra sadrži logiku same igre kao što su
funkcije kretanja, sudara s hranom i ažuriranje korisničkog sučelja. Agent je programska logika
koja preuzima funkciju stvarnog igrača ili čovjeka te sadrži funkciju treniraj u kojoj se nalazi sve
sto je bitno za spremanje naučenog znanja i sličnih funkcionalnosti. Helper ne sadrži logiku već
služi za adekvatan prikaz grafa u kojemu možemo vidjeti postupak učenja modela.
8
Slika 8 File igra
9
Slika 9 File agent
10
Slika 11 File model(Linear QNet)
11
Ova klasa, nazvana Linear_QNet, predstavlja arhitekturu neuronske mreže za Q-learning učenje.
U metodi forward, ulazni podaci prolaze kroz dva linearna sloja (eng. linear layers) s
aktivacijskom funkcijom „relu“ između njih. Ova mreža se koristi za procjenu Q-vrijednosti
(vrijednosti akcija) za stanja u okolini. Također, klasa ima metodu save koja omogućuje
spremanje težina mreže u datoteku kako bi se mogla ponovno koristiti za učenje ili uporabu u
okruženju igre. Osim toga, model sadrži i drugi skriveni sloj koji se naziva tajni i koristi se za
povećanje kapaciteta modela i poboljšanje njegove sposobnosti za učenje.
12
Slika 12 File model(QTrainer)
Ova klasa, nazvana QTrainer, odgovorna je za treniranje neuronske mreže za Q-učenje (Deep Q-
Learning). Konstruktor klase prima tri argumenta: model (neuronska mreža za procjenu Q-
vrijednosti), lr (stopa učenja), i gamma (faktor diskontiranja). Treniranje se provodi u metodi
train_step, koja prima pet argumenata: state, a, nagrada, next_state i done.
Unutar train_step, ulazni podaci se pripremaju za učenje, tj. konvertiraju se u tenzore. Ako je
ulazni tenzor dimenzionalnosti 1, dodaju se dodatne dimenzije kako bi se omogućilo
višedimenzionalno računanje. Nakon toga, koristi se neuronska mreža model za izračun Q-
vrijednosti za trenutno stanje pred.
Koristi se "target" Q-vrijednost koja se izračunava prema Q-vrijednosti sljedećeg stanja i faktoru
diskontiranja gamma. Ako igra nije završena (done je False), Q-vrijednost se ažurira s faktorom
diskontiranja.
U konačnici, metoda train_step ažurira težine neuronske mreže kako bi se poboljšalo ponašanje
agenta u okolini tijekom učenja.
13
5 ZAKLJUČAK
U ovome radu prezentiran je model učenja igranja računalne igre. Nakon što je program razvijen,
moguće je primijetiti da predstavlja vrlo zanimljiv koncept primjenjiv na gotovo sve u
svakodnevnom životu, i to pogotovo u svrhe obavljanja naočigled jednostavnih zadataka za
čovjeka koji oduzimaju mnogo vremena. Treba još naglasiti kako ovakvi algoritmi mogu uvelike
pridonijeti bržem rješavanju brojnih inženjerskih problema u svakodnevnom radu.
14
LITERATURA
15