word2vec: próbkowanie negatywne (w języku laika)?

Odpowiedzi:

164

Chodzi o word2vecto, aby zmaksymalizować podobieństwo (iloczyn skalarny) między wektorami dla słów, które pojawiają się blisko siebie (w kontekście siebie) w tekście i zminimalizować podobieństwo słów, które się nie pojawiają. W równaniu (3) artykułu, do którego odsyłasz, zignoruj ​​na chwilę potęgę. Ty masz

      v_c * v_w
 -------------------
   sum(v_c1 * v_w)

Licznik to w zasadzie podobieństwo między słowami c(kontekstem) i wsłowem (docelowym). Mianownik oblicza podobieństwo wszystkich innych kontekstów c1i słowa docelowego w. Maksymalizacja tego współczynnika zapewnia, że ​​słowa, które pojawiają się bliżej siebie w tekście, mają więcej podobnych wektorów niż słowa, które ich nie mają. Jednak przetwarzanie to może być bardzo powolne, ponieważ istnieje wiele kontekstów c1. Próbkowanie ujemne jest jednym ze sposobów rozwiązania tego problemu - wystarczy wybrać c1losowo kilka kontekstów . Wynik końcowy jest taki, że jeśli catpojawia się w kontekście food, to wektor of foodjest bardziej podobny do wektora cat(jako miary przez ich iloczyn skalarny) niż wektory kilku innych losowo wybranych słów(np democracy, greed,Freddy), zamiast wszystkich innych słów w języku . To word2vecznacznie przyspiesza trening.

mbatchkarov
źródło
15
dzięki lub miłe wyjaśnienie. Myślę, że to tylko samplowanie. ale czy wiesz, dlaczego nazywa się to „negatywne”?
HappyCoding
46
Terminologia jest zapożyczona z klasyfikacji, powszechnego zastosowania sieci neuronowych. Oto kilka pozytywnych i negatywnych przykładów. W word2vecprzypadku dowolnego słowa masz listę słów, które muszą być do niego podobne (klasa pozytywna), ale klasa negatywna (słowa, które nie są podobne do słowa docelowego) jest kompilowana przez próbkowanie.
mbatchkarov
38

Obliczanie wartości Softmax (funkcja określająca, które słowa są podobne do aktualnego słowa docelowego) jest kosztowne, ponieważ wymaga sumowania wszystkich słów w V (mianownik), które jest na ogół bardzo duże.

wprowadź opis obrazu tutaj

Co można zrobić?

Zaproponowano różne strategie przybliżania wartości softmax. Metody te można podzielić na metody oparte na softmax i próbkach . Podejścia oparte na Softmax to metody, które utrzymują warstwę softmax w stanie nienaruszonym, ale modyfikują jej architekturę w celu poprawy jej wydajności (np. Hierarchiczny softmax). Z drugiej strony, podejścia oparte na próbkowaniu całkowicie eliminują warstwę softmax i zamiast tego optymalizują inną funkcję straty, która przybliża softmax (robią to poprzez przybliżenie normalizacji w mianowniku softmax z pewną inną stratą, która jest tania do obliczenia, jak próbkowanie ujemne).

Funkcja strat w Word2vec to coś takiego:

wprowadź opis obrazu tutaj

Który logarytm może się rozłożyć na:

wprowadź opis obrazu tutaj

Z pewną formułą matematyczną i gradientową (zobacz więcej szczegółów w 6 ) przekształciła się w:

wprowadź opis obrazu tutaj

Jak widać przekonwertowane na zadanie klasyfikacji binarnej (y = 1 klasa pozytywna, y = 0 klasa negatywna). Ponieważ do wykonania zadania klasyfikacji binarnej potrzebujemy etykiet, oznaczamy wszystkie słowa kontekstu c jako etykiety prawdziwe (y = 1, próbka pozytywna), a k losowo wybrane z korpusów jako etykiety fałszywe (y = 0, próbka negatywna).


Spójrz na następny akapit. Załóżmy, że naszym słowem docelowym jest „ Word2vec ”. Z oknem 3, naszym kontekście słowa są: The, widely, popular, algorithm, was, developed. Te słowa kontekstowe traktują jako pozytywne etykiety. Potrzebujemy również etykiet negatywnych. Losowo wybrać kilka słów z korpusu ( produce, software, Collobert, margin-based, probabilistic) i traktują je jako próbek ujemnych. Ta technika, którą wybraliśmy losowo z korpusu, nazywa się próbkowaniem ujemnym.

wprowadź opis obrazu tutaj

Odniesienie :

Amir
źródło
1
Cześć @amir, moje początkowe pytanie brzmi: mam problemy ze zrozumieniem koncepcji próbkowania negatywnego ...
Andy K,
1
Bardzo dobrze wyjaśnione i nieco bardziej techniczne niż zaakceptowana odpowiedź. A więc idealna sytuacja SO: przeczytaj zaakceptowaną odpowiedź, aby uzyskać pomysł, a następnie tę odpowiedź, aby ją szczegółowo zrozumieć.
Ursin Brunner
21

Napisałem artykuł o ujemnym samouczka próbkowania tutaj .

Dlaczego używamy próbkowania ujemnego? -> redukcja kosztów obliczeniowych

Funkcja kosztu dla próbek waniliowych Skip-Gram (SG) i Skip-Gram-ujemnych (SGNS) wygląda następująco:

wprowadź opis obrazu tutaj

Zauważ, że Tjest to liczba wszystkich słowników. Jest odpowiednikiem V. Innymi słowy, T= V.

Rozkład prawdopodobieństwa p(w_t+j|w_t)w SG jest obliczany dla wszystkich Vsłowników w korpusie z:

wprowadź opis obrazu tutaj

Vmoże z łatwością przekroczyć dziesiątki tysięcy podczas treningu modelu Skip-Gram. Prawdopodobieństwo należy obliczyć Vrazy, co powoduje, że jest ono kosztowne obliczeniowo. Ponadto współczynnik normalizacji w mianowniku wymaga dodatkowych Vobliczeń.

Z drugiej strony rozkład prawdopodobieństwa w SGNS jest obliczany ze wzoru:

wprowadź opis obrazu tutaj

c_posjest wektorem słów dla słowa dodatniego i W_negwektorami słów dla wszystkich Kpróbek ujemnych w macierzy wag wyjściowych. W przypadku SGNS prawdopodobieństwo musi być obliczane tylko K + 1raz, gdzie Kzwykle wynosi od 5 do 20. Ponadto nie są potrzebne żadne dodatkowe iteracje, aby obliczyć współczynnik normalizacji w mianowniku.

W przypadku SGNS tylko ułamek wag jest aktualizowany dla każdej próbki treningowej, podczas gdy SG aktualizuje wszystkie miliony wag dla każdej próbki szkoleniowej.

wprowadź opis obrazu tutaj

Jak SGNS to osiąga? -> przekształcając zadanie wielokrotnej klasyfikacji w zadanie klasyfikacji binarnej.

Dzięki SGNS wektory słów nie są już uczone przez przewidywanie słów kontekstowych słowa centralnego. Uczy się rozróżniać rzeczywiste słowa kontekstu (pozytywne) od losowo wylosowanych słów (negatywne) z rozkładu szumu.

wprowadź opis obrazu tutaj

W prawdziwym życiu zazwyczaj nie obserwujesz za regressionpomocą przypadkowych słów, takich jak Gangnam-Stylelub pimples. Chodzi o to, że jeśli model może rozróżnić pary prawdopodobne (dodatnie) od par nieprawdopodobnych (ujemnych), zostaną nauczone dobre wektory słów.

wprowadź opis obrazu tutaj

Na powyższym rysunku aktualną pozytywną parą słowo-kontekst jest ( drilling, engineer). K=5Próbki ujemne są losowane z rozkładu hałasu : minimized, primary, concerns, led, page. W miarę jak model przechodzi przez próbki uczące, wagi są optymalizowane w taki sposób, że zostanie wyprowadzone prawdopodobieństwo dla pary dodatniej p(D=1|w,c_pos)≈1i prawdopodobieństwo dla par ujemnych p(D=1|w,c_neg)≈0.

Eric Kim
źródło
1
T oznacza liczbę tokenów (słowo występujące w tekście). V jak słownictwo (unikalne słowa) powiedziałbym.
Adam
Jeśli ustawimy K jako V -1, to próbkowanie ujemne jest takie samo, jak w waniliowym modelu skip-gramu. Czy moje rozumienie jest prawidłowe?
Shashwat
@Shashwat liczba wektorów słów zaktualizowanych dla każdej próbki treningowej jest taka sama, ale funkcja celu szkolenia nadal będzie zasadniczo inna
Eric Kim