word2vec: amostragem negativa (em termos leigos)?

Respostas:

166

A ideia word2vecé maximizar a similaridade (produto escalar) entre os vetores para palavras que aparecem juntas (no contexto umas das outras) no texto e minimizar a similaridade de palavras que não aparecem. Na equação (3) do artigo que você vincula, ignore a exponenciação por um momento. Você tem

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

O numerador é basicamente a semelhança entre as palavras c(o contexto) e w(a palavra alvo). O denominador calcula a semelhança de todos os outros contextos c1e da palavra-alvo w. Maximizar essa proporção garante que as palavras que aparecem mais próximas no texto tenham vetores mais semelhantes do que as palavras que não aparecem. No entanto, computar isso pode ser muito lento, porque existem muitos contextos c1. A amostragem negativa é uma das maneiras de abordar esse problema - basta selecionar alguns contextos c1ao acaso. O resultado final é que, se cataparecer no contexto de food, o vetor de foodé mais semelhante ao vetor de cat(conforme medido por seu produto escalar) do que os vetores de várias outras palavras escolhidas aleatoriamente(por exemplo democracy, greed, Freddy), em vez de todas as outras palavras na linguagem . Isso torna word2vecmuito mais rápido treinar.

mbatchkarov
fonte
15
obrigado ou a bela explicação. Acho que é apenas uma amostra. mas você sabe por que é chamado de "negativo"?
HappyCoding
46
A terminologia é emprestada da classificação, uma aplicação comum das redes neurais. Lá você tem um monte de exemplos positivos e negativos. Com word2vec, para qualquer palavra dada, você tem uma lista de palavras que precisam ser semelhantes a ela (a classe positiva), mas a classe negativa (palavras que não são semelhantes à palavra targer) é compilada por amostragem.
mbatchkarov
40

Calcular Softmax (função para determinar quais palavras são semelhantes à palavra-alvo atual) é caro, pois requer a soma de todas as palavras em V (denominador), que geralmente é muito grande.

insira a descrição da imagem aqui

O que pode ser feito?

Diferentes estratégias foram propostas para aproximar o softmax. Estas abordagens podem ser agrupadas em softmax baseados em e baseados em amostragem abordagens. As abordagens baseadas em Softmax são métodos que mantêm a camada softmax intacta, mas modificam sua arquitetura para melhorar sua eficiência (por exemplo, softmax hierárquico). As abordagens baseadas em amostragem , por outro lado, eliminam completamente a camada softmax e, em vez disso, otimizam alguma outra função de perda que se aproxima de softmax (Eles fazem isso aproximando a normalização no denominador de softmax com alguma outra perda que é barata de calcular como amostragem negativa).

A função de perda no Word2vec é algo como:

insira a descrição da imagem aqui

Qual logaritmo pode se decompor em:

insira a descrição da imagem aqui

Com alguma fórmula matemática e gradiente (veja mais detalhes em 6 ), ele foi convertido para:

insira a descrição da imagem aqui

Como você pode ver, ele foi convertido para a tarefa de classificação binária (y = 1 classe positiva, y = 0 classe negativa). Como precisamos de rótulos para realizar nossa tarefa de classificação binária, designamos todas as palavras de contexto c como rótulos verdadeiros (y = 1, amostra positiva) ek selecionados aleatoriamente de corpora como rótulos falsos (y = 0, amostra negativa).


Veja o parágrafo seguinte. Suponha que nossa palavra-alvo seja " Word2vec ". Com a janela de 3, nossas palavras de contexto são: The, widely, popular, algorithm, was, developed. Essas palavras de contexto são consideradas rótulos positivos. Também precisamos de alguns rótulos negativos. Nós escolher aleatoriamente algumas palavras do corpus ( produce, software, Collobert, margin-based, probabilistic) e considerá-los como amostras negativas. Esta técnica que escolhemos como um exemplo aleatório do corpus é chamada de amostragem negativa.

insira a descrição da imagem aqui

Referência :

Amir
fonte
1
Olá @amir, minha pergunta inicial é que tenho alguns problemas para entender o conceito de amostragem negativa ...
Andy K
1
Muito bem explicado e um pouco mais técnico do que a resposta aceita. Portanto, uma situação SO perfeita: leia a resposta aceita para ter a ideia e depois esta resposta para entendê-la em detalhes.
Ursin Brunner,
22

Eu escrevi um artigo tutorial sobre amostragem negativa aqui .

Por que usamos amostragem negativa? -> para reduzir o custo computacional

A função de custo para amostragem vanilla Skip-Gram (SG) e Skip-Gram negativo (SGNS) é semelhante a esta:

insira a descrição da imagem aqui

Observe que Té o número de todos os vocabs. É equivalente a V. Em outras palavras, T= V.

A distribuição de probabilidade p(w_t+j|w_t)em SG é calculada para todos os Vvocabs no corpus com:

insira a descrição da imagem aqui

Vpode facilmente exceder dezenas de milhares ao treinar o modelo Skip-Gram. A probabilidade precisa ser computada Vvezes, o que a torna computacionalmente cara. Além disso, o fator de normalização no denominador requer Vcálculos extras .

Por outro lado, a distribuição de probabilidade em SGNS é calculada com:

insira a descrição da imagem aqui

c_posé um vetor de palavras para palavras positivas e W_negvetores de palavras para todas as Kamostras negativas na matriz de ponderação de saída. Com SGNS, a probabilidade precisa ser calculada apenas algumas K + 1vezes, onde Knormalmente está entre 5 ~ 20. Além disso, nenhuma iteração extra é necessária para calcular o fator de normalização no denominador.

Com o SGNS, apenas uma fração dos pesos é atualizada para cada amostra de treinamento, enquanto o SG atualiza todos os milhões de pesos para cada amostra de treinamento.

insira a descrição da imagem aqui

Como o SGNS consegue isso? -> transformando a tarefa de multi-classificação em tarefa de classificação binária.

Com o SGNS, os vetores de palavras não são mais aprendidos pela previsão de palavras de contexto de uma palavra central. Ele aprende a diferenciar as palavras de contexto reais (positivas) de palavras desenhadas aleatoriamente (negativas) da distribuição de ruído.

insira a descrição da imagem aqui

Na vida real, você geralmente não observa regressioncom palavras aleatórias como Gangnam-Style, ou pimples. A ideia é que se o modelo puder distinguir entre os pares prováveis ​​(positivos) e os pares improváveis ​​(negativos), bons vetores de palavras serão aprendidos.

insira a descrição da imagem aqui

Na figura acima, o par atual de contexto de palavra positivo é ( drilling, engineer). K=5amostras negativas são desenhados de forma aleatória a partir da distribuição de ruído : minimized, primary, concerns, led, page. À medida que o modelo itera nas amostras de treinamento, os pesos são otimizados para que a probabilidade de pares positivos seja gerada p(D=1|w,c_pos)≈1e a probabilidade de pares negativos p(D=1|w,c_neg)≈0.

Eric Kim
fonte
1
T é para o número de tokens (ocorrências de palavras em um texto). Eu diria que V para vocabulário (palavras únicas).
Adam,
Se definirmos Kcomo V -1, a amostragem negativa será igual ao modelo vanilla skip-gram. Meu entendimento está correto?
Shashwat
@Shashwat o número de vetores de palavras atualizados para cada amostra de treinamento é o mesmo, mas a função objetivo de treinamento ainda será fundamentalmente diferente
Eric Kim