Transformers documentation

Comment đŸ€— Transformers rĂ©sout ces tĂąches

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Comment đŸ€— Transformers rĂ©sout ces tĂąches

Dans Ce que đŸ€— Transformers peut faire, vous avez dĂ©couvert les tĂąches de traitement du langage naturel (NLP), de traitement de la parole et de l’audio, de vision par ordinateur, ainsi que certaines de leurs applications importantes. Cette page se penche sur la maniĂšre dont les modĂšles rĂ©solvent ces tĂąches et explique les processus en arriĂšre-plan. Bien que diffĂ©rents modĂšles puissent utiliser diverses techniques ou approches innovantes, les modĂšles Transformer suivent gĂ©nĂ©ralement une idĂ©e commune. GrĂące Ă  leur architecture flexible, la plupart des modĂšles sont basĂ©s sur un encodeur, un dĂ©codeur ou une combinaison encodeur-dĂ©codeur. En plus des modĂšles Transformer, notre bibliothĂšque comprend Ă©galement des rĂ©seaux de neurones convolutifs (CNN), qui restent utilisĂ©s pour les tĂąches de vision par ordinateur. Nous expliquerons aussi le fonctionnement d’un CNN moderne.

Voici comment différents modÚles résolvent des tùches spécifiques :

  • Wav2Vec2 pour la classification audio et la reconnaissance vocale (ASR en anglais)
  • Vision Transformer (ViT) et ConvNeXT pour la classification d’images
  • DETR pour la dĂ©tection d’objets
  • Mask2Former pour la segmentation d’images
  • GLPN pour l’estimation de la profondeur
  • BERT pour les tĂąches de traitement du language naturel telles que la classification de texte, la classification des tokens et la rĂ©ponse Ă  des questions utilisant un encodeur
  • GPT2 pour les tĂąches de traitement du language naturel telles que la gĂ©nĂ©ration de texte utilisant un dĂ©codeur
  • BART pour les tĂąches de traitement du language naturel telles que le rĂ©sumĂ© de texte et la traduction utilisant un encodeur-dĂ©codeur

Avant de poursuivre, il est utile d’avoir quelques connaissances de base sur l’architecture des Transformers. Comprendre le fonctionnement des encodeurs, des dĂ©codeurs et du mĂ©canisme d’attention vous aidera Ă  saisir comment les diffĂ©rents modĂšles Transformer fonctionnent. Si vous dĂ©butez ou avez besoin d’un rappel, consultez notre cours pour plus d’informations !

Paroles et audio

Wav2Vec2 est un modÚle auto-supervisé qui est préentraßné sur des données de parole non étiquetées et ajusté sur des données étiquetées pour des tùches telles que la classification audio et la reconnaissance vocale (ASR).

Ce modĂšle comporte quatre composants principaux :

  1. Encodeur de caractéristiques (feature encoder): Il prend le signal audio brut, le normalise pour avoir une moyenne nulle et une variance unitaire, et le convertit en une séquence de vecteurs de caractéristiques, chacun représentant une durée de 20 ms.

  2. Module de quantification (quantization module): Les vecteurs de caractĂ©ristiques sont passĂ©s Ă  ce module pour apprendre des unitĂ©s de parole discrĂštes. Chaque vecteur est associĂ© Ă  un codebook (une collection de mots-clĂ©s), et l’unitĂ© de parole la plus reprĂ©sentative est sĂ©lectionnĂ©e parmi celles du codebook et transmise au modĂšle.

  3. Réseau de contexte (context network): Environ la moitié des vecteurs de caractéristiques sont masqués aléatoirement. Les vecteurs masqués sont ensuite envoyés à un réseau de contexte, qui est un encodeur qui ajoute des embeddings positionnels relatifs.

  4. TĂąche contrastive (contrastive task): Le rĂ©seau de contexte est prĂ©entraĂźnĂ© avec une tĂąche contrastive. Le modĂšle doit prĂ©dire la vĂ©ritable unitĂ© de parole quantifiĂ©e Ă  partir de la prĂ©diction masquĂ©e parmi un ensemble de fausses, ce qui pousse le modĂšle Ă  trouver l’unitĂ© de parole quantifiĂ©e la plus proche de la prĂ©diction.

Une fois prĂ©entraĂźnĂ©, wav2vec2 peut ĂȘtre ajustĂ© sur vos propres donnĂ©es pour des tĂąches comme la classification audio ou la reconnaissance automatique de la parole !

Classification audio

Pour utiliser le modĂšle prĂ©entraĂźnĂ© pour la classification audio, ajoutez une tĂȘte de classification de sĂ©quence au-dessus du modĂšle Wav2Vec2 de base. Cette tĂȘte de classification est une couche linĂ©aire qui reçoit les Ă©tats cachĂ©s (hidden states) de l’encodeur. Ces Ă©tats cachĂ©s, qui reprĂ©sentent les caractĂ©ristiques apprises de chaque trame audio, peuvent avoir des longueurs variables. Pour obtenir un vecteur de longueur fixe, les Ă©tats cachĂ©s sont d’abord regroupĂ©s, puis transformĂ©s en logits correspondant aux Ă©tiquettes de classe. La perte d’entropie croisĂ©e est calculĂ©e entre les logits et la cible pour dĂ©terminer la classe la plus probable.

PrĂȘt Ă  vous lancer dans la classification audio ? Consultez notre guide complet de classification audio pour apprendre Ă  ajuster Wav2Vec2 et Ă  l’utiliser pour l’infĂ©rence !

Reconnaissance vocale

Pour utiliser le modĂšle prĂ©entraĂźnĂ© pour la reconnaissance vocale, ajoutez une tĂȘte de modĂ©lisation du langage au-dessus du modĂšle Wav2Vec2 de base pour la classification temporelle connexionniste (CTC). Cette tĂȘte de modĂ©lisation du langage est une couche linĂ©aire qui prend les Ă©tats cachĂ©s (hidden states) de l’encodeur et les convertit en logits. Chaque logit correspond Ă  une classe de token (le nombre de tokens provient du vocabulaire de la tĂąche). La perte CTC est calculĂ©e entre les logits et les cibles (targets) pour identifier la sĂ©quence de tokens la plus probable, qui est ensuite dĂ©codĂ©e en transcription.

PrĂȘt Ă  vous lancer dans la reconnaissance automatique de la parole ? Consultez notre guide complet de reconnaissance automatique de la parole pour apprendre Ă  ajuster Wav2Vec2 et Ă  l’utiliser pour l’infĂ©rence !

Vision par ordinateur

Il existe deux façons d’aborder les tñches de vision par ordinateur :

  1. Diviser une image en une séquence de patches et les traiter en parallÚle avec un Transformer.
  2. Utiliser un CNN moderne, comme ConvNeXT, qui repose sur des couches convolutionnelles mais adopte des conceptions de réseau modernes.

Une troisiÚme approche combine les Transformers avec des convolutions (par exemple, Convolutional Vision Transformer ou LeViT). Nous ne discuterons pas de ces approches ici, car elles mélangent simplement les deux approches que nous examinons.

ViT et ConvNeXT sont couramment utilisĂ©s pour la classification d’images. Pour d’autres tĂąches de vision par ordinateur comme la dĂ©tection d’objets, la segmentation et l’estimation de la profondeur, nous examinerons respectivement DETR, Mask2Former et GLPN, qui sont mieux adaptĂ©s Ă  ces tĂąches.

Classification d’images

ViT et ConvNeXT peuvent tous deux ĂȘtre utilisĂ©s pour la classification d’images ; la principale diffĂ©rence rĂ©side dans leurs approches : ViT utilise un mĂ©canisme d’attention tandis que ConvNeXT repose sur des convolutions.

Transformer

ViT remplace entiĂšrement les convolutions par une architecture Transformer pure. Si vous ĂȘtes dĂ©jĂ  familiarisĂ© avec le Transformer original, vous trouverez que ViT suit des principes similaires, mais adaptĂ©s pour traiter les images comme des sĂ©quences de patches.

Le principal changement introduit par ViT concerne la façon dont les images sont fournies à un Transformer :

  1. Tokenisation des images : L’image est divisĂ©e en patches carrĂ©s non chevauchants, chacun Ă©tant transformĂ© en un vecteur ou embedding de patch. Ces embeddings de patch sont gĂ©nĂ©rĂ©s Ă  partir d’une couche convolutionnelle 2D pour adapter les dimensions d’entrĂ©e (par exemple, 768 valeurs pour chaque embedding de patch). Si vous avez une image de 224x224 pixels, elle peut ĂȘtre divisĂ©e en 196 patches de 16x16 pixels. Ainsi, une image est “tokenisĂ©e” en une sĂ©quence de patches.

  2. Token [CLS] : Un embedding apprenables spĂ©cial, appelĂ© token [CLS], est ajoutĂ© au dĂ©but des embeddings de patch, similaire Ă  BERT. L’état cachĂ© final du token [CLS] est utilisĂ© comme entrĂ©e pour la tĂȘte de classification attachĂ©e, tandis que les autres sorties sont ignorĂ©es. Ce token aide le modĂšle Ă  encoder une reprĂ©sentation globale de l’image.

  3. Embeddings de position : Pour que le modĂšle comprenne l’ordre des patches, des embeddings de position sont ajoutĂ©s aux embeddings de patch. Ces embeddings de position, Ă©galement apprenables et de la mĂȘme taille que les embeddings de patch, permettent au modĂšle de saisir la structure spatiale de l’image.

  4. Classification : Les embeddings, enrichis des embeddings de position, sont ensuite traitĂ©s par l’encodeur Transformer. La sortie associĂ©e au token [CLS] est passĂ©e Ă  une tĂȘte de perceptron multicouche (MLP) pour la classification. La tĂȘte MLP convertit cette sortie en logits pour chaque Ă©tiquette de classe, et la perte d’entropie croisĂ©e est calculĂ©e pour dĂ©terminer la classe la plus probable.

PrĂȘt Ă  vous essayer Ă  la classification d’images ? Consultez notre guide complet de classification d’images pour apprendre Ă  ajuster ViT et Ă  l’utiliser pour l’infĂ©rence !

CNN

Cette section explique briĂšvement les convolutions, mais il serait utile d’avoir une comprĂ©hension prĂ©alable de la façon dont elles modifient la forme et la taille d’une image. Si vous n’ĂȘtes pas familier avec les convolutions, consultez le chapitre sur les rĂ©seaux de neurones convolutionnels du livre fastai !

ConvNeXT est une architecture CNN qui adopte des conceptions de rĂ©seau modernes pour amĂ©liorer les performances. Cependant, les convolutions restent au cƓur du modĂšle. D’un point de vue gĂ©nĂ©ral, une convolution est une opĂ©ration oĂč une matrice plus petite (noyau) est multipliĂ©e par une petite fenĂȘtre de pixels de l’image. Elle calcule certaines caractĂ©ristiques Ă  partir de cette fenĂȘtre, comme une texture particuliĂšre ou la courbure d’une ligne. Ensuite, elle se dĂ©place vers la fenĂȘtre suivante de pixels ; la distance parcourue par la convolution est appelĂ©e le stride.

Une convolution de base sans padding ni stride, tirée de Un guide des calculs de convolution pour l'apprentissage profond.

Vous pouvez alimenter la sortie d’une couche convolutionnelle Ă  une autre couche convolutionnelle. À chaque couche successive, le rĂ©seau apprend des caractĂ©ristiques de plus en plus complexes et abstraites, telles que des objets spĂ©cifiques comme des hot-dogs ou des fusĂ©es. Entre les couches convolutionnelles, il est courant d’ajouter des couches de pooling pour rĂ©duire la dimensionnalitĂ© et rendre le modĂšle plus robuste aux variations de position des caractĂ©ristiques.

ConvNeXT modernise un CNN de cinq maniĂšres :

  1. Modification du nombre de blocs : ConvNeXT utilise une approche similaire à ViT en “patchifiant” l’image avec un stride plus grand et une taille de noyau correspondante, divisant ainsi l’image en patches non chevauchants.

  2. Couche de goulot d’étranglement (bottleneck layer) : Cette couche rĂ©duit puis restaure le nombre de canaux pour accĂ©lĂ©rer les convolutions 1x1, permettant une plus grande profondeur du rĂ©seau. Un goulot d’étranglement inversĂ© augmente d’abord le nombre de canaux avant de les rĂ©duire, optimisant ainsi l’utilisation de la mĂ©moire.

  3. Convolution en profondeur (depthwise convolution): Remplace la convolution 3x3 traditionnelle par une convolution appliquĂ©e Ă  chaque canal d’entrĂ©e sĂ©parĂ©ment, amĂ©liorant ainsi la largeur du rĂ©seau et ses performances.

  4. Augmentation de la taille du noyau : ConvNeXT utilise un noyau de 7x7 pour imiter le champ rĂ©ceptif global de ViT, ce qui permet de capturer des informations sur une plus grande partie de l’image.

  5. Changements de conception des couches : Le modĂšle adopte des modifications inspirĂ©es des Transformers, telles que moins de couches d’activation et de normalisation, l’utilisation de GELU au lieu de ReLU, et LayerNorm plutĂŽt que BatchNorm.

La sortie des blocs de convolution est ensuite passĂ©e Ă  une tĂȘte de classification, qui convertit les sorties en logits et calcule la perte d’entropie croisĂ©e pour dĂ©terminer l’étiquette la plus probable.

Object detection

DETR, DEtection TRansformer, est un modĂšle de dĂ©tection d’objets de bout en bout qui combine un CNN avec un encodeur-dĂ©codeur Transformer.

DĂ©composons le fonctionnement de DETR (DEtection TRansformer) pour la dĂ©tection d’objets :

  1. Extraction des caractĂ©ristiques avec le CNN : Un CNN prĂ©entraĂźnĂ©, appelĂ© backbone, prend une image et gĂ©nĂšre une carte de caractĂ©ristiques (feature map) Ă  basse rĂ©solution. Une convolution 1x1 est ensuite appliquĂ©e pour rĂ©duire la dimensionnalitĂ© et crĂ©er une nouvelle carte de caractĂ©ristiques qui reprĂ©sente des abstractions de plus haut niveau de l’image. Cette derniĂšre est ensuite aplatie en une sĂ©quence de vecteurs de caractĂ©ristiques, qui sont combinĂ©s avec des embeddings positionnels.

  2. Traitement avec l’encodeur et le dĂ©codeur : Les vecteurs de caractĂ©ristiques sont passĂ©s Ă  l’encodeur, qui apprend les reprĂ©sentations de l’image avec ses couches d’attention. Les Ă©tats cachĂ©s de l’encodeur sont ensuite combinĂ©s avec des objects queries dans le dĂ©codeur. Ces objects queries sont des embeddings appris qui se concentrent sur diffĂ©rentes rĂ©gions de l’image et sont mis Ă  jour Ă  chaque couche d’attention. Les Ă©tats cachĂ©s du dĂ©codeur sont utilisĂ©s pour prĂ©dire les coordonnĂ©es de la boĂźte englobante (bounding box) et le label de la classe pour chaque objet query, ou pas d'objet si aucun objet n’est dĂ©tectĂ©.

  3. Perte de correspondance bipartite : Lors de l’entraĂźnement, DETR utilise une perte de correspondance bipartite pour comparer un nombre fixe de prĂ©dictions avec un ensemble fixe de labels de vĂ©ritĂ© terrain. Si le nombre de labels de vĂ©ritĂ© terrain est infĂ©rieur au nombre de N labels, ils sont complĂ©tĂ©s avec une classe pas d'objet. Cette fonction de perte encourage DETR Ă  trouver une correspondance un Ă  un entre les prĂ©dictions et les labels de vĂ©ritĂ© terrain. Si les boĂźtes englobantes ou les labels de classe ne sont pas corrects, une perte est encourue. De mĂȘme, si DETR prĂ©dit un objet inexistant, il est pĂ©nalisĂ©. Cela encourage DETR Ă  trouver d’autres objets dans l’image au lieu de se concentrer sur un seul objet trĂšs proĂ©minent.

Une tĂȘte de dĂ©tection d’objets est ajoutĂ©e au-dessus de DETR pour trouver le label de la classe et les coordonnĂ©es de la boĂźte englobante. Cette tĂȘte de dĂ©tection d’objets comprend deux composants : une couche linĂ©aire pour transformer les Ă©tats cachĂ©s du dĂ©codeur en logits sur les labels de classe, et un MLP pour prĂ©dire la boĂźte englobante.

PrĂȘt Ă  essayer la dĂ©tection d’objets ? Consultez notre guide complet sur la dĂ©tection d’objets pour apprendre Ă  affiner DETR et Ă  l’utiliser pour l’infĂ©rence !

Segmentation d’image

Mask2Former est une architecture polyvalente conçue pour traiter tous les types de tĂąches de segmentation d’image. Contrairement aux modĂšles de segmentation traditionnels, qui sont gĂ©nĂ©ralement spĂ©cialisĂ©s dans des sous-tĂąches spĂ©cifiques comme la segmentation d’instances, sĂ©mantique ou panoptique, Mask2Former aborde chaque tĂąche comme un problĂšme de classification de masques. Cette approche regroupe les pixels en N segments et prĂ©dit pour chaque image N masques ainsi que leur Ă©tiquette de classe correspondante. Dans cette section, nous vous expliquerons le fonctionnement de Mask2Former et vous aurez la possibilitĂ© d’effectuer un rĂ©glage fin (fine-tuning) de SegFormer Ă  la fin.

Il y a trois composants principaux dans Mask2Former :

  1. Un backbone Swin qui prend une image en entrée et génÚre une carte de caractéristiques (feature map) à basse résolution aprÚs trois convolutions successives de 3x3.

  2. Cette carte de caractĂ©ristiques est ensuite envoyĂ©e Ă  un dĂ©codeur de pixels, qui augmente progressivement la rĂ©solution des caractĂ©ristiques pour obtenir des embeddings par pixel en haute rĂ©solution. Le dĂ©codeur de pixels produit des caractĂ©ristiques multi-Ă©chelles, comprenant des rĂ©solutions de 1/32, 1/16, et 1/8 de l’image originale.

  3. Les cartes de caractĂ©ristiques Ă  diffĂ©rentes Ă©chelles sont successivement traitĂ©es par une couche de dĂ©codeur Transformer, permettant de capturer les petits objets Ă  partir des caractĂ©ristiques haute rĂ©solution. Le point central de Mask2Former est le mĂ©canisme de masquage d’attention dans le dĂ©codeur. Contrairement Ă  l’attention croisĂ©e, qui peut se concentrer sur l’ensemble de l’image, l’attention masquĂ©e se focalise uniquement sur certaines zones spĂ©cifiques. Cette approche est plus rapide et amĂ©liore les performances en permettant au modĂšle de se concentrer sur les dĂ©tails locaux de l’image.

  4. À l’instar de DETR, Mask2Former utilise Ă©galement des requĂȘtes d’objet apprises, qu’il combine avec les caractĂ©ristiques de l’image du dĂ©codeur de pixels pour faire des prĂ©dictions globales (c’est-Ă -dire, Ă©tiquette de classe, prĂ©diction de masque). Les Ă©tats cachĂ©s du dĂ©codeur sont passĂ©s dans une couche linĂ©aire pour ĂȘtre transformĂ©s en logits correspondant aux Ă©tiquettes de classe. La perte d’entropie croisĂ©e est alors calculĂ©e entre les logits et l’étiquette de classe pour dĂ©terminer la plus probable.

    Les prĂ©dictions de masque sont gĂ©nĂ©rĂ©es en combinant les embeddings de pixels avec les Ă©tats cachĂ©s finaux du dĂ©codeur. La perte d’entropie croisĂ©e sigmoĂŻde et la perte de Dice sont calculĂ©es entre les logits et le masque de vĂ©ritĂ© terrain pour dĂ©terminer le masque le plus probable.

PrĂȘt Ă  vous lancer dans la dĂ©tection d’objets ? Consultez notre guide complet sur la segmentation d’image pour apprendre Ă  affiner SegFormer et l’utiliser pour l’infĂ©rence !

Estimation de la profondeur

GLPN, Global-Local Path Network, est un Transformer pour l’estimation de profondeur qui combine un encodeur SegFormer avec un dĂ©codeur lĂ©ger.

1. Comme avec ViT, une image est divisée en une séquence de patches, mais ces patches sont plus petits. Cette approche est particuliÚrement adaptée aux tùches de prédiction dense telles que la segmentation ou l'estimation de profondeur. Les patches d'image sont transformés en embeddings (voir la section [classification d'image](#image-classification) pour plus de détails sur la création des embeddings), puis envoyés à l'encodeur.
  1. L’encodeur traite les embeddings de patches Ă  travers plusieurs blocs d’encodeur. Chaque bloc comprend des couches d’attention et de Mix-FFN, conçues pour fournir des informations positionnelles. À la fin de chaque bloc, une couche de fusion de patches crĂ©e des reprĂ©sentations hiĂ©rarchiques. Les caractĂ©ristiques des groupes de patches voisins sont concatĂ©nĂ©es, et une couche linĂ©aire est appliquĂ©e pour rĂ©duire le nombre de patches Ă  une rĂ©solution de 1/4. Ce processus est rĂ©pĂ©tĂ© dans les blocs suivants jusqu’à obtenir des caractĂ©ristiques d’image avec des rĂ©solutions de 1/8, 1/16, et 1/32.

  2. Un dĂ©codeur lĂ©ger prend la derniĂšre carte de caractĂ©ristiques (Ă  l’échelle 1/32) de l’encodeur et l’agrandit Ă  l’échelle 1/16. Ensuite, cette caractĂ©ristique passe par un module de Fusion de CaractĂ©ristiques SĂ©lective (SFF), qui sĂ©lectionne et combine les caractĂ©ristiques locales et globales Ă  partir d’une carte d’attention pour chaque caractĂ©ristique, puis l’agrandit Ă  1/8. Ce processus est rĂ©pĂ©tĂ© jusqu’à ce que les caractĂ©ristiques dĂ©codĂ©es aient la mĂȘme taille que l’image originale. La sortie est ensuite traitĂ©e par deux couches de convolution, suivies d’une activation sigmoĂŻde pour prĂ©dire la profondeur de chaque pixel.

Traitement du langage naturel

Le Transformer a Ă©tĂ© initialement conçu pour la traduction automatique, et depuis, il est devenu pratiquement l’architecture par dĂ©faut pour rĂ©soudre toutes les tĂąches de traitement du langage naturel (NLP). Certaines tĂąches se prĂȘtent bien Ă  la structure d’encodeur du Transformer, tandis que d’autres sont mieux adaptĂ©es au dĂ©codeur. D’autres tĂąches encore utilisent Ă  la fois la structure encodeur-dĂ©codeur du Transformer.

Classification de texte

BERT est un modĂšle basĂ© uniquement sur l’encodeur, qui a Ă©tĂ© le premier Ă  intĂ©grer efficacement la bidirectionnalitĂ© profonde pour obtenir des reprĂ©sentations plus riches du texte en tenant compte des mots en amont et en aval.

  1. BERT utilise la tokenisation WordPiece pour gĂ©nĂ©rer des embeddings de tokens Ă  partir du texte. Pour diffĂ©rencier une seule phrase d’une paire de phrases, un token spĂ©cial [SEP] est ajoutĂ©. De plus, un token spĂ©cial [CLS] est placĂ© au dĂ©but de chaque sĂ©quence de texte. La sortie finale associĂ©e au token [CLS] est utilisĂ©e comme entrĂ©e pour la tĂȘte de classification des tĂąches. BERT ajoute Ă©galement un embedding de segment pour indiquer si un token appartient Ă  la premiĂšre ou Ă  la deuxiĂšme phrase dans une paire.

  2. BERT est prĂ©entraĂźnĂ© avec deux objectifs : le masquage de mots (masked language modeling) et la prĂ©diction de la phrase suivante. Pour le masquage de mots, un pourcentage des tokens d’entrĂ©e est masquĂ© alĂ©atoirement, et le modĂšle doit prĂ©dire ces mots. Cela permet de surmonter le problĂšme de la bidirectionnalitĂ©, oĂč le modĂšle pourrait autrement tricher en voyant tous les mots et en “prĂ©dire” le mot suivant. Les Ă©tats cachĂ©s finaux des tokens masquĂ©s sont passĂ©s Ă  un rĂ©seau feedforward avec une fonction softmax sur le vocabulaire pour prĂ©dire le mot masquĂ©.

    Le deuxiĂšme objectif de prĂ©entraĂźnement est la prĂ©diction de la phrase suivante. Le modĂšle doit dĂ©terminer si la phrase B suit la phrase A. Dans la moitiĂ© des cas, la phrase B est la phrase suivante, et dans l’autre moitiĂ©, elle est alĂ©atoire. Cette prĂ©diction (phrase suivante ou non) est envoyĂ©e Ă  un rĂ©seau feedforward avec une softmax sur les deux classes (IsNext et NotNext).

  3. Les embeddings d’entrĂ©e sont traitĂ©s par plusieurs couches d’encodeur pour produire des Ă©tats cachĂ©s finaux.

Pour utiliser le modĂšle prĂ©entraĂźnĂ© pour la classification de texte, ajoutez une tĂȘte de classification de sĂ©quence au-dessus du modĂšle BERT de base. Cette tĂȘte est une couche linĂ©aire qui prend les Ă©tats cachĂ©s finaux et les transforme en logits. La perte d’entropie croisĂ©e est ensuite calculĂ©e entre les logits et les cibles pour dĂ©terminer l’étiquette la plus probable.

PrĂȘt Ă  essayer la classification de texte ? Consultez notre guide complet sur la classification de texte pour apprendre Ă  effectuer un rĂ©glagle fin (fine-tuning) de DistilBERT et l’utiliser pour l’infĂ©rence !

Classification de tokens

Pour utiliser BERT dans des tĂąches de classification de tokens, comme la reconnaissance d’entitĂ©s nommĂ©es (NER), ajoutez une tĂȘte de classification de tokens au-dessus du modĂšle BERT de base. Cette tĂȘte est une couche linĂ©aire qui prend les Ă©tats cachĂ©s finaux et les transforme en logits. La perte d’entropie croisĂ©e est ensuite calculĂ©e entre les logits et les labels de chaque token pour dĂ©terminer l’étiquette la plus probable.

PrĂȘt Ă  essayer la classification de tokens ? Consultez notre guide complet sur la classification de tokens pour dĂ©couvrir comment effectuer un rĂ©glagle fin (fine-tuning) de DistilBERT et l’utiliser pour l’infĂ©rence !

RĂ©ponse aux questions - ( Question Answering )

Pour utiliser BERT pour la rĂ©ponse aux questions, ajoutez une tĂȘte de classification de span au-dessus du modĂšle BERT de base. Cette tĂȘte est une couche linĂ©aire qui transforme les Ă©tats cachĂ©s finaux en logits pour les positions de dĂ©but et de fin du span correspondant Ă  la rĂ©ponse. La perte d’entropie croisĂ©e est calculĂ©e entre les logits et les positions rĂ©elles pour dĂ©terminer le span de texte le plus probable en tant que rĂ©ponse.

PrĂȘt Ă  essayer la rĂ©ponse aux questions ? Consultez notre guide complet sur la rĂ©ponse aux questions pour dĂ©couvrir comment effectuer un rĂ©glagle fin (fine-tuning) de DistilBERT et l’utiliser pour l’infĂ©rence !

💡 Une fois BERT prĂ©entraĂźnĂ©, il est incroyablement facile de l’adapter Ă  diverses tĂąches ! Il vous suffit d’ajouter une tĂȘte spĂ©cifique au modĂšle prĂ©entraĂźnĂ© pour transformer les Ă©tats cachĂ©s en la sortie souhaitĂ©e.

Génération de texte

GPT-2 est un modĂšle basĂ© uniquement sur le dĂ©codeur, prĂ©entraĂźnĂ© sur une grande quantitĂ© de texte. Il peut gĂ©nĂ©rer du texte convaincant (bien que parfois inexact !) Ă  partir d’une invite et accomplir d’autres tĂąches de NLP, comme la rĂ©ponse aux questions, mĂȘme s’il n’a pas Ă©tĂ© spĂ©cifiquement entraĂźnĂ© pour ces tĂąches.

  1. GPT-2 utilise le byte pair encoding (BPE) pour tokeniser les mots et gĂ©nĂ©rer des embeddings de tokens. Des encodages positionnels sont ajoutĂ©s pour indiquer la position de chaque token dans la sĂ©quence. Les embeddings d’entrĂ©e passent Ă  travers plusieurs blocs de dĂ©codeur pour produire des Ă©tats cachĂ©s finaux. Chaque bloc de dĂ©codeur utilise une couche d’attention masquĂ©e, ce qui signifie que GPT-2 ne peut pas se concentrer sur les tokens futurs et est uniquement autorisĂ© Ă  se focaliser sur les tokens Ă  gauche dans le texte. Cela diffĂšre du token mask de BERT, car ici, dans l’attention masquĂ©e, un masque d’attention est utilisĂ© pour attribuer un score de 0 aux tokens futurs.

  2. La sortie du dĂ©codeur est ensuite envoyĂ©e Ă  une tĂȘte de modĂ©lisation du langage, qui effectue une transformation linĂ©aire pour convertir les Ă©tats cachĂ©s en logits. L’étiquette est le token suivant dans la sĂ©quence, obtenue en dĂ©calant les logits vers la droite d’une position. La perte d’entropie croisĂ©e est calculĂ©e entre les logits dĂ©calĂ©s et les Ă©tiquettes pour dĂ©terminer le token suivant le plus probable.

L’objectif de prĂ©entraĂźnement de GPT-2 est basĂ© sur la modĂ©lisation du langage causale, qui consiste Ă  prĂ©dire le mot suivant dans une sĂ©quence. Cette approche rend GPT-2 particuliĂšrement efficace pour les tĂąches de gĂ©nĂ©ration de texte.

PrĂȘt Ă  essayer la gĂ©nĂ©ration de texte ? Consultez notre guide complet sur la modĂ©lisation du langage causale pour dĂ©couvrir comment effectuer un rĂ©glagle fin (fine-tuning) de DistilGPT-2 et l’utiliser pour l’infĂ©rence !

Pour plus d’informations sur la gĂ©nĂ©ration de texte, consultez le guide sur les stratĂ©gies de gĂ©nĂ©ration de texte !

Résumé de texte

Les modĂšles encodeur-dĂ©codeur tels que BART et T5 sont conçus pour les tĂąches de rĂ©sumĂ© en mode sĂ©quence-Ă -sĂ©quence. Dans cette section, nous expliquerons le fonctionnement de BART, puis vous aurez l’occasion de dĂ©couvrir comment rĂ©aliser un rĂ©glagle fin (fine-tuning) de T5.

  1. L’architecture de l’encodeur de BART est trĂšs similaire Ă  celle de BERT, acceptant des embeddings de tokens et des embeddings positionnels du texte. BART est prĂ©entraĂźnĂ© en corrompant l’entrĂ©e et en la reconstruisant avec le dĂ©codeur. Contrairement Ă  d’autres encodeurs utilisant des stratĂ©gies de corruption spĂ©cifiques, BART peut appliquer divers types de corruption, parmi lesquelles la stratĂ©gie de text infilling est la plus efficace. Dans le text infilling, plusieurs segments de texte sont remplacĂ©s par un seul token mask. Cette approche est cruciale car elle force le modĂšle Ă  prĂ©dire les tokens masquĂ©s et Ă  estimer le nombre de tokens manquants. Les embeddings d’entrĂ©e et les spans masquĂ©s sont passĂ©s Ă  l’encodeur pour produire des Ă©tats cachĂ©s finaux. Contrairement Ă  BERT, BART ne comporte pas de rĂ©seau feedforward final pour prĂ©dire un mot.

  2. La sortie de l’encodeur est transmise au dĂ©codeur, qui doit prĂ©dire Ă  la fois les tokens masquĂ©s et les tokens non corrompus. Ce contexte supplĂ©mentaire aide le dĂ©codeur Ă  restaurer le texte original. La sortie du dĂ©codeur est ensuite envoyĂ©e Ă  une tĂȘte de modĂ©lisation du langage, qui transforme les Ă©tats cachĂ©s en logits. La perte d’entropie croisĂ©e est calculĂ©e entre les logits et l’étiquette, qui est simplement le token dĂ©calĂ© vers la droite.

PrĂȘt Ă  essayer le rĂ©sumĂ© ? Consultez notre guide complet sur le rĂ©sumĂ© pour apprendre Ă  effectuer un rĂ©glage fin (fine-tuning) de T5 et l’utiliser pour l’infĂ©rence !

Pour plus d’informations sur la gĂ©nĂ©ration de texte, consultez le guide sur les stratĂ©gies de gĂ©nĂ©ration de texte !

Traduction

La traduction est un autre exemple de tĂąche sĂ©quence-Ă -sĂ©quence, ce qui signifie qu’un modĂšle encodeur-dĂ©codeur comme BART ou T5 peut ĂȘtre utilisĂ© pour cette tĂąche. Nous expliquerons ici comment BART fonctionne pour la traduction, puis vous pourrez dĂ©couvrir comment affiner T5.

BART adapte le modĂšle Ă  la traduction en ajoutant un encodeur sĂ©parĂ©, initialisĂ© alĂ©atoirement, pour mapper la langue source en une entrĂ©e qui peut ĂȘtre dĂ©codĂ©e dans la langue cible. Les embeddings de cet encodeur sont ensuite passĂ©s Ă  l’encodeur prĂ©entraĂźnĂ© au lieu des embeddings de mots originaux. L’encodeur source est entraĂźnĂ© en mettant Ă  jour l’encodeur source, les embeddings positionnels et les embeddings d’entrĂ©e avec la perte d’entropie croisĂ©e provenant de la sortie du modĂšle. Les paramĂštres du modĂšle sont figĂ©s lors de cette premiĂšre Ă©tape, et tous les paramĂštres du modĂšle sont entraĂźnĂ©s ensemble lors de la deuxiĂšme Ă©tape.

BART a été suivi par une version multilingue, mBART, qui est spécifiquement conçue pour la traduction et préentraßnée sur de nombreuses langues différentes.

PrĂȘt Ă  essayer la traduction ? Consultez notre guide complet sur la traduction pour apprendre Ă  affiner T5 et l’utiliser pour l’infĂ©rence !

Pour plus d’informations sur la gĂ©nĂ©ration de texte, consultez le guide sur les stratĂ©gies de gĂ©nĂ©ration de texte !

< > Update on GitHub