master rad - pmf.ni.ac.rsunarske... · na kraju ovog poglavlja prikazane tehnike za ubrzavanje...
TRANSCRIPT
UNIVERZITET U NIŠU
PRIRODNO MATEMATIČKI FAKULTET
DEPARTMAN ZA RAČUNARSKE NAUKE
Prepoznavanje hijerarhijskih relacija
u vektorskom prostoru reprezentacija reči
Master rad
Mentor: Student:
Prof. dr Branimir Todorović Nikola Stevanović
Niš, Oktobar 2016.
1
Predgovor
Tokom druge godine master akademskih studija, počeo sam da se intenzivnije
interesujem za oblast mašinskog učenja. Tokom učenja same oblasti, moje interesovanje je
sve više raslo. Kasnije sam počeo da analiziram i neke probleme procesiranja govornog
jezika. Ovaj rad je nastao kao plod tog interesovanja.
Zahvaljujem se svom mentoru, prof. dr Branimiru Todoroviću, koji me je uveo u
oblast mašinskog učenja. On je svojim zamimljivim predavanjima doprineo da se dodatno
zainteresujem za ovu oblast. TakoĎe, veliko mu hvala što mi je pored teorijskih lekcija,
objasnio i kako da to znanje primenim u praksi.
TakoĎe se zahvaljujem i prof. dr Marku Miloševiću, dugogodišnjem nastavniku i
profesoru, koji me je uveo u svet softverskog inženjerstva. Kroz mnoge projekte na kojima
mi je bio mentor, naučio sam mnogo praktičnih stvari, koje će mi biti od velikog značaja u
daljoj karijeri.
Velika zahvalnost ide i svim bivšim takmičarima iz matematike i informatike, koji su
me dodatnim nastavama u srednjoj školi uveli u sferu informatike, i u njoj me zadržali. Od
čoveka koji nije znao šta je informatika, postao sam čovek kome je to najinteresantnija oblast.
TakoĎe, veliku zahvalnost dugujem i svim ostalim profesorima sa Prirodno-
matematičkog fakulteta, koji su samnom nesebično delili svoje znanje, i uvek bili tu za sva
moja pitanja. Zahvaljujem se i svojoj porodici i prijateljima, koji su uvek bili uz mene i
pružali mi neizmernu podršku.
2
Sadržaj
1. Uvod ...................................................................................................................................... 4
2. Korišćeni algoritmi .............................................................................................................. 6
2.1. Stohastički spust gradijentom ......................................................................................... 6
2.2. Klasterizacija metodom k srednjih vrednosti (K-Means) ............................................... 7
2.3. Neuronske mreže ............................................................................................................. 8
2.3.1. Izračunavanje gradijenta kriterijumske funkcije .................................................... 10
2.3.2. Robusni algoritam prostiranja greške unazad (RPROP) ........................................ 12
3. Učenje vektorskih reprezentacija reči ............................................................................. 15
3.1. Model kontinualne grupe reči (eng. Continuous bag of words- CBOW) ..................... 15
3.2. Model preskakanja jedinica (eng. Skip Gram) .............................................................. 18
3.3. Optimizacija .................................................................................................................. 20
3.3.1. Hijerarhijski softmax .............................................................................................. 20
3.3.2. Uzimanje negativnih uzoraka ................................................................................. 22
4. Detekcija hijerarhijskih relacija ....................................................................................... 25
4.1. Analiza problema .......................................................................................................... 25
4.2. Opis algoritma ............................................................................................................... 26
4.2.1. Formulacija problema ............................................................................................. 26
4.2.2. Ugradnja reči u vektorski prostor ........................................................................... 26
4.2.3. Klasterizacija parova .............................................................................................. 27
4.2.4. Učenje projekcija .................................................................................................... 28
4.2.5. Identifikacija relacije hiponimije ............................................................................ 29
5. Implementacija i testiranje ............................................................................................... 31
5.1. WordNet ........................................................................................................................ 31
5.2. Korišćeni alati ............................................................................................................... 32
5.2.1. PyCharm ................................................................................................................. 32
5.2.2. Eclipse .................................................................................................................... 32
5.2.3. NLTK...................................................................................................................... 32
5.3. Testiranje ....................................................................................................................... 33
5.3.1. Korpus .................................................................................................................... 33
5.3.2. Testiranje linearnog modela ................................................................................... 33
5.3.3. Testiranje nelinearnog modela ................................................................................ 33
6. Zaključak ............................................................................................................................ 35
3
Literatura................................................................................................................................ 36
Biografija ................................................................................................................................ 37
4
1. Uvod
Procesiranje govornog jezika (eng. natural language processing) je jedna od
najaktuelnijih oblasti veštačke inteligencije. Ona se bavi interakcijom računara i čoveka, a
kao krajnji cilj ima potpuno razumevanje govornog jezika od strane računara. Na putu do
krajnjeg cilja, pojavio se veliki broj manjih problema, koji su se izdvojili, pa sada
predstavljaju posebne oblasti istraživanja. Jedan od njih je i problem pronalaženja relacija
meĎu rečima, a jedna od ključnih relacija je relacija pripadnosti. Dve reči su u takvoj relaciji
ukoliko je moguće staviti reč "je" izmeĎu njih i dobiti tačan iskaz (npr. zelena je boja, slon je
životinja, matematika je nauka). Tada reči obrazuju hiponim-hiperonim par. Hiponim
predstavlja specifikaciju nekog pojma, dok hiperonim predstavlja generalizaciju pojma.
Pojava vektorskih reprezentacija reči, kao što su GloVe i Word2Vec, dovela je do
vidljivih napredaka u raznim oblastima procesiranja govornog jezika. Vektorske
reprezentacije reči su konstruisane na taj način da reči sa sličnim kontekstima imaju slične
reprezentacije (da je rastojanje izmeĎu njihovih reprezentacija što manje). Kontekst reči
predstavljaju reči koje okružuju datu reč.
Osobine koje vektorske reprezentacije reči imaju se konstantno analiziraju. Ljudi su
uočili da ovakve reprezentacije reči dobro opisuju izvesne leksičke osobine. Naime, razlike
vektora različitih imenica u množini i jednini predstavljaju slični vektori. To važi i za odnose
glavni grad-država, muski-ženski naziv za neku profesiju i mnoge druge. Tako je na primer
razlika izmeĎu vektora muškarca i žene, jednaka razlici izmeĎu vektora kralja i kraljice. To
može da se objasni time da se kralj pojavljuje u svim kontekstima vezanim za vladara, kao i u
kontekstima vezanim za muškarca, dok se kraljica nalazi u kontekstima vezanim za vladara i
ženu. Kada se njihovi konteksti oduzmu, ostaje samo razlika u kontekstima izmeĎu muškarca
i žene.
Relacija pripadnosti je jedna od veoma važnih leksičkih relacija. Ipak, to koliko dobro
ovakve vektorske reprezentacije opisuju relacije pripadnosti nije istraženo ni približno u meri
u kojoj je to uraĎeno za neke od relacija koje su opisane iznad. Bilo bi veoma lepo kada bi
informacija o tome da li neki par reči pripada relaciji pripadnosti mogla da se dobije direktno
iz vektorskih reprezentacija reči. To bi uklonilo potrebu za dodatnim resursima u vidu
semantičkih leksikona, koji sa sobom nose odreĎene nedostatke. Naime, svi leksikoni su
veoma precizni, pa se kao takvi često ne generalizuju dobro na ostale pojmove jezika. Za
razliku od njih, provera preko vektorskih reprezentacija reči bi bila manje striktna, ali bi
mogla dosta bolje da se generalizuje na ostatak rečnika. Sa čisto teorijske strane, zanimljivo
je analizirati da li vektorske reprezentacije reči uopšte sadrže dovoljno informacija da
prepoznaju relacije hiperonim-hiponim. To je analizirano u ovom radu, i ispostavilo se da
ovakve reprezentacije sadrže izvesnu količinu informacija o ovim semantičkin odnosima
meĎu rečima.
U ovom radu je implementiran algoritam koji pomoću vektorskih reprezentacija reči
detektuje hiperonim-hiponim parove. Jedna od prednosti vektorskih reprezenacija reči je i ta
što za njihovo treniranje nije potreban nikakav ljudski napor za anotaciju teksta, već se
5
reprezentacije dobijaju iz velike količine teksta. Sam proces detekcije odvija se u nekoliko
koraka, koji su detaljno objašnjeni u radu.
Sam rad je struktuiran na sledeći način. U drugom poglavlju je dat pregled algoritama
koji su korišćeni u radu. Najpre je objašnjen proces minimizacije funkcije pomoću
stohastičkog gradijentnog spusta. Ovo je jedan od osnovnih algoritama, koji se koristiti u
treniranju velikog broja modela mašinskog učenja. Zatim je opisan proces klasterizacije
podataka pomoću K-Means algoritma. Na kraju poglavlja je opisan rad sa neuronskim
mrežama. Prvo je dat uvodni deo gde je opisano kako neuronske mreže rade, a kasnije je
objašnjen i sam način treniranja. Za treniranje neuronskih mreža je prikazan RPROP
algoritam, koji se pokazao kao izuzetno dobar. Neuronske mreže predstavljaju jedan od
najefikasnijih algoritama mašinskog učenja.
Treće poglavnje daje pregled tehnika za učenje vektorskih reprezentacija reči.
Prikazana su dva modela, Skip Gram i CBOW. Oba po svojoj konstrukciji predstavljaju
neuronske mreže. Delo su T. Mikolova, i važe za jedne od najboljih algoritama za rešavanje
ovog problema. Treniranje ovih modela u svojim osnovnim oblicima je veoma sporo, pa su
na kraju ovog poglavlja prikazane tehnike za ubrzavanje samog procesa treniranja.
U četvrtom poglavlju je opisan algoritam za detekciju hijerarhijskih relacija. On se
sastoji iz više koraka. Na početku se parovi reči koje pripadaju relaciji grupišu u klastere, a
zatim se unutar svakog klastera uči preslikavanje koje hiponim slika u njegov hiperonim. U
radu su data dva tipa ovakvog preslikavanja. Jedan je linearni, a drugi nelinearni. Na kraju je
prikazan način kako se na osnovu ovih preslikavanja odreĎuje da li neki novi par pripada
relaciji.
Peto poglavlje sadrži detalje implementacije, kao i rezultate testiranja. Objašnjena je
struktura WordNet-a, iz koga je kreiran korpus za treniranje. Zatim su prikazani alati koji su
korišćeni u implementaciji. Na kraju poglavlja je deo o testiranju sa rezultatima.
Zaključak sumira dobijene rezultate i predlaže pravce za dalje unapreĎenje algoritma
za detekciju hijerarhijskih relacija.
6
2. Korišćeni algoritmi
2.1. Stohastički spust gradijentom
Problem minimizacije neke funkcije se često javlja u mašinskom učenju. U ovom
radu je za minimizaciju nekih funkcija korišćen baš stohastički spust gradijentom. Za
razumevanje stohastičkog gradijentnog spusta, najpre je potrebno objasniti klasičan
gradijentni spust.
U mašinskom učenju je funkcija koja se minimizuje najčešće u obliku sume,
Q w =1
n Qi(w)n
i=1 . Parametar 𝑤 je parametar po kome se minimizuje. Svaka od funkcija
Qi predstavlja cenu odstupanja i-tog elementa iz skupa za treniranje.
Kod gradijentnog spusta se kreće od proizvoljne tačke 𝑤0. U svakoj iteraciji se
vrednost parametra menja u pravcu negativnog gradijenta po formuli:
𝑤𝑘 = 𝑤𝑘−1 − 𝜂𝛻𝑄 𝑤𝑘−1 = 𝑤𝑘−1 − 𝜂1
n 𝛻Qi(𝑤𝑘−1)n
i=1 .
To se radi sve dok vrednost gradijenta ne bude jednaka nuli (ili manja od neke unapred zadate
vrednosti blizu nule).
Ovaj algoritam je odličan za treniranje modela kod kojih je obim uzorka relativno
mali. Ukoliko je obim uzorka veliki, algoritam može da bude spor, jer za jednu promenu
parametra 𝑤, on treba da proĎe kroz sve primere. U tom slučaju, stohastički gradijentni spust
brže dolazi do zadate tačnosti. Iako je broj promena parametra za dostizanje zadate tačnosti
veći kod stohastičkog spusta, svaka promena je veoma brza, pa je ukupno vreme kraće. Na
sledećoj slici je crvenom linijom prikazano kako klasičan gradijentni spust konvergira, dok je
ljubičastom prikazana konvergencija stohastičkog gradijentnog spusta.
Stohastički spust za svaku promenu parametra koristi samo jedan primer iz trening
skupa. Algoritam promene je sledeći:
7
𝑤𝑘 = 𝑤𝑘−1 − 𝜂𝛻𝑄𝑖 𝑤𝑘−1 . Indeks 𝑖 predstavlja redni broj primera u skupu za treniranje. U
svakoj iteraciji se menja primer na osnovu kog se modifikuje vrednost parametra. Najčešći
način implementacije algoritma je da se u nekoliko epoha ponove sledeća dva koraka:
promešati primere u skupu za treniranje,
proći kroz sve primere od početka do kraja skupa za treniranje, i na osnovu svakog
odraditi odgovarajuću modifikaciju parametra.
Mešanje trening skupa pre svake epohe dovodi do brže konvergencije. Što se
parametra 𝜂 tiče, on može da bude konstantan, a može i da se blago smanjuje vremenom.
Početna vrednost parametra se uglavnom dobija eksperimentalnim putem.
2.2. Klasterizacija metodom k srednjih vrednosti (K-Means)
K-Means je algoritam za klasterizaciju podataka. Na ulazu dobija 𝑛 vektora u 𝑚-
dimenzialnom vektorskom prostoru, a na izlazu treba da razvrsta vektore u 𝑘 klastera, tako da
su vektori unutar jednog klastera što sličniji. Informacija o broju klastera (𝑘) se zadaje na
početku. Svaki klaster je odreĎen svojim centrom, a svaki vektor se dodaje onom klasteru čiji
centar je najbliži tom vektoru.
Formalnije, problem može da se definiše na sledeći način. Označimo sa (𝑥1,… , 𝑥𝑛)
sve vektore. Njih treba podeliti u 𝑘 klastera, 𝑆 = 𝑆1,… , 𝑆𝑘 , tako da se minimizuje sledeća
funkcija:
𝑥 − 𝜇𝑖 2
𝑥∈𝑆𝑖
𝑘
𝑖=1
Minimizacija se vrši po particijama 𝑆 skupa vektora. Vektor 𝜇𝑖 predstavlja srednju vrednost
vektora unutar 𝑖-tog klastera.
8
Algoritam se odvija u nekoliko faza, a to kako radi iz iteracije u iteraciju prikazano je na slici
iznad:
1) Na početku treba inicijalizovati centre svih klastera. To se najčešće radi tako što se od
𝑛 vektora odabere 𝑘, a njihove vrednosti postave za centre klastera.
2) Svaki vektor treba dodati u klaster čiji je centar najbliži tom vektoru.
3) Za svaki klaster treba postaviti za vrednost centra srednju vrednost svih vektora koji
pripadaju klasteru.
4) Ukoliko za neki vektor postoji klaster čiji je centar bliži od centra klastera u kome se
nalazi, vratiti se na korak 2.
Važno je napomenuti da ovaj algoritam nalazi samo lokalni minimum. U zavisnosti
od toga koje tačke izaberemo za polazne centre klastera, možemo doći do različitih lokalnih
minimuma. Zbog toga se u praksi algoritam ponavlja više puta, pa se na kraju uzima ona
podela u kojoj je dostignut najmanji lokalni minimum.
2.3. Neuronske mreže
Neuronske mreže su jedan od algoritama sa najviše varijacija. Trenutno su jedno od
najpopularnijih rešenja za mnoge probleme mašinskog učenja. Sve one u osnovi polaze od
sličnih ideja, a ovde će biti prikazan najosnovniji model neuronskih mreža.
Pre svega treba formulisati problem koji se rešava. Neka je dat korpus 𝐷 =
{(𝑥𝑖 ,𝑦𝑖)}𝑖=1𝑛 . Neuronska mreža je u stanju da nauči nelinearno preslikavanje, koje je u stanju
da prilično dobro preslika ulazne vektore (𝑥𝑖) u izlazne (𝑦𝑖). Najpre će biti prikazan izgled
jednog neurona u mreži, a kasnije i cele mreže.
Neuron na ulazu prima 𝑛-dimenzionalni vektor (u ovom slučaju trodimenzionalni) i
konstantni član, a na izlazu daje vrednost, koja se dobija po sledećoj formuli:
𝑊,𝑏 𝑥 = 𝑓( 𝑊𝑖𝑥𝑖
𝑛
𝑖=1
+ 𝑏)
Funkcija 𝑓 se naziva aktivacionom funkcijom, i može imati više oblika. Izbor aktivacione
funkcije može u dobroj meri da utiče na to koliko dobro mreža može da nauči podatke iz
9
korpusa. Težine 𝑊𝑖 se nalaze na granama izmeĎu ulaznih veličina i neurona. One utiču na to
koliko odreĎena ulazna veličina ima uticaj na ulaz aktivacione funkcije. To su veličine koje u
toku treniranja mreže treba naučiti, tako da ona što bolje vrši traženo preslikavanje. Sledi
prikaz najkorišćenijih aktivacionih funkcija:
Linearna - 𝑓 𝑥 = 𝑥
Sigmoidalna - 𝑓 𝑥 =1
1+𝑒−𝑥
Hiperbolički tangens - 𝑓 𝑥 =𝑒𝑥−𝑒−𝑥
𝑒𝑥+𝑒−𝑥
Svaka neuronska mreža se sastoji iz slojeva. Sloj se sastoji iz više neurona, koji
primaju signale iz prethodnog sloja (osim ukoliko se radi o ulaznom sloju), a šalju signale
sledećem sloju (osim ukoliko se radi o izlaznom sloju). Ulazni sloj je sloj u kome mreža
prima podatke. Izlazni sloj je sloj koji predstavlja transformaciju ulaznog sloja pomoću
neuronske mreže. IzmeĎu ulaznog i izlaznog sloja može biti proizvoljan broj slojeva. Svi ti
slojevi zajedno čine tzv. skriveni sloj neuronske mreže.
Označimo sa 𝑛𝑙 broj slojeva u mreži. Neka su slojevi označeni redom sa 𝐿𝑖 , tako da
𝐿1 predstavlja ulazni sloj, a 𝐿𝑛𝑙 izlazni sloj. Neuronska mreža ima parametre 𝑊, 𝑏 =
𝑊(1), 𝑏(1),… ,𝑊(𝑛𝑙−1), 𝑏(𝑛𝑙−1) . Parametar 𝑊(𝑖) predstavlja transformaciju iz izlaza
neurona 𝑖-tog sloja u ulaz neurona (𝑖 + 1)-og sloja. Konktetno, element matrice 𝑊𝑖𝑗(𝑘)
predstavlja težinu grane izmeĎu 𝑗-tog neurona 𝑘-tog sloja i 𝑖-tog neurona (𝑘 + 1)-og sloja.
Vektor 𝑏(𝑖) predstavlja vektor konstanti koje se dodaju (i+1)-om sloju. Neuroni koji uvek
imaju konstantnu vrednost 1 nemaju ulazne grane iz prethodnog sloja. Neka je sa 𝑠𝑙 označen
broj neurona u 𝑙-tom sloju. Sledi slika neuronske mreže sa ulaznim slojem od 3 neurona, dva
skrivena sloja od po 3 i 2 neurona redom, i izlaznim slojem od 2 neurona.
10
Označimo sa 𝑎𝑖(𝑙)
aktivaciju (izlaznu vrednost) 𝑖-tog neurona 𝑙-tog sloja. Za ulazni sloj
izlazna vrednost je ujedno i ulazna, pa je 𝑎𝑖(1)
= 𝑥𝑖 . Ukoliko su nam poznati parametri 𝑊 i 𝑏
neuronska mreža je potpuno odreĎena, i možemo na osnovu ulaznih veličina da dobijemo
izlazne. Označimo sa 𝑧𝑖(𝑙)
ulaznu vrednost 𝑖-tog neurona 𝑙-tog sloja. Tada je 𝑧𝑖(𝑙)
=
𝑊𝑖𝑗(𝑙−1)
𝑎𝑗(𝑙−1)
+ 𝑏𝑖𝑙−1𝑠𝑙−1
𝑗=1 . Izlazna vrednost se sada dobija kao 𝑎𝑖(𝑙)
= 𝑓(𝑧𝑖(𝑙)
). Sada je jasno
da, na osnovu aktivacija neurona jednog sloja, možemo dobiti aktivacije neurona sledećeg
sloja. Polazeći od ulaznog sloja, na taj način se dobijaju aktivacije svih neurona u mreži.
2.3.1. Izračunavanje gradijenta kriterijumske funkcije
Jedna od najkorišćenijih tehnika za izračunavanje gradijenta kriterijumske funkcije
neuronske mreže je propagiranjem greške unazad. Ona je korišćena u radu, pa će on ovde
biti objašnjena. Pre svega, od podataka koje koristimo za treniranje, imamo korpus od 𝑚
primera, 𝑥(1),𝑦(1) ,… , 𝑥(𝑚),𝑦(𝑚) . Cilj koji treba da postignemo je da neuronska mreža
što bolje radi na primerima za treniranje, ali isto tako i da dobro radi na novim primerima.
Da bismo uopste pričali o tome koliko dobro neuronska mreža radi, prvo moramo da
definišemo kako se računa greška koju treba da minimizujemo. U slučaju problema regresije,
u slučaju da je dat primer (𝑥,𝑦), ona se najčešće računa po sledećoj formuli:
𝐽 𝑊, 𝑏; 𝑥,𝑦 =1
2 𝑊,𝑏 𝑥 − 𝑦
2
Kako je prikazana greška samo za jedan primer, a broj primera je 𝑚, potrebno je
minimizirati prosečnu grešku (što je ekvivalentno minimiziranju sume grešaka). Da bi se
sprečio problem pretreniranja, dodaje se regularizacioni član. Problem pretreniranja je
problem kada sistem dobro radi na svim primerima na kojima je učio, ali daje loše rezultate
na novim primerima. Sada je moguće napisati kompletan oblik kriterijumske funkcije
(funkcije greške):
11
𝐽 𝑊, 𝑏 = 1
𝑚 𝐽 𝑊, 𝑏; 𝑥(𝑖),𝑦(𝑖)
𝑚
𝑖=1
+𝜆
2 (𝑊𝑗𝑖
(𝑙))2
𝑠𝑙+1
𝑗=1
𝑠𝑙
𝑖=1
𝑛𝑙−1
𝑙=1
Parametar 𝜆 odreĎuje koliko će biti dozvoljeno mreži da ima slabije rezultate na trening
skupu, radi boljih rezultata na novim primerima. Ovaj parametar ne treba da bude ni
preterano veliki, jer može doći do toga da algoritam radi loše i na trening skupu i na novim
primerima.
Posao koji algoritam za treniranje neuronske mreže treba da obavi je da odredi
parametre 𝑊 i 𝑏, tako da je vrednost kriterijumske funkcije što manja. Ovde ćemo se
fokusirati na metode koji koriste gradijent kriterijumske funkcije. Takav je metod
gradijentnog spusta. Računajući parcijalne izvode funkcije greške po parametrima, dobijamo
sledeće:
𝜕
𝜕𝑊𝑖𝑗(𝑙)𝐽 𝑊, 𝑏 =
1
𝑚
𝜕
𝜕𝑊𝑖𝑗(𝑙)𝐽 𝑊, 𝑏; 𝑥(𝑖),𝑦(𝑖)
𝑚
𝑖=1
+ 𝜆𝑊𝑗𝑖(𝑙)
𝜕
𝜕𝑏𝑖(𝑙)𝐽 𝑊, 𝑏 =
1
𝑚
𝜕
𝜕𝑏𝑖(𝑙)𝐽 𝑊, 𝑏; 𝑥(𝑖),𝑦(𝑖)
𝑚
𝑖=1
Sada će biti objašnjeno kako algoritam propagiranja greške unazad zapravo radi. Neka
je dat primer (𝑥,𝑦). Prva stvar koju treba uraditi je staviti vektor 𝑥 na ulaz neuronske mreže, i
proći kroz celu mrežu računajući ulazne i izlazne vrednosti za svaki neuron. Na taj način
dolazimo i do izlaza koji daje neuronska mreža, 𝑊 ,𝑏 𝑥 . Sada, za svaki neuron u mreži,
uvodimo novu veličinu 𝛿𝑖(𝑙)
, koja će predstavljati koliko je taj neuron "odgovoran" za grešku
koja se javila na izlazu (grešku izmeĎu tačne vrednosti izlaza, i vrednosti koju je vratila
neuronska mreža). Za neurone na izlaznom sloju, ova veličina može direktno da se izračuna.
Za sve druge slojeve neurona, ova vrednost će se računati pomoću vrednosti neurona iz
narednog sloja. Detaljniji opis samog algoritma, kao i definicija same veličine 𝛿𝑖(𝑙)
, slede u
nastavku:
𝛿𝑖(𝑙)
=𝜕
𝜕𝑧𝑖(𝑙)
1
2 𝑊,𝑏 𝑥 − 𝑦
2
Algoritam se odvija u sledećim koracima:
Postavlja se vrednost vektora x na ulaz mreže, a zatim se prolazi kroz mrežu uz
aktivaciju svih neurona u njoj. Kroz mrežu se prolazi sloj po sloj.
Za svaki neuron na izlaznom sloju računa se veličina 𝛿 na sledeći način: 𝛿𝑖(𝑛𝑙) =
𝑎𝑖 𝑛𝑙 − 𝑦𝑖 𝑓
′(𝑧𝑖 𝑛𝑙 ). Ukoliko se radi o regresiji, i izlazni sloj neurona bude
linearan, ovaj izraz se svodi na 𝛿𝑖(𝑛𝑙) = 𝑎𝑖
𝑛𝑙 − 𝑦𝑖 .
12
Za svaki sloj, počevši od sloja 𝑛𝑙 − 1 do drugog sloja, kao i za svaki neuron u
trenutnom sloju izračunati vrednost za 𝛿 na sledeći način:
𝛿𝑖(𝑙)
= 𝑊𝑗𝑖(𝑙)𝛿𝑗
(𝑙+1)𝑠𝑙+1𝑗=1 𝑓 ′(𝑧𝑖
𝑙 ).
Računaju se parcijalni izvodi po svim parametrima koristeći sledeće formule:
𝜕
𝜕𝑊𝑖𝑗(𝑙)𝐽 𝑊, 𝑏; 𝑥, 𝑦 = 𝑎𝑗
(𝑙)𝛿𝑖
(𝑙+1)
𝜕
𝜕𝑏𝑖(𝑙)𝐽 𝑊, 𝑏; 𝑥,𝑦 = 𝛿𝑖
(𝑙+1)
Radi dobrog rada algoritma, potrebno je početne vrednosti parametara inicijalizovati
na slučajne vrednosti blizu nule. Ukoliko bi sve početne vrednosti bile 0, svi neuroni unutar
jednog sloja bi učili istu funkciju ulaza. Zato se radi početna inicijalizacija, da bi se razbila
simetrija.
Funkcija 𝐽 𝑊, 𝑏 ne mora nužno da bude konveksna. To je jedan od potencijalnih
problema prilikom traženja minimuma. Problem je u tome što postoji više lokalnih
minimuma, pa algoritam može da završi u lokalnom minimumu koji nije ujedno i globalni
minimum. Ipak, u praksi ovaj problem nije toliko veliki, a algoritam daje prilično dobre
rezultate.
2.3.2. Robusni algoritam prostiranja greške unazad (RPROP)
RPROP (skraćeno od eng. resilient backpropagation) je jedan od najkorišćenijih
metoda za treniranje neuronske mreže. U pretodnom delu je objašnjeno kako se računaju
parcijalni izvodi kriterijumske funkcije. Ovde će biti objašnjeno kako oni na efikasan način
mogu da se primene prilikom minimizacije te funkcije.
Osnovni problem klasičnog gradijentnog spusta je veličina koraka. Ukoliko je korak
previše mali, potrebno je puno iteracija da bi se mreža istrenirala. Kada je korak previše
veliki, može doći do toga da se kroz iteracije preskače minimum, pa da se do njega nikad i ne
stigne. Zato je osnovna ideja prilikom kreiranja ovog algoritma bila u tome da se na osnovu
izvoda prati u kom smeru treba da se traži minimum, a sama veličina koraka da se analizira
posebno.
Neka je sa 𝑤 označen proizvoljni parametar, koji pripada parametrima čije vrednosti
treba odrediti u cilju minimizacije funkcije. Za svaki takav parametar dodaje se promenljiva
Δ𝑤 , koja odreĎuje veličinu koraka za dati parametar. Ta promenljiva u toku treniranja menja
vrednost, a način na koji menja vrednost je sledeći:
13
Δ𝑤(𝑡)
=
𝜂+ Δ𝑤
(𝑡−1), 𝑎𝑘𝑜 𝑗𝑒
𝜕𝐸
𝜕𝑤
(𝑡−1)
𝜕𝐸
𝜕𝑤
(𝑡)
> 0
𝜂− Δ𝑤(𝑡−1)
, 𝑎𝑘𝑜 𝑗𝑒 𝜕𝐸
𝜕𝑤
(𝑡−1)
𝜕𝐸
𝜕𝑤
(𝑡)
< 0
Δ𝑤(𝑡−1)
, 𝑢 𝑠𝑢𝑝𝑟𝑜𝑡𝑛𝑜𝑚
U ovom izrazu, 𝐸 predstavlja kriterijumsku funkciju, a parametri 𝜂+ i 𝜂− su takvi da
važi 0 < 𝜂− < 1 < 𝜂+. Ako se malo bolje analizira način promene koraka, on je sasvim
intuitivan. Kada parcijalni izvod po datom parametru promeni znak, to implicira da je
promena bila suviše velika i da je algoritam preskočio lokalni minimum, pa je prirodno
smanjiti veličinu koraka. Ukoliko znak ostane isti, to znači da algoritam ide ka minimumu, pa
se blagim povećanjem koraka samo ubrzava konvergencija.
Kada se u toku iteracije odredi veličina koraka za sve parametre, pristupa se
ažuriranju parametara. Veličina promene svakog parametra odreĎuje se na osnovu znaka
parcijalnog izvoda, kao i na osnovu veličine koraka. To se radi na sledeći način:
Δ𝑤(𝑡) =
−Δ𝑤
(𝑡),𝑎𝑘𝑜 𝑗𝑒
𝜕𝐸
𝜕𝑤
(𝑡)
> 0
+Δ𝑤(𝑡)
,𝑎𝑘𝑜 𝑗𝑒 𝜕𝐸
𝜕𝑤
(𝑡)
< 0
0, 𝑖𝑛𝑎č𝑒
Sada se nova vrednost parametra dobija na sledeći način:
𝑤(𝑡+1) = 𝑤(𝑡) + Δ𝑤(𝑡)
Ipak, postoji jedan specijalan slučaj. Ukoliko parcijalni izvod po datom parametru
promeni znak, to zanči da je korak bio preveliki, pa je minimum preskočen. Zato je promena
vrednosti parametra u ovom slučaju negacija promene vrednosti parametra u prethodnom
koraku. Na taj način se postiže da se vrednost parametra vrati na staro, uz smanjenu veličinu
koraka.
Δ𝑤(𝑡) = −Δ𝑤(𝑡−1), ako je 𝜕𝐸
𝜕𝑤
(𝑡−1) 𝜕𝐸
𝜕𝑤
(𝑡)< 0
U ovom slučaju, kako je vrednost vraćena na staro, u sledećem koraku će parcijalni
izvod ponovo da promeni znak. Da bi se sprečilo duplo smanjivanje vrednosti koraka, u
sledećem koraku neće biti promene vrednosti koraka. U praksi se to postiže postavljanjem
vrednosti 𝜕𝐸
𝜕𝑤
(𝑡−1)= 0 u sledećem koraku (postavljanjem vrednosti
𝜕𝐸
𝜕𝑤
(𝑡)= 0 na kraju
trenutnog koraka).
Na početku samog algoritma se vrednosti veličine koraka svih promenljivih
postavljaju na neku početnu vrednost Δ0. Ova vrednost odreĎuje veličinu prvog koraka, i
trebalo bi da bude u skladu se veličinama vrednosti parametara. Dobra početna vrednost
može biti 0.1. Ipak, izbor ove vrednosti nije od presudnog značaja za brzinu konvergencije,
14
jer će sam algoritam ubrzo da podesi veličine koraka. TakoĎe, nekad se može zadati
maksimalna i minimalna veličina koraka, a to se radi i zbog problema sa preciznošću realnih
brojeva u računarstvu.
Na rad algoritma utiču i konstante za brzinu promene parametra. Iako one mogu da
imaju bilo koju vrednost iz propisanih opsega, najčešće se uzimaju vrednosti 𝜂− = 0.5 i
𝜂+ = 1.2.
15
3. Učenje vektorskih reprezentacija reči
U ovom delu će biti predstavljena dva algoritma za treniranje vektorskih
reprezentacija reči. Oba algoritma su delo Tomasa Mikolova. Oni po svojoj strukturi
predstavljaju neuronske mreže, i pogodni su za treniranje na velikom skupu podataka.
Neuronska mreža u CBOW algoritmu na osnovu konteksta reči predviĎa datu reč, dok kod
Skip Gram algoritma ona na osnovu reči predviĎa njen kontekst. U oba slučaja, neuronska
mreža se sastoje iz ulaznog, jednog skrivenog i izlaznog sloja. Za treniranje mreže se koristi
stohastički gradijentni spust. Na kraju će biti reči i o načinu optimizacije samih algoritama.
3.1. Model kontinualne grupe reči (eng. Continuous bag of words-
CBOW)
Kao što je već rečeno, u ovom modelu neuronska mreža na osnovu konteksta reči
predviĎa datu reč. U cilju lakšeg objašnjenja, neka se za početak kontekst reči sastoji od samo
jedne reči. Tada mreža na osnovu reči koja je kontekst date reči, predviĎa samu reč.
Označimo ukupan broj reči u rečniku sa 𝑉. Izlazni i ulazni sloj su dimenzije 𝑉. To znači da se
reči predstavljaju kao vektori koji imaju jednu jedinicu na mestu date reči (sve reči iz rečnika
su sortirane i svaka ima indeks koji odgovara njenoj poziciji), a na svim ostalim mestima
nule. Neka skriveni sloj sadrži 𝑁 neurona. Neuronska mreža je potpuno povezana, što znači
da izmeĎu bilo koja dva neurona na susednim slojevima postoji veza.
Težine veza izmeĎu ulaznog i skrivenog sloja mogu da se predstave matricom
dimenzija 𝑉 × 𝑁. Označimo tu matricu sa 𝑊. Svaki red u ovoj matrici je transponovani
vektor dimenzije 𝑁. Ukoliko se radi o 𝑖-tom redu, on predstavlja reč koja u svojoj 𝑉-
dimenzionalnoj reprezentaciji sadrzi jedinicu na mestu 𝑖, a na svim ostalim mestima nule.
Označimo za reč 𝑤 na ulazu, sa 𝑣𝑤 odgovarajući vektor (koji predstavlja reč 𝑤). Ukoliko je
𝑤 = (𝑥1,… , 𝑥𝑉) reč na ulazu (kontekst reči na izlazu), gde je 𝑥𝑘 = 1 i 𝑥𝑖 = 0, za 𝑖 ≠ 𝑘, a sa
označen skriveni sloj u mreži, tada je:
= 𝑊𝑇𝑤 = 𝑣𝑤
To znači da skriveni sloj predstavlja odgovarajući red matrice 𝑊, zavisno od ulaznog
vektora. Skriveni sloj sadrži linearne neurone, pa je njegova vrednost ista na ulazu i izlazu.
Označimo matricu koja sadrži težine veza izmeĎu skrivenog sloja i izlaznog sloja sa
𝑊 ′ . To je matrica dimenzije 𝑁 × 𝑉. Neka je 𝑢 = (𝑢1,… , 𝑢𝑉) vektor na ulazu izlaznog sloja
neuronske mreže. Ako sa 𝑤𝑗 označimo reč koja na 𝑗-tom mestu ima jedinucu, onda je 𝑗-ta
kolona matrice 𝑊 ′ još jedno predstavljanje te reči. Označimo ovo predstavljanje sa 𝑣𝑤𝑗
′ . Tada
je:
𝑢𝑗 = 𝑣𝑤𝑗
′ 𝑇
16
Sada se u zadnjem sloju koriste softmax neuroni, koji će predstavljati odgovarajuće
verovatnoće:
𝑝 𝑤𝑗 𝑤𝐼 = 𝑦𝑗 =𝑒𝑢𝑗
𝑒𝑢𝑙𝑉𝑙=1
Verovatnoća 𝑝 𝑤𝑗 𝑤𝐼 predstavlja uslovnu verovatnoću da ukoliko je na ulazu reč 𝑤𝐼 (reč iz
konteksta), reč na izlazu bude 𝑤𝑗 . Vektor 𝑦 = (𝑦1,… ,𝑦𝑉) predstavlja izlaz izlaznog sloja
neuronske mreže (koji zavisi od ulazne reči 𝑤𝐼). Izraz za uslovnu verovatnoću može da se
zapiše i samo preko reprezentacija reči na sledeći način:
𝑝 𝑤𝑗 𝑤𝐼 =𝑒𝑣𝑤𝑗′ 𝑇
𝑣𝑤𝐼
𝑒𝑣𝑤𝑙′ 𝑇
𝑣𝑤𝐼𝑉𝑙=1
Grafički prikaz neuronske mreže kod CBOW algoritma sa kontekstom veličine 1 dat je na
slici ispod.
Sada treba objasniti sam način treniranja ovakve mreže. Za primer 𝑤𝐼 ,𝑤𝑂 , gde je 𝑤𝐼
reč iz konteksta reči 𝑤𝑂, treba maksimizovati 𝑝(𝑤𝑂|𝑤𝐼). To je ekvivalentno maksimizovanju
logaritma ove uslovne verovatnoće, pa je cilj maksimizovati:
log 𝑝(𝑤𝑂|𝑤𝐼) = log𝑦𝑗 ∗ = 𝑢𝑗 ∗ − log 𝑒𝑢𝑙
𝑉
𝑙=1
≔ −𝐸
Indeks 𝑗∗ je pozicija jedinice u reči 𝑤𝑂, a sa 𝐸 je označena kriterijumska funkcija koju treba
minimizovati. Kod računanja parcijalnih izvoda po izlaznom sloju, imamo da važi:
𝜕𝐸
𝜕𝑢𝑗= 𝑦𝑗 − 𝑡𝑗 ≔ 𝑒𝑗
Veličina 𝑡𝑗 je definisana tako da je 𝑡𝑗 = 1 ako i samo ako je 𝑗∗ = 𝑗, u suprotnom je 𝑡𝑗 = 0.
Sada je lako naći parcijalne izvode po težinama izmeĎu skrivenog i izlaznog sloja, na sledeći
način:
17
𝜕𝐸
𝜕𝑤𝑖𝑗′ =
𝜕𝐸
𝜕𝑢𝑗∙𝜕𝑢𝑗
𝜕𝑤𝑖𝑗′ = 𝑒𝑗 ∙ 𝑖
Propagiranjem greške unazad, dobijaju se i ostali potrebni parcijalni izvodi:
𝜕𝐸
𝜕𝑖=
𝜕𝐸
𝜕𝑢𝑗∙𝜕𝑢𝑗
𝜕𝑖= 𝑒𝑗
𝑉
𝑗=1
𝑉
𝑗=1
∙ 𝑤𝑖𝑗′ ≔ 𝐸𝐻𝑖
𝜕𝐸
𝜕𝑤𝑘𝑖=𝜕𝐸
𝜕𝑖∙𝜕𝑖𝜕𝑤𝑘𝑖
= 𝐸𝐻𝑖 ∙ 𝑥𝑘
Ključna stvar koju treba ovde primetiti je da parcijalni izvodi 𝜕𝐸
𝜕𝑤 𝑖𝑗 direktno zavise od
𝑥𝑖 . Kako je ulazni vektor 𝑤 = (𝑥1,… , 𝑥𝑉) sačinjen od nula i samo jedne jedinice, to će samo
u jednom redu matrice parcijalnih izvoda biti vrednosti različite od 0. To znači da je izmeĎu
ova dva sloja potrebno odraditi samo 𝑁 promena u jednom koraku tokom treniranja.
Sve do sada što je opisano bilo je za slučaj kada je kontekst veličine jedan. U praksi se
za kontekst obično uzima izvestan broj reči pre i posle date reči. Sam prelaz sa konteksta od
jedne reči na kontekst sačinjen od više reči je veoma jednostavan i intuitivan. Prilikom
računanja skrivenog sloja, računa se srednja vrednost sloja za sve vektore sa ulaza (iz
konteksta date reči).
=1
𝐶𝑊𝑇 𝑤1 + ⋯+ 𝑤𝐶 =
1
𝐶 𝑣𝑤1
+ ⋯+ 𝑣𝑤𝐶
Sa 𝐶 je označen ukupan broj reči u kontekstu, a sa 𝑤1,… ,𝑤𝐶 su označene te reči. Simbolima
𝑣𝑤 𝑖 su označeni odgovarajući redovi u matrici težina izmeĎu ulaznog i skrivenog sloja, slično
kao u slučaju konteksta veličine 1. Sledi prikaz CBOW arhitekture sa kontekstom veličine C.
18
Kriterijumska funkcija je data na sledeći način:
𝐸 = − log 𝑝 𝑤𝑂 𝑤𝐼,1,… ,𝑤𝐼,𝐶 = −𝑢𝑗 ∗ + log 𝑒𝑢𝑙
𝑉
𝑙=1
= −𝑣𝑊𝑂
′ 𝑇∙ + log 𝑒
𝑣𝑊𝑙′ 𝑇
∙
𝑉
𝑙=1
Ovaj izraz je identičan izrazu funkcije greške kod slučaja sa kontekstom veličine 1, a jedina
razlika je u načinu definisanja vrednosti . Učenje matrica težina (reprezentacija reči u 𝑁-
dimenzionalnom prostoru) je analogno slučaju konteksta veličine 1. Jedina razlika je što je
sada potrebno ažurirati 𝐶 redova matrice težina izmeĎu ulaznog i skrivenog sloja.
3.2. Model preskakanja jedinica (eng. Skip Gram)
Ovaj model je suprotan CBOW modelu. Posmatrana reč je sada ulaz mreže, a izlaz
mreže je kontekst date reči. Sa 𝑤𝐼 je kao i u slučaju CBOW algoritma označen vektor na
ulazu (u ovom slučaju to je posmatrani vektor, a ne vektor iz konteksta), a sa 𝑣𝑤𝐼
odgovarajući red iz matrice težina izmeĎu ulaznog i skrivenog sloja. Sada važi:
= 𝑊𝑇𝑤𝐼 = 𝑣𝑤𝐼
Na izlaznom sloju, umesto jedne raspodele, biće 𝐶 raspodela, gde je 𝐶 veličina
konteksta. Svaka od njh se računa pomoću iste matrice težina izmeĎu skrivenog i izlaznog
sloja.
𝑝 𝑤𝑐,𝑗 = 𝑤𝑂,𝑐 𝑤𝐼 = 𝑦𝑐 ,𝑗 =𝑒𝑢𝑐 ,𝑗
𝑒𝑢𝑐 ,𝑙𝑉𝑙=1
U prethodnom izrazu, 𝑤𝑐,𝑗 označava 𝑗-tu reč 𝑐-tog dela izlaznog sloja, 𝑤𝑂,𝑐 označava stvarnu
𝑐-tu izlaznu reč iz konteksta, 𝑤𝐼 označava jedinu reč na ulazu, 𝑦𝑐 ,𝑗 predstavlja izlaz 𝑗-tog
neurona 𝑐-tog dela izlaznog sloja, a 𝑢𝑐 ,𝑗 označava ulaz 𝑗-tog neurona 𝑐-tog dela izlaznog
sloja. Kako svi delovi izlaznog sloja imaju istu matricu težina izmeĎu skrivenog i izlaznog
sloja, to je:
𝑢𝑐 ,𝑗 = 𝑢𝑗 = 𝑣𝑤𝑗
′ 𝑇∙
Ovo važi za svako 𝑐.
Što se kriterijumske funkcije tiče, ona ima sledeći oblik:
𝐸 = − log 𝑝(𝑤𝑂,1,… ,𝑤𝑂,𝐶|𝑤𝐼) = − log 𝑒𝑢𝑐 ,𝑗 𝑐
∗
𝑒𝑢𝑐 ,𝑙𝑉𝑙=1
= − 𝑢𝑗𝑐∗ + log 𝑒𝑢𝑐 ,𝑙
𝑉
𝑙=1
𝐶
𝑐=1
𝐶
𝑐=1
𝐶
𝑐=1
Sa 𝑗𝑐∗ je označen indeks u rečniku stvarne 𝑐-te izlazne reči iz konteksta. Ovde je kod drugog
znaka jednakosti iskorišćena pretpostavka o nezavisnosti odgovarajućih slučajnih
poromenljivih.
19
Kada računamo parcijalne izvode kriterijumske funkcije po ulazu svih delova
izlaznog sloja neurona, dobijamo sledeću jednakotst:
𝜕𝐸
𝜕𝑢𝑐 ,𝑗= 𝑦𝑐 ,𝑗 − 𝑡𝑐 ,𝑗 ≔ 𝑒𝑐 ,𝑗
Radi lakšeg pisanja, uvodimo oznaku 𝐸𝐼 = 𝐸𝐼1,… ,𝐸𝐼𝑉 , koja predstavlja 𝑉-dimenzioni
vektor suma grešaka predikcije po svim rečina iz konteksta.
𝐸𝐼𝑗 = 𝑒𝑐 ,𝑗
𝐶
𝑐=1
Sada je lako naći parcijalne izvode po svim težinama izmeĎu skrivenog i izlaznog sloja.
𝜕𝐸
𝜕𝑤𝑖𝑗′ =
𝜕𝐸
𝜕𝑢𝑐 ,𝑗∙𝜕𝑢𝑐 ,𝑗
𝜕𝑤𝑖𝑗′
𝐶
𝑐=1
= 𝐸𝐼𝑗 ∙ 𝑖
Što se parcijalnih izvoda po težinama izmeĎu ulaznog i skrivenog sloja tiče, oni se računaju
slično kao i kod CBOW algoritma.
𝜕𝐸
𝜕𝑖=
𝜕𝐸
𝜕𝑢𝑐 ,𝑗∙𝜕𝑢𝑐 ,𝑗
𝜕𝑖
𝑉
𝑗=1
= 𝐸𝐼𝑗
𝑉
𝑗=1
𝐶
𝑐=1
∙ 𝑤𝑖𝑗′ ≔ 𝐸𝐻𝑖
𝜕𝐸
𝜕𝑤𝑘𝑖=𝜕𝐸
𝜕𝑖∙𝜕𝑖𝜕𝑤𝑘𝑖
= 𝐸𝐻𝑖 ∙ 𝑥𝑘
20
3.3. Optimizacija
Modeli koji su do sada dati su prikazani u njihovim originalnim formama, bez ikakvih
dodatnih optimizacija. Za svaki od modela, postoje dve vektorske reprezentacije za svaku reč
(ulazni vektor 𝑣𝑤 i izlazni vektor 𝑣𝑤′ ). Učenje ulaznih vektora je jeftina operacija, dok je
operacija učenja izlaznih vektora jako skupa. To je zato što su parcijalni izvodi po težinama
izmeĎu ulaznog i skrivenog sloja jednaki nuli u svim redovima matrice težina, sem jednog.
Zbog toga se najveći deo vremena troši pri učenju matrice težina izmeĎu skrivenog i izlaznog
sloja. Cilj optimizacije je da smanji ovo vreme. Ovde će biti predstavljena dva načina za
optimizaciju, jedan je hijerarhijski softmax, a drugi optimizacija pomoću negativnih uzoraka.
3.3.1. Hijerarhijski softmax
Ovaj metod je baziran na binarnim stablima. Sve reči iz rečnika su listovi stabla.
Ukoliko stablo sadrži 𝑉 reči, broj čvorova u stablu koji nisu listovi je 𝑉 − 1. Za svaki list,
postoji jedinstveni put u stablu koji vodi od korena do njega. Taj put će biti korišćen za
računanje verovatnoće reči koju dati list predstavlja.
Na slici iznad je prikazan model hijerarhijskog softmax-a. Beli čvorovi predstavljaju
reči, a sivi unutrašnje čvorove. Crnom bojom je podebljan put od korena do lista koji sadrži
reč 𝑤2. Funkcija 𝑛(𝑤, 𝑗) kao rezultat vraća 𝑗-ti čvor na putu od korena do lista koji sadrži reč
𝑤. Nadalje će sa 𝐿(𝑤) biti označen broj čvorova na putu od korena do čvora 𝑤. U slučaju sa
slike, važi da je 𝐿 𝑤2 = 4.
U slučaju modela hijerarhijskog softmax-a, ne postoji predstavljanje reči pomoću
matrice težina izmeĎu skrivenog i izlaznog sloja (ne postoji 𝑣𝑤′ ). Izlazni sloj se sastoji od
𝑉 − 1 neurona, i oni predstavljaju unutrašnje čvorove stabla. Verovatnoća da data reč bude
izlazna se računa pomoću ovog sloja, na sledeći način:
𝑝 𝑤 = 𝑤𝑂 = 𝜎 𝑛 𝑤, 𝑗 + 1 = 𝑐(𝑛(𝑤, 𝑗)) ∙ 𝑣𝑛(𝑤 ,𝑗 )′ 𝑇
𝐿 𝑤 −1
𝑗=1
21
Sa 𝑐(𝑛) je označeno levo dete čvora n. Umesto izlazne vektorske reprezentacije reči (𝑣𝑤′ ),
sada imamo vektorsku reprezentaciju unutrašnjih čvorova stabla (𝑣𝑛(𝑤 ,𝑗 )′ ). Sa je kao i ranije
označen izlaz skrivenog sloja neurona (koji je ujedno jednak ulazu, jer su neuroni linearni).
Oznaka 𝜎 je standardna oznaka za sigmoidalnu funkciju. Funkcija 𝑥 je specijalna funkcija,
a njena definicija je data ispod.
𝑥 = 1, ako je logička vrednost x tačna
−1, ako je logička vrednost x netačna
Analizirajmo sada formulu za verovatnoću da odreĎena reč bude izlazna. Da bi
izračunali verovatnoću za neku reč, polazimo od vrha, i za svako spuštanje na levo ili desno
dete, postoji verovatnoća tog prelaza. Verovatnoća spuštanja na levo dete čvora 𝑛 data je sa:
𝑝 𝑛, 𝑙𝑒𝑣𝑜 = 𝜎 𝑣𝑛′ 𝑇 ∙
Ona direktno zavisi od skrivenog sloja (koji zavisi od ulazne vektorske reprezentacije reči sa
ulaza) i od vektorske reprezentacije unutrašnjeg čvora na kome se trenutno nalazimo.
Verovatnoća spuštanja na desno dete se direktno dobija od verovatnoće spuštanja na levo
dete:
𝑝 𝑛,𝑑𝑒𝑠𝑛𝑜 = 1 − 𝑝 𝑛, 𝑙𝑒𝑣𝑜 = 𝜎 −𝑣𝑛′ 𝑇 ∙
Prethodni izraz objašnjava novouvedenu funkciju 𝑥 . Kada bi na stablu sa slike računali
verovatnoću da reč 𝑤2 bude izlazna, to bi radili na sledeći način:
𝑝 𝑤2 = 𝑤𝑂 = 𝑝 𝑛 𝑤2, 1 , 𝑙𝑒𝑣𝑜 ∙ 𝑝 𝑛 𝑤2, 2 , 𝑙𝑒𝑣𝑜 ∙ 𝑝 𝑛 𝑤2, 3 ,𝑑𝑒𝑠𝑛𝑜
= 𝜎 𝑣𝑛 𝑤2 ,1 ′ 𝑇
∙ ∙ 𝜎 𝑣𝑛 𝑤2 ,2 ′ 𝑇
∙ ∙ 𝜎 −𝑣𝑛 𝑤2 ,3 ′ 𝑇
∙
Nije teško utvrditi da ovakve verovatnoće za sve reči iz rečnika zadovoljavaju sledeću
jednakost:
𝑝 𝑤𝑖 = 𝑤𝑂
𝑉
𝑖=1
= 1
To, uz činjenicu da su sve ove verovatnoće nenegativne, potvrĎuje da je hijerarhijski softmax
dobro definisana raspodela meĎu rečima.
Sada će biti objašnjeno treniranje modela sa hijerarhijskim softmax-om. Radi
jednostavnosti biće objašnjeno za slučaj konteksta veličine 1. Prelazak na kontekste veće
veličine je jednostavan. Radi kraćeg pisanja, uvode se sledeće oznake:
∙ ≔ 𝑛 𝑤, 𝑗 + 1 = 𝑐(𝑛(𝑤, 𝑗))
𝑣𝑗′ ≔ 𝑣𝑛 𝑤 ,𝑗
′
Što se kriterijumske funkcije tiče, ona u ovom slučaju ima sledeći oblik:
22
𝐸 = − log p 𝑤 = 𝑤𝑂 𝑤𝐼 = − log 𝜎 ∙ 𝑣𝑗′ 𝑇
𝐿 𝑤 −1
𝑗=1
Parcijalni izvodi funkcije greške po izlaznom sloju se dobijaju na sledeći način:
𝜕𝐸
𝜕𝑢𝑗= 𝜎 ∙ 𝑣𝑗
′ 𝑇 − 1 ∙ = 𝜎 𝑣𝑗
′ 𝑇 − 1, 𝑎𝑘𝑜 𝑗𝑒 ∙ = 1
𝜎 𝑣𝑗′ 𝑇 , 𝑎𝑘𝑜 𝑗𝑒 ∙ = −1
= 𝜎 𝑣𝑗′ 𝑇 − 𝑡𝑗
Veličina 𝑡𝑗 je definisana na sledeći način:
𝑡𝑗 = 1, 𝑎𝑘𝑜 𝑗𝑒 ∙ = 1 0, 𝑢 𝑠𝑢𝑝𝑟𝑜𝑡𝑛𝑜𝑚
Sada je lako dobiti parcijalne izvode po vektorskim reprezentacijama unutrašnjih čvorova
stabla (ujedno i po elementima matrice težina izmeĎu skrivenog i izlaznog sloja).
𝜕𝐸
𝜕𝑣𝑗′ =
𝜕𝐸
𝜕𝑣𝑗′ 𝑇
∙𝜕𝑣𝑗
′ 𝑇
𝜕𝑣𝑗′ = (𝜎 𝑣𝑗
′ 𝑇 − 𝑡𝑗 ) ∙
Prilikom ažuriranja samih vektora, kod Skip Gram modela je potrebno to uraditi za svaku reč
iz konteksta. Računanje parcijalnih izvoda po skrivenom sloju neurona, dobija se direktno
pomoću prethodnih izraza:
𝜕𝐸
𝜕=
𝜕𝐸
𝜕𝑣𝑗′ 𝑇
∙𝜕𝑣𝑗
′ 𝑇
𝜕
𝐿 𝑤 −1
𝑗=1
= (𝜎 𝑣𝑗′ 𝑇 − 𝑡𝑗 ) ∙
𝐿 𝑤 −1
𝑗=1
𝑣𝑗′ ≔ 𝐸𝐻
Parcijalni izvodi po elementima matrice težina izmeĎu skrivenog i izlaznog sloja se dobijaju
kao i u slučaju bez optimizacije.
Na osnovu datih formula, jasno se vidi da je složenost algoritma po jednom primeru i
po jednoj reči iz konteksta smanjena sa 𝑂(𝑉) na 𝑂(log V). Ovo stvara veliko poboljšanje u
brzini treniranja. Što se tiče memorijske složenosti, ona ostaje skoro ista kao i u sličaju bez
optimizacije.
3.3.2. Uzimanje negativnih uzoraka
Sam pristup kod optimizacije pomoću negativnih uzoraka je mnogo direktrniji nego
kod hijerarhijskog softmax-a. Kako je osnovni problem to što postoji veliki broj izlaznih
vektora koje treba ažurirati u svakoj iteraciji, ovde će se ažurirati samo njih nekoliko.
Ideja je da se za datu ulaznu reč. pored izlazne reči, koja je pozitivan primer, doda i
odreĎeni broj izlaznih reči koje će biti negativni primeri. Izbor reči koje će biti negativni
primeri se odvija na slučajan način, jer se smatra da je mala verovatnoća da ulazna reč i tako
izabrana reč čine ulazno-izlazni par (kod CBOW modela par kontekst-reč, a kod Skip Gram
23
modela par reč-kontekst). Kasnije se od izlaznih vektora samo ažuriraju vektori koji
odgovaraju izlaznoj reči, i slučajno izabranim rečima. Dodavanje negativnih primera i
njihovo uključivanje u kriterijumsku funkciju je neophodno jer bi u suprotnom model mogao
da se istrenira da radi dobro za sve parove reč-kontekst (ili kontekst-reč kod CBOW modela),
ali da i za druge parove predviĎa da obrazuju ovakav par. Takav model ne bi imao smisla, pa
se zato i dodaju negativni primeri.
Sama kriterijumska funkcija koja se koristi u ovom modelu ima sledeći oblik:
𝐸 = − log 𝜎 𝑣𝑤𝑂′ 𝑇
− log𝜎 −𝑣𝑤𝑗
′ 𝑇
𝑤𝑗∈𝑊𝑛𝑒𝑔
Sa 𝑤𝑂 je označena izlazna reč (pozittivan primer), a sa 𝑣𝑤𝑂′ njen izlazni vektor. Vektor
predstavlja izlaz skrivenog sloja, i on je =1
𝐶 𝑣𝑤𝑐
𝐶𝑐=1 kod CBOW modela, odnosno
= 𝑣𝑤𝐼 u Skip Gram modelu. Skup 𝑊𝑛𝑒𝑔 = 𝑤𝑗 |𝑗 = 1,… ,𝐾 je skup od 𝐾 reči koje su
slučajno izabrane kao negativni primeri.
Da bi dobili jednačine za treniranje modela pomoću negativnih uzoraka, prvo ćemo
naći parcijalne izvode kriterijumske funkcije po ulazu izlaznog sloja neurona.
𝜕𝐸
𝜕𝑣𝑤𝑗′ 𝑇
= 𝜎 𝑣𝑤𝑗
′ 𝑇 − 1, 𝑎𝑘𝑜 𝑗𝑒 𝑤𝑗 = 𝑤𝑂
𝜎 𝑣𝑤𝑗
′ 𝑇 , 𝑎𝑘𝑜 𝑗𝑒 𝑤𝑗 ∈ 𝑊𝑛𝑒𝑔
= 𝜎 𝑣𝑤𝑗
′ 𝑇 − 𝑡𝑗
Veličina 𝑡𝑗 ima vrednost 1 kada je 𝑤𝑗 pozitivan primer, a 0 ukoliko je negativan. Sada
možemo da izračunamo parcijalne izvode po izlaznim vektorima koje je potrebno ažurirati.
𝜕𝐸
𝜕𝑣𝑤𝑗′
=𝜕𝐸
𝜕𝑣𝑤𝑗′ 𝑇
∙𝜕𝑣𝑤𝑗
′ 𝑇
𝜕𝑣𝑤𝑗′
= 𝜎 𝑣𝑤𝑗
′ 𝑇 − 𝑡𝑗
Važno je napomenuti da se ažuriraju samo izlazni vektori reči koje pripadaju skupu 𝑤𝑗 ∈
𝑤𝑂 ∪𝑊𝑛𝑒𝑔 , umesto svih vektora kakav je bio slučaj kod treniranja bez optimizacije. Ova
jednakost može da se primeni i kod CBOW i kod Skip Gram modela, s tim što je kod Skip
Gram modela potrebno izvršiti ažuriranje za svaku reč iz konteksta (kao izlaznu reč,
pozitivan primer) posebno.
Što se tiče računanja parcijalnih izvoda po neuronima iz skrivenog sloja, potrebno je
izvršiti sledeće sumiranje:
𝜕𝐸
𝜕=
𝜕𝐸
𝜕𝑣𝑤𝑗′ 𝑇
∙𝜕𝑣𝑤𝑗
′ 𝑇
𝜕𝑤𝑗∈ 𝑤𝑂 ∪𝑊𝑛𝑒𝑔
= 𝜎 𝑣𝑤𝑗
′ 𝑇 − 𝑡𝑗 𝑣𝑤𝑗
′ = 𝐸𝐻
𝑤𝑗∈ 𝑤𝑂 ∪𝑊𝑛𝑒𝑔
Samo ažuriranje ulaznih vektora je isto kao i kod slučaja bez optimizacije. Kod Skip
Gram modela je potrebno da se prvo izračunaju parcijalni izvodi funckije greške po
24
skrivenom sloju za sve reči iz konteksta, pa da se suma tako dobijenih vektora koristi pri
ažuriranju.
25
4. Detekcija hijerarhijskih relacija
4.1. Analiza problema
Prepoznavanje relacije hiponimije je jedan od ozbiljnijih zadataka procesiranja
govornog jezika. Kao takav, on je zaintrigirao mnoge naučnike i istraživače da rade na
njemu. U toku rada, došlo je do velikog broja različitih pristupa rešavanju ovog problema.
Jedan način da se ovaj problem reši je da se napravi velika hijerarhija reči. Primer
takve hijerarhije je WordNet. Reči su struktuirane u vidu stabla, gde se ispod svake reči
nalaze hiponimi te reči. Ovakve hijerarhije su poznate po dobroj strukturi, kao i velikoj
preciznosti. Njihov najveći problem je što ne sadrže sve reči, pa za reči koje nisu prisutne nije
moguće dobiti nikakvu informaciju. Osim toga, sam proces kreiranja ovakvih hijerarhija je
veoma naporan i vremenski zahtevan.
Drugi pristup pri rešavanju ovog problema je zasnovan na leksičkim šablonima. Ovaj
metod koristi ručno ili automatski generisane leksičke šablone, kako bi otkrio hiponim-
hiperomin parove u velikim korpusima teksta. Još 90-ih godina su naučnici uočili da dve reči
(ili dva niza reči koji čine celinu) uglavnom imaju odnos hiponim-hiperonim, ukoliko se
nalaze u nekim jezičkim konstrukcijama. Primer takve konstrukcije je "takav X kao Y", gde
su X i Y reči čiji se odnos utvrĎuje. Tako da ukoliko u tekstu stoji "takva boja kao zelena" ili
"takva životinja kao zec", zaključivalo se da je zelena boja, a zec zivotinja. Kasnije su se
pojavili metodi za automatsko otkrivanje ovakvih šablona, koji su testirani na velikim
korpusima teksta. Osnova za to koliko će dobro ovakvi metodi prepoznati relaciju hiponimije,
leži u kvalitetu samih šablona koji se generišu. Šablon treba da bude takav da ukoliko bude
pronaĎen u tekstu, šansa da par reči pripada relaciji bude velika. Sa druge strane, treba da
bude dovoljno šablona kako bi se prepoznao veliki broj parova koji pripadaju relaciji. Ovakav
pristup uglavnom ima problem ili sa odazivom ili sa tačnošću. Ukoliko se koriste samo dobri
šabloni, obično veliki broj hiponim-hiperonim parova ostane neotkriven, pa je odaziv mali.
Ukoliko se koristi veliki broj šablona, obično i veliki broj njih bude manje kvalitetan, pa se
mnogi parovi proglase da su u relaciji, a da to nije slučaj. Tada algoritam da veoma nisku
tačnost.
Postoje i modeli koji se baziraju na ideji da je kontekst hiperonima širi od konteksta
hiponima. Iako je to nekada tačno, postoji veliki broj primera kada to ne važi. Pojam "Novak
Đoković" je hiponim za pojam "Srbin", i svakako bi se u hijerarhiji predstavljenoj u obliku
stabla nalazio dosta niže. MeĎutim, pitanje je koji od ova dva pojma ima širi kontekst.
TakoĎe za mnoge stvari se hiponimi češće koriste u govoru od svojih hiperonima. Tako se
nazivi poznatih životinja mnogo češće javljaju nego nazivi familija kojima one pripadaju. To
sve govori da ovakvi metodi mogu da imaju dosta problema u otkrivanju relacije hiponimije
meĎu rečima.
Metod koji je u ovom radu korišćen se zasniva na vektorskoj ugradnji reči. Pojava
veoma kvalitetnih reprezentacija reči, kao što su Word2Vec i GloVe, predstavlja dobar
preduslov za primenu ovakvog metoda. Ovakve reprezentacije mogu da prepoznaju različite
26
relacije meću rečima, pa su zbog toga testirane i na problemu prepoznavanja relacije
hiponimije. Ideja je da se reči posmatraju kao vektori brojeva koji dobro opisuju mnoge
osobine reči, pa da se ti vektori naknadno obraĎuju, i na osnovu njih izvode zaključci.
4.2. Opis algoritma
U ovom delu če biti predstavljen algoritam za prepoznacanje relacije hiponimije koji
je korišćen u ovom radu. Algoritam se sastoji od četiri dela, koja možemo redom da
nazovemo ugradnja reči u vektorski prostor, klasterovanje parova, učenje projekcija i
identifikacija relacije hiponimije. Pre toga će biti data sama formulacija problema.
4.2.1. Formulacija problema
Neka je dat korpus 𝐷 = {(𝑥𝑖 ,𝑦𝑖)}𝑖=1𝑛 . Korpus je sačinjen od parova stringova 𝑥𝑖 ,𝑦𝑖 ,
za koje važi da je 𝑦𝑖 hiperonim reči 𝑥𝑖 , odnosno 𝑥𝑖 hiponim reči 𝑦𝑖 . Kako je relacije
hiponimije asimetrična, ukoliko se par 𝑥𝑖 ,𝑦𝑖 pojavi u korpusu, par 𝑦𝑖 , 𝑥𝑖 neće biti u
njemu.
Zadatak algoritma je da za unete reči 𝑥 i 𝑦 odredi da li je 𝑥 hiponim reči 𝑦. Reči 𝑥 i 𝑦
mogu da budu proizvoljne reči jezika, tj. ne moraju obavezno biti reči iz korpusa.
4.2.2. Ugradnja reči u vektorski prostor
Kako je sa rečima kao nizovoma karaktera veoma teško raditi u mašinskom učenju,
njih je neophodno predstaviti na neki drugačiji način. To se najčešće postiže tako što se reči
predstavljaju kao vektori brojeva. MeĎutim, nisu sve reprezentacije reči pogodne. Najlakši
način bi bio da se od rečnika veličine 𝑀 napravi skup vektora tako da se 𝑖-ta reč iz rečnika
predstavi vektorom dužine 𝑀, koji će na svim mestima imati vrednost 0, osim na poziciji 𝑖,
gde će imati vrednost 1. Problem kod ovakvog predstavljanja je taj što se iz ovakve
reprezentacije reči malo toga može zaključiti. Na pitanja da li su dve reči slične, da li
obrazuju neku relacju itd. teško se može dati odgovor. Zato su naučnici osmislili algoritme za
učenje reprezentacija reči koje su daleko efikasnije. Usput, to su i reprezentacije sa manjom
dimenzijom prostora u kome su reči predstavljene, pa je i samo njihovo korišćenje brže. Te
reprezentacije reči pri kreiranju, osim same reči, posmatraju i reči koje se u tekstu nalaze u
okolini te reči. Neki od najpoznatijih takvih algoritama dati su u prethodnom poglavlju.
U ovom radu, vektorske reprezentacije reči su preuzete iz već istreniranih modela. To
su baze parova, gde je prvi član para reč, a drugi vektorska reprezentacija te reči. Za
treniranje ovih parova, autori baza su koristili algoritme koji su opisani u prethodnom
poglavlju.
27
4.2.3. Klasterizacija parova
Algoritam na ulazu dobija listu parova reči koji pripadaju relaciji hiponimije, a na
osnovu te liste treba da proceni da li je neki novi par reči u toj relaciji. Ideja koja je ovde
korišćena proizilazi od nekih ideja koje je veliki istraživač iz oblasti procesiranja govornog
jezika, Tomas Mikolov, koristio i o kojima je pisao u svojim radovima. Njegov zaključak da
vektorske reprezentacije reči održavaju mnoge semantičke osobine reči, dovodi do
razmišljanja o tome da li one možda održavaju osobinu hiponimije meĎu rečima. Jedan dobro
poznati primer koji je on analizirao je 𝑣 𝑞𝑢𝑒𝑒𝑛 − 𝑣 𝑘𝑖𝑛𝑔 = 𝑣 𝑤𝑜𝑚𝑎𝑛 − 𝑣(𝑚𝑎𝑛), gde je
𝑣(𝑥) vektorska reprezentacija reči 𝑥. Kada se analiziraju ovakvi primeri na parovima reči
koje pripadaju relaciji hiponimije, dobijaju se raznoliki rezultati. Nekoliko primera je dato u
tabeli ispod:
Broj primera Primer
1. 𝑣(𝑠𝑟𝑖𝑚𝑝) − 𝑣(𝑝𝑟𝑎𝑤𝑛) ≈ 𝑣(𝑓𝑖𝑠) − 𝑣(𝑔𝑜𝑙𝑑 𝑓𝑖𝑠)
2. 𝑣(𝑙𝑎𝑏𝑜𝑟𝑒𝑟) − 𝑣(𝑐𝑎𝑟𝑝𝑒𝑛𝑡𝑒𝑟) ≈ 𝑣(𝑎𝑐𝑡𝑜𝑟) − 𝑣(𝑐𝑙𝑜𝑤𝑛)
3. 𝑣(𝑙𝑎𝑏𝑜𝑟𝑒𝑟) − 𝑣(𝑐𝑎𝑟𝑝𝑒𝑛𝑡𝑒𝑟) ≉ 𝑣(𝑓𝑖𝑠) − 𝑣(𝑔𝑜𝑙𝑑 𝑓𝑖𝑠)
Prva dva primera pokazuju jasnu vezu izmeĎu dva različita para koji pripadaju relaciji
hiponimije. MeĎutim, ta veza ne važi uvek, što pokazuje treći par. To znači da relacija
hiponimije nije tako jednostavna, i da ne postoji univerzalni vektor koji bi bio razlika izmeĎu
hiperonima i hiponima. Ideja je da se napravi preslikavanje koje će hiponim preslikati u
njegov hiperonim, jer ocigledno da ideja o samom dodavanju konstantnog vektora hiponimu
nije dobra ideja.
Da bi se malo bolje razmatrala situacija sa razlikama vektorskih reprezentacija reči
koje pripadaju relaciji, napravljen je skup svih razlika izmeĎu parova i taj skup analiziran.
Došlo se do zaključka da se razlike grupišu u više celina (klastera). Unutar svakog klastera su
distance izmeĎu vektora razlika dosta manje nego distance izmeĎu vektora razlika iz
različitih klastera. Tako su na primer relacije izmeĎu parova relacije hiponimije koji opisuju
odnose izmeĎu životinja u jednom klasteru, a parovi koji opisuju relacije izmeĎu zanimanja
ljudi u drugom klasteru.
Kako su razlike pogodne za klasterizaciju, sasvim prirodno se nameće rešenje da se
svi parovi podele po klasterima na osnovu svojih razlika, pa da se kasnije unutar svakog
klastera uči preslikavanje koje će hiponim da slika u njegov hiperonim. U ovom radu je za
klasterizaciju korišćen K-Means algoritam. On u sebi sadrži broj klastera kao parametar, a o
samom izboru tog broja, biće nešto više reči u sledećem poglavlju.
U ovom radu, korpus koji je korišćen za treniranje je preuzet iz WordNet-a. Sam
WordNet je u obliku stabla, pa svaka reč ima jedinstven hiperonim. Kada ovo ne bi bio
slučaj, parovi koji sadrže isti hiponim, a različite hiperonime, morali bi da budu u različitim
klasterima. To je zbog činjenice da nije moguće napraviti preslikavanje koje ce jednu reč da
slika u dve različite reči, a da to radi prilično dobro. Kada su takvi parovi u različitim
klasterima, u svakom klasteru će preslikavanje za dati hiponim imati jedinstven hiperonim, pa
je lakše napraviti da ono radi dobro. U slučaju da reči sadrže više hiperonima, najlakši način
28
da se kreiraju klasteri je da se prvo naĎe najveći broj hiperonima za neku reč, i da se kreira
toliko klastera. Sada redom treba proći kroz sve parove reči, i ubaciti ih u prvi klaster čiji
nijedan par ne sadrži hiponim koji je jednak hiponimu datog para. Na kraju treba odraditi
klasterizaciju u svakom od formiranih klastera, i sve novodobijene klastere posmatrati kao
skup klastera u kojima se nalaze svi parovi reči iz korpusa za treniranje.
4.2.4. Učenje projekcija
Svaki klaster sadrži izvestan broj parova reči, koje obrazuju relaciju hiponimije. Cilj
koji u ovom delu treba postići je kreiranje preslikavanja, koje će dobro preslikavati hiponim u
hiperonim svakog para, ali isto tako da to radi prilično dobro za neke nove parove koji
pripadaju relaciji.
Ovde će biti predstavljena dva modela za kreiranje preslikavanja. Jedan će biti
linearan pomoću matrice preslikavanja, a drugi nelinearan pomoću neuronskih mreža. U
sledećem poglavlju će biti testirani ovi modeli i tu se može videti ko je dao kakve rezultate. U
nastavku će biti prikazan i jedan i drugi model, sa nešto opširnijim objašnjenjem kakve su
strukture i na koji način su istrenirani.
Linearni model
Kod ovog pristupa uvodi se pretpostavka da postoji linearno preslikavanje Φ,
tako da za vektor hiponima 𝑥 i vektor njegovog hiperonima 𝑦 važi Φ𝑥 = 𝑦.
Simbolom Φ je predstavljena matrica projekcije. Kako se za svaki klaster kreira
posebna projekcija, broj ovakvih projekcija biće jednak broju klastera. Neka je sa Φ𝑘
označena projekcija na klasteru 𝐶𝑘 . Matrice Φ𝑘 su kvadratne matrice čije su dimenzije
jednake dimenziji prostora u kome su reči predstavljene. Da bi se ovakva matrica
koristila za procenu vrednosti hiperomina nekih novih reči, potrebno je da se istrenira,
tako da daje dobre rezultate na parovima iz svog klastera. Za treniranje ovih matrica
korišćena je metoda minimizacije sledeće funkcije:
1
𝑁𝑘 Φ𝑘𝑥 − 𝑦 2
(𝑥 ,𝑦)∈𝐶𝑘 .
Minimizacija se vrši po matrici Φ𝑘 , odnosno po svim poljima te matrice.
Simbol 𝑁𝑘 predstavlja broj elemenata u 𝑘-tom klasteru. Za nalaženje minimizacije je
korišćen stohastički gradijentni spust. Razlog zašto je izabran ovaj algoritam leži pre
svega u brzini treniranja i jednostavnosti implementacije. Kada se malo bolje sagleda,
ovaj metod nije ništa drugo nego klasičan problem linearne regresije. Jedina razlika je
u tome što je ovde izlaz višedimenzionalan. Zbog te razlike, umesto vektora
parametara koje treba istrenirati, imamo matricu parametara.
Nelinearni model
Ovaj model pretpostavlja da su veze izmeĎu vektorske reprezentacije
hiponima i vektorske reprezentacije hiperonima nelinearne. Da bi se prepoznale
ovakve veze, koriste se neuronske mreže. O samim neuronskim mrežama, i njihivom
29
treniranju, bilo je više reči u drugom poglavlju.
Arhitektura neuronske mreže koja je korišćena je sačinjena iz tri sloja. Prvi
sloj je ulazni sloj, a broj neurona u ulaznom sloju jednak je dimenziji vektorskog
prostora u kome su reči predstavljene. Sledeći sloj je skriveni sloj. Dimenzija ovog
sloja može da varira, a nešto više o tome biće u sledećem poglavlju. Ovaj sloj neurona
nije linearan, a aktivaciona funkcija koja je korišćena je hiperbolički tangens. Zadnji
sloj neurona je izlazni sloj, koji je sačinjen od linearnih neurona. Neuronska mreža je
trenirana RPROP (skraćeno od eng. resilient backpropagation) algoritmom. Na slici
iznad je dat grafički prikaz arhitekture mreže.
4.2.5. Identifikacija relacije hiponimije
Nakon što smo podelili parove reči u klastere i kreirali odgovarajuće projekcije u
svakom od klastera, poslednja stvar koju treba da uradimo je da proverimo da li dve reči
obrazuju hiponim-hiperonim par. Ukoliko su date reči 𝑥 i 𝑦, način na koji se proverava da li
je reč 𝑦 hiperonim reči 𝑥 je sledeći:
Najpre treba dobiti vektore 𝑥′ i 𝑦′ , koji predstavljaju vektorske reprezentacije reči 𝑥 i
𝑦 redom.
Neka je 𝑑 razlika vektora 𝑦′ i 𝑥′ (𝑑 = 𝑦′ − 𝑥′ ). Sada treba pronaći, meĎu svim
klasterima, klaster čiji je vektor centara najbliži vektoru 𝑑. Označimo naĎeni klaster
sa 𝐶𝑘 .
Neka je 𝑃𝑘 projekcija koja odgovara klasteru 𝐶𝑘 . Koristeći datu projekciju nad
vektorom 𝑥′ , dobijamo vektor 𝑦′′ .
Vektor 𝑦′′ bi trebalo da bude sličan kao vektor 𝑦′ , ukoliko reči 𝑥 i 𝑦 obrazuju
hiponim-hiperonim par. Zato se provera da li reči pripadaju relaciji, vrši tako što se
proverava da li je 𝑦′′ − 𝑦′ < 𝛿 , gde je 𝛿 neki mali broj veći od nule.
30
U zadnjem koraku je za procenu sličnosti izmeĎu dva vektora korišćeno Euklidsko
rastojanje. Često se kod problema procesiranja govornog jezika koristi i kosinusna sličnost.
Kada su data dva vektora 𝑥 i 𝑦, ona se dobija na sledeći način:
𝑠𝑖𝑚(𝑥,𝑦) = cos 𝜃 = x, y
x y
Sa x, y je označen skalarni proizvod izmeĎu vektora 𝑥 i 𝑦, a sa 𝜃 ugao izmeĎu ova dva
vektora. Sada se za odreĎivanje da li su dva vektora slična proverava da li im je kosinusna
sličnost (𝑠𝑖𝑚(𝑥,𝑦)) veća od neke unapred zadate granice (granica mora da bude manja od 1).
Vektorske reprezentacije reči koje su korišćene u ovom radu su pre samog korišćenja
prvo normirane. Kada se radi sa normiranim vektorima, sa povećanjem Euklidsnog rastojanja
izmeĎu vektora, smanjuje se kosinusna sličnost. Zbog ove osobine, korišćenje i jednog i
drugog načina provere daje iste rezultate.
31
5. Implementacija i testiranje
5.1. WordNet
WordNet je velika leksička baza engleskog jezika. Kreirana je 1985. godine na
univerzitetu Prinston, pod direkcijom profesora psihologije, Džordža Milera. Razvoj same
baze je i dalje u toku.
Imenice, glagoli, pridevi i prilozi su u WordNet-u grupisani u skupove reči koje su
sininimi. Sinonimi su reči sa istim značenjem. Primeri takvih reči su "car" i "automobile",
"shut" i "close" itd. Pored toga što sadrži skupove sinonima, on sadrži i semantičke relacije
meĎu njima. Skupovi sinonima se čuvaju u obliku stabla. Svaki čvor stabla predstavlja skup
reči sa istim značenjem. Ako je čvor (skup) 𝐴 otac čvoru (skupu) 𝐵, to znači da je svaka reč
iz skupa 𝐴 hiperonim svake reči iz skupa 𝐵.
Sam cilj pri kreiranju vektorskih reprezentacija reči je da reči sa sličnim značenjem
imaju slične vektorske reprezentacije. Kako mi radimo samo sa vektorskim reprezentacijama
reči, nama su sve reči iz jednog skupa sinonima slične. Zato možemo da posmatramo svaki
skup kao jednu reč. Sledi prikaz hijerarhije iz WordNeta:
Kao što vidimo sa slike, neki elementi WordNeta su fraze sačinjene od više reči, a
neki veoma retke reči. Korpus za treniranje je kreiran na osnovu ove hijerarhije, tako što su
relacije otac-sin u korpusu ubačene kao relacije hiperonim-hiponim. Pri kreiranju samog
korpusa, svi parovi reči (ili fraza) gde se bar jedan član para ne nalazi u skinutim bazama
istreniranih reči su ignorisani.
Što se obima WordNet-a tiče, trenutna verzija baze sadrži 155 287 reči. Te reči su
podeljene na 117 659 skupova reči sa istim značenjem. Kompresovana verzija cele baze
zauzima oko 12 megabajta prostora na računaru.
32
5.2. Korišćeni alati
5.2.1. PyCharm
PyCharm je razvojno okruženje za kreiranje softvera u programskom jeziku Python.
Razvijeno je od strane češke kompanije JetBrains. Inicijalna verzija okruženja je objavljena
2010. godine, ali je njegov razvoj i dalje u toku. Od oktobra 2013. godine, pored
komercijalne verzije, pojavila se i besplatna verzija aplikacije, koja može da se koristi u
naučne ili bilo koje druge nekomercijalne svrhe.
Python je jedan od najpopularnijih jezika uopšte u računarstvu. Što se tiče rada sa
podacima, on i R su daleko najkorišćeniji jezici. Pored toga, on se koristi i za mnoge druge
oblasti softverske industrije, kao što su kreiranje internet stranica, desktop aplikacija, itd. U
ovom radu je u Python-u pisan kod za čitanje podataka iz WordNet-a, i kreiranje korpusa.
Tom prilikom je korišćena biblioteka NLTK, koja lako može da se doda u PyCharm
okruženje. Nešto više o ovoj biblioteci biće rečeno kasnije.
5.2.2. Eclipse
Eclipse je jedno od najpopulatnijih okruženja za pisanje koda u Java programskom
jeziku. Veoma je fleksibilno, pa se uz instaliranje odgovarajućih dodataka može dobiti
okruženje za razvoj internet stranica, desktop aplikacija, mobilnih aplikacija itd. Kreirano je
davne 2001. godine, ali se na njegovom razvoju i dalje radi.
Kako je Java jedan od omiljenih programskih jezika autora, veći deo koda koji je
korišćen u radu je pisan u njemu. Tačnije, jedini deo koji nije pisan u javi je deo za kreiranje
korpusa. Ceo sistem koji uči kako da prepozna relaciju hiponimije je pisan u Javi.
5.2.3. NLTK
NLTK (skraćeno od engl. Natural Language Toolkit) je vodeća platforma za kreiranje
Python programa za rad sa podacima govornog jezika. Ona omogućava pristup podacima iz
WordNet-a na veoma jednostavan način. Početna verzija platforme je kreirana 2001. godine
na univerzitetu u Pensilvaniji.
U ovom radu ova biblioteka je korišćena za kreiranje korpusa iz WordNet-a. Sledi
pregled najosnovnijih metoda ove biblioteke, koji su korišćeni u radu:
Pre svega, treba učitati WordNet. To se postiže sledećom naredbom: from nltk.corpus import wordnet as wn
Za dobijanje liste svih skupova sinonima, koristi se naredba: wn.all_synsets()
33
Da se od supa sinonima 𝑠𝑦𝑛𝑠𝑒𝑡, dobije lista skupova sinonima koji su hiponimi datog skupa
sinonima, koristi se naredba: synset.hyponyms()
5.3. Testiranje
5.3.1. Korpus
Za treniranje sistema za detekciju hijerarhijskih relacija je potreban korpus parova
koji pripadaju datoj relaciji, bez obzira da li se radi o linearnom ili nelinearnom modelu.
Parovi koji pripadaju relaciju su dobijeni iz WordNet-a. Kako se neki predstavnici skupa
sinonima ne nalaze u bazi istreniranih reči, parovi koji ih sadrže su zanemareni. Za treniranje
modela je korišćen korpus od 20 110 parova engleskih reči koje pripadaju relaciji.
Ostali deo parova iz WordNet-a je korišćen za korpuse koji služe za validaciju i
testiranje. MeĎutim, ovi korpusi sadrže i negativne primere (primere parova koji ne obrazuju
relaciju). Ovi primeri su dobijeni izborom proizvoljnih parova reči koje nisu u hijerarhijskom
odnosu u WordNet-u. Korpus za validaciju ima 6 350 primera (pozitivnih i negativnih
zajedno), a korpus za testiranje ima 12 700 primera.
Test za validaciju je neophodan radi podešavanja parametara.Tu se pre svega misli na
regularizacionu konstantu, dozvoljeno odstupanje prilikom detekcije, dužinu treniranja, itd.
5.3.2. Testiranje linearnog modela
U ovom delu su prikazani rezultati testiranja linearnog modela u zavisnosti od broja
klastera. Sam model zavisi isključivo od matrica koje transformišu ulazne vektore u njihove
hiperonime. Rezultati koji su dobijeni prilikom testiranja su prikazani u sledećoj tabeli:
Broj klastera Tačnost (%) Odaziv (%) F-Skor (%)
1 65.45 61.80 63.57
3 66.74 62.96 64.79
5 65.67 61.80 63.68
10 64.54 59.65 62.00
20 64.36 59.20 61.67
5.3.3. Testiranje nelinearnog modela
Nelinearni model pored samog broja klastera zavisi i od broja neurona u skrivenom
sloju. Ideja je bila da taj broj ne bude previše veliki da mreža ne bi samo zapamtila podatke iz
skupa za treniranje, nego i naučila nešto iz njih. Još jedan od faktora je i sama brzina
34
treniranja. Ulazni i izlazni sloj su dimenzije 300, što je ujedno i dimenzija prostora u kome se
vektori reči nalaze. Rezultati testiranja su dati u sledećoj tabeli:
Broj klastera, broj neurona
u skrivenom sloju
Tačnost (%) Odaziv (%) F-Skor (%)
10, 20 57.07 50.91 53.81
50, 20 60.39 53.15 56.54
100, 20 60.50 53.62 56.85
10, 40 58.56 53.47 55.90
50, 40 60.49 55.98 58.15
100, 40 60.93 60.66 60.80
150, 40 61.42 62.30 61.86
200, 40 60.61 61.26 60.93
Algoritam je prilikom podele na veći broj klastera od 150 počeo da daje slabije
rezultate. Najverovatniji razlog tome je ulazak u lokalni minimum prilikom treniranja, ali sam
problem treba dodatno istražiti.
35
6. Zaključak
U ovom radu je predstavljen i implementiran sistem za detekciju hijerarhijskih
relacija meĎu rečima. Cilj je bio da se testira koliko aktuelni modeli vektorskih reprezentacija
reči mogu da pomognu u rešavanju ovog problema. Implementacija je izvršena u
programskom jeziku Java, bez korišćenja dodatnih biblioteka. Program za izvršenje ne koristi
grafički procesor, a na računaru na kome je testiran, moguće je pokretanje 8 tredova
odjednom.
Za rešavanje ovog problema, predstavljena su dva modela. Oba su bazirana na proceni
vektorske reprezentacije hiperonima za datu reč. Jedan za tu procenu koristi linearnu, a drugi
nelinearnu transformaciju. Prednost ovakvog pristupa je u činjenici da ukoliko bi se ovaj
model usavršio, sistem bi mogao pored provere da li par obrazuje relaciju, da odreĎuje i ko je
direktni hiperonim za datu reč.
Na kraju rada su predstavljeni rezultati testiranja. Linearni model se pokazao kao bolji
u rešavanju ovog problema. Model sa 3 klastera je dostigao F-Skor od 64.79%. Rezultati su
dobri, s obzirom na težinu samog problema. U velikom broju slučajeva ni čovek ne može da
proceni da li su dve reči u relaciji hiponimije ili su sinonimi. TakoĎe je teško proceniti ko je
direktni hiperonim za datu reč, a ko hiperonim na nekom višem nivou.
Za dalje istraživanje se može probati treniranje ovih modela na većim korpusima.
TakoĎe, mogli bi da se probaju i korpusi koji sadrže više hiperonima za datu reč. Na taj način
bi sistem mogao da nauči i neke dublje hijerarhijske relacije meĎu rečima. Što se samih
modela tiče, trebalo bi eksperimentisati i sa samom dimenzijom vektorskog prostora u kome
su reči predstavljene, kao i sa nekim većim neuronskim mrežama.
36
Literatura
[1] Fu, Ruiji, Jiang Guo, Bing Qin, Wanxiang Che, Haifeng Wang, and Ting Liu.
"Learning Semantic Hierarchies via Word Embeddings." In ACL (1), pp. 1199-1209.
2014.
[2] Nayak, Neha. "Learning Hypernymy over Word Embeddings."
[3] Mikolov, T., Sutskever, I., Chen, K., Corrado, G. S., & Dean, J. (2013). Distributed
representations of words and phrases and their compositionality. In Advances in
neural information processing systems (pp. 3111-3119).
[4] Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013). Efficient estimation of word
representations in vector space. arXiv preprint arXiv:1301.3781.
[5] Rong, Xin. "word2vec parameter learning explained." arXiv preprint
arXiv:1411.2738 (2014).
[6] Bottou, L. (2012). Stochastic gradient descent tricks. In Neural Networks: Tricks of
the Trade (pp. 421-436). Springer Berlin Heidelberg.
[7] LeCun, Yann A., Léon Bottou, Genevieve B. Orr, and Klaus-Robert Müller.
"Efficient backprop." In Neural networks: Tricks of the trade, pp. 9-48. Springer
Berlin Heidelberg, 2012.
[8] Riedmiller, Martin, and Heinrich Braun. "A direct adaptive method for faster
backpropagation learning: The RPROP algorithm." Neural Networks, 1993., IEEE
International Conference On. IEEE, 1993.
[9] Miller, George A. "WordNet: a lexical database for English." Communications of the
ACM 38.11 (1995): 39-41.
[10] Sang, Erik Tjong Kim. "Extracting hypernym pairs from the web."Proceedings of the
45th Annual Meeting of the ACL on Interactive Poster Poster and Demonstration
Sessions. Association for Computational Linguistics, 2007.
[11] Snow, Rion, Daniel Jurafsky, and Andrew Y. Ng. "Learning syntactic patterns for
automatic hypernym discovery." Advances in Neural Information Processing Systems
17 (2004).
[12] Goldberg, Yoav, and Omer Levy. "word2vec Explained: deriving Mikolov et al.'s
negative-sampling word-embedding method." arXiv preprint arXiv:1402.3722 (2014).
37
Biografija
Nikola Stevanović je roĎen 17.08.1992. godine u Nišu. Završio je osnovnu školu Ivo
Andrić kao nosilac Vukove diplome i Ďak generacije. Nakon toga je završio Specijalizovano
odeljenje za učenike sa posebnim sposobnostima za matematiku u Gimnaziji Svetozar
Marković u Nišu, takoĎe kao nosilac Vukove diplome.
U 2011. godini je paralelno upisao osnovne studije iz matematike i iz informatike na
Prirodno-matematičkom fakultetu u Nišu. Obe je završio 2014. godine, studije iz matematike
sa prosečnom ocenom 9,92, a studije iz informatike sa prosečnom ocenom 10,00. Iste godine
je upisao master akademske studije na Departmanu za računarske nauke, Prirodno-
matematičkog fakulteta u Nišu, na studijskom programu razvoj softvera. Master akademske
studije je završio 2016. godine sa prosečnom ocenom 10,00.
Tokom osnovnog i srednjeg obrazovanja se veoma uspešno takmičio iz oblasti
matematike, informatike i fizike. Iz tih oblasti je osvojio veliki broj nagrada na takmičenjima
opštinskog, okružnog i republičkog nivoa. MeĎu njima se izdvajaju treća nagrada na
republičnom takmičenju iz matematike, treća nagrada na republičkom takmičenju iz fizike i
dve druge nagrade na republičkim takmičenjima iz informatike. Učestvovao je na dve Srpske
Informatičke Olimpijade, kao i na dva finala Bubble Cup takmičenja. Tokom studija je dve
godine učestvovao na takmičenju ACM Programming Contest.
NagraĎen je od strane Univerziteta u Nišu kao najbolji student koji je završio osnovne
akademske studije Univerziteta u Nišu u školskoj 2013/2014. godini.
Прилог 5/1
ПРИРОДНO - MАТЕМАТИЧКИ ФАКУЛТЕТ
НИШ
КЉУЧНА ДОКУМЕНТАЦИЈСКА ИНФОРМАЦИЈА
Редни број, РБР:
Идентификациони број, ИБР:
Тип документације, ТД: монографска
Тип записа, ТЗ: текстуални / графички
Врста рада, ВР: мастер рад
Аутор, АУ: Никола Стевановић
Ментор, МН: Бранимир Тодоровић
Наслов рада, НР: ПРЕПОЗНАВАЊЕ ХИЈЕРАРХИЈСКИХ РЕЛАЦИЈА У
ВЕКТОРСКОМ ПРОСТОРУ РЕПРЕЗЕНТАЦИЈА РЕЧИ
Језик публикације, ЈП: српски
Језик извода, ЈИ: енглески
Земља публиковања, ЗП: Р. Србија
Уже географско подручје, УГП: Р. Србија
Година, ГО: 2016
Издавач, ИЗ: ауторски репринт
Место и адреса, МА: Ниш, Вишеградска 33.
Физички опис рада, ФО: (поглавља/страна/ цитата/табела/слика/графика/прилога)
38 стр. ; граф. прикази
Научна област, НО: Рачунарске науке
Научна дисциплина, НД: Машинско учење
Предметна одредница/Кључне речи, ПО: Процесиранје говорног језика, Векторска уградња речи
УДК 004.8 004.89
Чува се, ЧУ: библиотека
Важна напомена, ВН:
Извод, ИЗ: Векторска уградња речи је показала добре резултате у детекцији лексичких релација. У овом раду се помоћу векторске уградње речи детектују хијерархијски односи међу речима. Представљена су два метода. Оба деле примере у неколико кластера, а затим у сваком кластеру креирају трансформацију између хипонима и њихових хиперонима. Први метод користи линеарну, а други нелинеарну трансформацију. На крају, алгоритам користи ове трансформације за детекцију нових хипоним-хипероним парова.
Датум прихватања теме, ДП: 27.09.2016.
Датум одбране, ДО:
Чланови комисије, КО: Председник:
Q4.16.01 - Izdawe 1
Члан:
Члан, ментор:
Образац Q4.09.13 - Издање 1
Прилог 5/2
ПРИРОДНО - МАТЕМАТИЧКИ ФАКУЛТЕТ
НИШ
KEY WORDS DOCUMENTATION
Accession number, ANO:
Identification number, INO:
Document type, DT: monograph
Type of record, TR: textual / graphic
Contents code, CC: university degree thesis (master thesis)
Author, AU: Nikola Stevanović
Mentor, MN: Branimir Todorović
Title, TI: HIERARCHICAL RELATION EXTRACTION IN WORD VECTOR SPACE
Language of text, LT: Serbian
Language of abstract, LA: English
Country of publication, CP: Republic of Serbia
Locality of publication, LP: Serbia
Publication year, PY: 2016
Publisher, PB: author’s reprint
Publication place, PP: Niš, Višegradska 33.
Physical description, PD: (chapters/pages/ref./tables/pictures/graphs/appendixes)
38 p. ; graphic representations
Scientific field, SF: Computer Science
Scientific discipline, SD: Machine Learning
Subject/Key words, S/KW: Natural Language Processing, Word Embeddings
UC 004.8 004.89
Holding data, HD: library
Note, N:
Abstract, AB: Word embeddings have shown good results in detecting lexical relations. In this thesis, we are using word embeddings to detect hierarchical relations between words. We are presenting two methods. Both of them divide training samples in several clusters, and then create transformation between hyponyms and their hypernyms in every cluster. The first method creates linear transformation, and the second method creates nonlinear transformation. In the end, the algorithm uses these transformations to detect new hyponym-hypernym pairs.
Accepted by the Scientific Board on, ASB: 27.09.2016.
Defended on, DE:
Defended Board, DB: President:
Member:
Member, Mentor:
Образац Q4.09.13 - Издање 1