Eu me pergunto por que o skip-gram é melhor para palavras pouco frequentes do que o CBOW no word2vec. Li a reivindicação em https://code.google.com/p/word2vec/ .
Eu me pergunto por que o skip-gram é melhor para palavras pouco frequentes do que o CBOW no word2vec. Li a reivindicação em https://code.google.com/p/word2vec/ .
Respostas:
No CBOW, os vetores das palavras de contexto são calculados em média antes de prever a palavra central. No skip-gram, não há média de vetores de incorporação. Parece que o modelo pode aprender melhores representações para as palavras raras quando seus vetores não são calculados com a média das outras palavras de contexto no processo de fazer as previsões.
Aqui está o meu entendimento simplista e ingênuo da diferença:
Como sabemos, o CBOW está aprendendo a prever a palavra pelo contexto. Ou maximize a probabilidade da palavra-alvo observando o contexto. E isso é um problema para palavras raras. Por exemplo, dado o contexto do yesterday was really [...] day
modelo CBOW, você poderá dizer que provavelmente a palavra é beautiful
or nice
. Palavras como delightful
receberão muito menos atenção do modelo, pois ele foi projetado para prever a palavra mais provável. Palavras raras serão suavizadas em muitos exemplos com palavras mais frequentes.
Por outro lado, o skip-gram é projetado para prever o contexto. Dada a palavra, delightful
ela deve entendê-la e nos dizer que existe uma enorme probabilidade, o contexto é yesterday was really [...] day
ou algum outro contexto relevante. Com o skip-gram, a palavra delightful
não tentará competir com a palavra, beautiful
mas os delightful+context
pares serão tratados como novas observações. Por esse motivo , o skip-gram precisará de mais dados para aprender a entender palavras raras.
Acabei de me deparar com um artigo que mostra o contrário: que CBOW é melhor para palavras pouco frequentes do que ignorar https://arxiv.org/abs/1609.08293 . Gostaria de saber quais são as fontes da reivindicação declarada em https://code.google.com/p/word2vec/ .