Plongement de mots :Modèle basé sur les réseaux de neurones
1. 0.1 Plongement de mots :Modèle basé sur les réseaux de neu-
rones (architecture générale)
Figure 1 – Architectures de CBOW et Skip-gram
Efficient Estimation of Word Representations in Vector Space, Tomas Mikolov et al. [1]
Une architecture de réseaux de neurones permettant d’apprendre la représentation des mots, en tenant
compte du contexte ou du voisinage dans le quel le mot se trouve est celle développée par Mikolov et al.
et présentée dans leur article Efficient estimation of word representations in vector space [1].
Elle fonctionne comme suit :
1. Architeture
Figure 2 – Architecture simplifiée d’un modèle neuronal (CBOW)
1
2. L’entrée de ce réseau est la représentation one hot encoding d’un mot du vocabulaire pris dans sa
position dans le corpus.
Soit w1, w2, ..., wT les mots d’entraînement.
soit V un vocabulaire de taille |V |, wi ∈ V :
Si
0
.
.
.
0
1
0
.
.
.
0
est la représentation one-hot-encoding du mot wk c’estàdire que nous avons un 1 à la k-ième po-
sition et 0 partout ailleurs et de dimension (V, 1).
N le notre de neurones de la couche cachée
Le poids entre la couche d’entrée et la couche cachée peut être représenter par un matrice W de
(V, N)
W =
| | . . . |
| | . . . |
| | . . . |
w1 w2 . . . wN
| | . . . |
| | . . . |
| | . . . |
Chaque colonne de W est de dimension V et représente un vecteur d’un mot wi de la séquence.
Le vecteur h de la couche cachée est :
h = W T
wk = W T
(k,.) = vT
W I cette opération revient en la copie de la k-ieme colonne de W dans
la couche h et vW I est le vecteur représentant.
vw est la représentation du mot w pris parmi les lignes de la matrice de poids input-hidden W ,
qui est la matrice entre la couche d’entrée et la couche cachée.
2
3. Figure 3 – SKIP-GRAM Input-Hidden
De la couche cachée à la couche de sortie, il y’a une autre matrice de poids
W
de dimension (N, V ). En utilisant cette matrice, nous pouvons calculer le score uj pour chaque
mot du vocabulaire.
uj = v T
wj ∗ h
W =
− − − w1 − − −
− − − w2 − − −
. . . . . . .
. . . . . . .
. . . . . . .
− − − wN − − −
W’ = {wij}
vwj =
w1j
w2j
.
.
.
wNj
uj = v T
wjh : est la j-ième colonne de W correspondant au mot wj.
vwj est de dimension (N,1) et v T
wj est de dimension (1,N).
vwj est le vecteur de sorti de wj.
vw est la représentation du mot w pris parmi les colonnes de la matrice de poids hidden-output
W
2. Mise à jour des poids de la matrice hidden-output W
L’objectif étant de maximiser la probabilité d’un mot connaissant le mot passé en entrée du réseau,
on a :
3
4. p(wj|wI) = yj =
exp(uj )
V
j =1
exp(uj )
p(wj|wI) = yj =
exp(v T
wj h)
V
j =1
exp(v T
wj
h)
p(wj|wI) = yj =
exp(v T
wj vW I )
V
j =1
exp(v T
wj
vW I )
c’est-à-dire
maxp(wO|wI) = maxyj∗
E = - maxp(wO|wI) = - uj∗ + log
V
j =1 exp(uj )
Effectuons la dérivée de cette fonction de coût :
∂E
∂uj
= −tj + 1
V
j =1
exp(uj)
∂E
∂uj
= −tj +
exp(uj )
V
j =1
∂E
∂uj
= −tj + yj
avec tj = 1 si c’est le j-ième mot et 0 partout ailleurs.
Pour effectuer les mises à jours des poids de la matrice entre la couché cachée et la couche de
sortie (hidden-output W’), nous allons continuer avec la dérivée de E en fonction des poids de
cette matrice :
∂E
∂wij
= ∂E
∂uj
.
∂uj
∂wij
∂uj
∂wij
= hi si i = j et 0 sinon.
−→ w
(new)
ij = w
(old)
ij - ηejhi
ou
−→ v
(new)
wj = v
(old)
ij - ηejh, j = 1, 2, ..., V
η > 0 est le pas d’apprentissage,
ej = yj − tj et hi est la i-ème entrée de la couche cachée.
−→ v
(new)
wj = v
(old)
ij - η(yj − tj)h, j = 1, 2, ..., V avec h = vT
W I
−→ v
(new)
wj = v
(old)
ij - η(yj − tj)vT
W I, j = 1, 2, ..., V
Notons que cette mise à jour implique que l’on a fait le tour de tous les mots du vocabulaire,
comparer la probabilité yj et la valeur de sortie tj (soit 0, soit 1).
— si yj > tj −→ réduction de vwj j = 1, 2, ..., V
— si yj < tj −→ augmentation de vwj, j = 1, 2, ..., V
— si yj ≈ tj −→ légère modification de vwj, j = 1, 2, ..., V
3. Mise à jour des poids de la matrice input-hidden W Ayant obtenu l’équation de la mise à jour
de W , nous pouvons passer à celui de W .
∂E
∂hi
=
V
j=1
∂E
∂uj
.
∂uj
∂hi
; ∂E
∂uj
= ej ; uj = vwjh
uj =
N
i=1 .hi −→
∂uj
∂hi
= wij
∂E
∂hi
=
V
j=1 ej.wij :=E.Hi
hi : est le du i-ième indice du neurone de la couche cachée h.
ej = yj - tj : est l’erreur prédite du j-ième mot de la couche de sortie.
EH est un vecteur de dimension N et est la somme du vecteur de sortie de tous les mots du
vocabulaire, multipliés par leur erreurs de prédiction.
∂E
∂wki
= ∂E
∂hi
.∂hi
wki
sachant que hi =
V
k=1 xk.wki
∂E
∂wki
= EHi.xk
∂E
∂wki
= EHi.xk : ceci est équivalent au produit(tenseur) x et EH
∂E
∂W = x ⊕ EH = xEHT
qui retourne une matrice de taille (V, N). comme x à une seule valeur non nulle alors seule un line
de ∂E
∂W est non nulle et sa valeur est EHT
, une vecteur de dimension N. On obtient la mise à jour
de W par :
v
(new
W I = v
(old)
W I − ηEHT
4
5. Avec vW I une ligne de W le seul vecteur d’entrée du contexte de dérivée non nul.
Modèle Skim-gram
C’est l’une des architectures de la catégories Word2Vec, qui crée un modèle de langage d’espace
vectoriel en apprenant la représentation vectoriel du contexte d’un mot, étant donné ce mot. Cette
architecture est contraire à celle du CBOW qui elle, apprend la représentation vectorielle des mots ç
partir de leurs contextes.
Le vecteur d’entrée est similaire au modèle précèdent, vW I représente un mot du vocabulaire. Ainsi la
définition de la couche cachée ne change pas :
h = WT
wk = WT
(k,.) = vT
W I
Comme l’architecture précèdente, W est la matrice de poids entre la couche d’entrée et la couche cachée.
Ce qui signifie que h copie une ligne de la matrice W encore appelée matrice input-hidden, associée
au mot d’entrée wI.
Figure 4 – SKIP-GRAM : word2vec Parameter Learning Explained Xin Rong [2]
A la couche de sortie, au lieu de retourner une seule distribution multinomiale, comme nous avons vus
dans l’architecture précèdente, le réseau retourne C distributions multinomiales, chacune calculée avec
la même matrice hidden-output W .
Cette matrice de sortie est W = wi,j
Si nous écrivons W en terme de vecteurs ligne :
W =
− − − vw1 − − −
− − − vw2 − − −
. . . . . . .
. . . . . . .
. . . . . . .
− − − vwN − − −
5
6. Sachant que :
vwj =
w1j
w2j
.
.
.
wNj
et
h =
h1
h2
.
.
.
hN
Les différentes unités de la couche de sortie seront :
u1 =
N
i=1 wi1.hi
u2 =
N
i=1 wi2.hi
...
uV =
N
i=1 wiV .hi
En générale, on peut écrire :
uj = vwj.h
Étant donné que nous avons C contextes et que les contextes utilisent la même matrice de poids, on a :
uc,j = uj = vwj.h, c = 1, 2, ..., C
uc,j est la j-ième entrée du c-ième contexte de la couche de sorte.
vwj est le vecteur de la j-ième colonne de la matrice W , c’est-à-dire que vwj est pris des colonnes de la
matrice de poids hidden-output W
p(wc,j = wO,c|wI) = yc,j =
exp(uc,j )
V
j =1
expt(uj )
, c = 1, 2, ..., C
wc,j est le j-ième mot, du c-ième contexte de la couche de sortie ; wO,c est le mot réel au quel wc,j fait
allusion dans c-ième contexte. wI est le mot d’entrée (un seul mot) ; yc,j est la sortie de la j-ième unité
du c-ième contexte de la couche de sortie.
Pour la mise à jour des paramètre, nous allons procéder de façon similaire au modèle vu plus haut.
E = −logp(wO,1, wO,2, ..., wO,C|wI)
E = −log
C
c=1
exp(uc,j∗c )
V
j =1
exp(uj )
E = −
C
c=1 uc,j∗c
+
C
c=1 log
V
j =1 exp(uuj )
E = −
C
c=1 uc,j∗c + C.log
V
j =1 exp(uuj )
j∗c est l’indice du mot courant du vocabulaire dans le contexte à la sortie.
Effectuons la dérivée de E pour chaque entrée uc,j de chaque contexte, on obtient :
∂E
∂uc,j
= yc,j − tc,j := ec,j
qui est l’erreur prédite de cette unité.
Pour un chaque entrée d’un contexte, on a :
∂E
∂u1,1
, ∂E
∂u1,2
, ..., ∂E
∂u1,V
∂E
∂u2,1
, ∂E
∂u2,2
, ..., ∂E
∂u2,V
...
∂E
∂uC,1
, ∂E
∂uC,2
, ..., ∂E
∂uC,V
En lisant colonne par colonne, on peut écrire pour chaque j colonne :
{ ∂E
∂uc,j
}C
c=1,avec j = 1, 2, ..., V
alors appelons EIj =
C
c=1
∂E
∂uc,j
=
C
c=1 ec,j
6
7. Maintenant nous effectuons la dérivée de E en fonction de la matrice hidden-output W
∂E
∂wij
=
C
c=1
∂E
∂uc,j
.
∂uc,j
∂wij
∂E
∂wij
= ∂E
∂u1,j
.hj+ ∂E
∂u2,j
.hj+...+ ∂E
∂uC,j
.hj
∂E
∂wij
=
C
c=1
∂E
∂uc,j
.hj
∂E
∂wij
=EIj.hi
De la, nous avons la mise à jour des poids de la matrice hidden-output W
w
(new)
i,j = w
(old)
i,j - η.EHj.hj
ou v
(new)
wj = v
(old)
wj - η.EHj.hj, pour j = 1, 2, ..., V
Cette équation de mise à jour est appliquée à tous les éléments de la matrice hidden-output W , pour
instance d’apprentissage.
Bien que, les techniques de plongement basées sur les réseaux de neurones ont un défaut computationnel,
l’architecture du Skip-gram a l’avantage d’être plus rapide, car l’entraînement du modèle ne fait pas
usage de la multiplication des matrices denses. Cette atout permet d’entraîner une modèle de plus 100
milliard de mots sur une simple machine en un jour.
7
8. BIBLIOGRAPHIE
[1] Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient estimation of word representa-
tions in vector space. arXiv preprint arXiv :1301.3781, 2013.
[2] Xin Rong. word2vec parameter learning explained. arXiv preprint arXiv :1411.2738, 2014.
8