Czym są embeddingi słów?
Embeddingi słów (ang. word embeddings) to gęste, niskowymiarowe wektory liczbowe reprezentujące słowa w ciągłej przestrzeni wektorowej. Każde słowo jest mapowane na wektor (typowo 100-300 wymiarów), tak aby słowa o podobnym znaczeniu miały bliskie wektory.
To fundamentalna koncepcja przetwarzania języka naturalnego, która rozwiązuje problem reprezentacji tekstu — komputer nie rozumie słów, potrzebuje liczb. Wcześniejsze podejścia (one-hot encoding, Bag-of-Words) tworzyły wektory rzadkie, wielowymiarowe i pozbawione informacji o podobieństwie semantycznym.
Przełomowa właściwość embeddingów: relacje semantyczne kodowane jako operacje wektorowe. Najsłynniejszy przykład: vec(„Król") - vec(„Mężczyzna") + vec(„Kobieta") ≈ vec(„Królowa"). Analogia „Mężczyzna jest dla Króla tym, czym Kobieta jest dla Królowej" została wychwycona automatycznie z danych — model nie został nauczony tej relacji jawnie.
Hipoteza dystrybucyjna
Embeddingi opierają się na hipotezie dystrybucyjnej (J.R. Firth, 1957): „Poznasz słowo po towarzystwie, jakie utrzymuje" (You shall know a word by the company it keeps).
Słowa występujące w podobnych kontekstach mają podobne znaczenie. „Kot" i „pies" pojawiają się w podobnych zdaniach: „X biegał po podwórku", „nakarmił X-a", „X spał na kanapie". Model uczący się z kontekstów nadaje im bliskie wektory — bez żadnej wiedzy o zoologii.
Word2Vec
Word2Vec (Mikolov et al., Google, 2013) to przełomowy model uczący się embeddingów z dużych korpusów tekstu. Dwa warianty:
CBOW (Continuous Bag of Words)
CBOW przewiduje słowo docelowe na podstawie jego kontekstu (otaczających słów). Wejście: [„kot", „siedział", „___", „macie"] → wyjście: „na". Sieć neuronowa z jedną warstwą ukrytą; wektory embeddingów to wagi tej warstwy.
Algorytm:
- Weź okno kontekstowe (np. 5 słów)
- Uśrednij wektory kontekstu
- Przewiduj słowo centralne
- Zaktualizuj wagi za pomocą backpropagation
CBOW jest szybszy i lepiej radzi sobie z częstymi słowami.
Skip-gram
Skip-gram odwraca zadanie: na podstawie słowa docelowego przewiduje kontekst. Wejście: „na" → wyjście: [„kot", „siedział", „macie"]. Dla każdej pary (słowo docelowe, słowo kontekstowe) model trenuje się jako klasyfikator binarny.
Skip-gram lepiej radzi sobie z rzadkimi słowami i małymi korpusami.
Optymalizacje treningowe
Trening na pełnym słowniku jest kosztowny (softmax po ~100k słowach). Dwie kluczowe optymalizacje:
Negative Sampling: Zamiast softmax po całym słowniku, trenuj binarny klasyfikator: „czy słowo Y jest kontekstem słowa X?" z kilkoma losowymi negatywnymi próbkami (5-20 „nie-kontekstów").
Hierarchical Softmax: Organizacja słownika w drzewo binarne (Huffman tree). Zamiast obliczać prawdopodobieństwo dla każdego słowa, wystarczy O(log V) operacji.
Hiperparametry Word2Vec
- Wymiarowość (dim): 100-300 — więcej wymiarów = więcej informacji, ale ryzyko overfittingu na małych korpusach
- Rozmiar okna kontekstowego (window): 5-10 — małe okno chwyta relacje syntaktyczne (przymiotnik-rzeczownik), duże — semantyczne (kraj-stolica)
- Min count: minimalna częstość słowa (usuwanie hapax legomenon)
- Epochs: 5-15 — iteracje po korpusie
GloVe (Global Vectors)
GloVe (Pennington et al., Stanford, 2014) łączy zalety dwóch podejść:
- Metody globalne (LSA) — analizują macierz współwystępowania całego korpusu
- Metody lokalne (Word2Vec) — uczą się z lokalnych kontekstów
Algorytm GloVe:
- Zbuduj macierz współwystępowania X: Xᵢⱼ = ile razy słowo j pojawia się w kontekście słowa i
- Trenuj model minimalizujący: Σ f(Xᵢⱼ) · (wᵢᵀw̃ⱼ + bᵢ + b̃ⱼ - log Xᵢⱼ)²
Funkcja f(x) waży współwystępowania: rzadkie współwystępowania mają niższą wagę (redukcja szumu), bardzo częste — ograniczoną (unikanie dominacji par jak „the, of").
GloVe vs. Word2Vec: W praktyce dają porównywalną jakość. GloVe jest deterministyczny (brak losowości w treningu), Word2Vec jest prostszy konceptualnie.
FastText
FastText (Bojanowski et al., Facebook, 2017) rozszerza Word2Vec o n-gramy znakowe:
Słowo „playing" reprezentowane jest jako zbiór n-gramów: {, }. Wektor słowa to suma wektorów jego n-gramów.
Kluczowe zalety FastText:
- Obsługa OOV (Out-of-Vocabulary): Nawet słowo niewidziane w treningu ma wektor — złożony z n-gramów obecnych w innych słowach. „Niesamowity" → n-gramy „nies", „iesa", „samo" itp. mogą mieć wektory z treningu.
- Języki morfologicznie bogate: Polski, turecki, fiński — języki z bogatą fleksją mają ogromne słowniki. FastText radzi sobie lepiej, bo „biegam", „biegasz", „biegali" dzielą n-gramy.
- Literówki i neologizmy: Tolerancja na drobne zmiany pisowni.
Ewaluacja embeddingów
Analogie wektorowe
Test: A jest dla B tym, czym C jest dla ___? vec(A) - vec(B) + vec(C) ≈ vec(D)
Przykłady: Paryż-Francja+Polska ≈ Warszawa, Król-Mężczyzna+Kobieta ≈ Królowa.
Benchmark: Google Analogy Test (19k pytań: semantyczne i syntaktyczne). Trafność 60-75% to dobry wynik.
Podobieństwo semantyczne
Korelacja między ocenami podobieństwa słów przez model i ludzi. Benchmark: WordSim-353, SimLex-999.
Zadania downstream
Ostatecznie embeddingi ocenia się pośrednio — przez wynik modelu, w którym są używane: klasyfikacja tekstu, NER, analiza sentymentu. Lepsze embeddingi → lepszy model downstream.
Od embeddingów statycznych do kontekstowych
Ograniczenia embeddingów statycznych
Word2Vec, GloVe, FastText generują jeden wektor na słowo — niezależnie od kontekstu. Słowo „zamek" ma ten sam wektor w „zamek królewski" i „zamek w drzwiach". To fundamentalne ograniczenie.
ELMo (Embeddings from Language Models)
ELMo (Peters et al., 2018) generuje kontekstowe embeddingi: wektor słowa zależy od zdania. Architektura: dwukierunkowy LSTM pretrenowany na zadaniu modelowania języka. „Zamek" w kontekście „zamek królewski" → inny wektor niż w „zamek w drzwiach".
BERT i transformery
BERT i GPT generują embeddingi kontekstowe za pomocą self-attention (transformery). Każdy token ma wektor zależny od wszystkich innych tokenów w sekwencji. To standard we współczesnym NLP — embeddingi statyczne są używane głównie jako baseline lub w scenariuszach z ograniczeniami obliczeniowymi.
Embeddingi zdaniowe i dokumentowe
Poza embedingami słów, istnieją embeddingi wyższego poziomu:
- Doc2Vec — rozszerzenie Word2Vec na dokumenty
- Sentence-BERT — embeddingi zdań z BERT, zoptymalizowane pod podobieństwo semantyczne
- text-embedding-ada-002 (OpenAI) — komercyjny model embeddingów tekstu
- E5, GTE, BGE — open-source modele embeddingów zdaniowych (MTEB leaderboard)
Zastosowania: wyszukiwanie semantyczne, klasteryzacja dokumentów, systemy rekomendacji, RAG (Retrieval-Augmented Generation).
Zastosowania praktyczne
Wyszukiwanie semantyczne
Zamiast dopasowywania słów kluczowych — wyszukiwanie po znaczeniu. Zapytanie „jak leczyć ból głowy" znajduje artykuł pt. „Terapia migreny" — bo embeddingi są bliskie.
Analiza sentymentu
Embeddingi jako cechy wejściowe dla klasyfikatora sentymentu. Słowa „świetny", „doskonały", „rewelacyjny" mają bliskie wektory → model łatwo uczy się ich pozytywnego znaczenia.
Systemy rekomendacji
Embeddingi produktów, filmów, artykułów. Produkty z bliskimi embeddingami → rekomendacja „podobne produkty".
Klasteryzacja dokumentów
Grupowanie dokumentów po embeddingach za pomocą K-Means lub DBSCAN.
Transfer learning
Pretrenowane embeddingi jako starter dla modeli NLP na małych zbiorach. Zamiast uczenia od zera, model zaczyna z wiedzą semantyczną z ogromnego korpusu.
Bias w embeddingach
Embeddingi odzwierciedlają biasy z danych treningowych. Badania (Bolukbasi et al., 2016) wykazały:
- vec(„programista") bliżej vec(„mężczyzna") niż vec(„kobieta")
- vec(„pielęgniarka") bliżej vec(„kobieta")
- Stereotypy rasowe, etniczne, wiekowe
Debiasing: techniki takie jak hard debiasing (projekcja ortogonalna) i fine-tuning na zbalansowanych danych częściowo redukują biasy, ale nie eliminują ich całkowicie.
Podsumowanie
Embeddingi słów to fundament współczesnego NLP. Word2Vec udowodnił, że znaczenie słów można kodować jako wektory, GloVe wykorzystał globalną statystykę, FastText dodał n-gramy znakowe. Choć embeddingi kontekstowe (BERT, GPT) zdominowały NLP, statyczne embeddingi pozostają ważne jako baseline, w systemach o ograniczonych zasobach i jako koncepcja fundamentalna do zrozumienia reprezentacji tekstowej w AI.