You are on page 1of 17

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

PROJEKT

MEMORY AI

Mario Marasović, Mia Stojak, Laura Abramović,


Hrvoje Hrvoj

Zagreb, siječanj 2024.


Sadržaj

1 UVOD......................................................................................................................................1

2 Opis tehnologije.......................................................................................................................2

2.1 Tehnologije.......................................................................................................................2

2.2 Python...............................................................................................................................2

2.3 Poticajno učenje................................................................................................................2

2.4 Duboko Q-učenje..............................................................................................................3

3 Treniranje modela.....................................................................................................................4

3.1 Uvod..................................................................................................................................4

3.2 Početno stanje...................................................................................................................4

3.3 Prijelazno stanje................................................................................................................5

3.4 Konačno stanje..................................................................................................................5

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

Tehnologije koje su korištene za treniranje modela su Poticajno učenje i Duboko Q-učenje te je


korišteni programski jezik Python.

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.

Slika 1 Primjer Python programa

2.3 Poticajno učenje

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

2.4 Duboko Q-učenje

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.

Slika 3 Primjer dubokog Q-učenja

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.

3.2 Početno stanje

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.

Slika 4 Početno stanje

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.

Slika 5 Prijelazno stanje

3.4 Konačno stanje

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

Program se nalazi lokalno na računalu te je za samo treniranje također dovoljno prosječno


osobno računalo uzmemo li u obzir da se igre ne odvijaju paralelno te zbog toga nisu zahtjevne
za hardver prijenosnog računala. Jedini nedostatak treniranja modela na osobnom računalu je što
u koliko stavimo pre veliku brzinu kretanja same zmije može doći do preopterećenja te je stoga
nužno ne postavljati brzinu na više od 100. Nakon što je učenje uspješno izvršeno možemo
primijetiti da se počinju ponavljati rezultati veći od 40 gotovo svaki put.

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

Slika 10 File helper

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.

Nakon izračuna "target" Q-vrijednosti, optimizator se koristi za minimizaciju srednje kvadratne


pogreške između "target" Q-vrijednosti i predviđenih Q-vrijednosti. Ovaj proces pomaže
neuronskoj mreži da nauči bolje procjenjivati Q-vrijednosti akcija za različita stanja.

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

[1] N.N.: „Poticajno učenje“ s Interneta, https://www.geeksforgeeks.org/what-is-reinforcement-


learning/.

[2] N.N.: „Duboko Q-učenje“ s Interneta, https://towardsdatascience.com/deep-q-learning-tutorial-


mindqn-2a4c855abffc

[3] N.N.: „Python“ s Interneta, https://www.python.org/about/help/

15

You might also like