Dans cette série de 4 articles, nous détaillerons chaque étape clef de l’évolution des algorithmes de machine learning qui ont mené à chatGPT.
Découvrez la première partie de cette série d’articles ici.
Le mécanisme d’attention ([3]) a d’abord été utilisé pour les tâches de traduction. Les algorithmes fonctionnaient sur l’idée des RNN. La phrase à traduire passe dans un RNN (appelé encoder) qui produit un résumé de la phrase, puis rentre dans un second RNN (appelé decoder). Pour traduire, le decoder dispose de deux informations : le résumé global généré par l’encoder, et le résumé en cours produit par le decoder. Au moment d’ajouter un mot à une traduction, l’attention se concentre sur la partie de la phrase de départ la plus pertinente plutôt que de se baser sur un résumé global de celle-ci, pour obtenir un résultat plus exact.’
Au moment de la traduction, le modèle va donc avoir accès non seulement au deux résumés disponibles (celui de l’encoder et du decoder), mais aussi à tous les embedding des mots de départ. En fonction du résumé de la traduction en cours, il va alors donner un score d’importance à chaque mot de la phrase de départ pour déterminer s’il peut servir à générer le suivant. Un nouveau résumé est alors créé en pondérant chaque embedding de la phrase d’entrée en fonction de son intérêt pour la tâche en cours. Cette idée d’attention a permis d’améliorer la performance des modèles, notamment sur les longues phrases, mais pas encore pour les longs documents … Il faudra attendre encore deux améliorations pour cela !
À retenir : dans un RNN encoder-decoder avec attention, le prochain mot se base sur deux résumés (celui de l’encoder et du decoder) et sur une attention calculée entre le résumé du decoder et l’embedding de chaque mot de l’encoder. Pour créer ce résumé, deux cas se présentent :
1. encoder : chaque mot n’a accès qu’au résumé en cours
2. decoder : chaque mot a accès au résumé en cours ET à l’embedding de chaque mot de l’encoder
Attention is all you need ([4]) est un article publié par des chercheurs de Google en 2017, qui, comme son nom l’indique, mise tout sur l’attention. Finis les RNN, place à l’attention et uniquement à l’attention. Le modèle fonctionne toujours sur un principe d’encoder et decoder.
Le rôle de l’encoder est à nouveau de transformer chaque token en un vecteur qui comprend son entourage. Pour cela, chaque token est d’abord transformé en embedding pour le comparer à chacun des autres embeddings de la phrase (dont lui-même) selon le principe de l’attention : si un autre mot paraît important, il pèsera beaucoup plus dans le vecteur final. À la fin de l’encoder, chaque mot est donc transformé en un vecteur basé sur le mécanisme de l’attention.
Le rôle du decoder est similaire au decoder des RNN mais avec le principe de l’attention. Le résumé du décodage en cours est remplacé par une attention. L’embedding du dernier mot généré va donc considérer tous les mots déjà générés, évaluer leur importance et en faire une moyenne pondérée pour générer son propre résumé. Ce résumé va ensuite effectuer le même mécanisme d’attention sur tous les mots de la phrase de l’encoder et générer le vecteur final qui servira de base pour générer le mot suivant.
Ce modèle est appelé transformer par les chercheurs de Google.
À retenir : dans un transformer le prochain mot se base sur un seul résumé créé en 3 étapes:
Ces étapes (attention, encoder, decoders) sont effectuées plusieurs fois afin de permettre au modèle d’avoir plus de latitude pour apprendre le résumé. On parle donc de deep learning ou deep neural network, car les modèles contiennent énormément de calculs successifs.
Cette modification a de nouveau amélioré les performances de l’état de l’art sur des longues phrases, mais ce qu’on veut, ce sont de très long documents !
À bientôt pour la 3ème partie de cet article !
Discover all the latest news, articles, webinar replays and fifty-five events in our monthly newsletter, Tea O'Clock.