Nevronska mreˇza (angl. neural Network) je algoritem za klasifikacijo, ki je v zadnjem ˇcasu dosegel velik napredek, med drugim tudi na podroˇcju ob-delave naravnega jezika in besedil [15]. Algoritem klasifikacije elektronskih sporoˇcil z nevronsko mreˇzo se zaˇcne z izbiro parametrov nevronske mreˇze.
Tukaj se doloˇci ˇstevilo vhodov, ˇstevilo izhodov, ˇstevilo skritih nivojev ne-vronske mreˇze in ˇstevilo nevronov na vsakem nivoju. Omenjeni so le osnovni parametri, ki jih je nujno potrebno nastaviti pri nastavitvi nevronske mreˇze, v praksi pa je velikokrat potrebno nastaviti ˇse druge. Ko imamo izbrane parametre nevronske mreˇze, je naslednji korak uˇcenje nevronske mreˇze z mnoˇzico oznaˇcenih uˇcnih primerov. Zatem je nevronska mreˇza pripravljena na klasifikacijo novih elektronskih sporoˇcil [13].
Klasifikacija elektronskih sporoˇcil z nevronsko mreˇzo je sicer lahko zelo uspeˇsna, vendar je za dober rezultat potrebna velika koliˇcina uˇcnih podatkov in veliko ˇcasa za uˇcenje. Poleg tega je potrebno pravilno nastaviti parametre nevronske mreˇze, kar je lahko zelo dolgotrajna naloga. Ob vsaki klasifikaciji je namreˇc potrebno spremljati rezultat in spreminjati parametre tako, da je rezultat ˇcim boljˇsi.
Pri gradnji konˇcnega sistema smo si pomagali s tabelo, v kateri smo beleˇzili napredek ali nazadovanje ob spremembi doloˇcenih parametrov. Del rezultatov iz te tabele podamo in opiˇsemo v razdelku 6.3.2. V nadaljevanju pa opiˇsemo uporabljene parametre nevronske mreˇze.
Uporabljeni parametri nevronske mreˇ ze
Pri nevronski mreˇzi iz knjiˇznice sklearn smo uporabili parametre hidden layer sizes,activation,learning rateinmax iter. Parameterhidden layer sizespredstavlja ˇstevilo nevronov na vsakem nivoju nevronske mreˇze.
Doloˇcimo ga z n-terico ˇstevil, kjer ˇstevilo na i-tem mestu predstavlja ˇstevilo nevronov na i-tem skritem nivoju. Mi smo uporabili dva skrita nivoja, in sicer s ˇsestimi in dvema nevronoma.
Diplomska naloga 15 S parametrom activation doloˇcimo aktivacijsko funkcijo na skritih ni-vojih. Aktivacijska funkcija je funkcija, ki iz vhodov v nevron izraˇcuna iz-hod [26]. Na voljo imamo funkcije:
• identity- identiteta, linearna funkcija f(x) = x
• logistic- sigmoidna funkcija f(x) = 1+e1−x
• tanh- hiperboliˇcni tangens f(x) =tanh(x)
• relu- pragovna linearna funkcija ReLu f(x) =max(0, x) V naˇsem primeru smo uporabili funkcijo tanh.
S parametromlearning rate doloˇcimo hitrost uˇcenja za posodobitev uteˇzi.
Na voljo imamo konstantno (constant), manjˇsajoˇco (invscaling) in prila-godljivo (adaptive). Uporabili smo prilaprila-godljivo obliko uˇcenja.
Zadnji doloˇceni parameter je max iter, s katerim doloˇcimo najveˇcje ˇstevilo iteracij. Izbrali smo 400 iteracij.
Druga knjiˇznica, ki smo jo uporabili pri implementaciji nevronskih mreˇz, jekeras. Za nevronske mreˇze iz te knjiˇznice lahko ˇse bolj natanˇcno doloˇcimo parametre. Uporabili smo dve obliki modela, in sicer sekvenˇcni model (Se-quential) in funkcijski API (Functual API). Pri obeh modelih moramo naj-prej definirati nivoje nevronske mreˇze, nato pa jih zloˇziti v model. Sekvenˇcni model je primeren za zlaganje nivojev, kjer ima vsak nivo natanko en vho-dni in natanko en izhovho-dni tenzor oziroma vsebnik podatkov (angl. tensor).
Primer sekvenˇcnega modela, ki smo ga implementirali v okviru naloge, je prikazan na sliki 3.3.
Po drugi strani pa je nevronska mreˇza s funkcijskim APIjem nekoliko bolj fleksibilna. Z njim lahko zgradimo tudi nelinearno topologijo, deljene nivoje in celo veˇc vhodov ali izhodov. Primer modela s funkcijskim APIjem, ki smo ga ustvarili, je prikazan na sliki 3.4.
Kot je razvidno iz izsekov kode na slikah 3.3 in 3.4, sta oba modela sesta-vljena iz pribliˇzno enakih nivojev. Najoˇcitnejˇsa razlika pri definiciji obeh mo-delov je v tem, da pri sekvenˇcnem modelu najprej definiramo model in nanj
Slika 3.3: Primer definicije sekvenˇcnega modela nevronske mreˇze
Slika 3.4: Primer definicije nevronske mreˇze s funkcijskim APIjem
nato dodajamo nivoje s funkcijo .add(), pri funkcijskem APIju pa najprej definiramo vhod in izhod, ki ju nato samo “vstavimo” v model (9. vrstica).
Definicija skritih nivojev pa je pribliˇzno enaka v obeh primerih.
V 4. vrstici smo definirali vloˇzitveni nivo Embedding(), ki spremeni pozi-tivna ˇstevila (indekse) na vhodu v zgoˇsˇcene vektorje stalne dolˇzine. Naslednji nivo “sploˇsˇci” vektorje v enodimenzionalni vektor. Definirali smo ga v 6. vr-stici s funkcijo Flatten(). V 8. vrstici definiramo nivo, ki je gosto povezan (Dense) in aktivacijsko funkcijo. V obeh primerih smo uporabili sigmoidno funkcijo.
Diplomska naloga 17 Na koncu model konfiguriramo s funkcijo .compile(). Funkciji moramo podati ˇse nekaj paramterov, in sicer:
• optimizer - optimizacijska funkcija,
• loss- funkcija izgube,
• metrics- seznam metrik, ki doloˇcujejo uspeˇsnost modela v ˇcasu uˇcenja in testiranja.
Ceprav sta modela po zgradbi precej podobna, so rezultati testiranjaˇ pokazali, da je model s funkcijskim APIjem nekoliko boljˇsi od sekvenˇcnega.
Iz tega razloga smo v konˇcnem sistemu uporabili funkcijski API.
Poglavje 4
Zasnova filtra akademskih sporoˇ cil
Naslednje poglavje je namenjeno opisu naˇcrta praktiˇcnega dela diplomske naloge. V njem podamo cilje, ki smo si jih zastavili pri izdelavi programske reˇsitve. Predstavimo tudi zgradbo izdelanega sistema in kako posamezen del deluje. Vkljuˇcimo ˇse opis orodij, ki smo jih uporabili.
4.1 Opredelitev zahtev
Osrednji problem, ki ga ˇzelimo reˇsiti pri diplomski nalogi, je izdelava ˇcim bolj uˇcinkovitega filtra nezaˇzelene akademske elektronske poˇste. Najprej je potrebno izbrati uˇcne podatke - v naˇsem primeru elektronska sporoˇcila.
Za uˇcenje modela je potrebno, da so sporoˇcila oznaˇcena. Torej potrebu-jemo mnoˇzico nezaˇzelenih akademskih sporoˇcil in mnoˇzico drugih sporoˇcil.
Najdena sporoˇcila je nato potrebno pretvoriti v ustrezno obliko in odstra-niti ali dodati znaˇcilnosti, ki so koristne pri klasifikaciji. Nato je potrebno preuˇciti razliˇcne klasifikacijske modele in uporabiti tistega, ki najbolje kla-sificira nezaˇzeleno akademsko elektronsko poˇsto. Na tem delu je potrebno uporabiti ustrezne metrike za ugotavljanje uspeˇsnosti modela.
Zgrajeni filter je zatem potrebno povezati z odjemalcem za elektronsko 19
poˇsto. Za to je potrebno izbrati ustrezen odjemalec elektronske poˇste in doloˇciti naˇcin oznaˇcevanja nezaˇzelene akademske elektronske poˇste. Poleg tega ˇzelimo, da model ne ostane vedno isti, temveˇc da se ga lahko posodobi.
Zato ˇzelimo, da ima sistem moˇznost, da se spremeni in prilagodi glede na uporabnika.
Ce povzamemo, ˇˇ zelimo pri izdelavi sistema doseˇci naslednje cilje:
1. najti ustrezno zbirko elektronskih sporoˇcil,
2. sporoˇcila obdelati in pretvoriti v obliko, primerno za klasifikacijski mo-del,
3. izbrati ustrezne metrike za ugotavljanje uˇcinkovitosti modelov, 4. preizkusiti razliˇcne modele za klasifikacijo in izbrati najboljˇsega, 5. izbrati odjemalec za elektronsko poˇsto in ga povezati z modelom, 6. doloˇciti naˇcin oznaˇcevanja nezaˇzelene akademske elektronske poˇste v
izbranem odjemalcu,
7. imeti moˇznost posodobitve sistema glede na uporabnikova sporoˇcila.