Czytam poniższy artykuł i mam problem ze zrozumieniem koncepcji próbkowania ujemnego.
http://arxiv.org/pdf/1402.3722v1.pdf
Czy ktoś może pomóc, proszę?
machine-learning
nlp
word2vec
Andy K.
źródło
źródło
Odpowiedzi:
Chodzi o
word2vec
to, 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 maszLicznik to w zasadzie podobieństwo między słowami
c
(kontekstem) iw
słowem (docelowym). Mianownik oblicza podobieństwo wszystkich innych kontekstówc1
i słowa docelowegow
. 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ówc1
. Próbkowanie ujemne jest jednym ze sposobów rozwiązania tego problemu - wystarczy wybraćc1
losowo kilka kontekstów . Wynik końcowy jest taki, że jeślicat
pojawia się w kontekściefood
, to wektor offood
jest bardziej podobny do wektoracat
(jako miary przez ich iloczyn skalarny) niż wektory kilku innych losowo wybranych słów(npdemocracy
,greed
,Freddy
), zamiast wszystkich innych słów w języku . Toword2vec
znacznie przyspiesza trening.źródło
word2vec
przypadku 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.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.
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:
Który logarytm może się rozłożyć na:
Z pewną formułą matematyczną i gradientową (zobacz więcej szczegółów w 6 ) przekształciła się w:
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.Odniesienie :
źródło
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:
Zauważ, że
T
jest to liczba wszystkich słowników. Jest odpowiednikiemV
. Innymi słowy,T
=V
.Rozkład prawdopodobieństwa
p(w_t+j|w_t)
w SG jest obliczany dla wszystkichV
słowników w korpusie z:V
może z łatwością przekroczyć dziesiątki tysięcy podczas treningu modelu Skip-Gram. Prawdopodobieństwo należy obliczyćV
razy, co powoduje, że jest ono kosztowne obliczeniowo. Ponadto współczynnik normalizacji w mianowniku wymaga dodatkowychV
obliczeń.Z drugiej strony rozkład prawdopodobieństwa w SGNS jest obliczany ze wzoru:
c_pos
jest wektorem słów dla słowa dodatniego iW_neg
wektorami słów dla wszystkichK
próbek ujemnych w macierzy wag wyjściowych. W przypadku SGNS prawdopodobieństwo musi być obliczane tylkoK + 1
raz, gdzieK
zwykle 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.
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.
W prawdziwym życiu zazwyczaj nie obserwujesz za
regression
pomocą przypadkowych słów, takich jakGangnam-Style
lubpimples
. Chodzi o to, że jeśli model może rozróżnić pary prawdopodobne (dodatnie) od par nieprawdopodobnych (ujemnych), zostaną nauczone dobre wektory słów.Na powyższym rysunku aktualną pozytywną parą słowo-kontekst jest (
drilling
,engineer
).K=5
Pró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 dodatniejp(D=1|w,c_pos)≈1
i prawdopodobieństwo dla par ujemnychp(D=1|w,c_neg)≈0
.źródło
K
jakoV -1
, to próbkowanie ujemne jest takie samo, jak w waniliowym modelu skip-gramu. Czy moje rozumienie jest prawidłowe?