Magistarski Printing Draft

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 77

Univerzitet Donja Gorica

Fakultet za međunarodnu ekonomiju, finansije i biznis


Postdiplomske studije "EMOS"

Mašinsko učenje sa primjenom u medicini

MAGISTARSKI RAD

Student: Luka Račić


Broj dosijea: 18/078e

Podgorica, septembar 2020.


Univerzitet Donja Gorica
Fakultet za međunarodnu ekonomiju, finansije i biznis
Postdiplomske studije "EMOS"

Mašinsko učenje sa primjenom u medicini

MAGISTARSKI RAD

Mentor: doc. dr Tomo Popović Student: Luka Račić


Broj dosijea: 18/078e

Podgorica, septembar 2020.


PODACI I INFORMACIJE O MAGISTRANTU
Ime i prezime: Luka Račić
Datum i mjesto rođenja: 24.06.1997, Berane, Crna Gora
Naziv završenog osnovnog studijskog programa i godina diplomiranja:
Fakultet za informacione sisteme i tehnologije, Podgorica, 2018.

INFORMACIJE O MAGISTARSKOM RADU


Fakultet za međunarodnu ekonomiju, finansije i biznis
Postidoplomske studije
Smjer: Evropski master zvanične statistike (EMOS)
Naslov rada: Mašinsko učenje sa primjenom u medicini

OCJENA I ODBRANA MAGISTARSKOG RADA


Datum prijave magistarskog rada: 30. jun 2020.
Datum sjednice Vijeća univerzitetske jedinice na kojoj je prihvaćena tema: 9. jul 2020.
Komisija za ocjenu teme: doc. dr Tomo Popović, prof. dr Ivana Ognjanović, doc. dr Marko
Simeunović
Mentor: doc. dr Tomo Popović
Komisija za ocjenu rada:
Komisija za odbranu rada:
Datum odbrane:
Datum promocije:
Apstrakt

Vještačka inteligencija se kao naučna oblast pojavila još u pedesetim godinama prošlog
vijeka, ali nagli porast popularnosti i prisutnosti je doživjela u prethodnih desetak godina.
Povećanje računarske moći i velika količina dostupnih podataka, neki su od glavnih razloga
za to. Vještačka inteligencija, zajedno sa svojim podoblastima Mašinskim i Dubokim
učenjem, svoju primjenu nalazi u sve većem broju oblasti, kao na primjer ekonomija,
marketing, poljoprivreda, itd. Između ostalog, sve više svoju primjenu nalazi u medicini,
naročito u oblastima medicine koje raspolažu sa velikom količinom podataka, uključujući i
biomedicinske slike. Utvrđeno je da primjena i korišćenje Mašinskog učenja u oblastima kao
što su radiologija, kardiologija i druge poboljšava tačnost i dosljednost odluka u dijagnostici.
U ovom radu opisani su osnovni pojmovi i algoritmi koji se koriste u Mašinskom učenju i
objašnjen je način na koji rade. Dato je objašnjenje načina rada Konvolucionih neuronskih
mreža, algoritma Dubokog učenja, koji se najviše koristi za obradu i analizu slika. U
praktičnom dijelu, ovaj rad opisuje upotrebu, algoritama Mašinskog učenja u obradi
rentgenskih snimaka grudnog koša, kako bi se donijela tačna dijagnoza na osnovu snimaka.
Napravljen je model Dubokog učenja, za obradu i klasifikaciju slika, zasnovan na
Konvolucionim neuronskim mrežama. Primarni zadatak modela jeste da odredi da li na slici
snimka ima znakova upale pluća ili ne i da na osnovu toga slike klasifikuje u odgovarajuću
grupu.

Abstract

Artificial intelligence appeared as a scientific field in the fifties of the last century, but it
experienced a sudden increase in popularity and presence in the previous ten years. Increase
in computing power and the large amount of data available are some of the main reasons for
this. Artificial intelligence, together with its subfields of Machine and Deep Learning, finds
its application in an increasing number of areas, such as economics, marketing, agriculture,
etc. Artificial intelligence a is increasingly used in medicine, especially in the fields in which
large amounts of data are available, such as biomedical images. The application and use of
Machine Learning in areas such as radiology, cardiology and others can significantly improve
the accuracy and consistency of decisions. This thesis describes the basic concepts and
algorithms used in Machine Learning and explains how they work. An explanation of the
operation of Convolutional Neural Networks, a Deep Learning algorithm, which is mostly
used for image processing and analysis, is given. This research describes the use of the
previously mentioned Machine Learning algorithms in the processing of chest X-rays, in
order to make an accurate diagnosis based on the images. A Deep learning model, for image
processing and classification, based on Convolutional neural networks, was developed. The
primary task of the model is to determine whether there are signs of pneumonia in the image
or not and to classify the images into an appropriate group based on that.
SADRŽAJ
APSTRAKT............................................................................................................................................................I
SADRŽAJ.............................................................................................................................................................III
POPIS SLIKA, GRAFIKA I TABELA.............................................................................................................IV
1. UVOD............................................................................................................................................................1
1.1. PREDMET I CILJ RADA.......................................................................................................................2
1.2. IZVORI PODATAKA I METODE PRIKUPLJANJA....................................................................................2
1.3. SADRŽAJ I STRUKTURA RADA...........................................................................................................3
2. VJEŠTAČKA INTELIGENCIJA...............................................................................................................4
2.1. GODIŠNJA DOBA VJEŠTAČKE INTELIGENCIJE....................................................................................4
2.1.1. Proljeće: Rađanje Vještačke inteligencije...................................................................................4
2.1.2. Ljeto i zima: Uspon i pad Vještačke inteligencije.......................................................................5
2.1.3. Jesen: Povratak Vještačke inteligencije......................................................................................5
2.2. PODOBLASTI VJEŠTAČKE INTELIGENCIJE..........................................................................................6
2.3. PRIMJENA MAŠINSKOG UČENJA U ZVANIČNOJ STATISTICI EVROPSKE UNIJE...................................7
3. MAŠINSKO UČENJE.................................................................................................................................9
3.1. NADGLEDANO UČENJE....................................................................................................................12
3.1.1. Klasifikacija...............................................................................................................................12
3.1.2. Regresija....................................................................................................................................20
3.2. NENADGLEDANO UČENJE................................................................................................................21
3.2.1. Grupisanje.................................................................................................................................22
3.2.2. Otkrivanje anomalija.................................................................................................................24
3.3. POJAČANO UČENJE..........................................................................................................................24
3.3.1. Markovljev proces donošenja odluka........................................................................................25
3.3.2. Q- učenje...................................................................................................................................27
4. DUBOKO UČENJE I NEURONSKE MREŽE.......................................................................................29
4.1. KONVOLUCIONE NEURONSKE MREŽE (CNN).................................................................................32
4.1.1. Operacija Konvolucije (Konvolucioni slojevi).........................................................................34
4.1.2. Sloj sažimanja (Pooling layer)..................................................................................................37
4.1.3. Potpuna povezanost (Potpuno povezani sloj)............................................................................39
5. PRIMJENA MAŠINSKOG UČENJA U MEDICINI.............................................................................41
5.1. PRIMJENA MAŠINSKOG UČENJA U GASTROENTEROLOGIJI..............................................................43
5.2. PRIMJENA MAŠINSKOG UČENJA U RADIOLOGIJI.............................................................................43
5.3. PRIMJENA MAŠINSKOG UČENJA U KARDIOLOGIJI...........................................................................44
6. PRIMJER PRIMJENE DUBOKOG UČENJA ZA DETEKCIJU PNEUMONIJE............................47
6.1. SKUP PODATAKA I PROCES PRIPREME ZA TRENING.........................................................................47
6.2. METODE RJEŠAVANJA PROBLEMA..................................................................................................50
6.3. EVALUACIJA I ANALIZA REZULTATA..............................................................................................53
7. ZAKLJUČAK.............................................................................................................................................58
LITERATURA.....................................................................................................................................................60
PRILOG................................................................................................................................................................64
PRILOG 1 – OPERATIVNO OKRUŽENJE............................................................................................................64
PRILOG 2 - IZVORNI KOD EKSPERIMENTA......................................................................................................64
Popis slika, grafika i tabela
SLIKA 1. INVESTICIJE U KOMPANIJE FOKUSIRANE NA PRIMJENU VJEŠTAČKE INTELIGENCIJE U ZDRAVSTVU..........1
SLIKA 2. ODNOS VJEŠTAČKE INTELIGENCIJE, MAŠINSKOG UČENJA I DUBOKOG UČENJA..........................................6
SLIKA 3. OSNOVNE PODOBLASTI VJEŠTAČKE INTELIGENCIJE..................................................................................7
SLIKA 4. TRADICIONALNO PROGRAMIRANJE............................................................................................................9
SLIKA 5. MAŠINSKO UČENJE...................................................................................................................................10
SLIKA 6. MODEL ZA PREPOZNAVANJE NEPOŽELJNIH MEJLOVA..............................................................................10
SLIKA 7. KORACI U KREIRANJU MODELA MAŠINSKOG UČENJA..............................................................................11
SLIKA 8. PODJELA ALGORITAMA MAŠINSKOG UČENJA..........................................................................................11
SLIKA 9. MODEL ZA PREDVIĐANJE CIJENE AUTOMOBILA.......................................................................................12
SLIKA 10. KORACI K-NN........................................................................................................................................14
SLIKA 11. SIGMOIDNA FUNKCIJA............................................................................................................................15
SLIKA 12. LOGISTIČKA REGRESIJA.........................................................................................................................15
SLIKA 13. STABLO ODLUČIVANJA...........................................................................................................................16
SLIKA 14. ALGORITAM SLUČAJNE ŠUME................................................................................................................17
SLIKA 15. RAZLIKA IZMEĐU LR (LIJEVO) I SVM (DESNO)....................................................................................18
SLIKA 16. PRIMJER POTPORNIH VEKTORA..............................................................................................................19
SLIKA 17. UTICAJ EKSTREMNIH VRIJEDNOSTI NA SVM I LR.................................................................................19
SLIKA 18. LINEARNA REGRESIJA............................................................................................................................21
SLIKA 19. PRIMJER GRUPISANJA SA K- SREDNJIH VRIJEDNOSTI.............................................................................23
SLIKA 20. POJEDNOSTAVLJENI PROCES POJAČANOG UČENJA.................................................................................25
SLIKA 21. PRIMJER MARKOVLJEVOG LANCA.........................................................................................................26
SLIKA 22. MARKOVLJEV PROCES DONOŠENJA ODLUKA.........................................................................................27
SLIKA 23. BIOLOŠKI NEURON I VJEŠTAČKI NEURON...............................................................................................29
SLIKA 24. RELU (LIJEVO) I LEAKYRELU (DESNO)................................................................................................30
SLIKA 25. TLU (THRESHOLD LOGIC UNIT).............................................................................................................31
SLIKA 26. MULTILAYER PERCEPTRON (MLP)........................................................................................................31
SLIKA 27.PRIMJER ARHITEKTURE KONVOLUCIONE NEURONSKE MREŽE................................................................34
SLIKA 28. ULAZNA SLIKA (MATRICA A)................................................................................................................35
SLIKA 29. FILTER (MATRICA VELIČINE 3X3).........................................................................................................35
SLIKA 30. PRIMJER PROCESA KONVOLUCIJE...........................................................................................................36
SLIKA 31. REZULTAT PRVOG KORAKA MNOŽENJA MATRICE A I FILTERA.............................................................36
SLIKA 32. KONVOLUCIONI SLOJEVI........................................................................................................................37
SLIKA 33. MAX POOLING........................................................................................................................................38
SLIKA 34. PROCES RAVNANJA................................................................................................................................39
SLIKA 35. POTPUNA POVEZANOST..........................................................................................................................40
SLIKA 36. NAČINI PRIKUPLJANJA PODATAKA O PACIJENTIMA................................................................................42
SLIKA 37. ULOGA VJEŠTAČKE INTELIGENCIJE U KARDIOVASKULARNOJ MEDICINI................................................45
SLIKA 38. PROCES PRIMJENE MAŠINSKOG UČENJA U MEDICINI.............................................................................46
SLIKA 39. SLIKE SNIMAKA SA PNEUMONIJOM (GORE) I SLIKE SNIMAKA ZDRAVIH PLUĆA (DOLJE).......................48
SLIKA 40. BROJ SLIKA U SKUPU PODATAKA...........................................................................................................49
SLIKA 41. ARHITEKTURA KONVOLUCIONE NEURONSKE MREŽE OVOG ISTRAŽIVANJA..........................................51
SLIKA 42. MODEL.SUMMARY() MODELA KORIŠĆENOG ZA OVO ISTRTAŽIVANJE.....................................................52
SLIKA 43. PRECIZNOST TRENINGA I VALIDACIJE....................................................................................................53
SLIKA 44. GUBITAK TRENINGA I VALIDACIJE.........................................................................................................54
SLIKA 45. MATRICA KONFUZIJE MODELA...............................................................................................................55
SLIKA 46. DOBRO KLASIFIKOVANE SLIKE..............................................................................................................56
SLIKA 47. LOŠE KLASIFIKOVANE SLIKE..................................................................................................................57
1. Uvod

Primjena Vještačke inteligencije sa njenim podoblastima, Mašinskim i Dubokim učenjem,


je sve rasprostranjenija u svim aspektima industrije i života oko nas. Lista oblasti koje
prihvataju ove tehnologije se iz dana u dan povećava. To ne treba da čudi, jer mogućnosti i
potencijal koji ove tehnologije imaju je enorman. Mogućnosti automatizacije određenih
procesa, uspješnog predviđanja i projekcije, jaki su argumenti za primjenu naprednih
algoritama za mašinsko učenje. Ovo se posebno odnosi na oblasti gdje ima velike količine
dostupnih podataka [1,2,3].

Jedna od ovih oblasti, gdje primjena Mašinskog učenja ima ogroman potencijal, jeste
medicina [3,4,5]. Dostupnost velike količine podataka iz medicine je primarni razlog za to.
Korišćenjem novih tehnologija (telefona, pametnih satova, raznih izvora digitalnih slika u
dijagnostici, primjene računara i senzorike u laboratorijama) taj broj podataka će se samo
povećavati. Može se reći da je ovo raj za mašinsko učenje, jer ono direktno zavisi od količine
i kvaliteta dostupnih podataka.

Pored ovoga medicina ima jednu važnu karakteristiku. Ljudski organizam je prilično
predvidljiv, tj. razvoj bolesti, reagovanje na tretmane i liječenje, ima pravilnosti i može se u
dobroj mjeri predvidjeti. Zbog ovoga ne čudi što izvještaj Evropskog Instituta za Inovacije i
Tehnologiju, odsjek Zdravlje (EIT Health), pokazuje jasno povećanje investicija u kompanije
fokusirane na primjenu Vještačke inteligencije u zdravstvu (Slika 1) [6].

Slika 1. Investicije u kompanije fokusirane na primjenu Vještačke inteligencije u zdravstvu

1
Izvor: Transforming healthcare with AI [6]
U ovom radu biće opisano Mašinsko učenje i njegova primjena u medicini. Poseban
akcenat je stavljen na Duboko učenje (podoblast Mašinskog učenja). Duboko učenje,
posebno Konvolucione neuronske mreže, proteklih nekoliko godina nose krunu šampiona
kada je u pitanju analiza slika.

U radu će biti opisan primjer primjene modela Dubokog učenja, baziranog na


Konvolucionim neuronskim mrežama, za prepoznavanje i klasifikaciju upale pluća na
snimcima.

1.1. Predmet i cilj rada


Cilj ovog rada jeste da čitaocu prvo teoretski objasni na koji način funkcioniše Mašinsko
učenje, zajedno sa Dubokim učenjem, i da pojasni primjenu i način rada Vještačkih
neuronskih mreža, na kojem se zasniva Duboko učenje. Pored toga, rad treba da ukaže na
potencijal koji primjena ovih tehnologija ima, sa akcentom na medicinu, ali i zvaničnu
statistiku EU.

Na kraju, cilj jeste da se objasni kako uz pomoć programskog jezika Python, i framework-a
i biblioteka, može da se napravi model za prepoznavanje i klasifikaciju slika.

1.2. Izvori podataka i metode prikupljanja


Osnov dokumentacije korišćene za istraživanje čini velik broj naučnih radova i knjiga,
većinom stranih autora. Veliki broj naučnih radova se objavljuje iz oblasti Mašinskog i
Dubokog učenja, što je olakšavajuća okolnost, jer nije teško naći kvalitetnu literaturu.

Baza podataka koja je korišćena u sebi sadrži fotografije rendgenskih snimaka pluća
pacijenata. Baza ja preuzeta sa Kaggle.com 1sajta. Sajt Kaggle je korišćen, jer predstavlja
jednu od najvećih mreža korisnika Vještačke inteligencije na kojoj se može naći veliki broj
setova podataka.

Okruženje koje je korišćeno u izradi praktičnog dijela je Anaconda. Uključeni u nju su


Jupyter Notebook2, Python3, TensorFlow4, Keras5 i pomoćni alati. Ovi alati i biblioteke su
velika olakšica pri kreiranju Konvolucionih neuronski mreža i kada je u pitanju analiza slike.

1
https://www.kaggle.com/
2
https://jupyter.org/
3
https://www.python.org/
4
https://www.tensorflow.org/
5
https://keras.io/

2
Osnovni zadatak praktične realizacije prilikom izrade ovog rada jeste da se pomoću ovih
tehnologija kreira model čiji će rezultati biti analizirani. Takođe, zadatak je da se pokaže da
se korišćenjem ovih tehnologija, prvenstveno algoritmima i tehnikama Dubokog učenja,
može doći do korisnih rezultata koji se uz unaprijeđenje mogu koristiti u praksi kao podrška
procesu donošenja odluka ili njegovoj automatizaciji.

1.3. Sadržaj i struktura rada


Ovaj rad je podijeljen u šest djelova, ne uključujući uvodni dio. Prvi dio rada za zadatak
ima da objasni razvojni put Vještačke inteligencije, odnosno kako su se ona i njene
podoblasti razvijale vremenom.

Drugi i treći dio pružaju glavne informacije vezane za Mašinsko i Duboko učenje, kao i
Neuronske mreže. Tu su obrađeni osnovni pojmovi, algoritmi, njihova primjena.

Četvrti dio za zadatak ima da napravi pregled na koji način se mašinsko učenje može sve
primijeniti u medicini, odnosno kako se već primjenjuje. Pored toga treba da ukaže na to koju
su benefiti kako za ljekare, tako i za pacijente.

Peti dio sadrži informacije i pojašnjenja vezana za kreiranje i implementaciju modela za


prepoznavanje i klasifikaciju slika rentgenskih snimaka.

I na kraju rada se nalazi zaključak u kojem su prodiskutovani rezultati dobijeni


eksperimentom i dalji pravci istraživanja.

3
2. Vještačka inteligencija

Homo sapijens, smatra se da smo svi pripadnici ove vrste, vrste „razumnog čovjeka“ [7].
Mišljenja smo da nas upravo razum, inteligencija i mogućnost prilagođavanja razlikuju od
ostalih vrsta. Hiljadama godina pokušavamo da shvatimo i odgovorimo na pitanje kako
mislimo?, odnosno kako ovako mali organizam može uočiti, razumijeti, predvidjeti i
manipulisati svijetom daleko većim i složenijim od sebe. Oblast vještačke inteligencije ide
čak i korak dalje. Ne pokušava samo da shvati, već i da napravi pametne entitete.

2.1. Godišnja doba Vještačke inteligencije


Vještačka inteligencija (VI) je trenutno jedna od najpopularnijih oblasti nauke i
računarstva. Na svom razvojnom putu imala je dosta uspona i padova. Iako se prvobitni
radovi iz oblasti VI vezuju za period oko Drugog svjetskog rata, svoje zlatno doba doživljava
trenutno.

Prema autorima M. Haenlein i A. Kaplan, razvojni put Vještačke inteligencije može se, kao
i godina, podijeliti na četiri godišnja doba: proljeće, ljeto, zima i jesen [8].

2.1.1. Proljeće: Rađanje Vještačke inteligencije


Iako je teško utvrditi kako se tačno prvi put pojavio pojam VI, korijeni se mogu naći još u
40-tim godinama prošlog vijeka, kada je američki pisac naučne fantastike, Isak Asimov (engl.
Isaac Asimov), objavio svoju kratku priču o robotu, sa naslovom „Runaround“. Asimov rad
nadahnuo je generacije naučnika na polju vještačke inteligencije, robotike, kao i računarskih
nauka. Jedan od njih bio je Marvin Minski (engl. Marvin Minsky), koji će kasnije postati
suosnivač Laboratorije za Vještačku inteligenciju na MIT-u [8,9].

Otprilike u isto vrijeme, Alan Tjuring (engl. Alan Turing), engleski matematičar, radio je
na svojoj mašini zvanoj „The Bombe“. Ova mašina imala je za zadatak da dešifruje i
odgonetne kod njemačke mašine „Enigma“, koju su koristili kao način komunikacije u
Drugom svjetskom ratu [2]. Tjuring je uspio u svojoj namjeri. Bio je ovo prvi primjer
„pametne mašine“. Tjuring je kasnije kroz svoj rad osmislio „Tjuringov test“, koji i dan danas
služi kao test za provjeru sposobnosti i pameti vještačkih sistema [9].

4
Vještačka inteligencija je kao akademska disciplina osnovana 1956. godine, na osmo
nedeljnoj radionici, na Dortmunskom koledžu, koju su organizovali, prethodno pomenuti,
Marvin Minski i Džon Mekarti (engl. John McCarthy) [8]. Cilj radionice bio je da se ujedine
istraživači iz različitih oblasti kako bi se mogla stvoriti nova oblast istraživanja usmjerena na
izgradnju mašina sposobnih da oponašaju čovjeka i njegove odluke.

2.1.2. Ljeto i zima: Uspon i pad Vještačke inteligencije


Radionica je bila propraćena sa skoro dvije decenije značajnog napretka u oblasti VI. Jedan
od ranih primjera je kompjuter ELIZA, koji je mogao da simulira razgovor sa čovjekom. U
tom periodu očekivanja i mišljenja stručnjaka bila su optimistična, ali ipak to nije bio slučaj.
Zbog nedostatka otkrića, došlo je do smanjenja finansiranja, te je nakon inicijalnih uspjeha u
periodu od 1956. do 1970. godine, uslijedilo zatišje. „Period do skoro 2000. godine poznat je
kao „Zima Vještačke inteligencije“ [9]. U ovom periodu nije bilo značajnih otkrića iz oblasti.

2.1.3. Jesen: Povratak Vještačke inteligencije


Jedan od razloga zašto prvobitni sistemi nisu bili na očekivanom nivou, jeste to što su bili
bazirani na „if-then“ (ako-onda) pravilima [8]. Ti sistemi se nazivaju ekspertski sistemi.
Njihovi rezultati na zadacima gdje se pravila mogu jasno formalizovati su iznenađujuće
dobri. Jedan od primjera takvih sistema jeste DeepBlue, računar koji je uspio da pobijedi
Garija Kasparova u šahu 1997. godine.

Problem sa ovakvim sistemima nastaje kada se pravila ne mogu jasno formalizovati i


„upakovati“ u „if-then“ pravila. Primjer takvog zadatka je klasifikacija slika. Za ovakav
zadatak potreban je sistem koji je u stanju da pravilno interpretira dobijene podatke, da iz
istih nauči i da to znanje primijeni za ostvarivanje i rješavanja određenih ciljeva, odnosno
zadataka. Zbog ovakvih problema „na scenu“ se vraćaju Vještačke neuronske mreže (engl.
Artificial Neural Networks).

Iako su opisane još u četrdesetim godinama 20. vijeka, nisu u potpunosti zaživjele jer
računari nisu imali dovoljno procesorske snage da pokrenu modele zasnovane na Vještačkim
neuronskim mrežama. Vještačke neuronske mreže (VNM) za zadatak imaju da oponašaju
neurone u ljudskom mozgu, a vratile su se na scenu u obliku naprednih algoritama Dubokog
učenja (engl. Deep Learning) 2015. godine, kada je Google-ov program AlphaGo uspio da
pobijedi višestrukog svjetskog šampiona u azijskoj igri Go. Go je igra koja je mnogo
kompleksnija od šaha [8].

5
Danas se Vještačke neuronske mreže i Duboko učenje koriste za rješavanje zadataka kao
što su klasifikacija i prepoznavanje slike, teksta, kao i govora u raznim sferama [10,11].

Odnos Vještačke inteligencije, Mašinskog učenje i Dubokog učenja, kao i vremenski voz
ovih oblasti, može se vidjeti na Slici 2.
Slika 2. Odnos vještačke inteligencije, mašinskog učenja i dubokog učenja

Izvor: What is machine learning and how does it work 6

2.2. Podoblasti Vještačke inteligencije


Kao što se može vidjeti na Slici 3, osnovne podoblasti Vještačke inteligencije su [12]:

 Mašinsko učenje,
 Kompjuterska vizija,
 Obrada prirodnog jezika,
 Ekspertski sistemi,
 Prepoznavanje govora.

6
Medium, https://medium.com/datadriveninvestor/what-is-machine-learning-and-how-does-it-work-
6af591f48db

6
Slika 3. Osnovne podoblasti Vještačke inteligencije

2.3. Primjena Mašinskog učenja u zvaničnoj statistici Evropske Unije


Mašinsko učenje posjeduje ogromni potencijal kada je u pitanju primjena u zvaničnoj
statistici. Cilj zvanične statistike jeste da obezbijedi što bolji i veći nivo kvaliteta statistike na
nivou, kako pojedinačnih država, tako i na nivou EU.

Da bi modeli Mašinskog učenja bili dobri, potrebno je da se ima što više kvalitetnih i
upotrebljivih podataka. Ovdje dolazi do preklapanja Mašinskog učenja i zvanične statistike.
Obije grane teže ka što boljim podacima.

Podaci u zvaničnoj statistici se dijele na dvije grupe:

 Primarne,
 Sekundarne.

Prikupljanje primarnih podataka jeste tradicionalni proces anketiranja. Anketira se birani


uzorak i onda se ti podaci obrađuju i prezentuju rezultati. Sekundarni podaci predstavljaju
podatke koji nisu direktno prikupljeni, već su uzeti iz nekih drugih izvora, baza, itd. U ovu
grupu spadaju „big data“ podaci. Iako nisu prikupljani isključivo za neko istraživanje,
sekundarni podaci mogu biti od velike važnosti za zvaničnu statistiku [13].

Jedan od problema prikupljanja podataka, kako primarnih, tako i sekundarnih jeste njihov
kvalitet. Npr. pri ispunjavanju ankete, pogotovu ako je u pitanju online anketa, postoji šansa
da ispitanik neće iskreno popuniti anketu ili da će imati nekih nepravilnosti i nelogičnosti.
Mašinsko učenje može pomoći u otkrivanju ovakvim anomalija i ekstremnih vrijednosti, koje
značajno mogu da utiču na rezultat.

7
Mašinsko učenje ima širok spektar zadataka koje može da obavlja, klasifikacija, regresija,
grupisanje, sve su to zadaci koji su obavljaju u zvaničnoj statistici [13]. Trenutno je taj proces
dosta spor i zahtijeva veliki trud od pojedinaca, da bi se izvršilo. Primjenom mašinskog
učenja taj proces se može ubrzati.

Modeli mašinskog učenja imaju sposobnost da rade sa velikom količinom podataka i sa


velikom količinom varijabli i često mogu da nađu neku zavisnost između varijabli, koje
čovjek ne može.

Mašinsko učenje može obezbijediti da se dosta koraka u izradi izvještaja automatizuje.


Provjera prikupljenih podataka, obrada podataka, pravljenje modela regresije, vizuelizacija
[13].

Svakako ova tranzicija neće biti laka i biće potrebno da svi rade zajedno, od ljudi u
zvaničnoj statistici, pa do programera, ali može donijeti velike benefite za zvaničnu statistiku.

8
3. Mašinsko učenje

Iako je nekim ljudima prva pomisao kada čuju riječi „mašinsko učenje“ neka vrsta robota,
bio to robot-sluga ili možda “Terminator”, Mašinsko učenje nije tako futuristično, već je
prisutno još od 1959. godine, kada je Artur Samjuel prvi iskoristio termin „Mašinsko učenje“
unutar oblasti Vještačke inteligencije [14]. Samjuel je i prvi dao formalnu definiciju
Mašinskog učenja, a ona glasi:

„Mašinsko učenje je oblast studija koja računarima daje mogućnost učenje bez eksplicitnog
programiranja“ [14].

Iako je mnogima prilično stran pojam, mašinsko učenje je široko rasprostranjeno. Jedan od
primjera, koji svakodnevno koristimo jesu filteri nepoželjnih mejlova (eng. spam filters).
Filteri nepoželjnih mejlova za zadatak imaju da dobijene mejlove grupišu u grupu
nepoželjnih ili ne.

Proces počinje pronalaženjem kvalitetnih podataka i zatim treniranjem modela mašinskog


učenja koristeći prethodno preuzete podatke i različite algoritme. Koji će se algoritam
koristiti zavisi od toga kakve podatke imamo i kakav zadatak imamo, odnosno šta
pokušavamo da automatizujemo.

Postavlja se pitanje u čemu je razlika između tradicionalnog programiranja i mašinskog


učenja. Razlika je u sljedećem7:

Tradicionalno programiranje je ručni proces – osoba (programer) kreira program


(logiku). Na osnovu te logike za određene podatke (ulaz) dobijamo rezultate (izlaz). Grafički
prikaz procesa tradicionalnog programiranja se može vidjeti na Slici 4.

Slika 4. Tradicionalno programiranje

Kod mašinskog učenja proces je drugačiji. Osoba unosi podatke (ulaz) i rezultate (izlaz).
Na osnovu toga računar kreira program (logiku) (Slika 5). Kasnije se ta logika ispituje i

7
Internet izvor, Machine Learning vs. Tradiotional Programming

9
provjerava se koliko je dobra. Ovaj proces ispitivanja se ponavlja sve dok program ne
dostigne zadovoljavajući nivo (tačnost).

Slika 5. Mašinsko učenje

Kao primjer za model mašinskog učenja, možemo uzeti prethodno pomenuti model za
prepoznavanje nepoželjnih mejlova. Za izradu takvog modela bili bi potrebni sljedeći podaci:

 Podaci (ulaz) – velika količina mejlova,


 Rezultat (izlaz) – oznaka za svaki mejl da li je nepoželjnih ili nije (ovo je potrebno
da osoba prethodno ručno uradi).

Nakon obrade ovih podataka za rezultat bi se dobio model za prepoznavanje nepoželjnih


mejlova (Slika 6).

Slika 6. Model za prepoznavanje nepoželjnih mejlova

Koraci su kreiranju jednog modela mašinskog učenja su [11]:


 Prikupljanje podataka,
 Pripremanje podataka za dalje korišćenje,
 Treniranje modela,
 Testiranje modela,
 Unaprijeđenje modela.

Ovaj proces je grafički predstavljen na Slici 7 koja se nalazi u nastavku.

10
Slika 7. Koraci u kreiranju modela mašinskog učenja

Koraci 3, 4 i 5 mogu se ponavljati sve dok se ne dobiju zadovoljavaju rezultati.

Podjela algoritama Mašinskog učenje

Algoritmi Mašinskog učenja mogu se podijeliti u 3 grupe [15,16] (Slika 8):

 Nadgledano učenje,
 Nenadgledano učenje,
 Pojačano učenje.

Slika 8. Podjela algoritama Mašinskog učenja

Izvor: Machine learning algorithms8

8
Edureka, https://www.edureka.co/blog/machine-learning-algorithms/#algorithmtypes

11
3.1. Nadgledano učenje
Nadgledano učenje je tip mašinskog učenja gdje se algoritmu daju i ulazni i izlazni podaci.
Algoritam za zadatak ima da na osnovu tip podataka nauči vezu između njih i da za nove,
prethodno neviđene podatke, da odgovarajuće izlazne podatke (rezultat) [15].

Uz pomoć nadgledano učenja može se, npr. predvidjeti tržišna cijena određenog
automobila na osnovu analize prethodno prodatih automobila. Uzećemo da cijena (izlazni
podatak-rezultat) zavisi od godine proizvodnje, pređenih kilometara i marke (ovi podaci
predstavljaju ulazne podatke). Ukoliko algoritmu damo dovoljan broj ulazno-izlaznih parova
podataka, on će kreirati model (optimalnu funkciju) koji će najbolje predviđati cijenu
automobila. To čini kroz iterativnu optimizaciju. Model je grafički predstavljen na Slici 9.

Slika 9. Model za predviđanje cijene automobila [6]

Dvije glavne vrste problema nadgledanog učenja su [15]:

 Klasifikacija (predviđanje kategorije),


 Regresija (predviđanje vrijednosti).

3.1.1. Klasifikacija
Cilj klasifikacije je da se predvidi kategorija (pripadnost klasi) iz prethodno definisane liste
kategorija. Klasifikacija se, na osnovu broja kategorija, može podijeliti na [15]:

 Binarnu,

12
 Višeklasnu.

Binarna klasifikacija se može shvatiti kao pokušaj odgovara na „Da/Ne“ pitanje. Prethodno
navedeni primjer modela za prepoznavanje nepoželjnih mejlova jeste vrsta binarne
klasifikacije, jer se pitanje može postaviti kao „Da li je mejl nepoželjan ili ne?“. Još neki
primjeri binarne klasifikacije su:

 Da li je pacijent bolestan ili ne,


 Da li je predmet kvadrat ili krug,
 Da li će voz stići na vrijeme ili ne.

Kod višeklasne klasifikacije primjeri se klasifikuju u 3 ili više kategorija. Primjeri


višeklasne klasifikacije su:

 Da li je predmet trougao, kvadrat ili krug,


 Kojem od ponuđenih žanrova (kategorija) pripada film: drama, triler, horor,
 Da li je pjesma rok, pop ili elektro.

Ovi zadaci se mogu riješiti uz pomoć nekoliko algoritama. Najpoznatiji i najpopularniji


algoritmi sa klasifikaciju su [14,15]:

 K- najbližih susjeda (skraćeno k-NN),


 Logistička regresija,
 Stablo odlučivanje,
 Naivni Bajes,
 Metoda potpornih vektora (skraćeno SVM).

3.1.1.1. K- najbližih susjeda (k-NN)


Algoritam k-NN se može smatrati najjednostavnijim algoritmom Mašinskog učenja [15].
Pravljenje modela za predikciju sastoji se od čuvanja baze podataka za trening. U imenu „k“
predstavlja broj susjeda koji se uzima u obzir. Ukoliko je k = 1, model da bi napravio
predikciju, odnosno klasifikovao novi podatak, traži najbližeg susjeda iz trening baze
podataka. Ukoliko je na primjer k = 3, model da bih napravio predikciju uzima 3 najbliža
susjeda iz trening baze podataka. Ne preporučuje se da „k“ bude paran broj.

13
Slika 10. Koraci k-NN

Na Slici 10 je vizuelno predstavljen gore opisani proces algoritma k-NN.

3.1.1.2. Logistička regresija


Logistička regresija je primjer binarnog klasifikacionog algoritma, odnosno primjere dijeli
na dvije kategorije [14]. Iako u svom imenu ima „regresija“, što može biti zbunjujuće, ovdje
„regresija“ označava vjerovatnoću pripadanja nekoj od dvije kategorije.

Logistička regresija uz pomoć Sigmoidne funkcije (Slika 11), izračunava vjerovatnoću da


neki ulazni podatak (podatak x) pripada nekoj od datih kategorija (rezultat, f(x)).

14
Slika 11. Sigmoidna funkcija

Izvor: ANN in multivariate calibration9

Sigmoidna funkcija kao rezultat daje vrijednost između 0 i 1. Kao granica koja razdvaja
dvije kategorije uzima se vrijednost od 0.5. Sve vrijednosti veće od 0.5 pripadaju kategoriji
A, dok sve ispod 0.5 pripadaju kategoriji B.

Slika 12. Logistička regresija

Logistička regresija kao rezultat daje pravu uz pomoć koje možemo da predvidimo kojoj
kategoriji pripada primjer na osnovu zadatih ulaznih podataka. Tokom treniranja položaj te
prave se mijenja i traži se optimalni. Sve tačke iznad krive pripadaju jednoj, dok sve tačke
ispod prave pripadaju drugoj kategoriji. Primjer podjele nakon logističke regresije se može
vidjeti na Slici 12.
9
ANN in multivariate calibration,
https://www.researchgate.net/publication/239269767_Artificial_neural_networks_in_multivariate_calibration/fi
gures?lo=1

15
3.1.1.3. Stablo odlučivanja
„Stablo odlučivanja je svestran algoritam Mašinskog učenja koji se može koristiti za
klasifikaciju, kao i za regresiju“ [14]. Veoma je moćna algoritam, koji se može odraditi nad
složenim baza podataka. U suštini odluke koje se donose uz pomoć ovog algoritma zasnivaju
se na „if/else“ pitanjima, koji kasnije dovode do odluke.

Stabla odlučivanja se sastoje od čvorova i grana. Čvor koji se nalazi na samom početku,
naziva se korijen i on nema roditelja, dok svi ostali čvorovi imaju samo jednog roditelja.
Čvorovi koji nemaju nasljednike, nazivaju se listovi i oni predstavljaju sve moguće odluke
koje se mogu donijeti uz pomoć stabla [16].

Primjer stabla odlučivanja za donošenje odluke da li je predmet krug, pravougaonik ili


kvadrat, može se vidjeti na Slici 13.

Slika 13. Stablo odlučivanja

Slučajne šume

Kao složenija vrsta algoritma Stablo odlučivanja može se smatrati algoritam Slučajne šume
[16]. Kao što se može vidjeti na Slici 14, slučajne šume je algoritam koji tako što se napravi
više stabala odlučivanja koju su trenirani sa različitim podacima. Stablo koje na kraju ima
najbolje rezultate uzima se kao krajnje stablo odlučivanja [16].

16
Slika 14. Algoritam Slučajne šume

Izvor: AnalyticsVidhya10

3.1.1.4. Naivni Bajes


Naivni Bajes-ovi klasifikatori su porodica klasifikatora koji su dosta slični linearnim
modela, kao što je logistička regresija [15]. Njihova prednost je to što su generalni brži pri
treniranju modela. Cijena brzine je ta što ponekada imaju minimalno gore rezultate u odnosu
na ostale modele.

Razlog zbog kojeg su ovi modeli toliko efikasni je taj što uče parametre gledajući svaku
osobinu kategorije pojedinačno i prikupljajući na taj način statistiku za svaku kategoriju.
Postoje 3 vrste Naivnog Bajesa (NB) [15]:

o Gausov NB,
o Multinomni NB,
o Bernulijev NB.

Gausov NB može se primijeniti na bilo koje neprekidne podatke. Bernulijev NB


pretpostavlja da su podaci binarni (postoje samo dvije kategorije), dok Multinomni NB
pretpostavlja da podaci predstavljaju broj ponavaljanja (koliko se puta nešto desilo, npr.
koliko se puta neka riječ pojavila u rečenici). Bernulijev NB i Multinomni NB se najčešće
koriste u klasifikaciji tekstualnih podataka.

10
AnalyticsVidhya,
https://www.analyticsvidhya.com/blog/2020/05/decision-tree-vs-random-forest-algorithm/

17
Ukoliko klasifikujemo novinske članke, pretpostavljamo da se novinski članak uklapa u
kategoriju X. Ono što nam potkrepljuje tu pretpostavku jest to što se određene riječi
pojavljuju u tom članku.

Na primjer, ako klasifikujemo članak u kategorije „Umjetnost“ i „Sport“ i u članku, koji


želimo da svrstamo u neku od ove dvije kategorije, se pojavljuju riječi kao što su „šut“,
„golman“, „rezultat“, veća je vjerovatnoća da članak pripada kategoriji „Sport“. Konačna
odluka kategorije se donosi na osnovu toga koja je vjerovatnoća najveća.

3.1.1.5. Metoda potpornih vektora


Model zasnovan na Metodi potpornih vektora (SVM) je moćan i svestran model Mašinskog
učenja. Ima sposobnost da odradi linearnu i nelinearnu klasifikaciju, regresiju [14,15]. Iako
ima ovakve sposobnosti, najviše se koristi za binarnu klasifikaciju.

Cilj modela zasnovanog na SVM jeste da se, kao kod Logističke regresije (LR), nađe
„najbolja“ prava (sa nazivom Hyperplane) koja će razdvajati kategorije (Slika 15).

Slika 15. Razlika između LR (lijevo) i SVM (desno)

Izvor: Support vector machines vs Logistic regression11

Potporni vektori su podaci (njihove tačke) koji su najbliži Hyperplane-u i utiču na njenu
poziciju i orijentaciju.

11
Support vector machines vs Logistic regression, https://gdcoder.com/support-vector-machine-vs-logistic-
regression/

18
Slika 16. Primjer potpornih vektora

Izvor: LearnOpenCV12

Prednost SVM u odnosu na LR, jeste to što ima uravnoteženiju granicu između kategorija i
manje je osjetljiva na ekstremne vrijednosti u skupu podataka. Razlika između SVM i LR,
kada u skupu postoje ekstremne vrijednosti, može se vidjeti na Slici 17.

Slika 17. Uticaj ekstremnih vrijednosti na SVM i LR

Izvor: Support vector machines vs Logistic regression 13

12
LearnOpenCV, https://www.learnopencv.com/support-vector-machines-svm/
13
Support vector machines vs Logistic regression, https://gdcoder.com/support-vector-machine-vs-logistic-
regression/

19
3.1.2. Regresija
Regresija služi za predviđanje budućih vrijednosti određenih varijabli.

Regresija se koristi za rješavanje problema kao što su:

 Predviđanje cijene neke akcije,


 Predviđanje BDP-a neke države,
 Predviđanje populacije određene države.

Regresija se može podijeliti na osnovu toga koliko nezavisnih varijabli za predviđanje


imamo, te imamo dvije grupe:

 Linearna regresija (koja koristi samo 1 nezavisnu varijablu),


 Višestruka linearna regresija (koja koristi 2 ili više nezavisnih varijabli).

3.1.2.1. Linearna regresija


Linearna regresija predstavlja najjednostavniji algoritam regresije. Primarna svrha linearne
regresije jeste da otkrije odnos između nezavisne varijable (unosa) i zavisne varijable
(izlaza). Zavisna varijabla predstavlja predviđanje.

Osnovni oblik funkcije linearne regresije jeste:

y = k*x + m,

gdje:

 y – predstavlja zavisnu varijablu, odnosno vrijednost koja se predviđa,


 x – predstavlja vrijednost nezavisne varijable, odnosno unosa,
 k – predstavlja nagib, odnosno koliko nezavisna varijabla utiče na zavisnu,
 m – predstavlja tačku presjeka sa Y osom.

Linearna regresija za zadatak ima da pronađe parametre k i n koji minimiziraju grešku. To


se najčešće radi uz pomoć metode najmanjih kvadrata. Greška najmanjih kvadrata je suma
kvadriranih razlika između stvarnih i predviđenih vrijednosti [15].

20
Slika 18. Linearna regresija

Rezultat primjera linearne regresije se može vidjeti na Slici 18.

3.1.2.2. Višestruka linearna regresija


Višestruka linearna regresija predstavlja varijaciju linearne regresije kod koje se koristi više
nezavisnih varijabli [15]. Funkcija izgleda:

y = k1*x1 + k2*x2 + … + kn*xn + m

Možemo da vidimo da ima više nezavisnih varijabli i svaka na zavisnu utiče u iznosu od k
(npr. x1 na y utiče u iznosu od k1). Zbog postojanja više nezavisnih varijabli sada za
predviđanje umjesto prave koristi ravan. Na primjer, za model sa dvije nezavisne varijable,
umjesto prave, koristi se ravan u trodimenzionalnom prostoru.

3.2. Nenadgledano učenje


Za razliku od nadgledanog učenja, kod nenadgledanog učenja nisu poznati izlazni podaci,
odnosno algoritmu se ne daju parovi ulazno-izlaznih podataka, već samo ulazni podaci.
Umjesto toga, nenadgledano učenje se fokusira na analizu odnosa između ulaznih podataka i
otkrivanja skrivenih obrazaca i karakteristika koje se kasnije mogu primijeniti za izlazne
podatke [16].

Nenadgledano učenje se najčešće koristi za [14]:

 Grupisanje,

21
 Otkrivanje anomalija.

3.2.1. Grupisanje
Grupisanje jeste proces kod kojeg se baza podataka dijeli u grupe, koji se nazivaju klasteri.
Cilj jeste da se podaci podijele tako da su podaci koji se nalaze u jednom klasteru međusobno
slični, a znatno drugačiji od podataka koji se nalaze u nekom drugom klasteru. Kao i kod
klasifikacije, i kod grupisanja algoritam predviđa broj za podatak, na osnovu kojeg se on
kasnije dodjeljuje određenim klasterima.

Grupisanje predstavlja odličan alat za analizu podataka, segmentaciju korisnika, sisteme za


preporuku proizvoda, segmentaciju slika, itd.

 Jedan od najpopularnijih algoritama za grupisanje je k- srednjih vrijednosti (k-


means).

3.2.1.1. k- srednjih vrijednosti


K- srednjih vrijednosti je algoritam koji služi za grupisanje neobilježenih podataka. U
imenu slovo „k“ je broj klastera, odnosno grupa, u koliko će podaci biti grupisani (ako je k =
3, podaci će biti grupisani u 3 grupe). Svaki klaster ima svoj centroid koji predstavlja srednju
vrijednost podataka koji se nalaze u klasteru.

Algoritam ponavlja dva koraka:

 Dodjeljivanje podatka najbližem klasteru,


 Ponovno izračunavanje centroida.

Algoritam je došao do kraja kada se nijedan podatak ne mijenja svoj klaster.

Primjer grupisanja, gdje je k = 3, može se vidjeti na Slici 19.

22
Slika 19. Primjer grupisanja sa k- srednjih vrijednosti

Izvor: Introduction to Machine Learning with Python [15]

Grupisanje se odvilo u nekoliko koraka:

a) Unos ulaznih podataka za grupisanje, na slici „Input data“,


b) Određivanje centroida. Kod ovog koraka centroidi se nasumično izabiraju, na slici
„Initialization“,
c) Dodjeljivanje podataka klasterima na osnovu udaljenosti od centroida, na slici
„Assign Points (1)“,
d) Ponovno izračunavanje centroida, na slici „Recompute Centers (1)“-

Koraci c) i d) se ponavljaju još dva puta. Nakon toga centroidi se ne mijenjaju, što znači i
podaci ne mijenjaju klaster kojem pripadaju. U slučaju na slici bilo je dovoljno da se 3 puta
ponove koraci c) i d), ali nekada taj broj može da bude puno veći.

23
3.2.2. Otkrivanje anomalija
Cilj otkrivanja anomalija jeste da model nauči kako izgledaju „normalni“ podaci i da uz
pomoć njih određuje koji podaci predstavljaju anomalije [14]. Ovo se može koristiti za
otkrivanje feleričnih proizvoda na proizvodnoj liniji ili novih trendova u podacima
vremenske serije.

3.3. Pojačano učenje


Pojačano učenje (RL) je treća i najnaprednija kategorija Mašinskog učenja. Za razliku od
nadgledanog i nenadgledanog učenja, pojačano učenje kreira prediktivni model na osnovu
povratnih informacija iz nasumičnih pokušaja i grešaka i taj na taj način uči iz prethodnih
iteracija.

Pojačano učenje je jedna od najuzbudljivijih oblasti Mašinskog učenja. Iako je prisutno još
od 1950-ih godina, poznato je postalo 2013. godine kada je "start-up" iz Britanije, DeepMind,
pokazao da je kompjuter u stanju da nauči da igra bilo koju Atari igru [8,9]. Iako prethodno
kompjuter nije imao nikakvog kontakta sa igrom, vremenom postaje bolji čak i od čovjeka.
Najbolji primjer za to jeste igra go. Godine 2016. AlphaGo, program koji je napravio
DeepMind koji je od 2014. u vlasništvu Gugla, uspio je da pobijedi legendarnog igrača igre
go, Li Sedola“ [8,14]. Program je ovo uspio zato što je odigrao nekoliko miliona mečeva sam
protiv sebe i na taj način naučio koji su potezi i kada najbolji.

Kod pojačanog učenja softverski agent pravi zapažanja i preduzima neke akcije u stanju i
kao rezultat dobija nagradu. Cilj jeste da agent nauči da preduzima akcije koje mu donose
najveće nagrade [14]. Proces je grafički predstavljen na Slici 20.

24
Slika 20. Pojednostavljeni proces Pojačanog učenja

Pojačano učenje se koristi za [14,16]:

 Igranje video igara,


 Navigaciju robota,
 Trgovanje akcijama.

3.3.1. Markovljev proces donošenja odluka


Može se reći da se Pojačano učenje zasniva na Markovljevom procesu donošenja odluka
(MPDO). Ovaj proces predstavlja algoritam uz pomoć kojeg program može doći do odluke
koju akciju da sprovede, kako bi dobio maksimalnu nagradu [14].

U ranim godinama 20-og vijeka, Andrej Markov, proučavao je stohastičke procese bez
pamćenja, pod nazivom Markovljevi lanci.

25
Slika 21. Primjer Markovljevog lanca

Izvor: Hands-on Machine Learning with Scikit-Learn, Keras, and Tensorflow [14]

Kod Markovljevih lanaca imamo fiksni broj stanja. Svakim korakom agent prelazi iz
jednog u drugo stanje, a to zavisi od vjerovatnoće da se to desi. Ta vjerovatnoća je takođe
fiksna vrijednost i ne mijenja se vremenom. Na Slici 21 možemo da vidimo proces u kojem
imamo 4 moguća stanja (S0, S1, S2 i S3). Vjerovatnoća da će nakon prvom koraka, odnosno
prve donesene odluke agent ostati u S0 je 0.7, odnosno 70%.

Kasnije su se Markovljevi lanci razvili u MPDO. Kod MPDO agent ne prelazi odmah iz
jednog stanja u drugo, već prvo bira akciju koju će da sprovede. Vjerovatnoća prelaska u
neko drugo stanje zavisi od izabrane akcije. Uz sve to prelazak iz jednog stanja u drugo,
preko određenih akcija, može donijeti nagradu (nagrada može biti i pozitivna i negativna).
Cilj agenta je da nauči da donosi odluke tako da vremenom maksimizira nagradu.

26
Slika 22. Markovljev proces donošenja odluka

Izvor: Hands-on Machine Learning with Scikit-Learn, Keras, and Tensorflow [4]

Prateći primjer sa Slike 22, ukoliko uzmemo da agent počinje u S0, on bira koju akciju (a0,
a1, a2) će da sprovede. Možemo da vidimo da ukoliko izabere a0, vjerovatnoća da će preći u
S1 je 30%, a da će ostati u S0 je 70%. Ukoliko ostane u S0, dobija nagradu od 10 poena.
Ukoliko se agent nađe u S1 i izabere akciju a1, 100% će dobiti negativnu nagradu, odnosno
kaznu, od 50 poena. Ponavljajući ovaj proces više puta, program nauči koje odluke i kada da
donosi. Nauči koje stanje i koja akcija su optimalni za određeni trenutak.

3.3.2. Q- učenje
Q- učenje je algoritam Pojačanog učenja kod kojeg su vjerovatnoće prelaska iz jednog u
drugo stanje, kao i nagrade, na početku nepoznate [14]. Algoritam za cilj ima da agentu kaže
akciju kada da izvede. U imenu „Q“ se može smatrati kao skraćenica od „Quality“, odnosno
kvalitet i odnosi se na kvalitet akcije u datom stanju.

Q- učenje funkcioniše tako što gleda agenta kako „igra“ i vremenom postepeno poboljšava
predviđanja Q- vrijednosti (povećava kvalitet odluka).

Algoritam uči da za određeno stanje, s, veže akciju, a, koja mu donosi najveći Q, kvalitet
odluke. U početku to radi kroz nasumične pokrete (akcije) u određenom stanju. Model pamti
rezultate (nagrade) i kako te odluke utiču na ukupni kvalitet. Ove vrijednosti čuva kako bi ih

27
iskoristio za buduće odluke o tome koju akciju da sprovede. Jedan od primjera korišćenja Q-
učenja je igranje video igre Pac-Man14 [16].

4. Duboko učenje i Neuronske mreže

14
https://inst.eecs.berkeley.edu/~cs188/sp12/projects/reinforcement/reinforcement.html

28
Duboko učenje je podoblast Mašinskog učenja, koje se bazira na implementaciji Vještačkih
neuronskih mreža [17,18].

Kao što je mnogo izuma i proizvoda inspirisano od strane prirode, tako je i sa Vještačkim
neuronskim mrežama. Vještačke neuronske mreže inspirisane su neuronima i neuronskim
mrežama u ljudskom mozgu (Slika 23).

Kao i kod neuronskim veza u ljudskom mozgu, i kod Vještačkih neuronskih mreža, sistemi
se sastoje od nekoliko jedinica [14]. Neuroni dobijaju određene ulazne podatke (input),
obrađuju ih i na osnovu njih daju neke rezultate (output). Rezultat jednog neurona se dalje
prosljeđuje svim neuronima sa kojim je povezan.

Slika 23. Biološki neuron i vještački neuron

Izvor: What is the difference between artificial intelligence and neural networks15

Kao što i samo ime kaže, neuronska mreža se sastoji od više nurona. Ti neuroni su često
organizovani u minimum 3 sloja, ulazni (input), sakriveni sloj (gdje se izvršavaju
izračunavanja) i izlazni (output) sloj, koji daje rezultate.

Neuroni su međusobno vezani i svaka njihova veza ima određeni težinski faktor (težinu).
Od jačine te veze zavisi da li će se ista aktivirati ili ne. Za određivanje da li se veze aktiviraju
ili ne koriste se funkcije aktivacije. Najpopularnije jesu:

 Sigmoid,

15
What is the difference between artificial intelligence and neural networks, https://www.quora.com/What-is-
the-difference-between-artificial-intelligence-and-neural-networks

29
 ReLU,
 Softmax.

Za skrivene slojeve najbolje je koristiti ReLU ili neku od varijacija ReLU funkciju
(LeakyReLU, PReLU, itd.). Kada je u pitanju izlazni sloj, izbor funkcije aktivacije zavisi od
konkretnog zadatka [14]. Na Slici 24 se mogu grafici funkcija ReLU i LeakyReLU.

Slika 24. ReLU (lijevo) i LeakyReLU (desno)

Vještačke neuronske mreže mogu se koristiti za rješavanje i nadgledanog i nenadgledanog


učenja, kao što su: klasifikacija, regresija, grupisanje, obrada slike i teksta, itd.

Kao što je to obično praksa u Mašinskom učenju, i kod Vještačkih neuronskih mreža,
implementacija se sastoji od:

 Prikupljanja podataka,
 Treniranje mreže (modela),
 Testiranje modela i analiza dobijenih rezultata.

Perceptron je najjednostavniji oblik Vještačke neuronske mreže. Kreiran je 1957. godine od


strane Frenka Rozenbolta i zasnivao se na TLU (threshold logic unit, Slika 25) [14,19].

30
Slika 25. TLU (Threshold logic unit)

Izvor: Hands-on Machine Learning with Scikit-Learn, Keras, and Tensorflow [14]

Perceptron je bio osnova za pravljenje Multilayer Perceptron (MLP, Slika 26), tj.
Višeslojnog perceptrona. On se sastojao od jednog ulaznog sloja, minimum jednog skrivenog
sloja i jednog izlaznog sloja [14].

Slika 26. Multilayer perceptron (MLP)

Jedno od najvažnijih otkrića za uspješno treniranje MLP-a, jeste povratno razmnožavanje


(eng. backpropagation16) algoritam. Razvojem algoritma povratnog razmnožavanja i
16
https://apps.dtic.mil/dtic/tr/fulltext/u2/a164453.pdf

31
računarske moći, povećale su se mogućnosti dubokog učenja [20]. Još jedan od razloga zašto
Mašinsko učenje, a zajedno sa njim i Duboko učenje, sve više koriste jeste to što se desilo
enormno povećanje dostupnosti podataka.

Neuronske mreže mogu da se klasifikuju u sljedeće kategorije [20]:

 Feedforward neuronska mreža,


 Rekurzivna neuronska mreža,
 Neuronska mreža koja se zasniva na funkciji radijalne osnove (eng. radial basis
function),
 Kohonen samoorganizujuća neuronska mreža,
 Modularna neuronska mreža.

Duboke neuronske mreže predstavljaju mreže koje sadrže minimum dva skrivena sloja
[14]. Postoje razni načini implementacije dubokih neuronskih mreža, kao i različite
arhitekture, a sve zavisi od toga koji problem se rješava. Konvolucione neuronske mreže se
najviše koriste za probleme kompjuterske vizije i prepoznavanje slika, Rekurzivne neuronske
mreže za predviđanje [20].

Kako su za primjer, obrađen u ovom radu, korišćene Konvolucione neuronske mreže, iste
će u nastavku biti objašnjene.

4.1. Konvolucione neuronske mreže (CNN)


Konvolucione neuronske mreže su vrsta Dubokih neuronskih mreža.

Konvolucione neuronske mreže razvile su se na bazi istraživanja o vizuelnom korteksu


mozga i koriste se za propoznavanje slika jos od 1980. godine [14].

Sama arhitektura Konvolucionih neuronskih mreža im omogućava da efikasno obrade


veliku količinu podataka. To u kombinaciji sa povećanjem računarske moći omogućilo im je
veoma velike uspjehe i rezultate u proteklih nekoliko godina u raznim oblastima, kao što su
prepoznavanje i analiza slika, sistema za preporučivanje, klasifikaciju slika, pomoć u analizi
medicinskih slika, pa sve do prepoznavanja govora [14].

U imenu imaju Konvulicione, zato što koriste matematičku operaciju sa nazivom


Konvolucija. Ukoliko mreža koristi u barem jednom sloju operaciju konvolucije, spadaju u
grupu Konvolucionih neuronskih mreža.

Konvolucione neuronske mreže sastoje se iz nekoliko slojeva. Ti slojevi su [21]:

32
 Konvolucioni (sa funkcijom aktivacije, najčešće ReLU),
 Sloj sažimanja (eng. Pooling layer),
 Potpuno povezani sloj (eng. Fully connected layer, FC sloj).

Tipična arhitektura jedne konvolucione neuronske mreže jeste [14, 21]:

 Nekoliko konvolucionih slojeva,


 Pooling layer,
 Opet nekoliko konvolucionih slojeva,
 Opet pooling layer,
 FC sloj

Izlazni sloj često ima svoju aktivacionu funkciju, koja zavisi od toga šta je zadatak, pa
može biti Sigmoidna, Softmax, Kros entropija, itd.

Svi slojevi do FC sloja koriste za izvlačenje karakteristika slike. Ove karakteristike čuvaju
se u mapama karakteristika (Feature maps). FC sloj i izlazni sloj služe sa pravljenje
predikcije kojoj kategoriji pripada slika.

Ovakvom arhitekturom se slika iz sloja u sloj smanjuje, ali se na istom putu sve više i više
produbljuje i izvlači se sve više karakteristika slike.

Pojednostavljeni primjer arhitekture Konvolucione neuronske mreže se može vidjeti na


Slici 27.

33
Slika 27.Primjer arhitekture Konvolucione neuronske mreže

Izvor: Convolution Neural Network model17

4.1.1. Operacija Konvolucije (Konvolucioni slojevi)


Konvolucioni sloj je najvažniji dio Konvolucione neuronske mreže. Zadatak ovog sloja
jeste da kreira mapu karakteristika kako bi se smanjila veličina slike i na taj način ubrzao i
olakšao dalji proces obrade slike. Svaka slika ima svoje karakteristike i da bi se one pronašle
koristi se detektor karakteristika, često nazivan i filter [21,22].

Filter je matrica, najčešće veličine 3x3, 5x5, 7x7. Veličina filtera zavisi od toga koliko
karakteristika želimo da izvučemo i koliko želimo sliku da umanjimo. U zavisnosti od toga
šta želimo da izvučemo, kakve karakteristike želimo , razlikuju se filteri. Dio filtera koji je
aktivan, u matrici je ima vrijednost 1, dok dio koji nije ima vrijednost 0 [14].

Ako uzmemo da je ulazna slika (matrica A veličine 4x4), kao na Slici 28 i uzmemo filter
veličine 3x3, kao na Slici 29, dobićemo mapu karakteristika veličine 2x2. Mapa
karakteristika je proizvod matrice ulazne slike i filtera.

17
Convolution Neural Network model, https://www.researchgate.net/publication/336805909_A_High-
Accuracy_Model_Average_Ensemble_of_Convolutional_Neural_Networks_for_Classification_of_Cloud_Imag
e_Patches_on_Small_Datasets

34
Slika 28. Ulazna slika (Matrica A)

Slika 29. Filter (Matrica veličine 3x3)

Filter prvo prelazi preko prvih 9 polja Matrice A, od A11 do A33, nakon toga se pomjera
udesno i zahvata polja od A12 do A34 (Slika 30). Pošto nema više prostora da ide udesno, filter
nastavlja u redu ispod. Ovaj proces će se ponavljati sve dok filter ne pređe preko cijele slike,
u našem slučaju 4 puta.

35
Slika 30. Primjer procesa konvolucije

Kao rezultat ovog procesa, množenja Matrice A i filtera, dobijamo mapu karakteristika
(Matrica B).

Polje B11 se računa:

B11 =1*1+ 2*1+ 3*1+1*0 + 2*0 + 3*0 + 4*(-1) + 3*(-1) + 2*(-1) = -3

Slika 31. Rezultat prvog koraka množenja Matrice A i filtera

Primjer koji je objašnjen je u potpunosti pojednostavljen i predstavlja minimalni dio onoga


što se stvarno odvija. U stvarnosti Konvolucione neuronske mreže koriste nekoliko filtera, to
dovodi do nastajanja isto toliko mapa karakteristika. Te grupisane mape karakteristika
predstavljaju Konvolucione slojeve.

36
Slika 32. Konvolucioni slojevi

Izvor: Machine Learning Image Classification18

ReLU

Sastavni dio konvolucionih slojeva jesu i funkcije aktivacije. Za obradu slike, najčešće se
koristi ReLU (Rectified Linear Unit) funkcija aktivacije. Cilj korišćenja ovih funkcija jeste da
se smanji linearnost slika nakon procesa konvolucije [16]. Primjer linearnosti može biti
postepeno (linearno) mijenjanje boja na slici, npr. da se boja linearno mijenja od bijele ka
crnoj [14,21].

4.1.2. Sloj sažimanja (Pooling layer)


Sloj sažimanja je drugi obavezni sloj u Konvolucionim neuronskim mrežama. On služi da
se mapa karakteristika još više smanji. Smanjivanje dovodi do smanjenja kompleksnosti i
bržeg izračunavanja.

Tipovi sažimanja:

 Max pooling (iz okvira se kao dalja vrijednost uzima najveća vrijednost),
 Average pooling (iz okvira se kao dalja vrijednost uzima srednja vrijednost polja),
 Global pooling (iz mape karakteristika se uzima samo jedna vrijednost).

Od ovih tipova, najviše se koristi max pool, koji će biti objašnjen u daljem tekstu.

18
Machine Learning Image Classification, https://github.com/AMoazeni/Machine-Learning-Image-
Classification

37
Max pooling

Prvo što je potrebno jeste da se postavi okvir. Okvir je ekvivalent filteru iz operacije
konvolucije, ali nema nikakve vrijednosti. Za naš slučaj okvir će biti veličine 2x2. Max
pooling kao rezultat vraća maksimalnu vrijednost obuhvaćenu okvirom. Kao i kod operacije
konvolucije, okvir prelazi preko cijele mape karakteristika (matrice) [14].

Slika 33. Max pooling

Kao što može da se vidi sa Slike 33, za primjer je uzeta mapa karakteristika veličine 4x4.
Nad mapom se vrši proces Max pooling-a i kao rezultat dobijamo sažetu mapu karakteristika
veličine 2x2.

Nakon procesa sažimanja slijedi proces ravnanja (eng. Flattening). Ovaj proces kao cilj ima
da sažetu mapu karakteristika pretvori iz matrice, npr. veličine 2x2, pretvori u matricu
veličine 1x4, odnosno da ima 1 kolonu u n redova (broj redova zavisi od broja karakteristika).
Primjer ravnanje može se vidjeti na Slici 34.

38
Slika 34. Proces ravnanja

4.1.3. Potpuna povezanost (Potpuno povezani sloj)


U ovom dijelu dolazi do klasifikacije slika, odnosno predviđanja kojoj kategoriji pripadaju.
Kao što se može vidjeti na Slici 25, ovdje se razlikuju 3 sloja [21]:

 Ulazni sloj – sloj u kojem se unose podacu za obradu/analizu


 Potpuno povezani sloj (FC sloj) – sloj u kojem su svi neuroni povezani sa
neuronima prethodnog i sljedećeg sloja
 Izlazni sloj – sloj koji daje rezultate

U ulazni sloj se smiještaju podaci koji su dobijeni procesom ravnanja. Karakteristika


potpuno povezanog sloja jeste što je svaki neuron iz sloja povezan sa svim neurona iz
prethodnog i sljedećeg sloja. U izlaznom sloju se daju vjerovatnoće kojoj kategoriji pripada
slika.

39
Slika 35. Potpuna povezanost

Neke od napoznatijih i rezultatima najuspješnijih arhitektura Konvolucionih neuronskih


mreža su [14]:

 LeNet – 5,
 AlexNet,
 GoogLeNet,
 VGGNet,
 ResNet,
 Xception,
 SENet.

40
5. Primjena mašinskog učenja u medicini

Iako možda nismo u potpunosti svjesni, mašinsko učenje zajedno sa dubokim učenjem, je
sve više prisutno u našim životima i svakodnevnim radnjama. Možda i najbanalniji primjer
jeste svakodnevna pretraga na Guglu, otključavanje telefona uz pomoć otiska prsta,
prepoznavanja face, itd. U pozadini svih ovih dešavanje se izvršava neki algoritam mašinskog
učenja.

Sa povećanjem računarske moći i kapaciteta, kao i povećanjem količine dostupnih


podataka, Mašinsko učenje je svoju primjenu našlo i u oblasti medicine. Veliki broj procesa u
medicini se može automatizovati, a jedan od načina da se to uradi jeste primjena Mašinskog i
Dubokog učenja.

Jedan od razloga zašto je primjena ovih tehnologija moguća u medicini jeste promjena
načina prikupljanja i čuvanja podataka o pacijentima. Elektronsko skladištenje (elektronski
kartoni) podataka o pacijentima su prekretnica ka primjeni modernih tehnologija u medicini.
Na ovaj način količina upotrebljivih podataka je drastično porasla.

Daljim razvojem tehnologije (pametnih telefona, satova i uređaja) došlo je do još većeg
povećanja dostupnih podataka, pa je danas moguće 24/7 pratiti i prikupljati podatke o
vitalnim funkcijama korisnika tih uređaja (otkucaji srca, nivo kiseonika, kvalitet sna, pređeni
koraci u toku dana, kilaža, nivo masti, itd.). Na Slici 36 je dat prikaz o tome koji senzori su
prikladni za ovakva mjerenja. Svi ovi podaci mogu da posluže za analizu ponašanja osoba i
kako to utiče na njihovo zdravlje.

41
Slika 36. Načini prikupljanja podataka o pacijentima

Izvor: Deep Learning in Health Informatics [23]

Konvolucione neuronske mreže imaju sposobnost da uspješno prepoznaju obrasce i


pravilnost na slikama i klasifikuju ih na osnovu toga, pa zbog toga nije čudo što pronalaze
svoju primjenu u medicini [23, 24]. Vještačka inteligencija, sa svojim podoblastima, se
primjenuje u širokom spektru oblasti medicine.

Neke od oblasti u kojima se Mašinsko učenje danas primjenjuje su:

 Gastroenterologija [25],
 Endoskopija [9],
 Radiologija [26],
 Kardiologija [27].

Naravno, Mašinsko učenje svoju primjenu nalazi i u oblasti koje gore nisu navedene.

Vještačka inteligencija i Mašinsko učenje se generalno primjenjuju u oblastima koje imaju


mogućnost da prikupe veliku količinu podataka. Kada je Duboko učenje u pitanju, često su to
slike. Kasnije se ti podaci koriste za treniranje modela. Što je količina podataka koja je

42
prikupljena veća, to je preciznost modela veća. Jedan od problema koji nastaje pri
prikupljanju podataka, odnosno slika, jeste što prvo moraju biti označene od strane čovjeka,
kako bi mogle da se koriste za treniranje modela, ali i to neće još dugo biti potrebno.
Korišćenje sistema podrške baziranih na Vještačkoj inteligenciji za obradu medicinskih slika
je predloženo kako bi se povećala preciznost i doslednost pri donošenju odluka, kao i
efikasnost u izvršavanju [9].

5.1. Primjena Mašinskog učenja u gastroenterologiji


Primjena Vještačke inteligencije i Mašinskog učenja se značajno proširila tokom
posljednjih nekoliko godina. Dijagnostikovanje uz pomoć Vještačke inteligencije se može
primijeniti na kolonoskopiju. Na ovaj način može se poboljšati razlikovanje benignih od
malignih polipa debelog crijeva.

Pri korišćenju endoskopskog ultrazvuka, Vještačka inteligencija se koristi za pomoć pri


razlikovanju hroničnog pankreatitisa od raka pankreasa. Ovo je čest klinički izazov [9, 25].

Uz pomoć Dubokog učenja moguće je razviti modela za prognozu tretmana i kako će


pacijent reagovati na isti. Nekoliko Vještačkih neuronskih mreža je napravljeno i testirano za
pomoć pri dijagnostikovanju i predviđanje u gastroenterologiji.

U retrospektivnoj studiji na uzorku od 150 pacijenata, model je uspio da sa tačnošću od


100% dijagnostikuje Gastroezofagealnu refluksnu bolest19. Za ovo je korišćeno 45 kliničkih
varijabli [8].

Rotondano i ostali, predstavili su studiju na uzorku od 2380 pacijenata. Vještačka


neuronska mreža je koristila 68 varijabli da predvidi smrtnost kod nevaricealnog gornjeg
gastrointestinalnog krvarenja. Preciznost modela bila je 96.8% [9, 25].

Pored toga Vještačka inteligencija se koristi za predviđanje šanse ponovnom i jačinu


javljanja inflamatornih bolesti crijeva (eng. IBD) [9].

Ovakve primjene, ali i njihova uspješnost, obećavaju da će se korišćenje Vještačke


inteligencije, Mašinskog učenja i Dubokog učenja nastaviti u gastroenterologiji.

5.2. Primjena Mašinskog učenja u radiologiji


Radiologija je još jedna grana medicine u kojoj je Mašinsko učenje pronašlo svoju ulogu,
pogotovu Duboko učenje. Prednost radiologije u odnosu na druge grane, jeste to što se

19
GERD, https://en.wikipedia.org/wiki/Gastroesophageal_reflux_disease

43
potencijal Konvolucionih neuronskih mreža može iskoristiti skoro do maksimuma, zbog
velike količine dostupnih slika.

Primjena ovih tehnologija u radiologiji predstavlja ogromnu pomoć doktorima,


radiolozima, ali su male šanse da programi/modeli ikada biti u stanju da ih zamijene.

Radiološki proces se može podijeliti u tri koraka [26]:

 Otkrivanje bolesti,
 Opisivanje bolesti,
 Liječenje i praćenje oporavka.

Duboko učenje svoju primjenu najviše i najlakše može naći u prvom koraku otkrivanja
bolesti. Razne vrste Vještačkih neuronskih mreža mogu pomoći u ranom otkrivanju
abnormalija na snimcima pacijenata [24].

Svoju primjenu mogu naći u ranom dijastikovanju raka pluća. Rak pluća je jedan od
najrasprostranjenijih tumora. Rano otkrivanje plućnih čvorova može biti od velike važnosti u
uspješnom liječenju pacijenata. Vještačka inteligencija može da pomogne tako što će
automatski identifikovati takve čvorove i pomoći u klasifikaciji istih kao benigne ili maligne.

Pored toga može se iskoristiti i u identifikaciji oboljenja na jetri, mozgu, debelom crijevu,
itd.

Skrining mamografija je tehnički veoma zahtjevna za stručnu interpretaciju. Vještačka


inteligencija može pomoći u tumačenju snimaka, tako što će identifikovati mikrokalcifikacije
(male naslage kalcijuma u dojci) [26]. Ovo može biti od velike važnosti za rano otkrivanje
raka dojke i samim tim povećati šanse pacijenta da preživi.

5.3. Primjena Mašinskog učenja u kardiologiji


Primjena Mašinskog i Dubokog učenja u kardiologiji trenutno nije na visokom nivou, ali
rane studije pokazuju da imaju velikog potencijala. Postoje razni načini na koji sve kategorije
Mašinskog učenja mogu da se implementiraju u kardiologiji [27] (od nadgledanog, preko
nenadgledanog učenja, pa sve do pojačanog).

Gulšan i ostali su razvili Konvolucionu neuronsku mrežu za otkrivanje dijabetičke


retinopatije. Koristili su bazu podataka od 128 000 slika mrežnjače. Model je imao preciznost
od oko 97% [27, 28].

44
Slika 37. Uloga Vještačke inteligencije u kardiovaskularnoj medicini

Izvor: AI in Cardiology [27]

Pored ovakvih primjera, Vještačka inteligencija može uticati na sve aspekte kardiologije,
od istraživanja i razvoja lijekova i načina liječenja, preko kliničkog liječenja do javnog
zdravlja.

Jedna od glavnih prednosti Mašinskog učenja, kada je primjena u medicini u pitanju, jeste
to što podatke iz različitih izvora može da uključi u smislene modele za opis i predviđanje
bolesti kod ljudi. Proces se odvija kao i kod pravljenja svakog modela Mašinskog učenja:
prikupljanje podataka, obrada istih, pravljenje modela i testiranje istog (Slika 38).

Kao je i urađeno za primjer u ovom radu, Duboko učenje se može koristiti i za


dijagnostikovanje upale pluća i to sa velikom uspješnošću. Ovo, pogotovu u doba korona
virusa, može biti od velike pomoći.

45
Slika 38. Proces primjene Mašinskog učenja u medicini

Izvor: AI in Cardiology [27]

46
6. Primjer primjene Dubokog učenja za detekciju pneumonije

Perišić i Janković [29] pneumoniju definišu kao infekciju donjeg dijela respiratornog trakta.
Infekcijom su zahvaćeni disajni putevi i parenhim pluća, a alveolni prostori su kosolidovani.
Pneumonija je veoma česta bolest i ima potencijal da bude izrazito teška. Pojava kod djece
mlađe od pet godina u Evropi je 34-40 na 1000. U zemljama u razvoju, pneumonija je vodeći
uzrok smrti kod djece. Jedan od načina dijagnostikovanja pneumonije, jeste čitanjem
rendgenskog snimka.

Kao što je već ranije rečeno u radu, Konvolucione neuronske mreže, su se veoma dobro
pokazale u klasifikaciji slika, pa zato mogu da budu od pomoći i u dijagnostikovanju
pneumonije na osnovu rendgenskih snimaka. Ovo je posebno aktuelno i zato što je jedna od
posljedica zaraze korona virusom (COVID-19) pneumonija. Kod čitanja rendgenskih
snimaka bitna je doslednost i obraćanje pažnje na sitne detalje. U ovom dijelu modeli
zasnovani na Konvolucionim neuronskim mrežama mogu da pomognu, jer nemaju nikakvu
pristrasnost, već se baziraju na prethodnim odlukama.

Glavni cilj istraživanja i eksperimentalnog dijela ovog rada je da se napravi model


zasnovan na Konvolucionim neuronskim mrežama koji će uspješno realizovati zadatak
klasifikacije slika u grupe „Pneumonia“ i „Normal“, odnosno da napravi razliku između slika
snimaka bolesnih i zdravih pacijenata.

6.1. Skup podataka i proces pripreme za trening


Skup podataka, odnosno slika rendgenskih snimaka, koja je korišten je preuzet sa sajta
Kaggle.com20 [30]. Slike su objavljene od strane Gvanžu medicinskog centra za ženu i dijete
(eng. Guangzhou Women and Children’s Medical Center). Slike su prvo pregledane od strane
tri stručnjaka, kako bi se odstranile slike lošeg kvaliteta i označile (podijeljenje u kategorije:
Pneumonia i Normal) kako bi se mogle koristiti kao slike za treniranje modela. Skup sadrži
5856 slika rendgenskih snimaka u JPEG formatu. Skup je podijeljen u tri direktorijuma i slike
iz ovih direktorijuma su korišćene za trening, validaciju i testiranje modela. U inicijalnom
skupu podataka, u direktorijumu za validaciju ima samo 16 slika, ali zbog potreba ovog
istraživanja i tokom eksperimentisanja to je promijenjeno, odnosno nad cijelim skupom slika
je izvršena 80/10/10 podjela. Ovo je preporučena podjela skupa podataka u mašinskom
učenju, a ona podrazumijeva da se 80% podataka koristi za trening modela, dok se po 10%

20
Kaggle, https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia

47
podataka koristi za validaciju i testiranje modela. Ova podjela je dovela do toga da u
direktorijumu za testiranje ima 4684 slika, dok u ostala dva direktorijuma ima po 586 slika.
Svaki od ova tri direktorijuma sadrže poddirektorijuma (Pneumonia i Normal). U
direktorijumima sa nazivom „Pneumonia“ se nalaze slike koje su stručnjaci označili kao slike
snimaka sa pneuomnijom, dok se u direktorijumima „Normal“ nalaze slike snimaka zdravih
pluća. Slike su visokog kvaliteta i ima ih u različitim veličinama. Primjer slika iz skupa može
se vidjeti u nastavku na Slici 39.

48
Slika 39. Slike snimaka sa pneumonijom (gore) i slike snimaka zdravih pluća (dolje)

S obzirom na to da su slike različitih veličina i da su u RGB, prvi korak prvi kreiranju


modela jeste priprema(eng. preprocessing) slika. Za potrebe ovog istraživanja slike su
pretvorene u crno-bijele i veličina im je smanjena na 200x200 piksela. Za ovu svrhu koristi se
sljedeći Python kod:

resized_image = cv2.resize(image, dim)

gray_img = cv2.cvtColor(resized_img, cv2.COLOR_BGR2GRAY

49
Vrijednosti piksela na slici su iskazani brojevima od 0 do 255. Ti brojevi označavaju
odsustvo, odnosno prisustvo bijele boje. Piksel vrijednosti 0 je crn, dok je piksel vrijednosti
255 bijele boje. Da bi se ubrzao proces obrade slika u modelu, vrši se normalizacija.
Normalizacija podrazumijeva dijeljenje vrijednosti piksela sa 255. Na taj način su vrijednosti
piksela iskazani brojevima od 0 do 1, što pozitivno utiče na brzinu obrade slika. Više
informacija o ovom procesu možete naći u radovima [31,32].

Problem sa skupom podataka jeste što je velika razlika u broju slika snimaka sa
pneumonijom i bez nje (Slika 40). Kao što može da se vidi sa slike u skupu ima 4273 slika
snimaka sa pneumonijom, dok je broj bez puno manji, samo 1583. Ovo može da dovede do
overfitting-a. Kada nema više dostupnih podataka, jedan od načina da se to riješi je da se
vještački poveća skup. Ovaj proces je poznat kao uvećanje podataka (eng. data
augmentation) [31]. On podrazumijeva da se uz pomoć postojećih slika za treniranje modela
„naprave“ nove slike. To se radi tako što se postojeće slike, npr. rotiraju za određeni broj
stepeni, zumiraju, isijeku, itd [14]. Ovo je moguće da se uradi uz pomoć alata iz biblioteke
Keras.

Slika 40. Broj slika u skupu podataka

50
6.2. Metode rješavanja problema
Glavni alati koji su korišćeni za ovo istraživanje su: Numpy, Pandas, Keras, TensorFlow,
matplotlib, seaborn, Jupyter Notebook. Numpy i Pandas su korišćeni za manipulaciju i
obradu podataka. Keras i TensorFlow su korišćeni da kreiranje modela, dok su matplotlib i
seaborn korišćeni za vizuelizaciju. Jupyter Notebook je okruženje u kojem je kod kucan.
Treniranje i testiranje modela je sprovedeno lokalnom desktop računaru, sljedećih
konfiguracija: AMD Ryzen 5 3600 CPU, Nvidia GeForce RTX 2060 SUPER GPU i 16GB
RAM (3200MHz).

Za klasifikaciju slika je napravljen model Dubokog učenja, baziran na Konvolucionim


neuronskim mrežama. Način na koji Konvolucione neuronske mreže funkcionišu objašnjen je
ranije u poglavlju 4. Arhitektura mreže za ovo istraživanje može se vidjeti na Slici 41 i 42. Sa
slike može da se vidi da je, kao što je i očekivano, primarno sagrađena od konvolucionih
slojeva i slojeva sažimanja. Na slici su to Conv2D i MaxPooling2D. Pri kraju može se vidjeti
sloj ravnanja (Flatten). Potpuno pevazani slojevi (FC slojevi) se nalaze na samom kraju
(Dense na slici). Kao što je ranije već objašnjeno u dijelu 4.1, potpuno povezani slojevi su
slojevi kod kojih neuroni povezani sa svim neronima iz prethodnog i sljedećeg sloja.

Mogu se primijetiti i Dropout slojevi. Dropout je jedna od najpopularnijih tehnika


regularizacije dubokih neuronskih mreža. Dodavanjem ovih slojeva rezultat mreže može da
poraste za 1-2%, što ne predstavlja mali procenat. Ova tehnika je prilično jednostavna. Svaki
neuron u procesu treninga, isključujući izlazne, ima mogućnost p da bude isključen (dropout-
ovan) u trenutnom koraku treninga, ali se u narednom koraku može opet aktivirati [14].

51
Slika 41. Arhitektura Konvolucione neuronske mreže ovog istraživanja

52
Slika 42. model.summary() modela korišćenog za ovo istrtaživanje

Sa Slike 42 možemo da vidimo da je pronađeno 8 126 467 parametara (karakteristika)


slika, a 8 124 291 je moglo biti upotrijebljeno za trening.

Za treniranje modela korišćeno je 200 epoha. U toku jedne epohe čitav trening skup
podataka prođe kroz mrežu.

53
6.3. Evaluacija i analiza rezultata
Evaluacija rezultata dobijenih modelom može se uraditi analizom nekoliko parametara. To
su: preciznost (eng. accuracy) i gubitak (eng. loss) za vrijeme obučavanja. Pored toga prate se
i preciznost i gubitak u procesu validacija i na kraju preciznost modela na testnom skupu
podataka.

Slika 43. Preciznost obučavanja (na Slici treninga) i validacije

Na Slici 43 prikazana je preciznost obučavanja i procesa validacije za svih 200 epoha. Sa


slike može da se vidi da je na kraju preciznost kod oba skupa podataka (obuka i validacija) na
visokom nivou, blizu 100%. Ovo pokazuje da je model u stanju da sa velikom uspješnošću
klasifikuje slika iz trening skupa, kao i iz skupa za validaciju.

Na Slici 44 mogu da se vide gubici u toku procesa treninga i validacije za poslednjih 30 od


200 epoha. Vidimo da su na pri kraju ove vrijednosti blizu 0, što je dobar pokazatelj. Gubitak
je zbir grešaka napravljenih za svaki primjer u skupovima obučavanja ili validacije.

54
Slika 44. Gubitak obučavanja (na Slici treninga) i validacije

Na kraju ostaje još da se provjeri koliko je model uspješan u klasifikovanju slika sa kojima
se do sada nije sreo, a to su slike iz skupa za testiranje. Jedan od najpopularnijih načina
predstavljanja uspješnosti modela je matrica rezultata koja se nekad zove i matrica konfuzije
(eng. Confusion matrix).

Kod ove matrice na X osi nalaze se stvarne kategorije slika, dok se na Y osi nalaze
predviđene kategorije slika. Što su polja jače zelena, to je rezultat bolji.

55
Slika 45. Matrica konfuzije modela

Iz ove matrice može da se vidi da je 368 od 381 slika pravilno kategorizovano kao slike sa
pneumonijom. Dok je 156 od 205 slika pravilno kategorizovano kao slike snimaka zdravih
pluća. Ovi podaci daju preciznost modela od 88.9%, što predstavlja vrlo dobar rezultat, s
obzirom na broj dostupnih slika. Za bolji rezultat bi bilo potrebno da se prikupi još
upotrebljivih slika, jer kao što je već rečeno u radu, uspješnost i pouzdanost modela
mašinskog učenja u velikoj količini zavisi broja dostupnih podataka.

Neki od primjera dobro i loše klasifikovanih slika, mogu se vidjeti na Slikama 46 i 47.
Klasa 0 su slike označene sa „Pneumonia“, dok su Klasa 1 slike označene sa „Normal“.

56
Slika 46. Dobro klasifikovane slike

57
Slika 47. Loše klasifikovane slike

58
7. Zaključak

Vještačka inteligencija na svom višedecenijskom razvojnom putu našla je primjenu u


mnogim oblastima. Samo neki od primjera su ekonomija, poljoprivreda, statistika i medicina.
Međutim svoju najveću primjenu nalazi baš sada. Jedan od razloga za ovo jeste dostupnost
velike količine podataka, jer su podaci temelj uspjeha Vještačke inteligencije. Vještačka
inteligencija, u svom trenutnom stanju razvoja, ima mogućnost da određene zadatke, kao što
su klasifikacija, regresija, grupisanje, radi na istom nivou kao što radi čovjek. U nekim
slučajevima čak i bolje. Ovo govori o potencijalu i važnosti ove oblasti.

Razvojem Vještačke inteligencije, razvijale su se i njene podoblasti, među koje spadaju i


Mašinsko učenje, kao i Duboko učenje. Unaprijeđenje algoritama koji se koriste u ovim
oblastima i razvoj novih, u kombinaciji sa porastom računarske moći i sve većim brojem
dostupnih podataka, dovelo je do drastičnog porasta mogućnosti primjene.

U ovom radu date su teorijske osnove i prijegled oblasti Mašinskog i Dubokog učenja.
Objašnjeni su osnovni pojmovi i najvažniji algoritmi koji se koriste, sa posebnim akcentom
na Konvolucione neuronske mreže. Pored toga navedeno je nekoliko primjera primjene
Mašinskog učenja u medicini. Medicina je vrlo pogodna oblast za primjenu Mašinskog
učenja, jer raspolaže sa velikom količinom podataka, kako tekstualnih, tako i vizuelnih
(biomedicinske slike). Na kraju je objašnjen proces pravljena modela Dubokog učenja
zasnovanog na Konvolucionim neuronskim mrežama sa ciljem da se ilustruje konkretna
primjena u medicini.

Model za zadatak ima da izvrši procjenu da li na slici rentgenskog snimka pluća ima
znakova pneumonije (upale pluća). Model na osnovu procjene klasifikuje slike u jednu od
dvije moguće kategorije (Pneumonia i Normal). Na ovaj način model može biti osnova
računarskog alata za podršku odlučivanju u procesu dijagnostikovanja bolesti.

Prilikom evaluacije modela dobijeni su veoma dobri rezultati. U toku procesa obučavanja i
validacije, model je imao preciznost (uspješnost) od preko 95% , odnosno 92% nad slikama
iz skupova za obuku i validaciju, dok je sa podacima iz skupa za testiranje postignuta
preciznost bila oko 90%.

Iako su ovi rezultati dosta dobri, model je moguće unaprijediti na nekoliko načina. Jedan
način jeste da se promijeni arhitektura Konvolucione neuronske mreže i da se više prilagodi

59
konkretnom zadatku. U daljem istraživanju, u planu je da se isproba još nekoliko arhitektura i
da se uporede rezultati. Pored toga, dodatni podaci, odnosno slike, mogu unaprijediti rezultat
modela. S obzirom da je u toku pandemija COVID-19 i da je upala pluća česta pojava kod
ovog virusa, za očekivati je da će u narednom periodu biti više dostupnih slika odgovarajućih
za ovo istraživanje. Nakon gore navedenih promjena, za očekivati je bolje rezultate modela.

60
Literatura

[1] B. Mondal, „Artificial Intelligence: State of the Art“, Recent Trends and Advances
in Artificial Intelligence and Internet of Things. Intelligent Systems Reference
Library, vol 172. Springer, Cham, 2020.

[2] L. Floridi, „What the Near Future of Artificial Intelligence Could Be“, Philos.
Technol. 32, 2019, pp 1-15.

[3] Z. Obermeyer, E. J. Emanuel, „Predicting the Future – Big Data, Machine Learning,
and Clinical Medicine“, The New England journal of medicine, 375(13), 2016, pp
1216-1219.

[4] P. Hamet, J. Tremblay, „Artificial Intelligence in medicine“, Metabolism, 69, 2017,


pp 36-40.

[5] F. Wang, A. Preininger, „AI in Health: State of the Art, Challenges, and Future
Directions“, Yearbook of medical informatics, vol. 28, no. 1, 2019, pp 16-26.

[6] EIT Health, McKinsey & Company, „Transforming healthcare with AI“, 2020.

[7] S. Russel and P. Norvig, Artificial Intelligence: A Modern Approach, Third Edition,
Pearson, 2009.

[8] M. Haenlein, A. Kaplan, „A Brief History of Artificial Intelligence: On the Past,


Present, and Future of Artificial Intelligence“, California Management Review, 61(4),
2019, pp 5-14.

[9] V. Kaul, S. Enslin, S.A. Gross, „The history of artificial intelligence in medicine“,
Gastrointestinal Endoscopy, In Press, 2020.

[10] C. C. Yang, S. O. Prasher, J. A. Landry, A. DiTommaso, „Application of artificial


neural networks in image recognition and classification of crop and weeds.“,
Canadian agricultural engineering, 42(3), 2000, pp 147-152.

[11] B. C. Kamble, „Speech Recognition Using Artificial Neural Network – A Review“,


IJCCIE, vol. 3, no. 1, 2016.

[12] A. Kayid, „The role of Artificial Intelligence in future technology“, 2020.

61
[13] Yung, W., Karkimaa, J., “The use of machine learning in official statistics“, 2018.

[14] A. Geron, Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow,
O’Reilly Media, Inc., Canada, 2019.

[15] A. C. Muller and S. Guido, Introduction to Machine Learning with Python, O'Reilly
Media, Inc., 2016.

[16] O. Theobald, Machine Learning for Absolute Beginners, Second Edition, 2017.

[17] H. F. Nweke, Y. W. Teh, M. A. Al-garadi, U. R. Alo, „Deep learning algorithms for


human activity recognition using mobile and wearable sensor networks: State of the
art and research challenges“, Expert Systems with Application, vol. 105, 2018, pp
233-261.

[18] J. Schmidhuber, „Deep learning in neural networks: An overview“, Neural Networks,


vol. 61, 2015, pp 85-117.

[19] S. I. Gallant, „Perceptron-Based Learning Algorithms“, IEEE Transactions on Neural


Networks, vol. 1, no. 2, 1990, pp 179-191.

[20] A. Shrestha and A. Mahmood, "Review of Deep Learning Algorithms and


Architectures," in IEEE Access, vol. 7, 2019, pp. 53040-53065.

[21] S. Albawi, T. A. Mohammed and S. Al-Zawi, "Understanding of a convolutional


neural network," 2017 International Conference on Engineering and Technology
(ICET), Antalya, 2017, pp. 1-6.

[22] R. K. Tata, B. Kakumanu, T. Adusumalli and S. Mothe, "A Model for Assessing the
Nature of Car Crashes using Convolutional Neural Networks," International Journal
of Emerging Trends in Engineering Research, vol. 8, no. 3, 2020, pp. 859-863.

[23] D. Ravì et al., "Deep Learning for Health Informatics," in IEEE Journal of
Biomedical and Health Informatics, vol. 21, no. 1, 2017, pp 4-21.

[24] Esteva, A., Robicquet, A., Ramsundar, B. et al., “A guide to deep learning in
healthcare“, Nat Med 25, 2019, pp 24-29.

[25] Y.J. Yang, C.S. Bang, “Application of artificial intelligence in gastroenterology”,


World Journal of Gastroenterolology, 2019(25), 2019, pp 1666-1683.

62
[26] A. Hosny, C. Parmar, J. Quackenbush, L.H. Schwartz, H.J.W.L. Aerts, “Artificial
intelligence in radiology”, Nature Reviews. Cancer, 18(8), 2018, pp 500–510.

[27] K.W. Johnson, et al., “Artificial Intelligence in Cardiology”, Journal of the American
College of Cardiology, 71(23), 2018, pp 2668–2679.

[28] Gulshan V, Peng L, Coram M, et al., “Development and Validation of a Deep


Learning Algorithm for Detection of Diabetic Retinopathy in Retinal Fundus
Photographs“, JAMA, 316(22), 2016, pp 2402–2410.

[29] V.N. Perišić, B. Janković, “Pedrijatrija za studente medicine”, Medicinski fakultet,


Univerziteta u Beogradu, Beograd, 2010.

[30] D. Kermany, K. Zhang, M. Goldbaum, “Labeled Optical Coherence Tomography


(OCT) and Chest X-Ray Images for Classification”, Mendeley Data, v2, 2018.
Accessed August 2020. [Online].

[31] Guzmán-Cabrera, R., Guzmán-Sepúlveda, J.R., Torres-Cisneros, M. et al., “Digital


Image Processing Technique for Breast Cancer Detection“, Int J Thermophys 34,
2013, pp 1519–1531.

[32] Cakic, S., Popovic, T., Sandi, S., Krco, S., Gazivoda, A., “The Use of Tesseract OCR
Number Recognition for Food Tracking and Tracing“, IT 2020, Žabljak, Montenegro,
2020.

[33] D. Varshni, K. Thakral, L. Agarwal, R. Nijhawan, A. Mittal, "Pneumonia Detection


Using CNN based Feature Extraction," 2019 IEEE International Conf. on Electrical,
Computer and Communication Technologies (ICECCT), Coimbatore, India, 2019, pp
1-7

[34] V. Sirish Kaushik et al., “Pneumonia Detection Using Convolutional Neural


Networks (CNNs)”, In: Singh P., Pawłowski W., Tanwar S., Kumar N., Rodrigues J.,
Obaidat M. (eds) Proceedings of First International Conference on Computing,
Communications, and Cyber-Security (IC4S 2019). Lecture Notes in Networks and
Systems, vol 121. Springer, Singapore.

[35] M. Minsky, S.A. Papert, “Perceptrons: An Introduction to Computational Geometry”,


MIT Press, Cambridge, MA, 1969.

63
Internet izvori:
 Kaggle, https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia

 Coursera, www.coursera.com

 Machine Learning Image Classification, GitHub,


https://github.com/AMoazeni/Machine-Learning-Image-Classification
 OpenCV, www.opencv.org/
 Machine Learning vs Tradiotional Programming, Logi Analytics,
https://www.logianalytics.com/predictive-analytics/machine-learning-vs-traditional-
programming/
 What Is Machine Learning And How Does It Work?, Medium,
https://medium.com/datadriveninvestor/what-is-machine-learning-and-how-does-it-
work-6af591f48db
 A Comprehensive Guide to Convolutional Neural Networks — the ELI5 way,
TowardsDataScience, https://towardsdatascience.com/a-comprehensive-guide-to-
convolutional-neural-networks-the-eli5-way-3bd2b1164a53
 Machine Learning in HealthCare, Indata Labs, https://indatalabs.com/blog/machine-
learning-in-healthcare?cli_action=1598525965.136

 Keras, www.keras.io

 Anaconda, www.anaconda.org

 Data Preparation, Wikipedia, https://en.wikipedia.org/wiki/Data_preparation

64
Prilog
Prilog 1 – Operativno okruženje
Za izradu eksperimenta izvedenog u ovom radu korišćene su sljedeće verzije alata:
 Python verzija: 3.7.7
 Keras verzija: 2.3.1
 Tensorflow verzija: 2.1.0
 numpy verzija: 1.18.1
 pandas verzija: 1.0.5
 seaborn verzija: 0.10.1
 matplotlib verzija: 3.2.2
 opencv verzija: 3.4.2

Prilog 2 - Izvorni kod eksperimenta


Kod eksperimenta izvedenog u radu može se vidjeti u nastavku.
import numpy as np 
import pandas as pd 
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))
import matplotlib.pyplot as plt
import seaborn as sns
import keras
from keras.models import Sequential
from keras.layers import Dense, Conv2D , MaxPool2D , Flatten , Dropout , Ba
tchNormalization
from keras.preprocessing.image import ImageDataGenerator
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report,confusion_matrix
from keras.callbacks import ReduceLROnPlateau, LearningRateScheduler, Model
Checkpoint
import cv2

labels = ['PNEUMONIA', 'NORMAL']
img_size = 200
def get_training_data(data_dir):
    data = [] 
    for label in labels: 
        path = os.path.join(data_dir, label)
        class_num = labels.index(label)
        for img in os.listdir(path):

65
            try:
                img_arr = cv2.imread(os.path.join(path, img), cv2.IMREAD_GR
AYSCALE)
                resized_arr = cv2.resize(img_arr, (img_size, img_size)) 
                data.append([resized_arr, class_num])
            except Exception as e:
                print(e)
    return np.array(data)

train = get_training_data(r'C:\Users\Ryzen\Desktop\PneumoniaDetection\s\tra
in')
test = get_training_data(r'C:\Users\Ryzen\Desktop\PneumoniaDetection\s\test
')
val = get_training_data(r'C:\Users\Ryzen\Desktop\PneumoniaDetection\s\val')

l = []
pneum = 0
normal = 0
for i in train:
    if(i[1] == 0):
        l.append("Pneumonia")
        pneum = pneum + 1
    else:
        l.append("Normal")
        normal = normal + 1
for i in test:
    if(i[1] == 0):
        l.append("Pneumonia")
        pneum = pneum + 1
    else:
        l.append("Normal")
        normal = normal + 1
for i in val:
    if(i[1] == 0):
        l.append("Pneumonia")
        pneum = pneum + 1
    else:
        l.append("Normal")
        normal = normal + 1
sns.set_style('darkgrid')
sns.countplot(l)
print(pneum, normal)

font = {'family' : 'DejaVu Sans',
        'weight' : 'regular',
        'size'   : 13}
plt.rc('font', **font)
plt.figure(figsize = (5,5))

66
plt.imshow(train[4][0], cmap='gray')
plt.title(labels[train[0][1]])
plt.figure(figsize = (5,5))
plt.imshow(train[-3][0], cmap='gray')
plt.title(labels[train[-1][1]])
plt.figure(figsize = (5,5))
plt.imshow(train[212][0], cmap='gray')
plt.title(labels[train[0][1]])
plt.figure(figsize = (5,5))
plt.imshow(train[-78][0], cmap='gray')
plt.title(labels[train[-1][1]])
plt.figure(figsize = (5,5))
plt.imshow(train[430][0], cmap='gray')
plt.title(labels[train[0][1]])
plt.figure(figsize = (5,5))
plt.imshow(train[-21][0], cmap='gray')
plt.title(labels[train[-1][1]])

x_train = []
y_train = []
x_val = []
y_val = []
x_test = []
y_test = []

for feature, label in train:
    x_train.append(feature)
    y_train.append(label)
for feature, label in val:
    x_val.append(feature)
    y_val.append(label)
for feature, label in test:
    x_test.append(feature)
    y_test.append(label)

x_train = np.array(x_train) / 255
x_val = np.array(x_val) / 255
x_test = np.array(x_test) / 255

x_train = x_train.reshape(-1, img_size, img_size, 1)
y_train = np.array(y_train)
x_val = x_val.reshape(-1, img_size, img_size, 1)
y_val = np.array(y_val)
x_test = x_test.reshape(-1, img_size, img_size, 1)
y_test = np.array(y_test)

datagen = ImageDataGenerator(
        featurewise_center=False,  

67
        samplewise_center=False,  
        featurewise_std_normalization=False,  
        samplewise_std_normalization=False,  
        rotation_range = 30,  
        zoom_range = 0.2, 
        width_shift_range=0.1, 
        height_shift_range=0.1,  
        horizontal_flip = True,  
        vertical_flip=False) 
datagen.fit(x_train)

model = Sequential()
model.add(Conv2D(64 , (3,3) , strides = 1 , padding = 'same' , activation = 
'relu' , input_shape = (200,200,1)))
model.add(BatchNormalization())
model.add(MaxPool2D((2,2) , strides = 2 , padding = 'same'))
model.add(Conv2D(128 , (3,3) , strides = 1 , padding = 'same' , activation 
= 'relu'))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add(MaxPool2D((2,2) , strides = 2 , padding = 'same'))
model.add(Conv2D(128 , (3,3) , strides = 1 , padding = 'same' , activation 
= 'relu'))
model.add(BatchNormalization())
model.add(MaxPool2D((2,2) , strides = 2 , padding = 'same'))
model.add(Conv2D(256 , (3,3) , strides = 1 , padding = 'same' , activation 
= 'relu'))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add(MaxPool2D((2,2) , strides = 2 , padding = 'same'))
model.add(Conv2D(512 , (3,3) , strides = 1 , padding = 'same' , activation 
= 'relu'))
model.add(Dropout(0.25))
model.add(BatchNormalization())
model.add(MaxPool2D((2,2) , strides = 2 , padding = 'same'))
model.add(Flatten())
model.add(Dense(units = 256 , activation = 'relu'))
model.add(Dropout(0.2))
model.add(Dense(units = 1 , activation = 'sigmoid'))
model.compile(optimizer = "rmsprop" , loss = 'binary_crossentropy' , metric
s = ['accuracy'])
model.summary()

learning_rate_reduction = ReduceLROnPlateau(monitor='val_accuracy', patienc
e = 2, verbose=1, factor=0.3, min_lr=0.000001)

history = model.fit(datagen.flow(x_train,y_train, batch_size = 32) ,epochs 
= 200, 

68
    validation_data = datagen.flow(x_val, y_val) ,callbacks = [learning_rat
e_reduction])
print("Model loss - " , model.evaluate(x_test,y_test)[0])
print("Model accuracy - " , model.evaluate(x_test,y_test)[1]*100 , "%")

font = {'family' : 'DejaVu Sans',
        'weight' : 'regular',
        'size'   : 15}
plt.rc('font', **font)

acc_train = history.history['accuracy']
acc_val = history.history['val_accuracy']
plt.plot(acc_train, 'g', label='Preciznost treninga')
plt.plot(acc_val, 'b', label='Preciznost validacije')
plt.title('Preciznost treninga i validacije')
plt.xlabel('Epoha')
plt.ylabel('Preciznost')
plt.legend(loc = 'lower right')
plt.savefig('acc.png')
plt.show()

loss_train = history.history['loss'][171:201]
loss_val = history.history['val_loss'][171:201]
plt.plot(loss_train,'g', label='Gubitak treninga' )
plt.plot(loss_val,'b', label='Gubitak validacije')
plt.title('Gubitak treninga i validacije')
plt.ylabel('Gubitak')
plt.xlabel('Epoha')
positions = [0,4,9,14,19,24,29]
labels = [171,176,181,186,191,196,200]
plt.xticks(positions, labels)
plt.legend(loc='best')
plt.savefig('loss.png')
plt.show()

predvidjanja = model.predict_classes(x_test)
predvidjanja = predvidjanja.reshape(1,-1)[0]
predvidjanja[:15]

print(classification_report(y_test, predvidjanja, target_names = ['Pneumoni
a (Class 0)','Normal (Class 1)']))

cm = confusion_matrix(y_test,predvidjanja)
cm = pd.DataFrame(cm , index = ['0','1'] , columns = ['0','1'])

font = {'family' : 'DejaVu Sans',
        'weight' : 'regular',
        'size'   : 15}

69
plt.rc('font', **font)
labels = ['PNEUMONIA', 'NORMAL']
plt.figure(figsize = (10,10))
sns.heatmap(cm, cmap="Greens", linecolor = "black", linewidth = 2, annot = 
True, fmt = "", xticklabels = labels, 
            yticklabels = labels)

tacno = np.nonzero(predvidjanja == y_test)[0]
netacno = np.nonzero(predvidjanja != y_test)[0]

font = {'family' : 'DejaVu Sans',
        'weight' : 'regular',
        'size'   : 15}
plt.rc('font', **font)
i = 3
for t in tacno[500:503] :
    plt.figure(figsize = (5,5))
    plt.xticks([])
    plt.yticks([])
    plt.imshow(x_test[t].reshape(200,200),cmap = 'gray', interpolation = "n
one")
    plt.title("Predvidjena klasa {}, Stvarna klasa {}".format(predvidjanja[
t], y_test[t]))
    
    plt.savefig(str(i)+'.png')
    i += 1

font = {'family' : 'DejaVu Sans',
        'weight' : 'regular',
        'size'   : 15}
plt.rc('font', **font)
i = 0
for t in netacno[:3] :
    plt.figure(figsize = (5,5))
    plt.xticks([])
    plt.yticks([])
    plt.imshow(x_test[t].reshape(200,200),cmap = 'gray', interpolation = "n
one")
    plt.title("Predvidjena klasa {}, Stvarna klasa {}".format(predvidjanja[
t], y_test[t]))
    plt.savefig(str(i)+'.png')
    i += 1

70

You might also like