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ę qijq_{ij} skip-gram modelio sąlyginę tikimybę P(wj∣wi)P(w_j\mid w_i) žodžio wjw_j turint žodį wiw_i, turime

qij=exp⁡(uj⊤vi)∑k∈Vexp⁡(uk⊤vi),q_{ij}=\frac{\exp(\mathbf{u}_j^\top \mathbf{v}_i)}{ \sum_{k \in \mathcal{V}} \exp(\mathbf{u}_k^\top \mathbf{v}_i)},

kur bet kuriam indeksui ii vektoriai vi\mathbf{v}_i ir ui\mathbf{u}_i vaizduoja žodį wiw_i atitinkamai kaip centrinį ir konteksto žodį, o V={0,1,…,∣V∣−1}\mathcal{V} = \{0, 1, \ldots, |\mathcal{V}|-1\} yra žodyno indeksų aibė.

Panagrinėkime žodį wiw_i, kuris gali pasirodyti kelis kartus tekstyne. Visame tekstyne visi konteksto žodžiai, kai wiw_i laikomas jų centriniu žodžiu, sudaro žodžių indeksų daugiaaibę (angl. multiset) Ci\mathcal{C}_i, 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 wiw_i tekstyne pasirodo du kartus, o konteksto žodžių indeksai, kai wiw_i yra jų centrinis žodis, dviejuose konteksto languose yra k,j,m,kk, j, m, k ir k,l,k,jk, l, k, j. Taigi daugiaaibė Ci={j,j,k,k,k,k,l,m}\mathcal{C}_i = \{j, j, k, k, k, k, l, m\}, kur elementų j,k,l,mj, k, l, m kartotinumai yra atitinkamai 2, 4, 1, 1.

Dabar elemento jj kartotinumą daugiaaibėje Ci\mathcal{C}_i pažymėkime xijx_{ij}. Tai yra globalus žodžio wjw_j (kaip konteksto žodžio) ir žodžio wiw_i (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

−∑i∈V∑j∈Vxijlog⁡ qij.(15.5.1)-\sum_{i\in\mathcal{V}}\sum_{j\in\mathcal{V}} x_{ij} \log\,q_{ij}. \tag{15.5.1}

Toliau pažymime xix_i visų konteksto žodžių skaičių konteksto languose, kuriuose wiw_i pasirodo kaip jų centrinis žodis, kuris ekvivalentus ∣Ci∣|\mathcal{C}_i|. Tegul pijp_{ij} yra sąlyginė tikimybė xij/xix_{ij}/x_i generuoti konteksto žodį wjw_j turint centrinį žodį wiw_i; (15.5.1) galima perrašyti kaip

−∑i∈Vxi∑j∈Vpijlog⁡ qij.(15.5.2)-\sum_{i\in\mathcal{V}} x_i \sum_{j\in\mathcal{V}} p_{ij} \log\,q_{ij}. \tag{15.5.2}

(15.5.2) išraiška −∑j∈Vpijlog⁡ qij-\sum_{j\in\mathcal{V}} p_{ij} \log\,q_{ij} apskaičiuoja globalios tekstyno statistikos sąlyginio pasiskirstymo pijp_{ij} ir modelio prognozių sąlyginio pasiskirstymo qijq_{ij} kryžminę entropiją. Šis nuostolis taip pat sverlamas xix_i, 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 qijq_{ij} 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):

  1. Naudoja kintamuosius pij′=xijp'_{ij}=x_{ij} ir qij′=exp⁡(uj⊤vi)q'_{ij}=\exp(\mathbf{u}_j^\top \mathbf{v}_i), kurie nėra tikimybiniai pasiskirstymai, ir abiejų logaritmus, todėl kvadratinio nuostolio narys yra (log⁡ pij′−log⁡ qij′)2=(uj⊤vi−log⁡ xij)2\left(\log\,p'_{ij} - \log\,q'_{ij}\right)^2 = \left(\mathbf{u}_j^\top \mathbf{v}_i - \log\,x_{ij}\right)^2.
  2. Prideda du skaliarinius modelio parametrus kiekvienam žodžiui wiw_i: centrinio žodžio poslinkį bib_i ir konteksto žodžio poslinkį cic_i.
  3. Kiekvieno nuostolio nario svorį pakeičia svorio funkcija h(xij)h(x_{ij}), kur h(x)h(x) didėja intervale [0,1][0, 1].

Sudėjus viską kartu, GloVe apmokymas yra šios nuostolių funkcijos minimizavimas:

∑i∈V∑j∈Vh(xij)(uj⊤vi+bi+cj−log⁡ xij)2.(15.5.3)\sum_{i\in\mathcal{V}} \sum_{j\in\mathcal{V}} h(x_{ij}) \left(\mathbf{u}_j^\top \mathbf{v}_i + b_i + c_j - \log\,x_{ij}\right)^2. \tag{15.5.3}

Svorio funkcijai siūlomas pasirinkimas yra: h(x)=(x/c)αh(x) = (x/c) ^\alpha (pvz., α=0,75\alpha = 0{,}75), jei x<cx < c (pvz., c=100c = 100); kitaip h(x)=1h(x) = 1. Šiuo atveju, kadangi h(0)=0h(0)=0, bet kurio xij=0x_{ij}=0 kvadratinio nuostolio narį galima praleisti skaičiavimo efektyvumui. Pavyzdžiui, naudojant minirinkinių stochastinį gradientinį nusileidimą apmokymui, kiekvienoje iteracijoje atsitiktinai atrenkame nenulinių xijx_{ij} minirinkinį gradientams apskaičiuoti ir modelio parametrams atnaujinti. Atkreipkite dėmesį, kad šie nenuliniai xijx_{ij} yra iš anksto apskaičiuota globali tekstyno statistika; todėl modelis vadinamas GloVe – Global Vectors (globalieji vektoriai).

Reikia pabrėžti, kad jei žodis wiw_i pasirodo žodžio wjw_j konteksto lange, tai ir atvirkščiai. Todėl xij=xjix_{ij}=x_{ji}. Skirtingai nei word2vec, kuris pritaiko asimetrinę sąlyginę tikimybę pijp_{ij}, GloVe pritaiko simetrinį log⁡ xij\log \, x_{ij}. 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 pij=defP(wj∣wi)p_{ij} \stackrel{\textrm{def}}{=} P(w_j \mid w_i) yra sąlyginė tikimybė generuoti konteksto žodį wjw_j turint wiw_i 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ė.

wkw_k=solidgaswaterfashion
p1=P(wk∣ice)p_1=P(w_k\mid \textrm{ice})0.000190.0000660.0030.000017
p2=P(wk∣steam)p_2=P(w_k\mid\textrm{steam})0.0000220.000780.00220.000018
p1/p2p_1/p_28.90.0851.360.96

Iš 15.5.1 lentelė galime pastebėti:

  • Žodžiui wkw_k, kuris susijęs su „ice“, bet nesusijęs su „steam“, pavyzdžiui, wk=solidw_k=\textrm{solid}, tikimės didesnio bendro pasirodymo tikimybių santykio, pavyzdžiui, 8,9.
  • Žodžiui wkw_k, kuris susijęs su „steam“, bet nesusijęs su „ice“, pavyzdžiui, wk=gasw_k=\textrm{gas}, tikimės mažesnio bendro pasirodymo tikimybių santykio, pavyzdžiui, 0,085.
  • Žodžiui wkw_k, kuris susijęs ir su „ice“, ir su „steam“, pavyzdžiui, wk=waterw_k=\textrm{water}, tikimės bendro pasirodymo tikimybių santykio, artimo 1, pavyzdžiui, 1,36.
  • Žodžiui wkw_k, kuris nesusijęs nei su „ice“, nei su „steam“, pavyzdžiui, wk=fashionw_k=\textrm{fashion}, 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 pij/pik{p_{ij}}/{p_{ik}}, kai wiw_i yra centrinis žodis, o wjw_j ir wkw_k yra konteksto žodžiai, norime pritaikyti šį santykį naudodami kokią nors funkciją ff:

f(uj,uk,vi)≈pijpik.(15.5.4)f(\mathbf{u}_j, \mathbf{u}_k, {\mathbf{v}}_i) \approx \frac{p_{ij}}{p_{ik}}. \tag{15.5.4}

Iš daugelio galimų ff dizainų toliau pasirenkame tik vieną pagrįstą variantą. Kadangi bendro pasirodymo tikimybių santykis yra skaliaras, reikalaujame, kad ff būtų skaliarinė funkcija, pavyzdžiui, f(uj,uk,vi)=f((uj−uk)⊤vi)f(\mathbf{u}_j, \mathbf{u}_k, {\mathbf{v}}_i) = f\left((\mathbf{u}_j - \mathbf{u}_k)^\top {\mathbf{v}}_i\right). Sukeitus žodžių indeksus jj ir kk (15.5.4), turi galioti f(x)f(−x)=1f(x)f(-x)=1, todėl viena galimybė yra f(x)=exp⁡(x)f(x)=\exp(x), t. y.

f(uj,uk,vi)=exp⁡(uj⊤vi)exp⁡(uk⊤vi)≈pijpik.f(\mathbf{u}_j, \mathbf{u}_k, {\mathbf{v}}_i) = \frac{\exp\left(\mathbf{u}_j^\top {\mathbf{v}}_i\right)}{\exp\left(\mathbf{u}_k^\top {\mathbf{v}}_i\right)} \approx \frac{p_{ij}}{p_{ik}}.

Dabar pasirinkime exp⁡(uj⊤vi)≈αpij\exp\left(\mathbf{u}_j^\top {\mathbf{v}}_i\right) \approx \alpha p_{ij}, kur α\alpha yra konstanta. Kadangi pij=xij/xip_{ij}=x_{ij}/x_i, suėmę abiejų pusių logaritmus gauname uj⊤vi≈log⁡ α+log⁡ xij−log⁡ xi\mathbf{u}_j^\top {\mathbf{v}}_i \approx \log\,\alpha + \log\,x_{ij} - \log\,x_i. Papildomus poslinkio narius galime naudoti −log⁡ α+log⁡ xi- \log\, \alpha + \log\, x_i pritaikyti, pavyzdžiui, centrinio žodžio poslinkį bib_i ir konteksto žodžio poslinkį cjc_j:

uj⊤vi+bi+cj≈log⁡ xij.(15.5.5)\mathbf{u}_j^\top \mathbf{v}_i + b_i + c_j \approx \log\, x_{ij}. \tag{15.5.5}

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

  1. Jei žodžiai wiw_i ir wjw_j pasirodo tame pačiame konteksto lange, kaip galime naudoti jų atstumą teksto sekoje, kad performuotume sąlyginės tikimybės pijp_{ij} skaičiavimo metodą? Užuomina: žr. GloVe straipsnio 4.2 skyrių (Pennington ir kt., 2014).
  2. Ar bet kurio žodžio centrinio žodžio poslinkis ir konteksto žodžio poslinkis GloVe modelyje yra matematiškai ekvivalentūs? Kodėl?

Diskusijos