Quand j'y penses... un gros modele du genre doublé d'un ssm qui fonctionne bien, pourrait vraiment etre une techno de rupture...j'espere que ca sera pour bientot
Merci c'est tellement plus clair. Je ne trouve pas la vidéo annoncée à la fin sur le positional encoding ? (en passant : un gros +1 sur la demande sur les ViT !)
Super vidéo, très intéressante. Est-ce que tu as prévu de faire un jour, une vidéo explicative sur la méthode PEFT LoRa j’ai remarqué qu’il n’y avait aucune vidéo francophone qui parlait de ça alors que c’est pourtant une avancée majeure est très utilisée actuellement.
Je n'ai jamais laissé un commentaire sous une vidéo mais la je le fais car c'est un p***** de travail de vulgarisation!!! J'espère que tu vas continuer encore longtemps car tu réussi AVEC BRIO à bien expliquer les concepts pour des novices comme moi; Gros pouce bleu et j'ai vraiment hâte d'en apprendre encore et encore.
Merci pour cette vidéo très bonne vulgarisation ! Petit 7/10 pour ma part, difficile d'expliquer pourquoi certains nom nous semble pas possible mais il semblerait qu'on en soit capable quand même
Excellentes vidéos !!! (joli rappel à mes anciens cours de stats ...). Je conseillerait de regarder les vidéo dans l'ordre inverse de leur sortie (pour celles que j'ai vues) : d'abord "Comment interpréter ce qui se passe dans un réseau de neurones ?" puis ensuite "Qu'est-ce qui se passe dans un réseau de neurones ?". Je crois qu'il est plus facile pour le commun des mortels de comprendre des usage de "concepts" et de leur mesures, pour finir cette excellente vidéo avec le passage de l'algèbre linéaire, et de regarder l'autre, qui explique de manière beaucoup plus pointue ces usages mathématique. Excellente vulgarisation sur des sujets très complexes !! On peut très vite comprendre les extrapolations de problèmes dans des modèles à milliards de paramètres, réductions de dimensions parfois trop grandes, et donc les problèmes "d'hallucination d'IA" parce que la réduction des données a été trop grande et engendre des biais énormes qui n'ont plus de sens sur certains résultats, mais alors l'incapacité à retracer exactement tout ce que fait un modèle IA et ou peut se trouver le "bug de design conceptuel" ...(?)
Merci pour ce retour ! -Oui j'avais d'abord mis dans la playlist la première vidéo mais en effet celle-ci est plus abordable tout compte fait -Oui c'est ça qui sera intéressant par la suite : pouvoir analyser ces réseaux de neurones comme des programmes classiques et trouver des "bugs" pour éventuellement les corriger
Très intéressant d'essayer de savoir ce qu'ils ont dans le crâne, pour le problème de l'alignement ou de l'honneteté des réseaux de neurones, cela pourrait devenir fondamental. Bravo pour le sérieux et l'absence d'effets de manches de ta vidéo !
Un truc m'a fait sourire, fortement, c'est la taille de l'échantillon 16/32/64... qui n'est absolument pas représentatif d'un modèle en centaines de milliards ! Mais comme si ça ne suffisait pas, tu considéres insignifiant l'écart de 8% des polysemiques (donc totalement monstrueux en réalité 😂😂😂)... qui suggère une courbe exponentielle, bien au contraire qui mènerait à une quasi extinction des monosemiques en a peine quelques multiplications par 2 supplémentaires (ce dont je doute). Ce nest pas l'écart qui est non signifiant, c'est l'échantillon en fait. Il serait quand même plus sérieux de faire une étude en millions et avec des écarts de x10 ou x100 pour avoir une idée de ce qui se passe. Pour le reste merci c'est très instructif
Je ne pense pas que nous parlons de la même chose. Les tailles 16/32/64 ne correspondent pas à des "échantillons", mais bien à des nombres de neurones dans les modèles (qui, dans cette Partie 3, n'en possèdent pas des centaines de milliards). Il n'y a donc aucun échantillonnage ici, *tous* les neurones ont été analysés. L'idée de l'expérience était seulement de comparer avec ce qui avait été fait en Partie 2, sur une tâche beaucoup plus simple, et donc sur une série de modèles eux-aussi beaucoup plus petits. Evidemment, et comme suggéré dans la vidéo, tirer une conclusion de ce petit exemple sur des modèles à des centaines de milliards de paramètres n'est pas qqchose à faire (comme vous le dites, on pourrait prévoir une extinction des monosémiques ce qui n'est pas le cas). Les modèles géants ont des dyanmiques beaucoup plus complexes. L'idée de l'expérience n'était pas ça, c'était juste de voir l'effet de l'augmentation de la taille du modèle. Pour finir sur ma réponse, je considère insignifiant l'écart de 8% car, je ne l'ai pas dit mais désigner un neurone (ou même un concept) comme polysémique/monosémique dans ce cas est assez difficile, des fois il est à majorité polysémique mais un exemple vient contre-dire cela, etc. Donc il y a une certaine variation sur ces résultats. J'espère que cela vous aura aidé.
Bravo pour ta vidéo très intéressante et qualitative Alexandre, cela m'a permis d'en connaitre un peu plus sur les réseaux de neurones, du coup je vais regarder tes autres vidéo !
Pourrais-tu faire une vidéo sur ton modèle qui génére des noms de commune ? Ca à l'air intéressant ! Ce modèle peut-il être fait sur le modèle d'un MLP ? J'ai du mal à voir comment calculer l'erreur afin de la rétropropager
C'est justement en préparation aha! En fait en vidéo on verra différents modèles plus ou moins performants, et il y aura le MLP en seconde position! Oui en parlera du coût, en fait c'est exactement comme un problème de classification comme MNIST
17:41 Si on prend un modèle non modifié et qu'on pose une question sur le seconde guerre mondiale, est ce qu'on peut artificiellement faire en sorte que le modèle soit obsédé par le concept "Golden Bridge" en mettant par exemple 1000 fois dans le prompt "Golden Bridge" ? J'ai essayé avec GPT 3 et ça n'a pas marché (j'ai associé environ 100 mots "Golden Bridge" dans le prompt), alors à voir si on peut augmenter l'importance de ce concept artificiellement.
Oui ça pourrait peut-être marcher (je me rappelle d'un "bug" il y a quelques mois où l'on mettait comme tu dis beaucoup de fois le même mot dans un prompt et ça faisait dire n'importe quoi au modèle). Après de là à pouvoir contrôler correctement le modèle c'est assez difficile. Et en pratique les modèles ont été alignés/contrôlés donc c'est encore plus difficile.
J'espère que la vidéo vous a plu ! Très grosse vidéo, + de 1000 lignes d'animations Manim, mais le sujet vaut bien cela. N'hésitez pas à commenter et partager ça ferait super plaisir ! Quelques ressources et commentaires pour aller plus loin : - évidemment, cette vidéo se base sur les deux récents papiers de recherche d'Antropic AI : Towards Monosemanticity (transformer-circuits.pub/2023/monosemantic-features/index.html) d'octobre 2023, et Scaling Monosemanticity (transformer-circuits.pub/2024/scaling-monosemanticity/index.html). Ces deux papiers sont des bijoux si vous voulez rentrer plus dans les détails (même si la vidéo aborde déjà pas mal des détails des papiers!) - plus récemment, OpenAI a publié les mêmes travaux sur GPT-2 et GPT-4 : openai.com/index/extracting-concepts-from-gpt-4/. Il y a aussi une démo pour voir les concepts trouvés, même si beaucoup moins fourni qu'Anthropic (pas de manipulation de concepts, pas d'analyse des concepts influents etc). Comme mentionné dans la vidéo, une analyse précédente avait été faite il y a 1 an, qui se basait sur les neurones seulement : openaipublic.blob.core.windows.net/neuron-explainer/paper/index.html - dans cette vidéo, pour passer les détails, on a expliqué le fait que les neurones soient polysémiques par l'hypothèse de la superposition de concepts clairsemés. En fait, oui, mais attention ce n'est pas une CN : il peut y avoir polysémie via d'autres phénomènes que la superposition. Pour en savoir plus, voir ce lien : www.lesswrong.com/posts/8EyCQKuWo6swZpagS/superposition-is-not-just-neuron-polysemanticity - tout récemment, deux initiatives ont vu le jour pour interpréter Llama 3 8B. Une première qui analyse seulement les neurones : www.lesswrong.com/posts/TA9eEgiWJfgBcJ7wn/exploring-llama-3-8b-mlp-neurons#:~:text=Note%20that%20the%20Llama%2D3,neurons%20in%20the%20entire%20network. Une seconde initiative a aussi été lancée pour rechercher des concepts dans Llama 3 8B via un SAE : x.com/i/bookmarks?post_id=1800780528549044599 - qu'est-ce que l'interprétabilité mécanistique ? C'est le domaine de l'IA dans lequel s'inscrit cette vidéo. Zoom sur le modèle InceptionV1, un modèle de vision : ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-jGCvY4gNnA8.html - le SAE et la place qu'il prend en ce moment dans la recherche en IA : x.com/i/bookmarks?post_id=1801884637481857231 - le code du projet de la génération des noms de commune + l'analyse des neurones et des concepts : github.com/alxndrTL/villes
Pourquoi ne pas traduire par "mélange d'experts" au lieu d'"'ensemble d'experts" ? Après tout, c'est bien un mélange des prédictions de chaque expert qui est réalisée lorsqu'on utilise une combinaison linéaire, et non pas une agrégation. L'expression "agréger A et B" signifie qu'on crée le mot (A, B) : ce n'est pas ce qui est fait ici.
En fait il y a une raison précise à cela, c'est le concept d'ensemble learning en ML. Cette technique du MoE est un exemple de cette méthode d'ensemble, c'est pour cela que j'ai fait ce choix.
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 RU-vid, 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 !
Cette vidéo fait partie d'une série de vidéos : ru-vid.com/group/PLO5NqTx3Y6W6KkZHSzlvAQbJGQxrHErhx C'est un peu de temps à investir, mais si vous voulez avoir une bonne intuition ainsi qu'une bonne compréhension de ce que sont les réseaux de neurones, je vous conseille de vous accrocher
Bonjour, j’aurais une petite question. Je suis en train d’entraîner un transformeur qui génère du texte. Le transformeur prend en entrée une séquence de tokens et prédit le prochain token. Exemple : Entrée : [bon, jour, les] Cible : [jour, les, amis] Dans tous les cours que j’ai vus, la cible est décalée d’un token vers la droite, elle n’a pas le premier token. Mais dans le cas où il y a des tokens de fin de séquence ou de rembourrage, j’ai l’impression que ça ne sert à rien. Par exemple : Entrée : [bon, jour, les, amis] Sortie : [jour, les, amis, EOS] Dans cet exemple ou un exemple de rembourrage, j’ai l’impression que le modèle ne prédit pas vraiment un mot. Peut-être que je me trompe, je suis débutant.
oui alors déjà le token <EOS> n'est pas du rembourrage (ou padding) c'est un token qui annonce la fin d'une séquence (End Of Sequence). donc c'est utile d'apprendre au Transformer à prédire ce token, puisque ça fait aussi parti du problème (en fait on lui donne l'information que la séquence doit s'arrêter avec le EOS). donc la prédiction amis->EOS est bien utile ! pour ce qui est du rembourrage ou padding, là en effet tu auras qqchose du genre : [bon, jour, les, amis, EOS, pad, pad, pad, pad] [jour, les, amis, EOS, pad, pad, pad, pas, pad] donc là en effet les prédictions EOS->pad et pad->pad sont complètement inutiles (et donc c'est des calculs gâchés mais on peut pas faire ça). Pour ne pas prendre en compte ces prédictions inutiles, en fait dans le calcul du loss tu peux passer un ignore_index qui va dire à la fonction qui calcule le loss de ne pas prendre en compte dans le loss toutes les prédictions XX->pad. (en pytorch notamment avec torch.nn.functional.cross_entropy) j'espère que c'est clair! et aussi, on peut aussi rajouter un token <SOS> pour Start Of Sequence, pour signaler le début d'une séquence. parce qu'au moment de générer des phrases (à l'inférence) il faut bien partir d'un token de départ que tu donnes au Transformer, donc si tu ne veux pas avoir à lui donner un token spécial (comme "bon") tu peux lui donner le token générique <SOS> (à condition évidemment d'avoir ajouter un <SOS> sur tes séquences pendant l'entraînement!)
@@alexandretl Salut, alors déjà merci beaucoup pour ta réponse très claire et concise. J’ai pas mal avancé depuis ces derniers temps. J’ai utilisé une méthode un peu différente de celle que tu as énoncée, je ne sais pas si c’est la meilleure. En gros, j’ai fait le décalage puis j’ai mis le padding. Donc ça me donnerait quelque chose comme : Input = [mon, chien] Target = [chien, rouge] Puis j’ai juste rajouté le pad de ces deux vecteurs. Je ne sais pas si c’est une bonne solution. Par contre, j’ai un autre problème, et malheureusement je n’arrive pas à trouver de vraies réponses ou des pistes de recherche. J’ai suivi le tutoriel TensorFlow de génération de texte avec un RNN (le dataset Shakespeare). J’ai alors décidé de remplacer le RNN par un transformeur décodeur (un peu comme GPT). Seulement, quand je compare l’accuracy des deux modèles RNN vs transformeur décodeur, il y a une très grosse différence : 0,55 vs 0,78. Je ne comprends pas pourquoi le RNN a un meilleur score à ce point-là. Note : Pour les paramètres du RNN, c’est les mêmes que celui du tuto original. Pour le transformeur décodeur : Num heads = 8 Num layer = 6 Dff = 1024 D_model = 256 Epoch = 20 (pour les 2)
@@redone7696 Pour ta question sur le padding ça revient au même de faire d'abord le décalage puis le padding ou d'abord mettre le padding puis faire le décalage. Quand tu parle de 0,55 et 0,78 tu dis que c'est une accuracy mais accuracy de quoi ? et au niveau du cout/loss, quelle différence entre RNN et Transformer ? tu peux aussi regarder l'évolution du cout en fonction du temps pour le Transformer et regarder si ça descend bien, s'il faut encore l'entraîner etc et aussi pour l'optimiseur avec le Transformer n'oublie pas d'utiliser AdamW.
@@alexandretl effectivement avec adamW il y il y a une amélioration !! , j’utilise Sparse Categorical Crossentropy Et par contre j’utilise learning rate sheduler avec la formule du papier original je sais pas si c’est la meilleure option.
@@alexandretl En fait, même pour la loss, le Transformer descend assez vite, mais à partir de loss = 1,4, ça devient hyper difficile de baisser plus. Alors que le RNN, il descend tranquillement à chaque epoch. À 20 epochs, il est à 0,7.
Votre contenu est incroyable! Clair et très instructif. J'avais quelques doutes sur la valeur de db, mais votre commentaire pour la corriger était parfait. Merci pour votre précision !!