0 votes
par dans Séquence 8
reclassée par
Bonjour,

Pourquoi est-ce que c'est la première sortie de la dernière couche du transformer (celui associé au CLS) que l'on fait passer dans le classifieur ? Pourquoi cette sortie et pas une autre ? Pourquoi ne prendre qu'une sortie et pas plusieurs ?

Je fais allusion à slide p 71, et au TP.

Merci beaucoup !

1 Réponse

+1 vote
par Vétéran du GPU 🐋 (20.4k points)
sélectionné par
 
Meilleure réponse
Bonjour,

Il s’agit d’un exemple, d’autres méthodes de “pooling” existent (faire une moyenne de tous les vecteurs par exemple), mais celle-ci est la plus utilisée généralement et je vais un peu détailler pourquoi.

- Tout d’abord, on pourrait choisir un autre vecteur de la séquence et avoir potentiellement de bons résultats. Sauf que la taille des séquences est variable donc si on choisit le 16ème vecteurs mais que la séquence est constituée de 10 vecteurs, on aura un problème. En choisissant le 1er vecteur nous n’avons pas ce problème.

 - Ensuite, avec le modèle BERT, le premier vecteur est souvent associé à la tâche de classification dans le pré-entraînement. Ce qui veut dire que ce vecteur récupère déjà “les informations” de toute la séquence sans entraînement supplémentaire, contrairement aux autres vecteurs de sortie de BERT qui correspondent aux tokens d’entrée (à la fin du pré-entraînement).

 - Enfin, contrairement aux autres méthodes de pooling qui “mettent en commun” les informations de tous les vecteurs (une moyenne par exemple), choisir un vecteur est plus performant car cela ne nécessite pas de calcul supplémentaire.
Les méthodes de fine-tuning avec des Transformers sont assez difficile à expliquer donc n’hésitez pas à me relancer avec d’autres questions.

Cordialement,
par
Super, merci pour votre réponse aussi rapide !

Concernant le 2ème point : pourquoi est-ce-que ce vecteur associé à CLS recupère les "infos" de toute la séquence et pas les autres vecteurs ?

Chaque vecteur en sortie est bien un vecteur dans lequel on a mixé toutes les infos de la séquence ? Est-ce-que le vecteur associé à CLS a un rôle particulier dû au calcul de la matrice d'attention ?

Merci beaucoup !
par Vétéran du GPU 🐋 (20.4k points)
+1
Je vais me concentrer sur le cas BERT pour simplifier ma réponse.

À l'intérieur du Transformer tous les vecteurs vont être “mixés” ensemble de la même manière par le mécanisme d’attention. Sauf que l’on parle ici des vecteurs de sortie après un pré-entrainement de BERT.

Pour rappel, le modèle BERT va essayer de retrouver tous les mots de la séquence d’entrée. Certains tokens de la séquence d’entrée sont cachés mais BERT va sortir tous les tokens de la séquence. Ce qui veut dire que chaque token sortie de BERT correspond à un token d’entrée donc chaque vecteur de sortie de BERT contient les infos d’un seul token.

Comme on l’a vu dans le cours, lorsqu’un token est masqué, on peut le retrouver grâce au token qui l’entoure, c’est pour cela que les infos des tokens vont être mélangés à l'intérieur du Transformer mais BERT va devoir retrouver le token masqué donc sortir le vecteur correspondant à ce token.

Tout ce que je viens de dire correspond aux tokens de la séquence et pas le token “automatique” [CLS]. BERT ne va pas être évalué à retrouver le token [CLS], contrairement aux autres token de la séquences où il va être évalué à les retrouver. Ce premier token va servir à réaliser une autre tâche : “Next Sentence Prediction”. Pour réaliser cette tâche, on va se servir de ce token comme entrée d’un autre petit réseau (comme la slide 71) et pour réaliser cette tâche il y a besoin des infos de toute la séquence. Donc BERT va apprendre à extraire des caractéristiques de toute la séquence et les représenter dans ce vecteur.

Je vous invite à revoir la partie pré-entraînement de BERT dans la vidéo, c’est un peu mieux expliqué.
par
C'est plus clair. Merci beaucoup !
...