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ę?
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ę?
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 masz
v_c * v_w
-------------------
sum(v_c1 * v_w)
Licznik to w zasadzie podobieństwo między słowami c
(kontekstem) i w
słowem (docelowym). Mianownik oblicza podobieństwo wszystkich innych kontekstów c1
i 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ć c1
losowo kilka kontekstów . Wynik końcowy jest taki, że jeśli cat
pojawia się w kontekście food
, to wektor of food
jest 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 word2vec
znacznie przyspiesza trening.
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 :
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 odpowiednikiem V
. Innymi słowy, T
= V
.
Rozkład prawdopodobieństwa p(w_t+j|w_t)
w SG jest obliczany dla wszystkich V
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 dodatkowych V
obliczeń.
Z drugiej strony rozkład prawdopodobieństwa w SGNS jest obliczany ze wzoru:
c_pos
jest wektorem słów dla słowa dodatniego i W_neg
wektorami słów dla wszystkich K
próbek ujemnych w macierzy wag wyjściowych. W przypadku SGNS prawdopodobieństwo musi być obliczane tylko K + 1
raz, gdzie K
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 jak Gangnam-Style
lub 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.
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 dodatniej p(D=1|w,c_pos)≈1
i prawdopodobieństwo dla par ujemnych p(D=1|w,c_neg)≈0
.
K
jako V -1
, to próbkowanie ujemne jest takie samo, jak w waniliowym modelu skip-gramu. Czy moje rozumienie jest prawidłowe?