J'essaie actuellement de comprendre l'architecture derrière l'algorithme d'apprentissage du réseau neuronal Word2vec, pour représenter les mots comme des vecteurs en fonction de leur contexte.
Après avoir lu article de Tomas Mikolov je suis tombé sur ce qu'il définit comme une couche de projection . Même si ce terme est largement utilisé lorsqu'il est fait référence à Word2vec, je n'ai pas pu trouver une définition précise de ce qu'il est réellement dans le contexte du réseau neuronal.
Ma question est, dans le contexte du réseau neuronal, qu'est-ce qu'une couche de projection? Est-ce le nom donné à une couche cachée dont les liens vers les nœuds précédents partagent les mêmes poids? Ses unités ont-elles une fonction d'activation quelconque?
Une autre ressource qui se réfère également plus largement au problème peut être trouvée dans ce tutoriel , qui se réfère également à une couche de projection autour de la page 67.
La couche de projection mappe les indices Word discrets d'un contexte de n grammes à un espace vectoriel continu.
Comme expliqué dans cette thèse
La couche de projection est partagée de telle sorte que pour les contextes contenant plusieurs fois le même mot, le même ensemble de pondérations est appliqué pour former chaque partie du vecteur de projection. Cette organisation augmente efficacement la quantité de données disponibles pour l'apprentissage des poids de la couche de projection, car chaque mot de chaque modèle d'apprentissage contextuel contribue individuellement à modifier les valeurs de poids.
cette figure montre la topologie triviale comment la sortie de la couche de projection peut être efficacement assemblée en copiant les colonnes de la matrice de pondération de la couche de projection.
Maintenant, la couche cachée:
La couche cachée traite la sortie de la couche de projection et est également créée avec un certain nombre de neurones spécifiés dans le fichier de configuration de la topologie.
Edit : Une explication de ce qui se passe dans le diagramme
Chaque neurone de la couche de projection est représenté par un nombre de poids égal à la taille du vocabulaire. La couche de projection diffère des couches cachées et de sortie en n'utilisant pas de fonction d'activation non linéaire. Son but est simplement de fournir un moyen efficace de projeter le contexte de gramme donné sur un espace vectoriel continu réduit pour un traitement ultérieur par des couches cachées et de sortie entraînées à classer ces vecteurs. Étant donné la nature un ou zéro des éléments vectoriels d'entrée, la sortie pour un mot particulier avec l'indice i est simplement la ième colonne de la matrice formée des poids de la couche de projection (où chaque ligne de la matrice représente les poids d'un seul neurone ).
Le continuous bag of words
est utilisé pour prédire un seul mot compte tenu de ses entrées antérieures et futures: il s'agit donc d'un résultat contextuel.
Les entrées sont les poids calculés à partir des entrées précédentes et futures: et tous reçoivent de nouveaux poids à l'identique: ainsi le nombre de complexité/caractéristiques de ce modèle est beaucoup plus petit que beaucoup d'autres architectures NN.
RE: what is the projection layer
: d'après l'article que vous avez cité
la couche cachée non linéaire est supprimée et la couche de projection est partagée pour tous les mots (pas seulement la matrice de projection); ainsi, tous les mots sont projetés dans la même position (leurs vecteurs sont moyennés).
La couche de projection est donc un ensemble unique de shared weights
et aucune fonction d'activation n'est indiquée.
Notez que la matrice de pondération entre l'entrée et la couche de projection est partagée pour toutes les positions de Word de la même manière que dans le NNLM
Alors le hidden layer
est en fait représenté par cet ensemble unique de poids partagés - comme vous l'avez correctement laissé entendre qui est identique sur tous les nœuds d'entrée.