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
4. Aujourd'hui les CNN sont partout

Et figurez-vous qu'ils ne font pas que du traitement d'image

Ils commencent à prendre une place importante dans le #NLP, dans le traitement des séries temporelles, ...
4. Bref ils sont partout

Et il y a de fortes chances qu'en tant que data Scientists, vous soyez confrontés à ce type d'architecture
5. Bon revenons à nos moutons

Je vais essayer de vous expliquer simplement ce que c'est qu'une opération à convolution, avec les mathématiques qui vont bien

Mais avant cela, prenons une simple analogie
6. Imaginons que vous êtes en train de lire une feuille de papier, remplie de mots

Et que vous décidez (pour une raison qui ne m'appartient pas ... ;-)) de détecter dans la feuille les endroits où est présente la lettre "a"
7. J'avoue que c'est une drôle d'idée, mais c'est juste pour illustrer ...
8. Vous commencer alors par le haut de la feuille à gauche, et vous parcourez la première ligne

Partout où il y a un "a" vous mettez en 1 par exemple, et sinon, vous mettez un espace.
9. Et vous continuez à scanner votre papier, de haut en bas, de gauche à droite, en mettant

> des 1 où il y a des "a"

> et des espaces sinon
10. Cela pourrait ressembler à ça une fois que vous avez fini de traiter la page en question
11. Et vous pourrez faire un autre filtrage avec les autres lettres, ce qui vous donnera à la fin 26 résultats de filtrage
12. L'opération qui est ici faite est simple

Si Lettre = 'a' alors '1' sinon ' '

C'est une opération relativement triviale.
13. J'arrête là mon analogie pour passer à la vraie opération de convolution qui est opérée dans les CNN
14. Déjà, quand on a une image à traiter

on a des chiffres qui représentent l'intensité de la couleur des pixels qui la composent.
15. Commençons par une image en noir et blanc, disons de dimensions 100 x 100 (100 pixels en hauteurs et 100 pixel en largeur)
16. La taille globale de l'image sera de 10.000 pixels

chaque pixel est représenté par un nombre entre 0 et 255 (0 étant le noir et 255 le blanc)
17. L'idée maintenant est de scanner cette image avec des filtres, comme on a scanné notre feuille pleine de mots avec chacune des lettres de l'alphabet (analogie de tout à l'heure)
18. Les filtres que l'on va utiliser sont des "petits bouts d'image".

Ils sont traditionnellement de petite taille -

Par exemple 3x3 pixels, 5x5 pixels, 7x7 pixels
19. On va donc scanner notre grande image avec ce petit filtre,

en commençant par le haut à droite,

puis on parcourt toute la ligne

et on continue avec la ligne du dessous jusqu'à la fin de l'image
20. Et quand on applique le filtre, on va calculer la "ressemblance" avec lui du petit bout d'image qui est recouvert par le filtre que l'on applique.

Plus le bout d'image scanné est ressemblant au filtre, plus l'indice sera élevé.
21. Et cet indice de ressemblance, c'est l'opération de convolution qui va la réaliser.

Pour comprendre cette opération, vous avez juste besoin de savoir faire des multiplications et des additions
22. Ce qu'on va faire, c'est multiplier entre eux les valeurs de pixels de l'image et celles des valeurs des pixels du filtre.

Et additionner ces chiffres entre eux.

C'est aussi simple que cela.
23. A la fin, on aura une nouvelle matrice dont les résultats seront les opérations de convolution de chacune des zones de l'image, avec le filtre.

Les chiffres les plus importants seront sur les zones qui ressemblent le plus au filtre
24. Cette matrice résultat est finalement passée par une opération non linéaire, type Relu
25. Il y a 2 choses à ajouter sur ces opérations de convolution
26. Vous voyez bien qu'à la fin, la matrice résultat aura des dimensions plus petite que l'image initiale.

C'est à cause de la taille du filtre.

Pour avoir une matrice de taille identique, on fait du padding, c'est à dire qu'on entoure la matrice originale de pixels
27. Et ce padding permet d'avoir une matrice résultat avec des dimensions identiques à la matrice initiale
28. De même, plutôt que de scanner toutes les régions de l'image, en décalant d'un pixel sur la droite ou sur le bas à chaque fois, on peut faire un décalage de n pixels vers la droite ou vers le bas.
29. En effet on peut se dire que le résultat des convolutions des régions proches spatialement seront également très proches.

Et cela permet de gagner du temps de calcul.

C'est ce qu'on appelle le "strided convolution"
30. Ce qu'il faut bien comprendre, c'est que pendant la phase d'apprentissage, les filtres en question seront appris par le réseau.

Ils ne sont pas déterminés à l'avance
31. Résumons ce qu'on vient de voir.

Quelque soit la taille de l'image initiale, le nombre de paramètres est seulement dépendant de la taille des filtres (f x f ) et du nombre de filtre
32. Si on a des filtres 3x3 (9 paramètres) et 10 filtres

on aura 3x3x10 = 90 paramètres + 1 biais par filtre (opération RelLU)

soit 100 paramètres
33. Dans le cas des images en couleurs, R,G et B

les filtres qui sont mis en place sont des filtres de dimension f * f * 3

Et on fera la convolution sur les 3 couleurs pour chaque région scannée.
34. Chaque région scannée donnera un nombre, qui représentera la ressemblance avec le filtres en 3 couleurs
35. En plus de ces opérations de convolution, des opérations de pooling peuvent être réalisés sur les résultats de convolutions.

Cela permet de simplifier le résultat en prenant le maximum ou la moyenne d'une petite région.
36. Classiquement, les réseaux à convolutions sont composés d'une succession de couches faisant de la convolution et du pooling

pour finir avec un réseau "fully connected" donnant le résultat final
37. Nous reviendrons sur des architectures classiques de ces réseaux
38. Merci d'avoir lu en entier ce thread, et n'hésitez pas à liker et partager si cela vous a plu.

• • •

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

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
19 Apr
Salut les copains

Je suis tout nouveau sur Twitter, et j'ai créé ce compte pour vous raconter un peu mes découvertes sur la Data Science.

Ca fait tout drôle ...

🔽🔽 Thread

#datascience #machinelearning #ia
1/ J'ai la quarantaine bien passée et j'ai une longue expérience dans l'IT.

Mon parcours en quelques mots : développeurs d'application d'Entreprises, chef de projet, DSI, puis ensuite une longue expérience de conseil en management ou j'ai aidé mes clients à gérer leurs projets.
2/ Dans cette expérience, pas trop de sujets concernant la Data Science.

Et puis voilà que dans ma boîte, il y a maintenant 5 ans, un petit pôle de data scientistes s'est créé.
Read 20 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!