1. Aujourd'hui on va revoir nos grands classiques en #MachineLearning dans le domaine du #NLP

Nous allons revoir dans le détail comment transformer des mots en vecteurs, grâce à l'algorithme #word2vec #skipGram

Ready?

🔽🔽 Thread
2. Commençons ce thread par une évidence, mais qu'il convient de rappeler

Les algorithmes de Machine Learning ne savent pas traiter directement des mots et des lettres

Donc dès que l'on veut faire du #NLP, il faut trouver un moyen de transformer les mots en nombres
3. Une des premières intuitions que l'on peut avoir, c'est de prendre l'ensemble des mots avec lesquels on veut travailler, et de leur donner à chacun un indice, en construisant un dictionnaire

Dans ce cas, chaque mot pourra être représenté par un nombre unique (son indice)
4. On peut même s'aider de cette indexation pour construire ce qu'on appelle un vecteur "One Hot Encoding"

Chaque mot sera représenté par un vecteur de dimension égale au nombre de mots, et n'aura que des zéros sauf à l'indice où se trouve le mot dans le dictionnaire Image
5. Cette façon de faire est par contre très limitée et peu efficace : en effet les vecteurs ne renferment pas beaucoup d'information utile (que des zéros, sauf à un indice)

Seule la "position" dans le dictionnaire est donnée par cette représentation

> sparse representation
6. Les chercheurs ont alors eu l'idée d'utiliser un grand principe donné par JR Firth en 1957, qui était un linguiste anglais vivant au 20ème siècle

Selon lui, le sens d'un mot dépend directement des autres mots qui se trouvent souvent près de lui JR Firth - Wikipedia
7. C'est l'idée de la Distribution Sémantique

ou Distributional Semantics en anglais

en.wikipedia.org/wiki/Distribut…
8. Si on suit ce principe, deux mots qui sont FREQUEMMENT PROCHES doivent renfermer le MEME SENS

A contrario, les mots que l'on voit jamais ensemble doivent avoir des sens très éloignés.
9. Le modèle #word2vec va donc construire pour chacun des mots une représentation vectorielle, de sorte que la probabilité de trouver les mots qui sont souvent dans le même contexte soit maximisée

Pas de panique si vous ne comprenez pas tout, on va y aller pas à pas
10. Imaginons que l'on représente chaque mot par un vecteur de dimensions 100

Et imaginons que l'on travaille avec un vocabulaire ne comportant que 1000 mots (c'est limité, mais c'est exprès pour l'exemple)
11. Pour mesurer la probabilité que des mots soient voisins, on va calculer le PRODUIT VECTORIEL des deux vecteurs

Ce calcul donnera un nombre qui sera d'autant plus élevé que les vecteurs sont proches
12. On prend ensuite l'exponentielle de ce produit vectoriel

Ce nombre sera toujours positif grâce à l'exponentiel, est d'autant plus grand que le produit vectoriel est grand
13. Et comme on veut une probabilité à la fin, on divise chacune des exponentielles par la somme des exponentielles

Cela donnera bien une probabilité (leur somme vaudra 1)
14. Dans notre exemple à 1000 mots, si on veut calculer la probabilité d'avoir le mot "guitare" lorsqu'on a le mot "concert" ...
15. On prend les 1000 mots et on fait le produit vectoriel avec les 1000 mots (dont lui même)

On obtiendra donc 1000 indices de vraisemblance, qu'on passe ensuite à l'exponentielle, et qu'on divise ensuite par la somme des exponentielles

La somme des probabilités vaudra alors 1 Image
16. On reprend un peu le principe de la fonction #Softmax, utilisée massivement dans les modèles de classification
17. Ce que va faire l'algorithme skip gram, c'est qu'il va apprendre les composantes de chacun de ces vecteurs

Et ces vecteurs donneront les probabilités que les mots soient voisins, tels qu'on les trouve dans les textes qui vont servir au training
18. Une chose à bien comprendre dans l'algorithme skip-gram c'est la notion de fenêtre

C'est un paramètre qui définit le voisinage

Deux mots sont voisins s'ils se trouvent à moins de n mots, n étant égal à la fenêtre
19. L'algorithme va donc prendre tous les textes donnés dans la phase d'apprentissage

Ensuite, il va prendre chacun des mots du texte (mot central) et regarder quels sont les mots dans son contexte (le paramètre fenêtre) - le mot contexte
20. Et il va faire converger via une descente de gradient chacune des composantes des vecteurs

de sorte que les probabilités (produit vectoriel, exponentiel et normaisation) représentent bien la distribution rencontrée dans les textes (mot central et contexte)
21. La magie de l'histoire est que quand on optimise tout cela, les composantes de chacun des vecteurs s'alignent

A la fin, les mots que l'on voit souvent dans le même contexte, auront des vecteurs proches et similaires
22. C'est grâce à cela qu'on peut faire ensuite des opérations comme

Roi - homme + femme = Reine

ou France - Paris + Espagne = Madrid

Tout cela en regardant simplement le contexte de chacun des mots
23. Ce type d'algorithme a permis de nombreuses avancées pour le #NLP

Avant l'arrivée des transformers dont j'ai déjà parlé

• • •

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

Keep Current with Vincent | Objectif Data Science

Vincent | Objectif Data Science 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

Jul 5
Les INDEX sous #Pandas sont souvent incompris et mal utilisés

Ils sont pourtant d'une grande aide, surtout si on a besoin de performance avec des dataframes volumineux

L'idée principale est qu'ils vous apporteront de la performance s'ils sont UNIQUES

> Illustration
1/ Sélection de lignes d'un df sans faire appel à l'index

Sur un df de 10.000 éléments, la recherche d'une ligne sans faire appel à l'index prend 373 µs (sur mon laptop) Image
2/ Sélection de lignes d'un df avec appel à l'index

Sur un df de 10.000 éléments, la recherche d'une ligne en utilisant l'index prend 60 µs

Soit un facteur 6 entre les 2 méthodes Image
Read 9 tweets
Jul 4
Connaissez-vous #pyCaret ?

Si ce n'est pas le cas, je vous conseille vivement d'y jeter un oeil

Cette bibliothèque vous permet de tester facilement les performances des principaux algorithmes de Machine Learning

illustration >
Test sur la classification du dataset IRIS Image
on obtient ces résultats : Image
Read 4 tweets
Apr 23, 2021
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
Apr 23, 2021
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
Read 37 tweets
Apr 21, 2021
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
Apr 21, 2021
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

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

Don't want to be a Premium member but still want to support us?

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

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(