1. Hello

les réseaux #RNN de type #LSTM et #GRU sont des réseaux qui sont généralement mal compris

Je vais essayer dans ce thread de les expliquer clairement

on va commencer par voir dans le détail les GRU (Gated Recurrent Unit).

Ready?

🔽🔽

#datascience #machinelearning Image
2. Le principe d'un réseau récurrent RNN est relativement simple

Il s'applique à des données de type séquence c'est à dire des données qui se suivent dans le temps et dont l'ordre est important (Time Series, Speech, texte, musique, ....)
3. Dans leur forme simple, les RNN sont des réseaux de neurones classiques

avec comme différence le fait que la sortie du réseau au temps t soit mis en entrée au temps t+1

Cela permet de conserver une mémoire de ce qui a été calculé au préalable par le réseau
4. Ainsi la réponse du réseau au temps t+1 dépendra

> de la nouvelle entrée dans le réseau au temps t+1

> mais également de toutes les sorties passées que le réseau a déjà fourni
5. L'idée est belle

mais pratiquement les RNN ne fonctionnent pas très bien

Ils atteignent rapidement des limites, car ils ont du mal à conserver une mémoire longue

à cause principalement de problème au niveau du l'apprentissage (Gradient Vanishing)
6. Il y a eu des propositions d'améliorations assez astucieuses pour ces réseaux récurrents

des réseaux #LSTM (Long Short Term Memory) et #GRU (Gated Recurrent Unit)

Les GRU sont une version simplifiée des LSTM, et c'est ce qu'ont va voir dans ce thread
7. L'idée globale de ces réseaux est de créer des portes (gates en anglais)

et ces portes vont apprendre ce qu'on doit retenir du passé

Cela permet une meilleure rétention de la mémoire au fil de l'apprentissage
8. Et la façon de filtrer ce que l'on garde ou pas est APPRIS par le réseau

Pendant l'apprentissage, le réseau va apprendre ce qu'il faut garder au fil du temps

Cela permettra de garder une information beaucoup plus longtemps dans la séquence, si celle-ci est importante
9. Commençons par un schéma d'un RNN classique

La sortie a(t) (a pour ACTIVATION) dépend directement de la sortie a(t-1) et de l'entrée x(t)

Cette dépendance est représentée par la matrice Wa qui a été apprise

Une fonction d'activation est appliquée (tanh) Image
10. Petite précision sur la notation concernant la matrice Wa

En fait, il y a deux matrices Wa (Waa et Wat) qui s'appliquent respectivement sur a(t-1) et x(t)

Mais en concaténant les matrices, et les vecteurs on peut simplifier l'écriture

Ce que l'on choisit de faire Image
11. Ce que le GRU (version simplifiée) apporte, c'est la matrice Gu (G : Gate et u : Update)

Cette matrice de coefficients entre 0 et 1 retire une partie de la réponse classique du RNN (a(t)) et la remplace par une partie de a(t-1)

Cela permet de mieux conserver la mémoire
12. schéma du GRU simplifiée

Comme pour le RNN, on a l'activation en fonction de de l'entrée X(t) et de la sortie du réseau en (t-1)

appelé c(t-1), c pour Memory Cell

Appelons maintenant h (h pour hidden) cet équivalent de la sortie vue pour les RNN Vanilla Image
13. En plus de h(t), on calcule aussi cette matrice Gu faite de nombres entre 0 et 1 (pourcentages)

et qui représentent les pourcentages que l'on garde de h(t)

Pour cela on fait appel à l'opération matricielle de Hadamard

fr.wikipedia.org/wiki/Produit_m… Image
14. Cette opération matricielle, c'est simplement une multiplication de terme à terme

qui dans ce cas donnera en résultat ce que l'on garde de h(t), en fonction des coefficients de Gu (qui varient entre 0 et 1, et qui sont donc des pourcentages)
15. Et ce que l'on a pas gardé (la proportion pour compléter Gu)

on le remplace par C(t-1)

en respectant les proportions au final (c'est à dire en faisant 1-Gu)
16. Cette matrice d'oubli ou de remplacement Gu

elle est apprise également en utilisant les entrées X(t) et les sorties historiques C(t-1)

C'est la fonction logistique qui est utilisée comme fonction d'activation pour avoir un pourcentage (pourcentage d'oubli)
17. En synthèse pour le GRU simplifié

> on calcule h(t) qui est l'équivalent de la sortie classique d'un RNN basique, en fonction de c(t-1) et x(t)

> on calcule la matrice Gu en fonction de c(t-1) et x(t)
18.

> et on calcule c(t) grace à Gu

Pour le calcul de c(t), Gu détermine le pourcentage de ce que l'on garde de h(t) et ce qu'on rajoute de c(t-1) pour le calcul de c(t) Image
19. Dans la version complète de la GRU

lors du calcul de h(t), on va aussi appliquer des coefficients à c(t-1) pour n'en prendre qu'une partie, celle qui est pertinente

On va utiliser pour cela une nouvelle gate qu'on va appeler Gr, r pour "relevant" ou "reset" Image
20. Ensuite, comme pour la version GRU simplifiée, la sortie au final dépendra de cette sortie classique (amputée par la matrice Gu) et d'un petit peu d'historique qu'on rajoute via 1-Gu
21. On remarquera que les deux Gates Gu et Gr ont comme fonctions d'activation la fonction logistique -> cela donne bien des pourcentages

Et toutes les deux sont apprises en prenant comme paramètres les nouvelles entrées et l'historique, en construisant les matrices Wu et Wr
22. En synthèse

> dans un réseau RNN classique

la sortie c(t) (ou a(t)) dépend directement de

- x(t) (les données d'entrée)
- et de c(t-1) (la sortie t-1)
23.

> dans un réseau GRU simplifié

la matrice Gu est apprise (via c(t-1) et de x(t)).

Gu permet de ne garder qu'une partie de h(t) (qui est fonction de c(t-1) et x(t))

et de compléter par c(t-1)

Cela permet d'être meilleur dans la conservation de la mémoire du réseau
24. Et dans un réseau GRU Complet

> c'est comme pour la version GRU simplifiée

> sauf que dans le calcul de h(t), on ne prend qu'une partie de c(t-1) grâce à une matrice Gr qui est apprise en fonction de c(t-1) et x(t)
25. J'espère que c'est plus clair pour vous maintenant pour les GRU

Si vous avez saisi ces explications, vous comprendrez facilement le fonctionnement des LSTM que je vais vous montrer tout prochainement

• • •

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)
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
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 29, 2021
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)
Read 23 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

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!

:(