Dans this page, il est dit que:
[...] skip-gram inverse les contextes et les cibles et tente de prédire chaque mot de contexte à partir de sa cible [...]
Toutefois, si l’on considère l’ensemble de données d’entraînement qu’il produit, le contenu des paires X et Y semble être interchangeable, comme ces deux paires de (X, Y):
(quick, brown), (brown, quick)
Alors, pourquoi faire la distinction entre le contexte et les objectifs s’il s’agit au bout du compte de la même chose?
De plus, faisant l'exercice de formation en profondeur d'Udacity sur Word2vec , je me demande pourquoi ils semblent faire la différence entre ces deux approches autant dans ce problème:
Une alternative à skip-gram est un autre modèle Word2Vec appelé CBOW (Continuous Bag of Words). Dans le modèle CBOW, au lieu de prévoir un mot contextuel à partir d'un vecteur Word, vous prédisez un mot à partir de la somme de tous les vecteurs Word dans son contexte. Implémenter et évaluer un modèle CBOW formé sur l'ensemble de données text8.
Cela ne donnerait-il pas les mêmes résultats?
Voici ma compréhension trop simpliste et plutôt naïve de la différence:
Comme nous le savons, CBOW apprend à prédire la Parole en fonction du contexte. Ou maximisez la probabilité du mot cible en regardant le contexte. Et cela arrive à être un problème pour les mots rares. Par exemple, étant donné le contexte yesterday was a really [...] day
, le modèle CBOW vous dira que, très probablement, le mot est beautiful
ou Nice
. Des mots comme delightful
recevront beaucoup moins d’attention du modèle, car il est conçu pour prédire le mot le plus probable. Cette Parole sera lissée sur beaucoup d'exemples avec des mots plus fréquents.
D'autre part, le modèle skip-gram est conçu pour prédire le contexte. Étant donné le mot delightful
, il doit le comprendre et nous dire qu'il existe une probabilité énorme que le contexte soit yesterday was really [...] day
ou un autre contexte pertinent. Avec skip-gram, Word delightful
n'essaiera pas de rivaliser avec Word beautiful
, mais les paires delightful+context
seront traitées comme de nouvelles observations.
METTRE À JOUR
Merci à @ 0xF pour le partage cet article
Selon Mikolov
Skip-gram: fonctionne bien avec une petite quantité de données d’entraînement, représente bien même des mots ou des phrases rares.
CBOW: plusieurs fois plus rapide à entraîner que le saut de gramme, précision légèrement meilleure pour les mots fréquents
Un ajout supplémentaire au sujet est trouvé ici :
Dans le mode "skip-gram", l'alternative à "CBOW", plutôt que la moyenne les mots de contexte, chacun est utilisé comme exemple d'apprentissage par paires. Cette est, à la place d'un exemple CBOW tel que [prévoir 'mangé' à partir de moyenne ('Le', 'chat', 'le', 'souris')], le réseau est présenté avec quatre exemples de sauts-grammes [prédire 'mangé' dans 'Le'], [prédire 'mangé' de 'chat'] [prédire 'mangé' depuis 'le'], [prédire 'mangé' depuis 'souris'] . (La même réduction de fenêtre aléatoire se produit, donc la moitié du temps que Ne serait que deux exemples, des mots les plus proches.)
Cela a à voir avec ce que vous calculez exactement à un moment donné. La différence deviendra plus claire si vous commencez à regarder des modèles qui incorporent un contexte plus large pour chaque calcul de probabilité.
Dans skip-gram, vous calculez le (s) mot (s) de contexte à partir du mot à la position actuelle dans la phrase; vous "sautez" le mot actuel (et potentiellement un peu du contexte) dans votre calcul. Le résultat peut être plus d'un mot (mais pas si votre fenêtre de contexte ne contient qu'un seul mot).
Dans CBOW, vous calculez le mot actuel à partir du (des) mot (s) du contexte, vous n'aurez ainsi qu'un seul mot.