@@alexandretl oui , j’ai commencé au moment où j’étais en train d’apprendre l’apprentissage par renforcement. J’étais un peu perdu, et puis je suis tombé sur ta chaîne qui m’a sauvé 😂. Merci
Super video, il y a par contre un abus de langage sur le masque. Il n'est utilisé que dans la version predictive des trasnformers (decoder) voir le papier attention is all you need. Super job sinon
Yes merci! En fait c'est normal puisque tu n'as pas vu la 3e vidéo qui n'est pas encore sortie, mais dans celle ci je dit que le transformer qu'on a vu jusqu'a présent, c'est un décodeur avec une attention causale ;) donc tout va bien
Merci ! Justement on en parle dans la prochaine vidéo qui arrive dans quelques jours, en gros c'est le même mécanisme décrit, mais juste qu'il y en a plusieurs en parallèle
Bonjour, je comprends l'idée générale de l'attention mais j'ai du mal à saisir intuitivement comment le produit q(i)*k(j) nous indique à quel point le modèle doit prêter attention au token j. D'après ce que j'ai compris, les queries et les keys proviennent d'un entrainement, mais je ne comprends pas comment ce produit fournit une mesure de la pertinence/attention du token j. Je sais que la notion de produit scalaire nous donne une information sur la "similarité" entre deux vecteurs. Mais du coup, pourquoi ne pas comparer les clés entre eux ? Pourquoi utiliser une query ? Comment peut-on être certain que le produit q(i)*k(j) donne une information pertinente pour l'attention à accorder au token considéré ? Est-ce que pendant l'entrainement, le modèle comprend que le produit q * k signifie "score d'attention" ? Ou alors on voit empiriquement que c'est mieux d'utiliser deux vecteurs q et k différents ? Désolé si les questions sont mal formulées, je ne vois pas encore très clair étant nouveau dans le NLP. En tout cas, merci beaucoup pour vos vidéos !!
Oui vos questions sont pertinentes ! Pour répondre à "pourquoi pas utiliser juste des keys", je dirais qu'il y a deux réponses : - la première, qui est la réponse la plus "simple" c'est que ça nous fait utiliser plus de paramètres, donc le modèle est plus expressif / puissant - la seconde réponse, elle s'appuie sur la comparaison de ce système d'attention avec des systèmes de recherche traditionnels. Par exemple quand tu lances un recherche sur TH-cam, on va comparer ta demande (query) avec des clés (keys) qui peuvent être des titres de vidéos, des tags, des descriptions etc.. Finalement c'est un peu ce que fait l'attention. Et donc ce qu'il faut voir par là c'est que la demande n'est pas de même nature que les clés, d'où l'idée d'utiliser une key et une query pour l'attention. la première réponse est certaine, la seconde c'est plus de la spéculation sur comment marche le transformer Après biensûr, ça doit sûrement marcher avec seulement des keys, mais moins bien puisque ce n'est pas ce qui est fait en pratique (empiriquement). Et pour finir, oui, le modèle """"apprend"""" à utiliser q * k comme score d'attention pendant l'entraînement (il fait en sorte que q(i)*k(j) donne une information pertinente). J'ai mis des gros guillemets à apprendre puisque ça résulte surtout d'une optimisation mathématique et donc oui il y a un certain apprentissage mais voilà c'est à prendre avec des pincettes J'espère que ça a pu t'éclairer !
Salut, il a une une chose qui me perturbe. Dans la vidéo tu as parlé du look ahead Mask . Mais pour le padding Mask j’ai remarqué que l’on appliquer le Padding que sur les colonnes.
Donc si par exemple j’ai la phrase: [ je, suis, étudiant, ] La matrice de score + le padding madk : Je Suis Étudiant Pad Je 0 Suis. 0 Étudiant 0 Pad. 0
Mais je ne comprends pas, pourquoi est-ce que l’on applique pas le mask sur la ligne Pad . Normalement, la dernière ligne devrai comporter que des zéros aussi ?!
@@redia-uz4yv en fait tout ce qui se situe sur la ligne pad n'est pas utile puisque ce sont des calculs qui vont être ignorés (puisqu'ils correspondent aux calculs du pas de temps avec un padding). c'est du calcul gaché on peut dire. donc au final je pense qu'il ne faut pas se préoccuper de ce qu'il s'y passe, on laisse ce qu'il y a dedans
Comprendre le Transformer sans savoir ce qu'est un RNN, oui, c'est impossible ou difficile. Comprendre un RNN sans savoir ce qu'est un réseau de neurones, oui c'est impossible. Mais tu le verras si tu continues d'apprendre le ML : tout se mérite. N'espère pas comprendre les dernières avancées, les derniers modèles, sans avoir les bases.
@@alexandretl je ne vous donne pas tort mais mon intuition est qu'il existe un discours plus abstrait qui serait plus clair. Si j'ai bien compris un réseau de neurones est en fait juste une fonction, un réseau récurrent une fonction qui est appliquée plusieurs fois et qui à chaque application prend en entrée le résultat (partiel) de ses sorties précédentes, etc... A partir de là, sans entrer dans des détails techniques, il doit y avoir moyen d'expliquer de façon intuitive, pour un néophyte, ce qu'on entend par "attention". Cela dit je vais tenter de consacrer du temps à comprendre les techniques et maths sous-jacentes.
@@prfontaine5387 la vidéo se veut technique et requiert une certaine connaissance et prise de recul sur les bases de l'apprentissage par supervision (ce qui est en partie proposé sur la chaîne).
@@prfontaine5387oui en effet c'est clairement incompréhensible si on débute mais il y a tellement de contenu introductif en ligne que ce genre de vidéo est beaucoup plus utile pour la communauté en proposant un contenu plus avancé. Ceci dit si vous aimez les maths, la vidéo de 3B1B sur les transformers introduit le concept plus visuellement et StatQuest propose toute une série de vidéos sur les modèles Seq2Seq. Mais les deux repartent à 0 ce qui est très pénible (d'où l'intérêt de cette vidéo !) Pour plus de compréhension, la NLP (natural language processing) Specialization de Coursera créé par Stanford est très utile mais est longue à faire et très exhaustives sur les bases. Et il est important d'avoir déjà des connaissances de ML... Les transformers sont le state of the art du NLP qui est déjà une spécialisation du ML. Ça se mérite mais quand on veut essayer de comprendre les dernières avancées faut comprendre les bases !
Wow les dessins sont beaux ! Merci pour cette superbe vidéo.
Merci!
T’es le meilleur youtubeur en IA de toute la France.
Merci beaucoup, cela fait très plaisir, surtout venant de toi ça fait pas mal de temps que tu me suis!
@@alexandretl oui , j’ai commencé au moment où j’étais en train d’apprendre l’apprentissage par renforcement. J’étais un peu perdu, et puis je suis tombé sur ta chaîne qui m’a sauvé 😂. Merci
Merci c'est très bien expliqué
Bien vu
Super video, il y a par contre un abus de langage sur le masque. Il n'est utilisé que dans la version predictive des trasnformers (decoder) voir le papier attention is all you need. Super job sinon
Yes merci! En fait c'est normal puisque tu n'as pas vu la 3e vidéo qui n'est pas encore sortie, mais dans celle ci je dit que le transformer qu'on a vu jusqu'a présent, c'est un décodeur avec une attention causale ;) donc tout va bien
Super explication ! A quoi correspondent les attentions heads dans les modèles transformers ?
Merci ! Justement on en parle dans la prochaine vidéo qui arrive dans quelques jours, en gros c'est le même mécanisme décrit, mais juste qu'il y en a plusieurs en parallèle
@@alexandretl Ah oui j’ai hâte j’ai jamais réussi à bien comprendre ce mécanisme de Multi head .
Tes vidéos sont très utiles merci beaucoup n'oublie pas de m'écrire
C'est bien beau tout ça, mais quel est le rapport avec Optimus Prime?
Bonjour, je comprends l'idée générale de l'attention mais j'ai du mal à saisir intuitivement comment le produit q(i)*k(j) nous indique à quel point le modèle doit prêter attention au token j. D'après ce que j'ai compris, les queries et les keys proviennent d'un entrainement, mais je ne comprends pas comment ce produit fournit une mesure de la pertinence/attention du token j.
Je sais que la notion de produit scalaire nous donne une information sur la "similarité" entre deux vecteurs. Mais du coup, pourquoi ne pas comparer les clés entre eux ? Pourquoi utiliser une query ? Comment peut-on être certain que le produit q(i)*k(j) donne une information pertinente pour l'attention à accorder au token considéré ? Est-ce que pendant l'entrainement, le modèle comprend que le produit q * k signifie "score d'attention" ? Ou alors on voit empiriquement que c'est mieux d'utiliser deux vecteurs q et k différents ?
Désolé si les questions sont mal formulées, je ne vois pas encore très clair étant nouveau dans le NLP. En tout cas, merci beaucoup pour vos vidéos !!
Oui vos questions sont pertinentes !
Pour répondre à "pourquoi pas utiliser juste des keys", je dirais qu'il y a deux réponses :
- la première, qui est la réponse la plus "simple" c'est que ça nous fait utiliser plus de paramètres, donc le modèle est plus expressif / puissant
- la seconde réponse, elle s'appuie sur la comparaison de ce système d'attention avec des systèmes de recherche traditionnels. Par exemple quand tu lances un recherche sur TH-cam, on va comparer ta demande (query) avec des clés (keys) qui peuvent être des titres de vidéos, des tags, des descriptions etc.. Finalement c'est un peu ce que fait l'attention. Et donc ce qu'il faut voir par là c'est que la demande n'est pas de même nature que les clés, d'où l'idée d'utiliser une key et une query pour l'attention.
la première réponse est certaine, la seconde c'est plus de la spéculation sur comment marche le transformer
Après biensûr, ça doit sûrement marcher avec seulement des keys, mais moins bien puisque ce n'est pas ce qui est fait en pratique (empiriquement).
Et pour finir, oui, le modèle """"apprend"""" à utiliser q * k comme score d'attention pendant l'entraînement (il fait en sorte que q(i)*k(j) donne une information pertinente). J'ai mis des gros guillemets à apprendre puisque ça résulte surtout d'une optimisation mathématique et donc oui il y a un certain apprentissage mais voilà c'est à prendre avec des pincettes
J'espère que ça a pu t'éclairer !
@@alexandretl Merci beaucoup !!
Salut, il a une une chose qui me perturbe. Dans la vidéo tu as parlé du look ahead Mask . Mais pour le padding Mask j’ai remarqué que l’on appliquer le Padding que sur les colonnes.
Donc si par exemple j’ai la phrase:
[ je, suis, étudiant, ]
La matrice de score + le padding madk :
Je Suis Étudiant Pad
Je 0
Suis. 0
Étudiant 0
Pad. 0
Mais je ne comprends pas, pourquoi est-ce que l’on applique pas le mask sur la ligne Pad . Normalement, la dernière ligne devrai comporter que des zéros aussi ?!
@@redia-uz4yv en fait tout ce qui se situe sur la ligne pad n'est pas utile puisque ce sont des calculs qui vont être ignorés (puisqu'ils correspondent aux calculs du pas de temps avec un padding). c'est du calcul gaché on peut dire. donc au final je pense qu'il ne faut pas se préoccuper de ce qu'il s'y passe, on laisse ce qu'il y a dedans
Optimum pride
Incompréhensible pour un néophyte, trop de prérequis nécessaires, je passe
Comprendre le Transformer sans savoir ce qu'est un RNN, oui, c'est impossible ou difficile. Comprendre un RNN sans savoir ce qu'est un réseau de neurones, oui c'est impossible.
Mais tu le verras si tu continues d'apprendre le ML : tout se mérite. N'espère pas comprendre les dernières avancées, les derniers modèles, sans avoir les bases.
@@alexandretl je ne vous donne pas tort mais mon intuition est qu'il existe un discours plus abstrait qui serait plus clair. Si j'ai bien compris un réseau de neurones est en fait juste une fonction, un réseau récurrent une fonction qui est appliquée plusieurs fois et qui à chaque application prend en entrée le résultat (partiel) de ses sorties précédentes, etc... A partir de là, sans entrer dans des détails techniques, il doit y avoir moyen d'expliquer de façon intuitive, pour un néophyte, ce qu'on entend par "attention".
Cela dit je vais tenter de consacrer du temps à comprendre les techniques et maths sous-jacentes.
@@prfontaine5387 la vidéo se veut technique et requiert une certaine connaissance et prise de recul sur les bases de l'apprentissage par supervision (ce qui est en partie proposé sur la chaîne).
@@prfontaine5387oui en effet c'est clairement incompréhensible si on débute mais il y a tellement de contenu introductif en ligne que ce genre de vidéo est beaucoup plus utile pour la communauté en proposant un contenu plus avancé. Ceci dit si vous aimez les maths, la vidéo de 3B1B sur les transformers introduit le concept plus visuellement et StatQuest propose toute une série de vidéos sur les modèles Seq2Seq. Mais les deux repartent à 0 ce qui est très pénible (d'où l'intérêt de cette vidéo !) Pour plus de compréhension, la NLP (natural language processing) Specialization de Coursera créé par Stanford est très utile mais est longue à faire et très exhaustives sur les bases. Et il est important d'avoir déjà des connaissances de ML... Les transformers sont le state of the art du NLP qui est déjà une spécialisation du ML. Ça se mérite mais quand on veut essayer de comprendre les dernières avancées faut comprendre les bases !