Estou lendo o artigo abaixo e tenho alguns problemas em entender o conceito de amostragem negativa.
http://arxiv.org/pdf/1402.3722v1.pdf
Alguém pode ajudar por favor?
Estou lendo o artigo abaixo e tenho alguns problemas em entender o conceito de amostragem negativa.
http://arxiv.org/pdf/1402.3722v1.pdf
Alguém pode ajudar por favor?
Respostas:
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 c1
e 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 c1
ao acaso. O resultado final é que, se cat
aparecer 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 word2vec
muito mais rápido treinar.
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.
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.
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:
Qual logaritmo pode se decompor em:
Com alguma fórmula matemática e gradiente (veja mais detalhes em 6 ), ele foi convertido para:
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.
Referência :
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:
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 V
vocabs no corpus com:
V
pode facilmente exceder dezenas de milhares ao treinar o modelo Skip-Gram. A probabilidade precisa ser computada V
vezes, o que a torna computacionalmente cara. Além disso, o fator de normalização no denominador requer V
cálculos extras .
Por outro lado, a distribuição de probabilidade em SGNS é calculada com:
c_pos
é um vetor de palavras para palavras positivas e W_neg
vetores de palavras para todas as K
amostras negativas na matriz de ponderação de saída. Com SGNS, a probabilidade precisa ser calculada apenas algumas K + 1
vezes, onde K
normalmente 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.
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.
Na vida real, você geralmente não observa regression
com 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.
Na figura acima, o par atual de contexto de palavra positivo é ( drilling
, engineer
). K=5
amostras 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)≈1
e a probabilidade de pares negativos p(D=1|w,c_neg)≈0
.
K
como V -1
, a amostragem negativa será igual ao modelo vanilla skip-gram. Meu entendimento está correto?