Professional Documents
Culture Documents
Magistarski Printing Draft
Magistarski Printing Draft
Magistarski Printing Draft
MAGISTARSKI RAD
MAGISTARSKI RAD
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
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].
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.
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.
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.
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.
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.
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.
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].
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.
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
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
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.
Primarne,
Sekundarne.
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.
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.
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).
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:
10
Slika 7. Koraci u kreiranju modela mašinskog učenja
Nadgledano učenje,
Nenadgledano učenje,
Pojačano učenje.
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.
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:
13
Slika 10. Koraci k-NN
14
Slika 11. Sigmoidna funkcija
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.
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].
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
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.
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.
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).
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.
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.
y = k*x + m,
gdje:
20
Slika 18. Linearna regresija
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.
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.
22
Slika 19. Primjer grupisanja sa k- srednjih vrijednosti
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.
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
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].
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.
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.
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.
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].
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.
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.
32
Konvolucioni (sa funkcijom aktivacije, najčešće ReLU),
Sloj sažimanja (eng. Pooling layer),
Potpuno povezani sloj (eng. Fully connected 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.
33
Slika 27.Primjer arhitekture Konvolucione neuronske mreže
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)
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).
36
Slika 32. Konvolucioni slojevi
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].
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].
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
39
Slika 35. Potpuna povezanost
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.
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
Gastroenterologija [25],
Endoskopija [9],
Radiologija [26],
Kardiologija [27].
Naravno, Mašinsko učenje svoju primjenu nalazi i u oblasti koje gore nisu navedene.
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].
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.
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.
44
Slika 37. Uloga Vještačke inteligencije u kardiovaskularnoj medicini
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).
45
Slika 38. Proces primjene Mašinskog učenja u medicini
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.
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)
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.
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).
51
Slika 41. Arhitektura Konvolucione neuronske mreže ovog istraživanja
52
Slika 42. model.summary() modela korišćenog za ovo istrtaživanje
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.
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
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.
[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.
[9] V. Kaul, S. Enslin, S.A. Gross, „The history of artificial intelligence in medicine“,
Gastrointestinal Endoscopy, In Press, 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.
[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.
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.
[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.
63
Internet izvori:
Kaggle, https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia
Coursera, www.coursera.com
Keras, www.keras.io
Anaconda, www.anaconda.org
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
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