Published by

Il y a 9 mois -

Temps de lecture 22 minutes

NLP : concepts clés et état de l’art

L’objectif de cet article est de s’arrêter sur quelques notions clés intervenant dans le domaine du NLP (Natural Language Processing) et de montrer la façon dont celles-ci s’agencent pour amener à l’état de l’art actuel, en particulier dans le cadre des approches deep learning. L’ambition ici n’est pas de rentrer dans le détail des équations mais plus simplement de faire comprendre l’intuition et la position de ces concepts les uns par rapport aux autres, jusqu’aux architectures appelées Transformers. Des renvois explicites vers les articles et les documentations d’origine sont faits systématiquement pour permettre au lecteur intéressé d’approfondir à sa convenance les thématiques évoquées.

Embeddings

Principe

Le principe des word embeddings (nommés parfois en français « plongement lexicaux ») est de représenter l’ensemble des mots d’un « dictionnaire » sous la forme de vecteurs à valeurs numériques réelles. L’objectif est que les représentations vectorielles des mots soient proches lorsque ces mots correspondent à des contextes similaires (voir Figure « Word Embedding »), par opposition à une simple indexation de chaque entrée du dictionnaire par un nombre ou encore un encodage vectoriel one hot  classique. De plus, par rapport au one hot encoding, l’utilisation d’un word embedding permet de considérer des espaces vectoriels de dimension bien inférieure au nombre de mots du dictionnaire et d’éviter ainsi les problèmes liés au “fléau de la dimension”, expression caractérisant les phénomènes se produisant dans les espaces à grande dimension ne se produisant pas dans ceux de dimension plus faible, rendant généralement certaines approches d’analyse peu ou pas efficace dans ce contexte.

Dans l’idéal, nous voulons construire un embedding permettant de réaliser dans l’espace de représentation vectorielle le genre de relation suivante : « king – man + woman ≈ queen », à savoir que la représentation du mot « king » moins celle du mot « man » plus celle du mot « woman » permet d’obtenir un vecteur proche de celui de « queen » (Figure “Word Embedding”). L’idée étant de montrer que non seulement les mots proches thématiquement les uns des autres, le seront également une fois projetés dans l’espace vectoriel considéré, mais aussi que des relations plus complexes entre différents concepts sont également captés[1].

Figure “Word Embedding[1]Illustration de la répartition dans l’espace d’embedding des mots. Il est à remarquer que les mots associés thématiquement sont proches les uns des autres, mais aussi que certaines relations plus complexes sont mises en évidence. Par exemple, même vecteur pour passer d’un nom de pays à celui de sa capitale.

 

Généralement de telles représentations sont construites via l’entraînement d’un réseau de neurones sur des tâches de prédiction. Concrètement un apprentissage est effectué, sur des corpus gigantesques de textes via ces réseaux, soit pour prédire un mot en fonction du contexte, soit pour prédire le contexte en fonction du mot. Voir par exemple Figures “modèle skip-gram »  et « modèle CBOW » ou encore, les approches utilisées par Tomas Mikolov pour le package Word2vec[2].

 

Figure « modèle skip-gram »[3] – Illustration du modèle skip-gram permettant l’apprentissage, à l’aide d’un réseau de neurones, d’un word embedding via prédiction du contexte à partir d’un mot
Figure « modèle CBOW »[4] – Illustration du modèle continuous bag of word (CBOW) permettant l’apprentissage, à l’aide d’un réseau de neurones, d’un word embedding via prédiction d’un mot à partir d’un contexte (les autres mot de la phrase considérée)

 

Néanmoins, si un passage de lettres à des nombres semble une démarche naturelle afin d’utiliser des algorithmes classiques de machine et deep learning, il n’en reste pas moins que la question de considérer la maille du mot entier plutôt que certaines de ses sous-parties ou, au contraire, de phrases entières se pose en pratique. Afin d’explorer ce sujet, commençons par nous intéresser au concept des N-grams.

 

N-grams

De nombreux mots, en anglais comme en français, disposent d’un préfixe ou d’un suffixe qui viennent en changer le sens. En particulier un préfixe peut inverser le sens d’un mot. À l’inverse, un suffixe différent n’affecte généralement pas le sens global du mot. Il serait pertinent de considérer un embedding qui prendrait en compte ces caractéristiques. L’idée est de mettre le plus loin possible, dans l’espace vectoriel considéré, les mots opposés et de mettre à proximité les mots de sens similaires. Une façon de faire cela, tout en évitant de gérer explicitement, des règles linguistiques complexes est de considérer des n-grams. Un n-gram est une sous-séquence de n éléments (ici des lettres) dans une séquence donnée. Par exemple, dans la langue française, le 2-gram (ou bi-gram) le plus répandu est « de », qui apparaît à la fois dans l’article « de » mais aussi dans des mots comme « monde » ou « mode »[5]. Un modèle possible est d’effectuer un apprentissage, possiblement en brute force (ie en testant toutes les possibilités permises), sur l’ensemble de ces n-grams pour en calculer une représentation vectorielle pertinente. C’est le type de modélisation proposée par fastText[6] pour la constitution de ses embeddings. L’idée est de considérer chaque mot comme l’ensemble des n-grams qui le constitue, plus le mot lui-même. Par exemple[7], pour n=3, le mot « where » est constitué des éléments suivants « _wh », « whe », « her », « ere », « re_ » et « where ».  L’embedding du mot correspond alors à la somme des tous les vecteurs associés à l’ensemble des n-grams qui le constituent.

Embedding de phrases, de textes

Intéressons-nous désormais à la notion d’embedding de phrases. Il est parfois plus utile de manipuler plus que des mots notamment lors d’une classification de texte ou d’une génération automatique de résumés. Il existe alors plusieurs façons de procéder :

●        faire la moyenne de l’embedding associé aux mots de la phrase ;

●        effectuer une moyenne pondérée (par exemple avec les poids calculés via procédure TF-IDF, une mesure statistique caractérisant l’importance, en nombre d’occurrences, du mot dans un texte ou un corpus donné).

De telles approches sont possibles mais ne sont pas toujours les mieux adaptées. En effet, elles reviennent à utiliser a posteriori un embedding de mots qui a été entraîné dans un contexte différent de celui pour lequel l’embedding de phrase est recherché.

Une alternative est d’effectuer la constitution de l’embedding de phrases lors de la phase d’entraînement, voir par exemple Sent2Vec. Dans ce cas l’objectif est de représenter les phrases sous la forme d’une somme de sous-phrases, de façon similaire aux n-grams de caractères mais avec des mots. Un modèle alternatif nommé StarSpace[8], plus générale (embedding de phrases, de textes mais aussi d’entités telles que des graphes) existe et constitue une alternative relativement récente (2017).

Les modèles Universal Sentence Encoder construisent des embeddings de phrase en effectuant une moyenne pondérée des mots contenus. La pondération est issue d’un apprentissage basé sur le concept d’Attention, permettant de d’identifier l’importance des mots dans un contexte en fonction de leur position et de leur identité. Une partie est consacrée au concept d’Attention dans la suite du document, s’y reporter pour plus de détails.

Il existe également une extension du modèle de Word2vec, disponible via le package gensim et nommé Doc2Vec[9], qui permet également d’entraîner un embedding de textes directement sur un corpus de textes donnés. L’objectif ici n’est pas seulement d’effectuer une moyenne des embeddings de chacun des mots du texte (méthode pouvant, par ailleurs, donner de bons résultats) mais de considérer l’embedding de texte comme un vecteur qui, à l’instar des embedding de mots, contribue aux étapes d’entraînement et y est lui aussi mis à jour (voir la documentation officielle citée au dessus pour plus de détails).

Embedding français

Plusieurs embeddings sont pré-entraînés et librement disponibles. Parmi les plus utilisés, nous pouvons citer GloVe, Word2vec, fastTex ou encore ceux issus de TensorFlow Hub. Néanmoins, la majorité des word embeddings sont en anglais. Quelques exceptions notables existent tel que fastText ou TensorflowHub qui proposent des embeddings pré-entrainés en français. Nous avons utilisé ces deux ressources, que nous décrivons respectivement ci-dessous.

La librairie fastText, créée par le laboratoire de recherche sur l’IA de Facebook (FAIR), contient des modèles pour près de 300 langues différentes. Ces modèles sont entraînés à partir du modèle skip-gram décrit dans l’article Bojanoswki et al (2016). Parmi les nombreuses langues proposées on trouve un embedding spécifiquement construit pour la langue française. Nous pouvons par ailleurs illustrer la façon dont les mots sont situés les uns par rapport aux autres dans l’espace vectoriel à 300 dimensions.

La librairie fastText contient une fonction, get_nearest_neighbors, qui permet d’indiquer directement quels sont les mots les plus proches d’un autre, choisi au préalable, dans l’espace de représentation vectorielle liée à l’embedding. Quelques tests permettent d’évaluer la pertinence de la modélisation proposée par l’embedding français de fastText. Par exemple, pour le mot « chat », parmi les mots les plus proches nous trouvons « chaton », « matou », « chien » ou encore « félin ».

Même sur des concepts plus récents (ou plus abstraits), faisant éventuellement intervenir des notions métier spécifiques, la position dans l’espace reste pertinente. En effet, parmi les plus proches voisins de « linky », mot faisant référence au nouveau compteur électrique communicant en déploiement en France actuellement par Enedis, se trouve fort à propos les mots « compteur », « Gazpar » (l‘équivalent de Linky mais pour le gaz) ou encore « Enedis ».

TensorFlowHub est l’autre source mentionnée contenant des embeddings en différentes langues dont le français. En particulier cet « Universal Sentence Encoder Cross-lingual » (XLING), basé sur le principe de l’Universal Sentence Encoder évoqué plus haut, permet d’effectuer un embedding de phrases indifféremment en anglais ou en français.

Une fois le concept des embeddings bien assimilé, nous pouvons désormais nous tourner vers les autres grands concepts utilisés dans le cadre d’une approche deep learning et voir le cheminement menant de ces concepts à l’état de l’art actuel du NLP.

LSTM

Le principe du LSTM (Long Short Term Memory) est de garder la trace de l’influence entre les différents éléments d’une séquence au contraire des architectures neuronales classiques. Dans le contexte d’une analyse de texte, il apparaît naturel de déterminer le sens d’un mot à partir de ceux qui le précèdent (ou qui le suivent). En pratique, la prise en compte de telles dépendances sur le long terme n’est pas toujours effectuée de façon efficace par les RNN (Recurrent Neural Networks) classiques. C’est la raison pour laquelle le principe des LSTM a été développé en 1997[10].

Considérons par exemple la phrase[11]J’ai grandi en France… Je parle couramment français”. Si nous voulons détecter le dernier mot de la phrase (français) le contexte proche indique qu’il s’agit vraisemblablement d’une langue. Néanmoins pour établir le contexte et deviner laquelle dont il s’agit il faut remonter plus loin jusqu’au mot France. Cette dépendance à long terme ne peut généralement pas être établie par les RNN classiques et nécessite alors l’utilisation des LSTM.

Le principe classique d’une architecture LSTM est d’être composée d’un ensemble de “cellules” (voir Figure “LSTM”). Chacune de ces cellules (variantes mises à part) est composée de trois portes :

●        une porte d’entrée (input gate) ;

●        une porte de sortie (output gate) ;

●        une porte d’oubli (forget gate).

La porte d’entrée caractérise à quel point la nouvelle valeur courante va traverser inchangée ou non la cellule. La porte d’oubli caractérise le niveau d’information de la cellule qui sera ou non conservé par la suite. La porte de sortie sert à caractériser à quel point la valeur de la cellule participe à l’activation de la cellule. À noter l’existence d’une variante de LSTM appelée GRU (Gated Recurrent Unit), à la complexité algorithmique moindre mais au pouvoir de représentation plus limitée, n’utilisant pas le concept de porte de sortie.

Figure “LSTM” – Structure d’une cellule d’un réseau LSTM[12]

 

Une complexification classique de ce modèle en NLP est le Bidirectional LSTM dans laquelle on examine  à la fois l’information passée mais aussi l’information future pour analyser une série temporelle. Dans le cadre de l’analyse d’un texte ou d’une phrase, il apparaît naturel que des “indices” concernant la signification d’un mot soient contenus à la fois sur les mots situés avant mais aussi sur les mots situés après. Une application typique est l’analyse de sentiment d’une phrase c’est à dire déterminer si une phrase caractérise un sentiment exprimé plutôt positif ou plutôt négatif.

Encoder-decoder

Les modèles “
encoder-decoder-sequence to sequence

” sont particulièrement utilisés dans le domaine du NLP depuis leur introduction en 2014[13] par exemple dans le domaine de la traduction automatique, des appareils commandés à la voix ou encore des chatbots. Le principe d’un encodage est de transformer la donnée d’entrée en une représentation de dimension inférieure, puis de la transformer  à nouveau dans un espace plus grand correspond à la dimension de la sortie attendue. Ils sont composés des éléments suivants :

●        un encoder. Généralement un empilement de plusieurs briques LSTM (ou GRU, comme évoqué plus haut) où chacune prend en charge un élément de la séquence d’entrée, avant de propager l’information extraite à la suivante ;

●        un vecteur encodé. Il correspond à l’état final en sortie de l’encoder. La raison d’être de ce vecteur est de contenir l’information récupérée via la séquence d’entrée pour aider le decoder à en faire en une prédiction pertinente ;

●        un decoder. Il est constitué d’un empilement de réseaux de neurones récurrents (RNN) où chacun prédit un élément de la séquence de sortie. Chaque réseau accepte un état caché issu du précédent et en envoie un au suivant. La sortie finale est l’ensemble des mots de sortie de chaque réseau du decoder.

 

Voir Figure “Encoder-Decoder” pour plus une visualisation détaillée de l’architecture (à noter que ce n’est pas la seule architecture envisageable dans ce contexte, certaines ne nécessitant en effet pas d’avoir le vecteur final pour démarrer le Decoder).

Figure “Encoder-Decoder” – Illustration[14] du fonctionnement d’une architecture d’encoder-decoder. Nous retrouvons bien les trois partie “encoder”-”vecteur décodé”-”decoder”. La série des correspond à la séquence d’entrée et les à la séquence de sortie (par exemple des séquences de mots d’une langue à une autre dans le cas d’une application pour effectuer un processus de traduction)

 

Mécanisme d’attention

Le mécanisme d’attention est un concept particulièrement efficace. Une des motivations de l’émergence de ce concept est de résoudre un problème généralement observé avec des approches classiques, à savoir que même en utilisant un architecture type LSTM, les longues phrases sont difficiles à caractériser efficacement. En effet, l’information portée par les premiers mots d’une phrase fini par se perdre peu à peu à mesure du traitement d’une phrase, en particulier si celle-ci est longue. Afin de répondre à cet écueil, l’idée ici est donc de pondérer plus fortement certaines positions de mots dans la phrase susceptibles d’être porteuses d’informations pertinentes pour la tâche en cours (traduction ou prédiction d’un mot dans une phrase).

Par exemple[15], considérons la phrase

Despite originally being from Uttar Pradesh, as he was brought up in Bengal, he is more comfortable in Bengali.

Si nous voulons prédire le mot “Bengali”, alors les mots “brought up” et “Bengal” doivent être affecté d’un poids plus élevé relativement aux autres mots, comme “Uttar” qui peut être quant à lui ignoré.

L’objectif est d’affecter un poids aux états de l’encodeur afin d’obtenir une représentation pertinente pour chaque état du décodeur. Les poids sont appris au cours de la procédure d’apprentissage et ont pour objectif de trouver les positions pertinentes de l’encodeur (Figure “Attention”).

Figure “Attention” – Illustration[16] du fonctionnement du processus d’attention et de l’utilisation des poids par rapport à la structure d’encoder-decoder global

 

Transformers

Description générale

Le Transformer est un modèle de deep learning relativement récent (2014)[17] et se caractérise par le fait qu’il n’a pas besoin de traiter la donnée dans l’ordre, autrement dit, dans le contexte du NLP, n’a pas besoin de traiter le début d’une phrase avant sa fin. Cette caractéristique permet au Transformer une certaine capacité de parallélisation des données (par rapport aux RNN et CNN). Il est constitué de deux composants principaux à savoir une série d’encodeurs suivi d’une série de décodeurs. Le principe des LSTM n’est pas utilisé, ni même celui plus général des réseaux récurrents (RNN). L’enjeu de garder en mémoire l’information contenue par les mots éloigné est donc résolu. À chaque instant l’algorithme a accès, sans perte d’information, à l’ensemble des états successifs parcourus lors de la procédure. Par contre, il s’appuie fortement sur le principe d’Attention. En cela, ils constituent une rupture importante d’avec l’état de l’art précédant leur introduction (Figure “Transformer”). L’un des enseignement de cette approche est que le mécanisme d’attention seul, sans traitement séquentiel récurrent, est suffisamment puissant pour faire aussi bien, et mieux, que des RNN avec attention.

Figure “Transformer”[18] : architecture de base du Transformer.

L’encoder est à gauche et le decoder à droite.

 

Pour plus de détails sur les Transformers en général, se rapporter aux nombreuses ressources disponibles[19]. Un Transformer amélioré spécialisé pour le NLP, BERT, a été introduit quatre ans plus tard et fait l’objet d’une description ci-dessous.

BERT et dérivés[20]

Comme indiqué plus haut, dans le contexte du NLP, le Transformer le plus célèbre est BERT (pour Bidirectional Encoder Représentations from Transformers), mis en place par Google en 2018. Il est généralement plus performant que les autres algorithmes de la littérature (par exemple Generative Pre-Training, ELMo, ULMFit). Dans sa version originale, pour la langue anglaise, il a été entraîné sur l’ensemble du corpus anglophone de Wikipédia de façon non supervisée.

Contrairement au fonctionnement classique des Transformers, BERT n’a besoin, dans son architecture, que de la partie encoder. Ceci s’explique par le fait qu’il a été conçu dans l’optique de produire une représentation du langage considéré. Il est à noter que BERT n’est pas un modèle directionnel, son architecture lui permet de lire l’ensemble de la séquence d’entrée en une fois. C’est la raison pour laquelle il est qualifié de bi-directionnel, même si cela est à distinguer des modèles (comme ELMo) qui “lisent” la séquence dans les deux sens puis concatène les deux chaînes de résultats. Dans le cas de BERT, il s’agit d’une approche qui, pour donner l’intuition, pourrait être considéré comme non-directionnel. Cette caractéristique est permise grâce à la technique nommée Masked Language Model (MLM)[21]. Voir Figure “Transfo-comp” pour une illustration globale du fonctionnement du Transformer.

Figure “Transfo-comp” – Comparaison[22] sur les architectures respectives de BERT et son caractère bidirectionnel, d’avec les modèles OpenAI GPT, utilisant une architecture de Transformer lisant de gauche à droite et ELMo qui utilise une concaténation de modèles LSTM entraînés indépendamment respectivement de droite à gauche et de gauche à droite.

En simplifiant un peu, il est possible de présenter le fonctionnement de BERT, qui se décompose en deux temps, de la façon suivante. Dans une première phase, afin d’acquérir une compréhension générale du langage, il masque 15% des mots dans chaque séquence, qu’il remplace par un “mot masqué” (d’où la notion de Masked Language Model). Le modèle essaie ensuite de retrouver les mots originaux en s’aidant du contexte offert par les mots présents. Cette phase correspond au pré-entraînement. Le modèle peut ensuite, dans un second temps, être “fine-tuné” pour une tâche précise (classification, analyse de sentiment, détection d’entité…). Cette technique de fine-tuning a permis de représenter l’état de l’art sur un certain nombre de thématiques en NLP[23]. Il est à noter malgré tout que les performances obtenues par BERT sont encore relativement difficiles à interpréter[24]. Un Transformer, nommé CamemBERT, équivalent dans son fonctionnement à BERT, mais spécialement pré-entraîné en français, a été developpé par l’INRIA en 2019 et atteint lui aussi l’état de l’art sur la plupart des situations testées[25].

À partir de cette modélisation du langage, il est possible d’effectuer un « fine-tuning » afin de le spécialiser sur une tâche précise. Il existe plusieurs possibilités pour utiliser un modèle BERT pré-entrainé, en particulier avec Python et Tensorflow (voir la partie Implémentation en fin de document).

Conclusion :

Comme relaté ci-dessus, les modèles Transformers et plus particulièrement BERT (ainsi que son équivalent CamemBERT pré-entraîné en français) correspondent à l’état de l’art concernant le NLP. La possibilité d’utiliser un modèle pré-entraîné tel que BERT (ou son équivalent français CamemBERT) puis d’effectuer un
fine-tuning

est sans doute l’approche à adopter pour qui voudrait atteindre des performances proches de l’état de l’art (tout en faisant l’économie d’un apprentissage complet du Transformer), à condition d’avoir à disposition un corpus suffisamment important (mais néanmoins beaucoup moins massif que ceux généralement utilisés pour l’entraînement initial). Les résultats obtenus via ces architectures dérivées des Transformers sont néanmoins encore considérés par la littérature comme relativement difficiles à interpréter. Les méthodes plus simples à comprendre et plus rapides à entraîner gardent donc encore actuellement un intérêt réel, à la fois pour des approches prospectives, mais aussi pour des mises en production. S’appuyer sur une bonne compréhension des concepts clés utilisés en deep learning pour le NLP permet de s’approprier ainsi la boîte à outils nécessaire pour construire le modèle adapté à la situation rencontrée. De nouveaux algorithmes, bâtis à partir de ces concepts et de plus en plus performants (parmi lesquels GPT-2 ou GPT-3), apparaissent régulièrement mais reste à l’heure actuel peu accessible au grand public (en particulier pour des raisons de droits d’exploitation).

Récapitulatif des ressources pertinentes

Embeddings

https://www.coursera.org/learn/natural-language-processing-tensorflow

https://www.coursera.org/learn/language-processing

Pagliardini et al. Unsupervised Learning of Sentence Embeddings using Compositional n-Gram Features (2017)

Wu et al. StarSpace: Embed All The Things! (2017)

Yang et al. Multilingual Universal Sentence Encoder for Semantic Retrieval (2019)

Bojanowski et al. Enriching Word Vectors with Subword Information (2017)

Yang et al. Multilingual Universal Sentence Encoder for Semantic Retrieval (2019)

LSTM

https://blog.engineering.publicissapient.fr/2020/09/23/long-short-term-memory-lstm-networks-for-time-series-forecasting/

Hochreiter et Schmidhuber Long short-term memory  (1997)

Encoder-decoder

Sutskever et al. Sequence to Sequence Learning with Neural Networks  (2014)

Mécanisme d’attention

Vaswani et al. Attention is all you need (2017)

Transformers

Vaswani et al. Attention is all you need (2017)

Devlin et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2019)

Martin et al. CamemBERT: a Tasty French Language Model (2019)

Implémentation

https://github.com/google-research/bert

https://storage.googleapis.com/bert_models/2018_11_23/multi_cased_L-12_H-768_A-12.zip

https://github.com/huggingface/transformers

Pour CamemBERT spécifiquement

https://camembert-model.fr/


[1] https://samyzaf.com/ML/nlp/nlp.html et https://towardsdatascience.com/word-embeddings-in-2020-review-with-code-examples-11eb39a1ee6d

[2] https://arxiv.org/abs/1301.3781

[3] https://fr.wikipedia.org/wiki/Word_embedding

[4] https://fr.wikipedia.org/wiki/Word_embedding

[5] https://fr.wikipedia.org/wiki/N-gramme

[6] https://fasttext.cc/

[7]https://www.coursera.org/learn/language-processing/lecture/yqddn/why-words-from-character-to-sentence-embeddings

[8] https://github.com/facebookresearch/StarSpace

[9]https://github.com/RaRe-Technologies/gensim/blob/ca0dcaa1eca8b1764f6456adac5719309e0d8e6d/docs/notebooks/doc2vec-IMDB.ipynb

[10] http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.676.4320&rep=rep1&type=pdf

[11] https://colah.github.io/posts/2015-08-Understanding-LSTMs/

[12]https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21

[13] https://arxiv.org/pdf/1409.3215.pdf

[14]https://towardsdatascience.com/understanding-encoder-decoder-sequence-to-sequence-model-679e04af4346

[15] Issu de https://www.analyticsvidhya.com/blog/2019/11/comprehensive-guide-attention-mechanism-deep-learning/

[16] https://arxiv.org/pdf/1409.0473.pdf (section 3)

[17] https://arxiv.org/pdf/1706.03762.pdf

[18] https://arxiv.org/pdf/1706.03762.pdf (Figure 1)

[19] https://towardsdatascience.com/understanding-encoder-decoder-sequence-to-sequence-model-679e04af4346

https://medium.com/inside-machine-learning/what-is-a-transformer-d07dd1fbec04

[20] https://lesdieuxducode.com/blog/2019/4/bert–le-transformer-model-qui-sentraine-et-qui-represente

[21] https://arxiv.org/pdf/1810.04805.pdf (Section 3)

[22] https://arxiv.org/pdf/1810.04805.pdf (Figure 1)

[23] https://arxiv.org/pdf/1810.04805.pdf (section 4)

[24] Voir par exemple doi:10.18653/v1/D19-1445 ou doi:10.18653/v1/w19-4828

[25] https://arxiv.org/pdf/1911.03894.pdf

Published by

Commentaire

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.