Accéder à la page principale du cours

CBOW : Continuous Bag-of-Words

Adrien Guille, Université Lyon 2

Présenté comme une alternative à l'approche Skip-Gram, le modèle Continuous Bag-of-Words (CBOW) vise à prendre en compte explicitement le contexte dans lequel apparaît un mot. Il a été publié sur ArXiv en 2013 par Mikolov et al. (consulter l'article).

Notations

Modèle

On modélise la probabilité conditionnelle d'observer le mot , sachant le contexte, , dans lequel il apparaît. Cette probabilité est paramétrée par les représentations vectorielles des mots :

Avec , le vecteur réel qui représente le contexte , définit comme la moyenne des vecteurs des mots dans le contexte :

On reconnaît la fonction softmax, qui calcule l'exponentielle du produit scalaire de la représentation cible du mot par le barycentre des représentations contextes des mots qui l'entourent, normalisée sur l'ensemble du vocabulaire.

Estimation des paramètres

Dans le but de déterminer les paramètres, c'est-à-dire les matrices et , les représentations des mots, on met en œuvre la démarche suivante :

  1. À partir du corpus , on construit un jeu de données, qui consiste en un multi-ensemble de paires (mot, contexte) ;
  2. On définit un problème d'optimisation, sous l'hypothèse , basé sur ce jeu de données ;
  3. On calcule les représentations des mots en résolvant ce problème par la méthode du gradient stochastique.

1. Construction du jeu de données

Le jeu de données consiste en un multi-ensemble de paires (mots, contexte) : . Pour construire ce multi-ensemble, on fait glisser une fenêtre sur le corpus . La fenêtre est une séquence de tokens, en 3 parties :

Chaque fenêtre donne une paire , étant le mot cible, au centre de la fenêtre.

2. Définition du problème

On définit un problème de maximisation de la vraisemblance du jeu de données sous l'hypothèse :

Le logarithme étant une fonction strictement monotone croissante, maximiser la fonction de vraisemblance est équivalent à maximiser le log de cette fonction :

3. Calcul des vecteurs selon la méthode du gradient stochastique

La fonction à maximiser étant définie par une somme, on applique la méthode du gradient stochastique. Le principe est le suivant :

  1. On initialise aléatoirement les matrices et .
  2. On parcourt la somme sur , et pour chaque terme, on modifie le vecteur cible et les vecteurs contextes dans la direction du gradient de cet élément, respectivement, en et en , pour chaque mot .

Gradients

Soit un terme de la somme qui définit la log-vraisemblance :

Le gradient de en est le vecteur :

Le gradient de selon la représentation de l'un des mots du contexte, , est le vecteur :

Avec . Comme le produit scalaire est distributif, on peut sortir la représentation du mot de la somme et écrire .

Pour que l'expression ne soit pas ambigüe, on indice la somme au dénominateur par plutôt que :

On remarque que le gradient en est la différence entre le vecteur observé et la vecteur attendu selon le modèle, la somme étant un terme d'espérance :

Algorithme

En pratique, on réalise plusieurs itérations, c'est-à-dire qu'on parcourt plusieurs fois la somme. Le plus simple est de fixer un nombre d'itérations, . On limite également la magnitude de la modification à l'aide d'un pas d'apprentissage. Là encore, le plus simple est de fixer une valeur, . L'algorithme est le suivant :

  1. Construire le jeu de données

  2. Initialiser aléatoirement et

  3. Répéter fois

    1. Mélanger aléatoirement

    2. Pour chaque paire , mettre à jour les vecteurs selon les formule :

      • Pour chaque :

Cet algorithme a une complexité élevée, car requiert le calcul de (le nombre de mots dans le vocabulaire) softmax, dont le temps de calcul est linéaire en . Afin d'améliorer la complexité, une solution est de ne pas calculer exactement le softmax, mais de l'estimer, par exemple par la méthode du softmax hiérarchique (qui consiste à décomposer le calcul du softmax à l'aide d'un arbre), dont le temps de calcul est logarithmique en .