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
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éé.