Je lis l'article ci-dessous et j'ai du mal à comprendre le concept d'échantillonnage négatif.
http://arxiv.org/pdf/1402.3722v1.pdf
Quelqu'un peut-il aider s'il vous plaît?
Je lis l'article ci-dessous et j'ai du mal à comprendre le concept d'échantillonnage négatif.
http://arxiv.org/pdf/1402.3722v1.pdf
Quelqu'un peut-il aider s'il vous plaît?
Réponses:
L'idée de word2vec
est de maximiser la similitude (produit scalaire) entre les vecteurs des mots qui apparaissent rapprochés (dans le contexte les uns des autres) dans le texte, et de minimiser la similitude des mots qui ne le sont pas. Dans l'équation (3) de l'article auquel vous vous connectez, ignorez l'exponentiation pendant un moment. Tu as
v_c * v_w
-------------------
sum(v_c1 * v_w)
Le numérateur est essentiellement la similitude entre les mots c
(le contexte) et w
le mot (cible). Le dénominateur calcule la similitude de tous les autres contextes c1
et du mot cible w
. En maximisant ce rapport, les mots qui apparaissent plus rapprochés dans le texte ont plus de vecteurs similaires que les mots qui n'en ont pas. Cependant, le calcul peut être très lent, car il existe de nombreux contextes c1
. L'échantillonnage négatif est l'un des moyens de résoudre ce problème - il suffit de sélectionner quelques contextes c1
au hasard. Le résultat final est que si cat
apparaît dans le contexte de food
, alors le vecteur de food
est plus similaire au vecteur de cat
(en tant que mesures par leur produit scalaire) qu'aux vecteurs de plusieurs autres mots choisis au hasard(par exemple democracy
, greed
, Freddy
), au lieu de tous les autres mots de la langue . Cela rend word2vec
beaucoup plus rapide à former.
word2vec
, pour un mot donné, vous avez une liste de mots qui doivent lui être similaires (la classe positive) mais la classe négative (les mots qui ne sont pas similaires au mot targer) est compilée par échantillonnage.
Le calcul de Softmax (fonction pour déterminer quels mots sont similaires au mot cible courant) est coûteux car il faut faire la somme de tous les mots en V (dénominateur), qui est généralement très grand.
Ce qui peut être fait?
Différentes stratégies ont été proposées pour approcher le softmax. Ces approches peuvent être regroupées en fonction Softmax- et par échantillonnage des approches. Les approches basées sur Softmax sont des méthodes qui conservent la couche softmax intacte, mais modifient son architecture pour améliorer son efficacité (par exemple, softmax hiérarchique). Les approches basées sur l' échantillonnage, en revanche, suppriment complètement la couche softmax et optimisent à la place une autre fonction de perte qui se rapproche du softmax (elles le font en rapprochant la normalisation du dénominateur du softmax avec une autre perte peu coûteuse à calculer comme échantillonnage négatif).
La fonction de perte dans Word2vec est quelque chose comme:
Quel logarithme peut se décomposer en:
Avec une formule mathématique et de gradient (voir plus de détails à 6 ), il s'est converti en:
Comme vous le voyez, converti en tâche de classification binaire (y = 1 classe positive, y = 0 classe négative). Comme nous avons besoin d'étiquettes pour effectuer notre tâche de classification binaire, nous désignons tous les mots de contexte c comme de vraies étiquettes (y = 1, échantillon positif), et k choisis au hasard parmi les corpus comme de fausses étiquettes (y = 0, échantillon négatif).
Regardez le paragraphe suivant. Supposons que notre mot cible soit " Word2vec ". Avec fenêtre de 3, nos mots de contexte sont: The
, widely
, popular
, algorithm
, was
, developed
. Ces mots de contexte sont considérés comme des étiquettes positives. Nous avons également besoin d'étiquettes négatives. Nous choisissons au hasard quelques mots du corpus ( produce
, software
, Collobert
, margin-based
, probabilistic
) et les considérons comme des échantillons négatifs. Cette technique que nous avons choisie au hasard dans un corpus est appelée échantillonnage négatif.
Référence :
J'ai écrit un article de tutoriel sur l'échantillonnage négatif ici .
Pourquoi utilisons-nous un échantillonnage négatif? -> pour réduire les coûts de calcul
La fonction de coût pour l'échantillonnage négatif de Skip-Gram (SG) et Skip-Gram négatif (SGNS) ressemble à ceci:
Notez que T
c'est le nombre de tous les vocabulaires. C'est équivalent à V
. En d'autres termes, T
= V
.
La distribution de probabilité p(w_t+j|w_t)
dans SG est calculée pour tous les V
vocabulaires du corpus avec:
V
peut facilement dépasser des dizaines de milliers lors de la formation du modèle Skip-Gram. La probabilité doit être calculée en V
temps, ce qui la rend coûteuse en calcul. De plus, le facteur de normalisation du dénominateur nécessite des V
calculs supplémentaires .
D'autre part, la distribution de probabilité dans SGNS est calculée avec:
c_pos
est un vecteur de mot pour un mot positif et W_neg
est un vecteur de mot pour tous K
les échantillons négatifs dans la matrice de poids de sortie. Avec SGNS, la probabilité doit être calculée uniquement K + 1
fois, où K
est typiquement entre 5 ~ 20. De plus, aucune itération supplémentaire n'est nécessaire pour calculer le facteur de normalisation dans le dénominateur.
Avec SGNS, seule une fraction des pondérations est mise à jour pour chaque échantillon de formation, tandis que SG met à jour tous les millions de pondérations pour chaque échantillon de formation.
Comment SGNS y parvient-il? -> en transformant la tâche multi-classification en tâche de classification binaire.
Avec SGNS, les vecteurs de mots ne sont plus appris en prédisant les mots de contexte d'un mot central. Il apprend à différencier les mots contextuels réels (positifs) des mots tirés au hasard (négatifs) de la distribution du bruit.
Dans la vraie vie, vous n'observez généralement pas regression
avec des mots aléatoires comme Gangnam-Style
, ou pimples
. L'idée est que si le modèle peut distinguer les paires probables (positives) des paires improbables (négatives), de bons vecteurs de mots seront appris.
Dans la figure ci-dessus, la paire mot-contexte positive actuelle est ( drilling
, engineer
). K=5
échantillons négatifs sont tirés au hasard de la distribution du bruit : minimized
, primary
, concerns
, led
, page
. Au fur et à mesure que le modèle parcourt les échantillons d'apprentissage, les poids sont optimisés de sorte que la probabilité d'une paire positive s'affiche p(D=1|w,c_pos)≈1
et la probabilité de paires négatives s'affiche p(D=1|w,c_neg)≈0
.
K
comme V -1
, alors l'échantillonnage négatif est le même que le modèle de skip-gramme vanille. Ma compréhension est-elle correcte?