Robocikowo>ROBOCIKOWO
Architektura

GloVe

2014HistorycznyOpublikowany
Nienadzorowany algorytm uczenia się statycznych reprezentacji wektorowych słów (word embeddings) trenowany na globalnej macierzy współwystąpień słów w korpusie.
Kluczowa innowacja
Połączenie globalnej faktoryzacji macierzy współwystąpień (jak LSA) z lokalnymi metodami opartymi na oknie kontekstu (jak word2vec), poprzez bezpośrednią optymalizację logarytmów stosunków prawdopodobieństw współwystąpień słów.
Kategoria
Architektura
Poziom abstrakcji
Building block
Poziom operacji
DaneTrening
Zastosowania
Inicjalizacja warstw embeddingu w sieciach RNN/CNN do NLPWyszukiwanie podobieństwa semantycznego słówZadania analogii słownychRozpoznawanie nazwanych encji (NER)Klasyfikacja tekstuAnaliza sentymentuWord similarity benchmarks (WordSim-353, SimLex-999)

Jak działa

1) Z korpusu budowana jest macierz współwystąpień X o wymiarach |V|×|V|, gdzie |V| to rozmiar słownika, a X_ij to ważona liczba wystąpień słowa j w oknie kontekstu słowa i (waga 1/odległość). 2) Każdemu słowu przypisuje się dwa wektory: wektor słowa w_i oraz wektor kontekstu w̃_j, oraz biasy b_i, b̃_j. 3) Model minimalizuje ważoną funkcję straty J = Σ_ij f(X_ij) · (w_i^T w̃_j + b_i + b̃_j − log X_ij)^2, gdzie funkcja wagowa f(x) = (x/x_max)^α dla x < x_max, w przeciwnym razie 1 (typowo x_max = 100, α = 0.75) — tłumi wpływ rzadkich i bardzo częstych par. 4) Trening odbywa się stochastycznym gradientem (AdaGrad) na niezerowych wpisach X. 5) Końcowy embedding słowa to suma w_i + w̃_i.

Rozwiązany problem

Wcześniejsze metody dzieliły się na dwie szkoły: globalną faktoryzację macierzy (LSA, HAL) skutecznie wykorzystującą statystyki korpusu, ale słabą w analogiach słownych, oraz lokalne metody okna kontekstu (word2vec) świetne w analogiach, lecz nie wykorzystujące pełnych statystyk globalnych. GloVe ujednolica oba podejścia — uczy się reprezentacji bezpośrednio z globalnych liczników współwystąpień, jednocześnie dobrze radząc sobie na zadaniach analogii i podobieństwa słów.

Komponenty

Word-word co-occurrence matrixStatystyczne podsumowanie korpusu wykorzystywane jako cel uczenia.

Macierz |V|×|V|, gdzie X_ij to ważona liczba wystąpień słowa j w oknie kontekstowym słowa i. Budowana raz, jednorazowym przebiegiem korpusu.

Word vectors and context vectorsParametry uczone w optymalizacji.

Dwa zestawy wektorów (oraz biasy b_i, b̃_j) trenowane jednocześnie. Końcowy embedding słowa to suma w_i + w̃_i, co wygładza szum i nieznacznie poprawia wyniki.

Weighting function f(x)Regularyzacja celu uczenia.

f(x) = (x/x_max)^α dla x < x_max, w przeciwnym razie 1. Typowo x_max=100, α=0.75. Tłumi wpływ par bardzo rzadkich (potencjalny szum) i bardzo częstych (np. stopwords).

Oficjalna

Implementacja

Pułapki implementacyjne
Brak obsługi słów spoza słownika (OOV)Wysoka

GloVe uczy jeden wektor na słowo ze stałego słownika. Słowa nieobecne w korpusie treningowym (rzadkie, błędy ortograficzne, neologizmy) nie mają reprezentacji.

Rozwiązanie:Użyj fastText (n-gramy znakowe) lub kontekstowych embeddingów (BERT) jeśli OOV jest istotny.
Wektory są statyczne — brak kontekstuWysoka

Każde słowo ma jeden wektor niezależnie od kontekstu zdania. Polysemia (np. „bank” rzeka vs. instytucja) jest reprezentowana jako uśrednienie znaczeń.

Rozwiązanie:Do zadań wrażliwych na kontekst preferuj ELMo/BERT/RoBERTa.
Pamięć przy budowie macierzy współwystąpieńŚrednia

Dla bardzo dużych korpusów macierz X może nie zmieścić się w RAM. Oficjalna implementacja używa dyskowego shuffling i sparse storage, ale wymaga ostrożnego ustawienia parametrów.

Rozwiązanie:Zwiększ memory limit w skrypcie cooccur, użyj większego dysku do shuffling, lub trenuj na podzbiorze korpusu.
Wrażliwość na rozmiar okna i preprocessingŚrednia

Wyniki silnie zależą od rozmiaru okna kontekstu, lowercasing, usunięcia stopwords i tokenizacji. Replikacja wyników z papieru wymaga zachowania tych samych ustawień preprocessingu.

Ewolucja

Oryginalny paper · 2014 · EMNLP 2014 · Jeffrey Pennington
GloVe: Global Vectors for Word Representation
Jeffrey Pennington, Richard Socher, Christopher D. Manning
2013
word2vec (skip-gram, CBOW)
Punkt przełomowy

Mikolov et al. publikują word2vec — lokalne metody okna kontekstu uczące dystrybucyjnych reprezentacji słów. Bezpośredni poprzednik i konkurent GloVe.

2014
Publikacja GloVe (EMNLP 2014)
Punkt przełomowy

Pennington, Socher i Manning publikują pracę i udostępniają pretrenowane wektory na Wikipedia+Gigaword, Common Crawl i Twitter.

2017
fastText (subword embeddings)

Bojanowski et al. wprowadzają fastText, rozszerzający word2vec o n-gramy znakowe — rozwiązuje problem słów spoza słownika (OOV), na który GloVe i word2vec są podatne.

2018
ELMo i BERT — kontekstowe embeddingi
Punkt przełomowy

ELMo (Peters et al. 2018) i BERT (Devlin et al. 2018) wprowadzają kontekstowe reprezentacje słów, w których embedding zależy od zdania. Statyczne embeddingi typu GloVe stopniowo schodzą na drugi plan w badaniach NLP.

Hiperparametry (konfigurowalne osie)

Wymiar wektoraWysoka

Wymiarowość wektorów słów. W oryginalnej publikacji testowano 25–300; udostępnione pretrenowane wektory mają 50, 100, 200, 300.

50
100
200
300
Rozmiar okna kontekstuWysoka

Liczba słów po lewej i prawej stronie słowa centralnego brana pod uwagę przy zliczaniu współwystąpień. Większe okno = więcej semantyki tematycznej, mniejsze = więcej cech składniowych.

5
10
15
x_max (próg w funkcji wagowej)Średnia

Próg w funkcji wagowej f(x) — powyżej x_max waga = 1. Kontroluje wpływ par o wysokiej częstości.

100
α (wykładnik funkcji wagowej)Średnia

Wykładnik w funkcji wagowej f(x) = (x/x_max)^α. Wartość 0.75 znaleziono empirycznie jako najlepszą.

0.75
Liczba iteracjiŚrednia

Liczba epok przejścia po niezerowych wpisach macierzy X (AdaGrad).

15
25
50

Złożoność obliczeniowa

Złożoność czasowa: O(|X|) ≈ O(|C|^0.8). Złożoność przestrzenna: O(|V|·d + |X|).

Wąskie gardło obliczeniowe

Construction of the co-occurrence matrix

Pierwsze przejście po korpusie w celu zbudowania macierzy X jest jednorazowe, ale w przypadku dużych korpusów (Common Crawl 840B tokenów) wymaga znaczącej pamięci i I/O. Sam trening jest zwykle szybszy niż budowa macierzy.

Paradygmat wykonania

Tryb główny
Gęsty

GloVe produkuje gęste, statyczne wektory słów (jeden wektor na słowo, niezależny od kontekstu) — w przeciwieństwie do kontekstowych embeddingów (ELMo, BERT).

Wzorzec aktywacji
Wszystkie ścieżki aktywne

Równoległość

Poziom równoległości
Częściowo równoległy

Trening AdaGrad można zrównoleglać po niezerowych wpisach macierzy z asynchronicznymi aktualizacjami parametrów (Hogwild!-podobnie). Inferencja (lookup wektora) jest trywialnie równoległa, ale nie wymaga obliczeń.

Zakres
Trening

Wymagania sprzętowe

Podstawowe

Oficjalna implementacja Stanford jest w C i zoptymalizowana pod CPU z OpenMP. Trening GloVe nie wymaga GPU — operacje to głównie aktualizacje rzadkich wpisów wektorowych.

Dobry fit

Trening może być portowany na GPU (istnieją implementacje w PyTorch/TensorFlow), choć korzyści są mniejsze niż dla gęstych modeli neuronowych.