Word2vec en images



« Tout recèle un motif qui fait partie de l'univers. Il a la symétrie, l'élégance et la beauté - des qualités qui sont d'abord saisies par tout véritable artiste qui capture le monde. Ce motif peut être pris dans le changement de saison, dans la façon dont le sable s'écoule le long de la pente, dans les branches emmêlées d'un arbuste créosote, dans le motif de sa feuille.

Nous essayons de copier ce modèle dans notre vie et notre société et donc nous aimons le rythme, le chant, la danse, diverses formes qui nous rendent heureux et nous réconfortent. Cependant, on peut également discerner le danger qui se cache dans la recherche de la perfection absolue, car il est évident que le modèle parfait est inchangé. Et à l'approche de la perfection, tout va à la mort »- Dune (1965)

Je pense que le concept d'intégration est l'une des idées les plus remarquables de l'apprentissage automatique. Si vous avez déjà utilisé Siri, Google Assistant, Alexa, Google Translate ou même un clavier de smartphone avec la prédiction du mot suivant, vous avez déjà travaillé avec le modèle de traitement du langage naturel basé sur les pièces jointes. Au cours des dernières décennies, ce concept a subi un développement important pour les modèles neuronaux (les développements récents incluent des intégrations de mots contextualisées dans des modèles avancés tels que BERT et GPT2).

Word2vec est une méthode de création d'investissement efficace développée en 2013. En plus de travailler avec des mots, certains de ses concepts ont été efficaces pour développer des mécanismes de recommandation et donner du sens aux données même dans des tâches commerciales non linguistiques. Cette technologie a été utilisée par des sociétés comme Airbnb , Alibaba , Spotify et Anghami dans leurs moteurs de recommandation.

Dans cet article, nous examinerons le concept et la mécanique de génération de pièces jointes à l'aide de word2vec. Commençons par un exemple pour vous familiariser avec la façon de représenter des objets sous forme vectorielle. Savez-vous combien une liste de cinq nombres (vectoriels) peut dire de votre personnalité?

Personnalisation: qu'êtes-vous?


«Je vous donne le caméléon du désert; sa capacité à fusionner avec le sable vous dira tout ce que vous devez savoir sur les racines de l'écologie et les raisons de préserver votre personnalité. » - Enfants de la Dune

Sur une échelle de 0 à 100, avez-vous un type de personnalité introverti ou extraverti (où 0 est le type le plus introverti et 100 est le type le plus extraverti)? Avez-vous déjà passé un test de personnalité: par exemple, MBTI, ou mieux encore , les Big Five ? On vous donne une liste de questions puis vous évaluez sur plusieurs axes, dont l'introversion / extroversion.


Exemple des résultats du test Big Five. Il en dit long sur la personnalité et est capable de prédire la réussite scolaire , personnelle et professionnelle . Par exemple, vous pouvez le parcourir ici .

Supposons que j'obtienne un score de 38 sur 100 pour l'évaluation de l'introversion / extraversion. Cela peut être représenté comme suit:



Ou sur une échelle de -1 à +1:



Dans quelle mesure reconnaissons-nous une personne uniquement à partir de cette évaluation? Pas vraiment. Les humains sont des créatures complexes. Par conséquent, nous ajoutons une dimension de plus: une caractéristique de plus du test.


Vous pouvez imaginer ces deux dimensions comme un point sur le graphique, ou, mieux encore, comme un vecteur de l'origine à ce point. Il existe d'excellents outils vectoriels qui seront très utiles très bientôt.

Je ne montre pas quels traits de personnalité nous mettons sur le graphique afin que vous ne vous attachiez pas à des traits spécifiques, mais comprenez immédiatement la représentation vectorielle de la personnalité d'une personne dans son ensemble.

Maintenant, nous pouvons dire que ce vecteur reflète partiellement ma personnalité. Ceci est une description utile lors de la comparaison de différentes personnes. Supposons que j'ai été frappé par un bus rouge et que vous deviez me remplacer par une personne similaire. Laquelle des deux personnes du tableau suivant me ressemble le plus?



Lorsque vous travaillez avec des vecteurs, la similitude est généralement calculée par le coefficient Otiai (coefficient géométrique):


La personne n ° 1 me ressemble davantage. Les vecteurs dans une direction (la longueur est également importante) donnent un coefficient Otiai plus grand

Encore une fois, deux dimensions ne suffisent pas pour évaluer les gens. Des décennies de développement de la science psychologique ont conduit à la création d'un test pour cinq caractéristiques de base de la personnalité (avec de nombreuses autres). Alors, utilisons les cinq dimensions:



Le problème avec les cinq dimensions est qu'il ne sera plus possible de dessiner des flèches soignées en 2D. Il s'agit d'un problème courant dans l'apprentissage automatique, où vous devez souvent travailler dans un espace multidimensionnel. Il est bon que le coefficient géométrique fonctionne avec n'importe quel nombre de mesures:


Le coefficient géométrique fonctionne pour n'importe quel nombre de mesures. En cinq dimensions, le résultat est beaucoup plus précis.

À la fin de ce chapitre, je veux répéter deux idées principales:

  1. Les gens (et d'autres objets) peuvent être représentés comme des vecteurs numériques (ce qui est idéal pour les voitures!).
  2. Nous pouvons facilement calculer la similitude des vecteurs.



Incorporation de mots


"Le don des mots est le don de la tromperie et de l'illusion." - Enfants de la Dune

Avec cette compréhension, nous allons passer aux représentations vectorielles des mots obtenus à la suite de la formation (ils sont aussi appelés attachements) et examiner leurs propriétés intéressantes.

Voici la pièce jointe pour le mot «roi» (vecteur GloVe, formé sur Wikipédia):

[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]

Nous voyons une liste de 50 numéros, mais il est difficile de dire quelque chose. Visualisons-les pour comparer avec d'autres vecteurs. Mettez les chiffres sur une ligne:



Coloriez les cellules par leurs valeurs (rouge pour près de 2, blanc pour près de 0, bleu pour près de -2):



Maintenant, oubliez les chiffres, et seulement par les couleurs, nous contrastons le «roi» avec d'autres mots:



Vous voyez que «l'homme» et la «femme» sont beaucoup plus proches l'un de l'autre que du «roi»? Ça dit quelque chose. Les représentations vectorielles capturent beaucoup d'informations / sens / associations de ces mots.

Voici une autre liste d'exemples (comparer des colonnes avec des couleurs similaires):



Il y a plusieurs choses à noter:

  1. À travers tous les mots passe une colonne rouge. Autrement dit, ces mots sont similaires dans cette dimension particulière (et nous ne savons pas ce qui y est codé).
  2. Vous pouvez voir que «femme» et «fille» sont très similaires. La même chose avec «homme» et «garçon».
  3. «Garçon» et «fille» sont également similaires dans certaines dimensions, mais diffèrent de «femme» et «homme». Serait-ce une vague idée codée de la jeunesse? Probablement.
  4. Tout sauf le dernier mot, ce sont les idées des gens. J'ai ajouté un objet (eau) pour montrer les différences entre les catégories. Par exemple, vous pouvez voir comment la colonne bleue descend et s'arrête devant le vecteur d'eau.
  5. Il y a des dimensions claires où le «roi» et la «reine» sont similaires et différents les uns des autres. Peut-être qu'un vague concept de redevance y est codé?

Analogies


«Les mots supportent toutes les charges que nous souhaitons. Tout ce qu'il faut, c'est un accord sur la tradition, selon lequel nous construisons des concepts. » - Dieu l'empereur de Dune

Des exemples célèbres qui montrent les propriétés incroyables des investissements sont le concept d'analogies. Nous pouvons ajouter et soustraire des vecteurs de mots, obtenant des résultats intéressants. L'exemple le plus célèbre est la formule «roi - homme + femme»:


En utilisant la bibliothèque Gensim en python, nous pouvons ajouter et soustraire des vecteurs de mots, et la bibliothèque trouvera les mots les plus proches du vecteur résultant. L'image montre une liste des mots les plus similaires, chacun avec un coefficient de similitude géométrique

Nous visualisons cette analogie comme précédemment:


Le vecteur résultant du calcul «roi - homme + femme» n'est pas tout à fait égal à la «reine», mais c'est le résultat le plus proche de 400 000 pièces jointes de mots dans l'ensemble de données

Après avoir considéré l'attachement des mots, apprenons comment se déroule l'apprentissage. Mais avant de passer à word2vec, vous devez jeter un œil à l'ancêtre conceptuel de l'intégration de mots: un modèle de langage neuronal.

Modèle de langage


«Le prophète n'est pas soumis aux illusions du passé, du présent ou du futur. La fixité des formes linguistiques détermine de telles différences linéaires. Les prophètes tiennent la clé du verrou de la langue. Pour eux, l'image physique ne reste qu'une image physique et rien de plus.

Leur univers n'a pas les propriétés d'un univers mécanique. L'observateur assume une séquence linéaire d'événements. Cause et effet? C'est une question complètement différente. Le Prophète prononce des paroles fatidiques. Vous voyez un aperçu d'un événement qui devrait se produire «selon la logique des choses». Mais le prophète libère instantanément l'énergie d'un pouvoir miraculeux infini. L'univers subit un changement spirituel. » - Dieu l'empereur de Dune

Un exemple de NLP (Natural Language Processing) est la fonction de prédiction du mot suivant sur le clavier d'un smartphone. Des milliards de personnes l'utilisent des centaines de fois par jour.



La prédiction du mot suivant est une tâche appropriée pour un modèle de langage . Elle peut prendre une liste de mots (disons deux mots) et essayer de prédire ce qui suit.

Dans la capture d'écran ci-dessus, le modèle a pris ces deux mots verts ( thou shalt ) et a renvoyé une liste d'options (très probablement pour le mot not ):



On peut imaginer le modèle comme une boîte noire:



Mais en pratique, le modèle produit plus d'un mot. Il dérive une estimation de la probabilité de pratiquement tous les mots connus (le "dictionnaire" du modèle varie de plusieurs milliers à plus d'un million de mots). L'application clavier trouve ensuite les mots ayant les scores les plus élevés et les montre à l'utilisateur.


Un modèle de langage neuronal donne la probabilité de tous les mots connus. Nous indiquons la probabilité en pourcentage, mais dans le vecteur résultant, 40% seront représentés comme 0,4

Après l'entraînement, les premiers modèles neuronaux ( Bengio 2003 ) ont calculé le pronostic en trois étapes:



La première étape pour nous est la plus pertinente, alors que nous discutons des investissements. À la suite de la formation, une matrice est créée avec les pièces jointes de tous les mots de notre dictionnaire. Pour obtenir le résultat, nous recherchons simplement les plongements des mots d'entrée et exécutons la prédiction:



Examinons maintenant le processus d'apprentissage et découvrons comment cette matrice d'investissements est créée.

Formation sur le modèle linguistique


«Le processus ne peut pas être compris en y mettant fin. La compréhension doit avancer avec le processus, fusionner avec son flux et couler avec lui »- Dune

Les modèles de langage ont un énorme avantage sur la plupart des autres modèles d'apprentissage automatique: ils peuvent être formés sur des textes que nous avons en abondance. Pensez à tous les livres, articles, documents Wikipédia et autres formes de données textuelles dont nous disposons. Comparez avec d'autres modèles d'apprentissage automatique qui nécessitent un travail manuel et des données spécialement collectées.

«Vous devez apprendre le mot par son entreprise» - J. R. Furs

Les pièces jointes des mots sont calculées en fonction des mots environnants, qui apparaissent le plus souvent à proximité. La mécanique est la suivante:

  1. Nous obtenons beaucoup de données textuelles (disons, tous les articles Wikipedia)
  2. Définissez une fenêtre (par exemple, de trois mots) qui glisse dans le texte.
  3. Une fenêtre coulissante génère des modèles pour l'apprentissage de notre modèle.




Lorsque cette fenêtre glisse sur le texte, nous générons (en fait) un ensemble de données, que nous utilisons ensuite pour former le modèle. Pour comprendre, voyons comment une fenêtre coulissante gère cette phrase:

«Puissiez-vous ne pas construire une machine dotée de la ressemblance de l'esprit humain» - Dune

Lorsque nous commençons, la fenêtre se trouve sur les trois premiers mots de la phrase:



Nous prenons les deux premiers mots pour les signes, et le troisième mot pour l'étiquette:


Nous avons généré le premier échantillon dans un ensemble de données qui peut ensuite être utilisé pour enseigner un modèle de langage

Ensuite, nous déplaçons la fenêtre à la position suivante et créons un deuxième échantillon:



Et très bientôt, nous accumulons un plus grand ensemble de données:



En pratique, les modèles sont généralement formés directement au processus de déplacement d'une fenêtre coulissante. Mais logiquement, la phase de «génération des ensembles de données» est distincte de la phase de formation. En plus des approches de réseau de neurones, la méthode N-gram était souvent utilisée plus tôt pour enseigner les modèles de langage (voir le troisième chapitre du livre «Speech and Language Processing» ). Pour voir la différence lors du passage de N-grammes à des modèles neuronaux dans des produits réels, voici un article de 2015 sur le blog Swiftkey , le développeur de mon clavier Android préféré, qui présente son modèle de langage neuronal et le compare avec le modèle N-gram précédent. J'aime cet exemple car il montre comment les propriétés algorithmiques des investissements peuvent être décrites dans un langage marketing.

Nous regardons dans les deux sens


«Un paradoxe est un signe que nous devons essayer de réfléchir à ce qui se cache derrière. Si le paradoxe vous inquiète, cela signifie que vous vous efforcez de l'absolu. Les relativistes considèrent le paradoxe simplement comme une pensée intéressante, peut-être drôle, parfois effrayante, mais une pensée très instructive. » Dieu empereur de Dune

Sur la base de ce qui précède, comblez le vide:



Comme contexte, il y a cinq mots précédents (et une référence antérieure à «bus»). Je suis sûr que la plupart d'entre vous ont deviné qu'il devrait y avoir un "bus". Mais si je vous donne un autre mot après l'espace, cela changera-t-il votre réponse?



Cela change complètement la situation: maintenant le mot manquant est très probablement «rouge». De toute évidence, les mots ont une valeur informative à la fois avant et après un espace. Il s'avère que la comptabilité dans les deux sens (gauche et droite) permet de calculer de meilleurs investissements. Voyons comment configurer la formation du modèle dans une telle situation.

Sauter le gramme


"Quand un choix absolument indubitable est inconnu, l'intellect a la chance de travailler avec des données limitées dans l'arène, où les erreurs sont non seulement possibles mais aussi nécessaires." - Capitul Dunes

En plus de deux mots avant la cible, vous pouvez prendre en compte deux autres mots après celle-ci.



Ensuite, l'ensemble de données pour la formation du modèle ressemblera à ceci:



Il s'agit de l'architecture CBOW (Continuous Bag of Words) et est décrite dans l' un des documents word2vec [pdf]. Il existe une autre architecture, qui montre également d'excellents résultats, mais est arrangée un peu différemment: elle essaie de deviner les mots voisins par le mot courant. Une fenêtre coulissante ressemble à ceci:


Dans la fente verte est le mot d'entrée, et chaque champ rose représente une sortie possible

Les rectangles roses ont des nuances différentes car cette fenêtre coulissante crée en fait quatre modèles distincts dans notre jeu de données d'entraînement:



Cette méthode est appelée architecture skip-gram . Vous pouvez visualiser une fenêtre coulissante comme suit:



Les quatre exemples suivants sont ajoutés à l'ensemble de données de formation:



Ensuite, nous déplaçons la fenêtre à la position suivante:



Ce qui génère quatre autres exemples:



Bientôt, nous aurons beaucoup plus d'échantillons:



Revue d'apprentissage


«Muad'Dib était un apprenant rapide parce qu'il apprenait principalement à apprendre. Mais la toute première leçon a été l'assimilation de la croyance qu'il peut apprendre, et c'est la base de tout. C'est incroyable combien de personnes ne croient pas qu'elles peuvent apprendre et apprendre, et combien de personnes pensent que l'apprentissage est très difficile. " - Dune

Maintenant que nous avons l'ensemble skip-gram, nous l'utilisons pour former le modèle neuronal de base du langage qui prédit un mot voisin.



Commençons par le premier échantillon de notre ensemble de données. Nous prenons le signe et l'envoyons au modèle non formé avec la demande de prédire le mot suivant.



Le modèle passe par trois étapes et affiche un vecteur de prédiction (avec probabilité pour chaque mot du dictionnaire). Le modèle n'étant pas entraîné, à ce stade, ses prévisions sont probablement incorrectes. Mais ce n’est rien. Nous savons quel mot elle prédit - c'est la cellule résultante dans la ligne que nous utilisons actuellement pour former le modèle:


Un «vecteur cible» est un vecteur dans lequel le mot cible a une probabilité de 1, et tous les autres mots ont une probabilité de 0

À quel point le modèle était-il mauvais? Soustrayez le vecteur de prévision de la cible et obtenez le vecteur d'erreur:



Ce vecteur d'erreur peut maintenant être utilisé pour mettre à jour le modèle, donc la prochaine fois, il est plus susceptible de donner un résultat précis sur les mêmes données d'entrée.



Ici se termine la première étape de la formation. Nous continuons à faire de même avec l'échantillon suivant dans l'ensemble de données, puis avec le suivant, jusqu'à ce que nous examinions tous les échantillons. C'est la fin de la première ère d'apprentissage. Nous répétons tout et maintes et maintes fois pendant plusieurs époques, et en conséquence, nous obtenons un modèle formé: vous pouvez en extraire la matrice d'investissement et l'utiliser dans toutes les applications.

Bien que nous ayons beaucoup appris, mais pour bien comprendre comment word2vec apprend vraiment, quelques idées clés manquent.

Sélection négative


«Essayer de comprendre Muad'Dib sans comprendre ses ennemis mortels - les Harkonnenov - revient à essayer de comprendre la Vérité sans comprendre ce qu'est le mensonge. C'est une tentative de connaître la Lumière sans connaître l'Obscurité. C'est impossible. " - Dune

Rappelez-vous les trois étapes comment un modèle neuronal calcule une prévision:



La troisième étape est très coûteuse d'un point de vue informatique, surtout si vous le faites pour chaque échantillon de l'ensemble de données (des dizaines de millions de fois). Il est nécessaire d'augmenter en quelque sorte la productivité.

Une façon consiste à diviser l'objectif en deux étapes:

  1. Créez des pièces jointes de mots de haute qualité (sans prédire le mot suivant).
  2. Utilisez ces investissements de haute qualité pour enseigner le modèle linguistique (pour les prévisions).

Cet article se concentrera sur la première étape. Pour augmenter la productivité, vous pouvez vous éloigner de la prédiction d'un mot voisin ...



... et passez à un modèle qui prend les mots d'entrée et de sortie et calcule la probabilité de leur proximité (de 0 à 1).



Une transition aussi simple remplace le réseau neuronal par un modèle de régression logistique - ainsi, les calculs deviennent beaucoup plus simples et plus rapides.

En même temps, nous devons affiner la structure de notre ensemble de données: l'étiquette est maintenant une nouvelle colonne avec des valeurs 0 ou 1. Dans notre tableau, les unités sont partout, car nous y avons ajouté des voisins.



Un tel modèle est calculé à une vitesse incroyable: des millions d'échantillons en quelques minutes. Mais vous devez combler une lacune. Si tous nos exemples sont positifs (objectif: 1), alors un modèle délicat peut se former qui renvoie toujours 1, démontrant une précision de 100%, mais il n'apprend rien et génère des investissements indésirables.



Pour résoudre ce problème, vous devez entrer des modèles négatifs dans l'ensemble de données - des mots qui ne sont certainement pas voisins. Pour eux, le modèle doit retourner 0. Maintenant, le modèle devra travailler dur, mais les calculs vont toujours à grande vitesse.


Pour chaque échantillon du jeu de données, ajoutez des exemples négatifs étiquetés 0

Mais que présenter comme mots de sortie? Choisissez les mots arbitrairement:



Cette idée est née sous l'influence de la méthode de comparaison du bruit [pdf]. Nous faisons correspondre le signal réel (exemples positifs de mots voisins) avec du bruit (mots sélectionnés au hasard qui ne sont pas voisins). Cela fournit un excellent compromis entre performances et performances statistiques.

Échantillon négatif de saut de gramme (SGNS)


Nous avons examiné deux concepts centraux de word2vec: ensemble, ils sont appelés «skip-gram avec échantillonnage négatif».



Learning word2vec


«Une machine ne peut pas prévoir tous les problèmes importants pour une personne vivante. Il y a une grande différence entre un espace discret et un continuum continu. Nous vivons dans un espace et les machines existent dans un autre. » - Dieu l'empereur de Dune

Après avoir examiné les idées de base du saut de gramme et de l'échantillonnage négatif, nous pouvons procéder à un examen plus approfondi du processus d'apprentissage word2vec.

Tout d'abord, nous pré-traitons le texte sur lequel nous formons le modèle. Définissez la taille du dictionnaire (nous l'appellerons vocab_size ), disons, dans 10 000 pièces jointes et les paramètres des mots dans le dictionnaire.

Au début de la formation, nous créons deux matrices: Embedding et Context . Les pièces jointes de chaque mot sont stockées dans ces matrices dans notre dictionnaire (donc vocab_size est l'un de leurs paramètres). Le deuxième paramètre est la dimension de la pièce jointe (généralement embedding_size défini sur 300, mais nous avons examiné précédemment un exemple avec 50 dimensions).



Tout d'abord, nous initialisons ces matrices avec des valeurs aléatoires. Ensuite, nous commençons le processus d'apprentissage. À chaque étape, nous prenons un exemple positif et les négatifs qui lui sont associés. Voici notre premier groupe:



Nous avons maintenant quatre mots: le mot d'entrée not et les mots de sortie / contextuels thou (voisin réel), aaron et taco (exemples négatifs). Nous commençons la recherche de leurs pièces jointes dans les matrices Embedding (pour le mot d'entrée) et Context (pour les mots de contexte), bien que les deux matrices contiennent des pièces jointes pour tous les mots de notre dictionnaire.



Ensuite, nous calculons le produit scalaire de la pièce jointe d'entrée avec chacune des pièces jointes contextuelles. Dans chaque cas, un nombre est obtenu qui indique la similitude des données d'entrée et des pièces jointes contextuelles.



Il nous faut maintenant un moyen de transformer ces estimations en une sorte de vraisemblance: toutes doivent être des nombres positifs entre 0 et 1. C'est une excellente tâche pour les équations logistiques sigmoïdes .



Le résultat du calcul sigmoïde peut être considéré comme la sortie du modèle pour ces échantillons. Comme vous pouvez le voir, taco le score le plus élevé, tandis que aaron toujours le score le plus bas, avant et après sigmoïde.

Lorsque le modèle non formé a fait une prévision et a un véritable objectif cible pour la comparaison, calculons le nombre d'erreurs dans la prévision du modèle. Pour ce faire, il suffit de soustraire le score sigmoïde des étiquettes cibles.


error = target - sigmoid_scores

C'est là que commence la phase «d'apprentissage» du terme «apprentissage automatique». Nous pouvons maintenant utiliser cette estimation d'erreur pour ajuster les investissements not , thou , aaron et taco , afin que la prochaine fois, le résultat soit plus proche des estimations cibles.



Ceci termine une étape de la formation. Nous avons un peu amélioré l'attachement de quelques mots ( not , thou , aaron et taco ). Nous passons maintenant à l'étape suivante (le prochain échantillon positif et les échantillons négatifs qui lui sont associés) et répétons le processus.



Les pièces jointes continuent de s'améliorer à mesure que nous parcourons plusieurs fois l'ensemble des données. Vous pouvez ensuite arrêter le processus, mettre de côté la matrice de Context et utiliser la matrice d' Embeddings intégrée pour la tâche suivante.

Taille de la fenêtre et nombre d'échantillons négatifs


Dans le processus d'apprentissage de word2vec, deux hyperparamètres clés sont la taille de la fenêtre et le nombre d'échantillons négatifs.



Différentes tailles de fenêtres conviennent à différentes tâches. Il a été remarqué que des tailles de fenêtre plus petites (2–15) génèrent des pièces jointes interchangeables avec des index similaires (notez que les antonymes sont souvent interchangeables lorsque vous regardez les mots environnants: par exemple, les mots «bon» et «mauvais» sont souvent mentionnés dans des contextes similaires). Des tailles de fenêtre plus grandes (15–50 ou même plus) génèrent des pièces jointes associées avec des indices similaires. En pratique, vous devez souvent fournir des annotations pour les similitudes sémantiques utiles dans votre tâche. Dans Gensim, la taille de fenêtre par défaut est 5 (deux mots gauche et droit, en plus du mot d'entrée lui-même).



Le nombre d'échantillons négatifs est un autre facteur dans le processus d'apprentissage. Le document original recommande 5-20. Il indique également que 2 à 5 échantillons semblent suffisants lorsque vous disposez d'un ensemble de données suffisamment volumineux. Dans Gensim, la valeur par défaut est 5 motifs négatifs.

Conclusion


"Si votre comportement dépasse vos normes, alors vous êtes une personne vivante, pas un automate" - God-Emperor of Dune

J'espère que vous comprenez maintenant l'intégration des mots et l'essence de l'algorithme word2vec. J'espère également que maintenant vous comprendrez mieux les articles qui mentionnent le concept de "saut de gramme avec échantillonnage négatif" (SGNS), comme dans les systèmes de recommandation susmentionnés.

Références et lectures complémentaires


Source: https://habr.com/ru/post/fr446530/


All Articles