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 :
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.
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.
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.
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 :
- Diviser une image en une séquence de patches et les traiter en parallÚle avec un Transformer.
- 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 :
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.
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.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.
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 :
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.
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.
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.
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.
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 :
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.
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Ă©.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 :
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.
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.
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.
Ă 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.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.
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.
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.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
etNotNext
).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.
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 de0
aux tokens futurs.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.
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.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 !