2

J'étudie l'intégration pour les représentations de mots. Dans de nombreuses bibliothèques dnn, ils prennent en charge la couche d'intégration. Et c'est vraiment un joli tutoriel.Quelle est la valeur initiale de Embedding layer?

Word Embeddings: Encoding Lexical Semantics

Mais comment calculer la valeur embed Je ne sais pas encore. Dans l'exemple ci-dessous, il produit de la valeur même avant toute formation. Utilise-t-il des poids aléatoires? Je réalise un but de Embedding(2, 5), mais je ne suis pas sûr de son calcul initial. Et je ne suis pas sûr de la façon d'apprendre les poids de son intégration aussi.

word_to_ix = {"hello": 0, "world": 1} 
embeds = nn.Embedding(2, 5) # 2 words in vocab, 5 dimensional embeddings 
lookup_tensor = torch.LongTensor([word_to_ix["hello"]]) 
hello_embed = embeds(autograd.Variable(lookup_tensor)) 
print(hello_embed) 
-------- 
Variable containing: 
-2.9718 1.7070 -0.4305 -2.2820 0.5237 
[torch.FloatTensor of size 1x5] 

Je décompose ma pensée pour être sûr. Tout d'abord, supérieur Embedding(2, 5) est une matrice de forme (2, 5).

Embedding(2, 5) = 
[[0.1,-0.2,0.3,0.4,0.1], 
[-0.2,0.1,0.8,0.2,0.3]] # initiated by some function, like random normal distribution 

Ensuite, hello est [1, 0]. La représentation hello est ensuite calculée par [1, 0].dot(Embedding(2, 5)) = [0.1,-0.2,0.3,0.4,0.1]. C'est en fait la première rangée de l'incorporation. Est-ce que je comprends bien?


Mises à jour

Je trouve un code d'intégration qui est exactement utilise la distribution normale pour sa valeur. Oui, mais ce n'est qu'une valeur par défaut, et nous pouvons définir des poids arbitraires pour l'intégration de couches. https://github.com/chainer/chainer/blob/adba7b846d018b9dc7d19d52147ef53f5e555dc8/chainer/links/connection/embed_id.py#L58

Répondre

1

Oui. Vous commencez avec des poids aléatoires. Je pense qu'il est plus commun d'utiliser une distribution normale tronquée au lieu de la distribution normale normale. Mais, cela ne fait probablement pas beaucoup de différence.

+0

La distribution uniforme est également commun. – Mehdi

2

Initializations définir la manière de définir le random weights initial de couches. Vous pouvez utiliser n'importe quelle valeur pour le faire. Mais les valeurs initiales affectent Word Embedding. Il y a beaucoup d'approche pour Pre-trained Word Embedding qu'ils essayent de choisir de meilleures valeurs initiales comme this.

+0

Merci pour votre information intéressante – jef