15.5 Žodžių įterpiniai su globaliaisiais vektoriais (GloVe)
Žodžių ir žodžių bendras pasirodymas konteksto languose gali nešti gausią semantinę informaciją. Pavyzdžiui, dideliame tekstyne žodis „solid“ (kietas) yra labiau linkęs pasirodyti kartu su „ice“ (ledas) nei su „steam“ (garai), o žodis „gas“ (dujos) tikriausiai pasirodo kartu su „steam“ dažniau nei su „ice“. Be to, tokių bendrų pasirodymų globalią tekstyno statistiką galima apskaičiuoti iš anksto: tai gali lemti efektyvesnį apmokymą. Kad žodžių įterpiniams pasinaudotume viso tekstyno statistine informacija, pirmiausia grįžkime prie skip-gram modelio 15.1.3 skyrelis, bet interpretuokime jį naudodami globalią tekstyno statistiką, tokią kaip bendrų pasirodymų skaičiai.
15.5.1 Skip-gram su globalia tekstyno statistika
Pažymėję skip-gram modelio sąlyginę tikimybę žodžio turint žodį , turime
kur bet kuriam indeksui vektoriai ir vaizduoja žodį atitinkamai kaip centrinį ir konteksto žodį, o yra žodyno indeksų aibė.
Panagrinėkime žodį , kuris gali pasirodyti kelis kartus tekstyne. Visame tekstyne visi konteksto žodžiai, kai laikomas jų centriniu žodžiu, sudaro žodžių indeksų daugiaaibę (angl. multiset) , kuri leidžia to paties elemento kelis egzempliorius. Bet kuriam elementui jo egzempliorių skaičius vadinamas jo kartotinumu. Kad iliustruotume pavyzdžiu, tarkime, kad žodis tekstyne pasirodo du kartus, o konteksto žodžių indeksai, kai yra jų centrinis žodis, dviejuose konteksto languose yra ir . Taigi daugiaaibė , kur elementų kartotinumai yra atitinkamai 2, 4, 1, 1.
Dabar elemento kartotinumą daugiaaibėje pažymėkime . Tai yra globalus žodžio (kaip konteksto žodžio) ir žodžio (kaip centrinio žodžio) bendro pasirodymo tame pačiame konteksto lange visame tekstyne skaičius. Naudojant tokią globalią tekstyno statistiką, skip-gram modelio nuostolių funkcija ekvivalenti
Toliau pažymime visų konteksto žodžių skaičių konteksto languose, kuriuose pasirodo kaip jų centrinis žodis, kuris ekvivalentus . Tegul yra sąlyginė tikimybė generuoti konteksto žodį turint centrinį žodį ; (15.5.1) galima perrašyti kaip
(15.5.2) išraiška apskaičiuoja globalios tekstyno statistikos sąlyginio pasiskirstymo ir modelio prognozių sąlyginio pasiskirstymo kryžminę entropiją. Šis nuostolis taip pat sverlamas , kaip paaiškinta aukščiau. Minimizuojant nuostolių funkciją (15.5.2), prognozuojamas sąlyginis pasiskirstymas priartės prie sąlyginio pasiskirstymo iš globalios tekstyno statistikos.
Nors kryžminės entropijos nuostolių funkcija dažnai naudojama tikimybinių pasiskirstymų atstumui matuoti, čia ji gali būti ne pats geriausias pasirinkimas. Viena vertus, kaip minėjome 15.2 skyrelis, tinkamo normavimo sąnaudos lemia sumą per visą žodyną, kuri gali būti skaičiavimo požiūriu brangi. Kita vertus, didelis kiekis retų įvykių iš didelio tekstyno kryžminės entropijos nuostolio dažnai modeliuojamas priskiriant per didelį svorį.
15.5.2 GloVe modelis
Atsižvelgiant į tai, GloVe modelis atlieka tris skip-gram modelio pakeitimus, paremtus kvadratiniu nuostoliu (Pennington ir kt., 2014):
- Naudoja kintamuosius ir , kurie nėra tikimybiniai pasiskirstymai, ir abiejų logaritmus, todėl kvadratinio nuostolio narys yra .
- Prideda du skaliarinius modelio parametrus kiekvienam žodžiui : centrinio žodžio poslinkį ir konteksto žodžio poslinkį .
- Kiekvieno nuostolio nario svorį pakeičia svorio funkcija , kur didėja intervale .
Sudėjus viską kartu, GloVe apmokymas yra šios nuostolių funkcijos minimizavimas:
Svorio funkcijai siūlomas pasirinkimas yra: (pvz., ), jei (pvz., ); kitaip . Šiuo atveju, kadangi , bet kurio kvadratinio nuostolio narį galima praleisti skaičiavimo efektyvumui. Pavyzdžiui, naudojant minirinkinių stochastinį gradientinį nusileidimą apmokymui, kiekvienoje iteracijoje atsitiktinai atrenkame nenulinių minirinkinį gradientams apskaičiuoti ir modelio parametrams atnaujinti. Atkreipkite dėmesį, kad šie nenuliniai yra iš anksto apskaičiuota globali tekstyno statistika; todėl modelis vadinamas GloVe – Global Vectors (globalieji vektoriai).
Reikia pabrėžti, kad jei žodis pasirodo žodžio konteksto lange, tai ir atvirkščiai. Todėl . Skirtingai nei word2vec, kuris pritaiko asimetrinę sąlyginę tikimybę , GloVe pritaiko simetrinį . Todėl bet kurio žodžio centrinio žodžio vektorius ir konteksto žodžio vektorius GloVe modelyje yra matematiškai ekvivalentūs. Tačiau praktikoje dėl skirtingų inicializavimo reikšmių tas pats žodis po apmokymo šiuose dviejuose vektoriuose vis tiek gali gauti skirtingas reikšmes: GloVe juos susumuoja kaip išvesties vektorių.
15.5.3 GloVe interpretavimas iš bendro pasirodymo tikimybių santykio
GloVe modelį taip pat galime interpretuoti iš kitos perspektyvos. Naudodami tuos pačius žymėjimus 15.5.1 skyrelis, tegul yra sąlyginė tikimybė generuoti konteksto žodį turint kaip centrinį žodį tekstyne. 15.5.1 lentelė išvardyta keletas bendro pasirodymo tikimybių turint žodžius „ice“ ir „steam“ bei jų santykiai, pagrįsti statistika iš didelio tekstyno.
:Žodžių ir žodžių bendro pasirodymo tikimybės bei jų santykiai iš didelio tekstyno (adaptuota iš 1 lentelės (Pennington ir kt., 2014))
15.5.1 lentelė.
| = | solid | gas | water | fashion |
|---|---|---|---|---|
| 0.00019 | 0.000066 | 0.003 | 0.000017 | |
| 0.000022 | 0.00078 | 0.0022 | 0.000018 | |
| 8.9 | 0.085 | 1.36 | 0.96 |
Iš 15.5.1 lentelė galime pastebėti:
- Žodžiui , kuris susijęs su „ice“, bet nesusijęs su „steam“, pavyzdžiui, , tikimės didesnio bendro pasirodymo tikimybių santykio, pavyzdžiui, 8,9.
- Žodžiui , kuris susijęs su „steam“, bet nesusijęs su „ice“, pavyzdžiui, , tikimės mažesnio bendro pasirodymo tikimybių santykio, pavyzdžiui, 0,085.
- Žodžiui , kuris susijęs ir su „ice“, ir su „steam“, pavyzdžiui, , tikimės bendro pasirodymo tikimybių santykio, artimo 1, pavyzdžiui, 1,36.
- Žodžiui , kuris nesusijęs nei su „ice“, nei su „steam“, pavyzdžiui, , tikimės bendro pasirodymo tikimybių santykio, artimo 1, pavyzdžiui, 0,96.
Matyti, kad bendro pasirodymo tikimybių santykis gali intuityviai išreikšti žodžių tarpusavio sąryšį. Todėl galime suprojektuoti trijų žodžių vektorių funkciją, kuri pritaikytų šį santykį. Bendro pasirodymo tikimybių santykiui , kai yra centrinis žodis, o ir yra konteksto žodžiai, norime pritaikyti šį santykį naudodami kokią nors funkciją :
Iš daugelio galimų dizainų toliau pasirenkame tik vieną pagrįstą variantą. Kadangi bendro pasirodymo tikimybių santykis yra skaliaras, reikalaujame, kad būtų skaliarinė funkcija, pavyzdžiui, . Sukeitus žodžių indeksus ir (15.5.4), turi galioti , todėl viena galimybė yra , t. y.
Dabar pasirinkime , kur yra konstanta. Kadangi , suėmę abiejų pusių logaritmus gauname . Papildomus poslinkio narius galime naudoti pritaikyti, pavyzdžiui, centrinio žodžio poslinkį ir konteksto žodžio poslinkį :
Matuodami (15.5.5) kvadratinę paklaidą su svoriais, gauname GloVe nuostolių funkciją (15.5.3).
15.5.4 Santrauka
- Skip-gram modelį galima interpretuoti naudojant globalią tekstyno statistiką, pavyzdžiui, žodžių ir žodžių bendro pasirodymo skaičius.
- Kryžminės entropijos nuostolis gali būti ne pats geriausias pasirinkimas dviejų tikimybinių pasiskirstymų skirtumui matuoti, ypač dideliam tekstynui. GloVe naudoja kvadratinį nuostolį iš anksto apskaičiuotai globaliai tekstyno statistikai pritaikyti.
- GloVe centrinio žodžio vektorius ir konteksto žodžio vektorius bet kuriam žodžiui yra matematiškai ekvivalentūs.
- GloVe galima interpretuoti iš žodžių ir žodžių bendro pasirodymo tikimybių santykio.
15.5.5 Pratimai
- Jei žodžiai ir pasirodo tame pačiame konteksto lange, kaip galime naudoti jų atstumą teksto sekoje, kad performuotume sąlyginės tikimybės skaičiavimo metodą? Užuomina: žr. GloVe straipsnio 4.2 skyrių (Pennington ir kt., 2014).
- Ar bet kurio žodžio centrinio žodžio poslinkis ir konteksto žodžio poslinkis GloVe modelyje yra matematiškai ekvivalentūs? Kodėl?
