15.2 Apytikris apmokymas

Prisiminkite mūsų diskusijas 15.1 skyrelis. Pagrindinė skip-gram modelio idėja yra naudoti softmax operacijas, kad būtų apskaičiuota sąlyginė tikimybė generuoti konteksto žodį wow_o remiantis duotu centriniu žodžiu wcw_c (15.1.1), kurios atitinkamas logaritminis nuostolis pateiktas (15.1.2) priešingu dydžiu.

Dėl softmax operacijos prigimties, kadangi konteksto žodis gali būti bet kuris žodyno V\mathcal{V} žodis, (15.1.2) priešingas dydis apima narių sumą, kurios narių skaičius lygus visam žodyno dydžiui. Todėl skip-gram modelio gradiento skaičiavimas (15.1.3) ir nuolatinio žodžių krepšio modelio gradiento skaičiavimas (15.1.5) abu apima šią sumą. Deja, tokių gradientų, sumuojančių per didelį žodyną (dažnai su šimtais tūkstančių ar milijonais žodžių), skaičiavimo sąnaudos yra milžiniškos!

Kad sumažintume minėtą skaičiavimo sudėtingumą, šiame skyrelyje pristatysime du apytikrio apmokymo metodus: neigiamų pavyzdžių atranką ir hierarchinę softmax. Dėl skip-gram modelio ir nuolatinio žodžių krepšio modelio panašumo šiems dviem apytikrio apmokymo metodams aprašyti tiesiog imsime skip-gram modelį kaip pavyzdį.

15.2.1 Neigiamų pavyzdžių atranka

Neigiamų pavyzdžių atranka modifikuoja pradinę tikslo funkciją. Turint centrinio žodžio wcw_c konteksto langą, faktas, kad bet kuris (konteksto) žodis wow_o yra iš šio konteksto lango, laikomas įvykiu, kurio tikimybė modeliuojama

P(D=1∣wc,wo)=σ(uo⊤vc),P(D=1\mid w_c, w_o) = \sigma(\mathbf{u}_o^\top \mathbf{v}_c),

kur σ\sigma naudoja sigmoidinės aktyvinimo funkcijos apibrėžimą:

σ(x)=11+exp⁡(−x).(15.2.1)\sigma(x) = \frac{1}{1+\exp(-x)}. \tag{15.2.1}

Pradėkime maksimizuodami bendrąją visų tokių įvykių tikimybę teksto sekose, kad apmokytume žodžių įterpinius. Konkrečiai, turint TT ilgio teksto seką, pažymėkime w(t)w^{(t)} žodį laiko žingsnyje tt, o konteksto lango dydį – mm; panagrinėkime bendrosios tikimybės maksimizavimą

∏t=1T∏−m≤j≤m, j≠0P(D=1∣w(t),w(t+j)).(15.2.2)\prod_{t=1}^{T} \prod_{-m \leq j \leq m,\ j \neq 0} P(D=1\mid w^{(t)}, w^{(t+j)}). \tag{15.2.2}

Tačiau (15.2.2) nagrinėja tik tuos įvykius, kurie apima teigiamus pavyzdžius. Todėl bendroji tikimybė (15.2.2) maksimizuojama iki 1 tik tada, jei visi žodžių vektoriai yra lygūs begalybei. Žinoma, tokie rezultatai yra beprasmiai. Kad tikslo funkcija taptų prasmingesnė, neigiamų pavyzdžių atranka prideda neigiamų pavyzdžių, atrinktų iš iš anksto apibrėžto pasiskirstymo.

Pažymėkime SS įvykį, kad konteksto žodis wow_o yra iš centrinio žodžio wcw_c konteksto lango. Šiam įvykiui, apimančiam wow_o, iš iš anksto apibrėžto pasiskirstymo P(w)P(w) atrenkame KK triukšmo žodžių, kurie nėra iš šio konteksto lango. Pažymėkime NkN_k įvykį, kad triukšmo žodis wkw_k (k=1,…,Kk=1, \ldots, K) nėra iš wcw_c konteksto lango. Tarkime, kad šie įvykiai, apimantys ir teigiamą pavyzdį, ir neigiamus pavyzdžius, S,N1,…,NKS, N_1, \ldots, N_K yra tarpusavyje nepriklausomi. Neigiamų pavyzdžių atranka perrašo bendrąją tikimybę (apimančią tik teigiamus pavyzdžius) (15.2.2) kaip

∏t=1T∏−m≤j≤m, j≠0P(w(t+j)∣w(t)),\prod_{t=1}^{T} \prod_{-m \leq j \leq m,\ j \neq 0} P(w^{(t+j)} \mid w^{(t)}),

kur sąlyginė tikimybė aproksimuojama per įvykius S,N1,…,NKS, N_1, \ldots, N_K:

P(w(t+j)∣w(t))=P(D=1∣w(t),w(t+j))∏k=1, wk∼P(w)KP(D=0∣w(t),wk).(15.2.3)P(w^{(t+j)} \mid w^{(t)}) =P(D=1\mid w^{(t)}, w^{(t+j)})\prod_{k=1,\ w_k \sim P(w)}^K P(D=0\mid w^{(t)}, w_k). \tag{15.2.3}

Pažymėkime iti_t ir hkh_k atitinkamai žodžio w(t)w^{(t)} laiko žingsnyje tt teksto sekoje ir triukšmo žodžio wkw_k indeksus. Logaritminis nuostolis sąlyginių tikimybių (15.2.3) atžvilgiu yra

−log⁡P(w(t+j)∣w(t))=−log⁡P(D=1∣w(t),w(t+j))−∑k=1, wk∼P(w)Klog⁡P(D=0∣w(t),wk)=−log⁡ σ(uit+j⊤vit)−∑k=1, wk∼P(w)Klog⁡(1−σ(uhk⊤vit))=−log⁡ σ(uit+j⊤vit)−∑k=1, wk∼P(w)Klog⁡σ(−uhk⊤vit).\begin{aligned} -\log P(w^{(t+j)} \mid w^{(t)}) =& -\log P(D=1\mid w^{(t)}, w^{(t+j)}) - \sum_{k=1,\ w_k \sim P(w)}^K \log P(D=0\mid w^{(t)}, w_k)\\ =&- \log\, \sigma\left(\mathbf{u}_{i_{t+j}}^\top \mathbf{v}_{i_t}\right) - \sum_{k=1,\ w_k \sim P(w)}^K \log\left(1-\sigma\left(\mathbf{u}_{h_k}^\top \mathbf{v}_{i_t}\right)\right)\\ =&- \log\, \sigma\left(\mathbf{u}_{i_{t+j}}^\top \mathbf{v}_{i_t}\right) - \sum_{k=1,\ w_k \sim P(w)}^K \log\sigma\left(-\mathbf{u}_{h_k}^\top \mathbf{v}_{i_t}\right). \end{aligned}

Matome, kad dabar gradientų skaičiavimo sąnaudos kiekviename apmokymo žingsnyje nieko bendra neturi su žodyno dydžiu, bet tiesiškai priklauso nuo KK. Kai hiperparametras KK nustatomas į mažesnę reikšmę, gradientų skaičiavimo sąnaudos kiekviename apmokymo žingsnyje su neigiamų pavyzdžių atranka yra mažesnės.

15.2.2 Hierarchinė softmax

Kaip alternatyvus apytikrio apmokymo metodas, hierarchinė softmax naudoja dvejetainį medį, duomenų struktūrą, iliustruotą 15.2.1 pav., kur kiekvienas medžio lapo mazgas vaizduoja žodyno V\mathcal{V} žodį.

Hierarchinė softmax apytikriam apmokymui, kur kiekvienas medžio lapo mazgas vaizduoja žodyno žodį.

15.2.1 pav. Hierarchinė softmax apytikriam apmokymui, kur kiekvienas medžio lapo mazgas vaizduoja žodyno žodį.

Pažymėkime L(w)L(w) mazgų (įskaitant abu galus) skaičių kelyje nuo šakninio mazgo iki lapo mazgo, vaizduojančio žodį ww, dvejetainiame medyje. Tegul n(w,j)n(w,j) yra jj-asis šio kelio mazgas, kurio konteksto žodžio vektorius yra un(w,j)\mathbf{u}_{n(w, j)}. Pavyzdžiui, L(w3)=4L(w_3) = 4 15.2.1 pav.. Hierarchinė softmax aproksimuoja sąlyginę tikimybę (15.1.1) kaip

P(wo∣wc)=∏j=1L(wo)−1σ([ ⁣[n(wo,j+1)=leftChild(n(wo,j))] ⁣]⋅un(wo,j)⊤vc),P(w_o \mid w_c) = \prod_{j=1}^{L(w_o)-1} \sigma\left( [\![ n(w_o, j+1) = \textrm{leftChild}(n(w_o, j)) ]\!] \cdot \mathbf{u}_{n(w_o, j)}^\top \mathbf{v}_c\right),

kur funkcija σ\sigma apibrėžta (15.2.1), o leftChild(n)\textrm{leftChild}(n) yra mazgo nn kairysis vaiko mazgas: jei xx teisinga, [ ⁣[x] ⁣]=1[\![x]\!] = 1; kitaip [ ⁣[x] ⁣]=−1[\![x]\!] = -1.

Kad iliustruotume, apskaičiuokime sąlyginę tikimybę generuoti žodį w3w_3 turint žodį wcw_c 15.2.1 pav.. Tam reikia skaliarinių sandaugų tarp žodžio vektoriaus vc\mathbf{v}_c žodžio wcw_c ir ne lapo mazgų vektorių kelyje (kelias paryškintas 15.2.1 pav.) nuo šaknies iki w3w_3, kuris einamas kairėn, dešinėn, tada kairėn:

P(w3∣wc)=σ(un(w3,1)⊤vc)⋅σ(−un(w3,2)⊤vc)⋅σ(un(w3,3)⊤vc).P(w_3 \mid w_c) = \sigma(\mathbf{u}_{n(w_3, 1)}^\top \mathbf{v}_c) \cdot \sigma(-\mathbf{u}_{n(w_3, 2)}^\top \mathbf{v}_c) \cdot \sigma(\mathbf{u}_{n(w_3, 3)}^\top \mathbf{v}_c).

Kadangi σ(x)+σ(−x)=1\sigma(x)+\sigma(-x) = 1, teisinga, kad sąlyginės tikimybės generuoti visus žodyno V\mathcal{V} žodžius remiantis bet kuriuo žodžiu wcw_c sumuojasi į vienetą:

∑w∈VP(w∣wc)=1.(15.2.4)\sum_{w \in \mathcal{V}} P(w \mid w_c) = 1. \tag{15.2.4}

Laimei, kadangi L(wo)−1L(w_o)-1 dėl dvejetainio medžio struktūros yra O(log2∣V∣)\mathcal{O}(\textrm{log}_2|\mathcal{V}|) eilės, kai žodyno dydis V\mathcal{V} yra milžiniškas, kiekvieno apmokymo žingsnio skaičiavimo sąnaudos naudojant hierarchinę softmax yra gerokai sumažintos, palyginti su tomis, kai apytikris apmokymas nenaudojamas.

15.2.3 Santrauka

  • Neigiamų pavyzdžių atranka sukonstruoja nuostolių funkciją nagrinėdama tarpusavyje nepriklausomus įvykius, apimančius ir teigiamus, ir neigiamus pavyzdžius. Apmokymo skaičiavimo sąnaudos tiesiškai priklauso nuo triukšmo žodžių skaičiaus kiekviename žingsnyje.
  • Hierarchinė softmax sukonstruoja nuostolių funkciją naudodama kelią nuo šakninio mazgo iki lapo mazgo dvejetainiame medyje. Apmokymo skaičiavimo sąnaudos kiekviename žingsnyje priklauso nuo žodyno dydžio logaritmo.

15.2.4 Pratimai

  1. Kaip galime atrinkti triukšmo žodžius neigiamų pavyzdžių atrankoje?
  2. Patikrinkite, ar teisinga (15.2.4).
  3. Kaip apmokyti nuolatinio žodžių krepšio modelį naudojant atitinkamai neigiamų pavyzdžių atranką ir hierarchinę softmax?

Diskusijos