Comment la couche d'intégration est formée dans la couche d'intégration Keras

14

Comment la couche d'intégration est-elle formée dans la couche d'intégration Keras? (par exemple, utiliser le backend tensorflow, ce qui signifie qu'il est similaire à word2vec, glove ou fasttext)

Supposons que nous n'utilisions pas une intégration préentraînée.

william007
la source
colah.github.io/posts/2014-07-NLP-RNNs-Representations -> ce billet de blog explique clairement comment la couche d'intégration est entraînée dans la couche d'intégration Keras . J'espère que cela t'aides.
Akshay U Prabhu du

Réponses:

24

Les couches d'intégration dans Keras sont entraînées comme n'importe quelle autre couche dans votre architecture réseau: elles sont réglées pour minimiser la fonction de perte en utilisant la méthode d'optimisation sélectionnée. La principale différence avec les autres couches est que leur sortie n'est pas une fonction mathématique de l'entrée. Au lieu de cela, l'entrée de la couche est utilisée pour indexer une table avec les vecteurs d'intégration [1]. Cependant, le moteur de différenciation automatique sous-jacent n'a aucun problème pour optimiser ces vecteurs afin de minimiser la fonction de perte ...

Donc, vous ne pouvez pas dire que la couche Embedding dans Keras fait la même chose que word2vec [2]. N'oubliez pas que word2vec fait référence à une configuration réseau très spécifique qui essaie d'apprendre une intégration qui capture la sémantique des mots. Avec la couche d'intégration de Keras, vous essayez simplement de minimiser la fonction de perte, donc si, par exemple, vous travaillez avec un problème de classification des sentiments, l'intégration apprise ne capturera probablement pas la sémantique complète des mots mais seulement leur polarité émotionnelle ...

Par exemple, l'image suivante tirée de [3] montre l'incorporation de trois phrases avec une couche Keras Embedding entraînée à partir de zéro dans le cadre d'un réseau supervisé conçu pour détecter les titres de clickbait (à gauche) et les incorporations word2vec pré-entraînées (à droite). Comme vous pouvez le voir, les incorporations de word2vec reflètent la similitude sémantique entre les phrases b) et c). Inversement, les incorporations générées par la couche d'intégration de Keras peuvent être utiles pour la classification, mais ne capturent pas la similitude sémantique de b) et c).

entrez la description de l'image ici

Cela explique pourquoi lorsque vous disposez d'un nombre limité d'échantillons de formation, il peut être judicieux d'initialiser votre couche d'intégration avec des poids word2vec , donc au moins votre modèle reconnaît que "Alpes" et "Himalaya" sont des choses similaires, même si elles ne ne se produisent pas dans les phrases de votre jeu de données d'entraînement.

[1] Comment fonctionne la couche Keras 'Embedding'?

[2] https://www.tensorflow.org/tutorials/word2vec

[3] https://link.springer.com/article/10.1007/s10489-017-1109-7

REMARQUE: En fait, l'image montre les activations du calque après le calque Embedding, mais pour cet exemple, cela n'a pas d'importance ... Voir plus de détails dans [3]

Daniel López
la source
2
C'est exactement l'explication que je cherchais! Je pense que cette phrase devrait être en gras: "Rappelez-vous que word2vec fait référence à une configuration réseau très spécifique qui essaie d'apprendre une intégration qui capture la sémantique des mots."
Kevin
0

La couche d'intégration n'est qu'une projection d'un vecteur chaud discret et clairsemé dans un espace latent continu et dense. Il s'agit d'une matrice de (n, m) où n est la taille de votre vocabulaire et n les dimensions de l'espace latent souhaitées. Seulement dans la pratique, il n'y a pas besoin de faire réellement la multiplication de la matrice, et à la place vous pouvez économiser sur le calcul en utilisant l'index. Donc en pratique, c'est une couche qui mappe des entiers positifs (indices correspondant aux mots) en vecteurs denses de taille fixe (les vecteurs d'intégration).

Vous pouvez l'entraîner à créer une intégration Word2Vec en utilisant Skip-Gram ou CBOW. Ou vous pouvez l'entraîner sur votre problème spécifique pour obtenir une intégration adaptée à votre tâche spécifique. Vous pouvez également charger des intégrations pré-formées (comme Word2Vec, GloVe, etc.), puis poursuivre la formation sur votre problème spécifique (une forme d'apprentissage par transfert).

David Refaeli
la source