1. Hello. Aujourd'hui, je m'attaque à un gros morceau

Les transformers

en particulier la partie self-attention qui en constitue la partie la plus intéressante

Après avoir lu ce thead, j'espère que vous aurez compris les mécanismes en jeu

Ready?

#MachineLearning #DataScience
2. Je vais détailler le fonctionnement des transformers dans le contexte du NLP, qui est le domaine où le premier papier a été publié en 2017 ("Attention is all you need")

A noter que les transformers s'attaquent désormais à d'autres domaines (Vision, Time Series, ...)
3. First things first

Rappelons que dans le NLP, les algorithmes ne comprennent pas "directement" les mots

Il faut que ces mots soient transformés en nombres.

C'est le boulot des algorithmes de "word embedding", qui donc transforment les mots en vecteurs de nombres
4. Il y a plusieurs façons de faire du word Embedding.

Citons #Word2vec (avec #CBOW ou skip-grams), #GLoVe, #FastText, #Gensim, TF-IDF, ....

Promis, on les verra en détail dans d'autres Threads
5. Ces algorithmes reposent en grande partie sur une grande idée, celle de la "Distributional Semantics" énoncée pour la première fois par JR Firth en 1957

En gros, derrière tout cela, il y a le fait que le sens des mots dépend directement des mots voisins
6. Le résultat de ces algorithmes de word embeddings, c'est que chacun des mots sera représenté par un vecteur de nombres

La taille de ce vecteur peut varier

et bien évidemment, plus la dimension est importante, et plus on a une description fine de chacun des mots
7. Grâce à ces vecteurs, on peut faire des choses intéressantes

Il y a le fameux " ROI - HOMME + FEMME = REINE"

Les mots étant des vecteurs de nombres, on peut faire des opérations vectorielles et trouver du sens dans ce type d'opération
8. On peut également mesurer la similarité entre des mots, grâce au produit vectoriel par exemple
9. Par contre, un des défauts majeurs de cette approche, c'est que le caractère POLYSEMIQUE des mots n'est pas pris en compte

Même si un mot a plusieurs sens, le vecteur qui le représente sera le même, quelque soit son sens
10. Prenons un exemple

Dans ces deux phrases :

> "ma voiture se trouvent dans les bouchons"

> "les bouchons de champagne ont sauté hier"

il est clair que le mot "bouchon" n'a pas le même sens dans les deux phrases
11. Et c'est là que le mécanisme de self-attention proposé dans les transformers apporte énormément

Car le self-attention va proposer un nouvel embedding contextualisé

Autrement dit, les deux embeddings des mots "bouchons" dans les exemples pris seront différents
12. Alors, comment ça marche ?

En fait l'idée est assez simple et je vais vous l'expliquer pas à pas

#challenge
13. Prenons l'exemple de la phrase "Ma voiture est dans les bouchons"

Chacun de ces mots peut être représenté par un vecteur embedding

Appelons ces vecteurs v1 à v6

Ils ont bien évidemment tous la même dimension
14. Ce que fait le self attention pour transformer chacun de ces vecteurs

c'est d'abord de calculer la similarité entre chacun de ces mots en faisant le produit vectoriel entre chacun des vecteurs

Similarité = produit vectoriel (par exemple)
15. Ce que garantit l'embedding c'est que plus les vecteurs sont proches, plus leur produit vectoriel sera élevé

Donc pour transformer le vecteur v1, on va calculer les produits vectoriels entre le vecteur v1 et les 6 vecteurs, dont lui même

=> v1.v1, v1.v2, ... v1.v6
16. Chacun de ces produits vectoriels donne un nombre

Il est bien évident, que le produit vectoriel le plus important dans ce cas, c'est v1.v1

> quoi de plus ressemblant pour un vecteur que lui même ?
17. Ensuite on divise ces résultats par une constante (dépendante de la taille de l'embedding)

et on normalise chacune de ces 6 quantités en utilisant un #softmax
18. Si vous ne connaissez pas cette fonction Softmax, elle est très simple

On prend l'exponentielle de chacun des 6 nombres, qu'on divise ensuite par la somme des exponentielles. Ainsi la somme des 6 quantités obtenues vaut 1

Appelons ces coefficients les scores : s1 à s6
19. Le résultat de la self Attention, ce sera finalement la combinaison des 6 vecteurs, avec les coefficients que l'on vient de calculer

y1 = s1.v1 + ... + s6.v6
20. y1 sera évidemment très proche de v1

Mais plus il y aura un mot qui se rapprochera de v1, plus le score associé avec ce mot sera élevé, et plus y1 se différenciera de v1
21. C'est là le phénomène de l'attention. Si dans notre contexte, un autre mot est proche du mot étudié, celui ci sera modifié et portera le contexte de l'autre mot

On a ainsi des représentations vectorielles qui seront modifiées avec le contexte

Elles ne sont plus statiques
22. Pour reprendre mes 2 exemples

> "Ma voiture est dans les bouchons" et "les bouchons de champagne ont sauté"

les deux représentations de bouchons seront différentes avec la self-attention

La première sera influencé par "voiture" et l'autre par "Champagne" très certainement
22. Résumons ce qu'on a vu par un petit schéma
23. Ouf !

Voici expliquée la grande idée qu'il y a derrière le self-attention en oeuvre dans les Transformers

Mais en réalité, il faut aller un peu plus loin pour capter la beauté de ce que fait cet algorithme
24. Lorsque j'ai décrit la transformation de chacun des vecteurs (par exemple de v1 à y1)

il faut remarquer que dans l'opération, chacun des vecteurs est utilisé à TROIS endroits différents

🔽🔽 Continuer le Thread
25. D'abord quand c'est lui qui est pris comme référence.

Par exemple, ce sera le cas quand on prend v1 et qu'on veut le transformer et qu'on calcule les produits vectoriels avec les autres vecteurs
26. Deuxième fonction : quand le vecteur est justement utilisé pour calculer les scores
27. Troisième fonction : quand le vecteur est appelé pour faire la combinaison finale à partir des coefficients ou score utilisé
28. L'idée GENIALE de l'algorithme, c'est d'apprendre des représentations différentes de chacun des vecteurs suivant la fonction en question

Pour faire cela, on transforme les vecteurs en les multipliant par des matrices qui ont été calculées dans la phase d'apprentissage
29. La première fonction, c'est la fonction "Query".

C'est pas v1 qui sera utilisé, mais une projection de v1 en utilisant une matrice que l'on appelle Wq

Soit Wq.v1
30. La deuxième fonction, c'est la fonction "Key"

De la même manière, on utilisera des projections de v1 à v6 en utilisant la matrice Wk
31. Et enfin pour la troisième fonction, c'est la fonction "Value", utilisée avec des projections des 6 vecteurs utilisant la matrice Wv
32. Ces trois matrices sont apprises pendant la phase d'apprentissage.

Ce qu'elles font ?

C'est simplement de projeter chacune des représentations sur des axes différents, et qui seront plus pertinents pour les calculs de Self-Attention

Ces axes ont été appris.
33. Par exemple, on peut imaginer que dans mes 2 exemples de bouchons, les matrices Wq, Wk et Wv ont appris qu'il fallait mettre plus en valeur la dimension "transport" dans mon premier cas, et la dimension "Réunion" ou "Fete" dans le deuxième cas

Vous voyez l'idée ...
34. Il y a encore des petites choses à dire sur cet algorithme de transformers et d'Attention (le fait de pouvoir paralléliser les calculs, de ne pas avoir de perte de gradient comme dans les RNN)

Mais cette partie est à mon avis la plus sensible.
35. On aura l'occasion d'y revenir dans le détail.
36. J'espère que cela vous a plu !

Merci de partager et de liker si c'est le cas !

A très vite

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Objectif Data Science - avec Vincent

Objectif Data Science - avec Vincent Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @ObjectifDataSci

23 Apr
C'est le week-end !

Peut-être aurez vous le temps de lire mes dernières publications.

Au programme :
> Régression Logistique
> Matrice de confusion
> Binary tree : Gini vs Entropy
> Transformers et self Attention
> Les réseaux à convolution

Bonne lecture !

🔽🔽 Thread
[Régression Logistique]

Voir différemment cet algorithme et tout comprendre grâce à la géométrie

#datascience #machinelearning #ia

[Matrice de Confusion]

Plus jamais confus (!) par la matrice de confusion grâce à ce truc très simple à retenir

#datascience #machinelearning #iA

Read 6 tweets
21 Apr
1. Hello les copains

Etes-vous confus devant une matrice de confusion ?

Vous n'arrivez pas à retenir ce que sont les indicateurs "precision", "recall", "accuracy" ?

Je pense que ce thread devrait vous aider.

🔽🔽 Thread

#datascience #MachineLearning #iA
2. Personnellement, ces notions autour de la matrice de confusion, j'ai mis un bon bout de temps avant de les retenir une fois pour toute.

Et pour retenir tout ça, j'ai un super moyen mnémotechnique que je vais vous donner.

Ready?
3. D'abord de quoi parle-t-on ?

On parle de résultats d'une classification faite par un modèle de Machine Learning (Regression logistique, SVM, RF, KNN, Réseau de neurones, Naive Bayes ... et j'en passe)
Read 29 tweets
21 Apr
1. Hello les copains.

Aujourd'hui on va parler de réseaux de neurones, et en particulier de réseaux de neurones à convolutions.

On va se concentrer surtout sur les filtres à convolutions qui constituent les paramètres d'un #CNN

🔽🔽Thread

#datascience #machinelearning #ia
2. Ce tweet sera l'occasion de revoir les grands principes qu'il y a derrière un tel réseau de neurones.

C'est important de comprendre les rouages qu'il y a derrière tout cela.
3. Pour commencer, on peut dire que "l'hiver de l'IA" s'est terminé grâce aux progrès spectaculaires de cette dernière décennie permis grâce aux CNN.

C'est grâce à leur performance que le monde s'est de nouveau intéressé à ces technologies
Read 39 tweets
20 Apr
Hello,

pour vous y retrouver plus facilement, j'ai rangé ici les Tweets qui donnent accès aux différents threads publiés.

Au programme : tout plein de choses sur le #MachineLearning, la #data, la #datascience, l'#IA et la programmation #Python.

Merci pour vos Like ou vos RT !
La régression Logistique : une autre façon de bien comprendre comment cela fonctionne.

Read 6 tweets
20 Apr
1. Salut les copains

Aujourd'hui on va parler d'un modèle tellement important dans le Machine Learning - Les arbres binaires !

On va voir comment ils sont construits et on va voir également une interprétation géométrique

#datascience #ia #MachineLearning
2. Pour commencer, les arbres binaires sont vieux comme le Machine Learning

C'est un type de modèle qui a constamment évolué, et qui est à la base de modèles phare du moment

Comme les #RandomForest, les #GradientBoosting comme #AdaBoost, #CatBoost, #XGBoost, ...
3. Promis, on verra chacun de ces modèles dans le détail dans des messages dédiés
Read 37 tweets
20 Apr
Salut les copains.

Aujourd'hui, on va parler de régression logistique. Un modèle de ML que tout le monde connait.

Mais je vais faire une approche assez originale.

Ready?

🔽🔽Thread

#datascience #ia #MachineLearning
1/ Petit rappel : la régression logistique permet de faire de la classification entre 2 catégories.

C'est un modèle performant et TRES TRES utilisé à travers le monde.
2/ Exemple de cas d'usage :

> une banque donne un prêt (ou pas)

> le médecin détecte cette maladie (ou pas)

> le site ecommerce propose ce produit au client (ou pas)

> le client se désabonne du service (ou pas)
Read 41 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!