Session du 30 juillet 2024 à 20h30
Pratique & Live Coding
Data Science & IA
RNN - Recurrent neural networks
Je vous propose de voir une autre famille de réseau de neurones avant les LSTM ce sont les RNN.
Assez connus et pratique nous ferons un présentation pour expliquer ce que c'est et ensuite un live coding !
00:00:00 :C'est bon pour tous ?ParfaitBonsoir tout le monde, merci d'être venu ce soir pour cette nouvelle vidéo sur les différentes familles des réseaux de neurones dans cette playlist de Deep LearningCe soir on va parler d'un réseau qui est assez sympa qui est le Recurrent Neural Network, donc RNN
00:00:21 :C'est un réseau qui est arrivé assez rapidement après les différentes familles comme les réseaux conventionnels etc.C'est un réseau qui va pouvoir aussi traiter d'autres types de donnéesOn rappelle que pour les SNN on n'était plus dans la partie spatiale, donc comment récupérer des features, des caractéristiques sur une image
00:00:48 :Alors on va voir que ça va servir pour un autre type de donnéesComme d'habitude je vous propose un plan de présentation, on va faire une petite introduction pour savoir ce que c'est, à quoi ça sert, d'où ça vient aussiOn va parler du principe de Récurrence, puisque on a Recurrent Neural Network, d'où le titre
00:01:05 :On va voir son architecture, on va faire un peu comme les SNN, on va voir comment on va construire d'autres modèles etc.On va l'appliquer à un jeu de données qui est IMDB, qui est un jeu de données qui est assez sympa, qui est aussi disponible dans le libraire Keras
00:01:22 :Et enfin on va analyser un petit peu ces RNN sur les données, on va regarder un peu les résultats de classification etc.Petite introduction, les RNN sont apparus lorsqu'on s'est penché sur du traitement automatique des langues, sur des données textuellesOn s'est rendu compte qu'en fait le fait de faire juste une classification basique avec un réseau dense
00:01:53 :Parfois on a besoin d'avoir un petit peu de contexte, le réseau a besoin d'avoir une sorte de mémorisation du contexte dans lequel il estPar exemple si je prends la phrase « Bob vit à Londres et Céline vit à Marseille »En fait notre cerveau va analyser chacun des mots, il va les enregistrer
00:02:13 :Au début on a une personne qui est Bob, on a un verbe « vivre » ou ça « à Londres »Donc on sait bien qu'à Londres il y a Bob qui vit, etc. pour « et Céline vit à Marseille »
00:02:24 :En fait ce réseau neurone là, les RNN, permettent de mémoriser à court terme les différentes séquences qu'il y a avant la séquence en coursDonc une définition un peu plus générale c'est, ça traite des séquences en parcourant les éléments de la séquenceEt en maintenant un état contenant les informations relatives à ce qu'il a vu jusqu'à présent
00:02:50 :Alors là si on prend le mot « Marteille », il aura retenu la séquence « Céline vit à »Et le fait d'adopter un certain contexte, on va se rendre compte que du coup ça va pouvoir servir à mieux faire comprendre à la machineDonc là à droite je vous ai mis un petit schéma pour représenter un peu tout ça
00:03:09 :Donc avant on avait des layers, donc des couches cachées, on avait une couche de source et une couche de destinationEt on passait tout le monde de gauche à droite, etc. en avançant le réseau
00:03:23 :Bon ben là ce qu'il se passe c'est que du coup on va avoir un truc un peu différentC'est à dire qu'on va avoir nos entrées x0, x1, x2, nos sorties y0, y1, y2, donc dans le labelMais en fait ce qu'il va se passer c'est que x0, donc le neurone qui prend l'entrée x0, il va aussi donner la sortie y0 à x1
00:03:48 :Par le b de la variable h1, et ensuite de suite par rapport aux neurones qui sont d'à côtéDonc en fait si vous voulez, là sur le schéma, on va avoir une sorte de récurrenceC'est à dire qu'on va avoir une communication entre les différents neurones d'une même couche
00:04:05 :D'accord ?Donc là à droite on a notre RNN, on a l'entrée, on a la sortie, donc ça c'est quelque chose de basiqueEt on a une connexion de récurrence, d'accord ?
00:04:14 :C'est aussi simple que ça, ok ?Donc quel type de données on peut traiter ?Donc là on parle souvent, là j'ai pris l'exemple des données textuelles, d'accord ?
00:04:26 :Parce qu'avec les données d'images je ne me suis pas forcément renseignéMais c'est plus parti sur des séquences, d'accord ?Lorsqu'on va faire une détection, par exemple, d'émotions, ou pas dans un texte, d'accord ?
00:04:37 :On a besoin d'avoir plus de contexte, finalement un mot ça ne suffit pas à définir le sens d'une phrase, d'accord ?Donc voilà, c'est quelque chose qui va vraiment être assez sympaDonc l'architecture elle est la suivante, d'accord ?
00:04:52 :On va avoir donc une architecture simple, on a les entrées, un batch normalisationÇa c'est pour faire sortir les séquences, d'accord ?Parce que parfois quand on a les données textuelles, ok ?
00:05:02 :On va voir par exemple, je vais vous montrer, qu'on ne balance pas du texte comme ça dans les zones de run, d'accord ?On va devoir faire un preprocessing, d'accord ?
00:05:11 :On va préparer nos données, on va les normaliserEt en fait, la batch normalisation va permettre, imaginons, je prends 50 phrases, d'accord ?De tailles différentes, d'accord ? De longueurs différentes
00:05:23 :En fait, on veut mettre la même longueur pour chacune des phrases, d'accord ?Ça veut dire avoir un tableau, comme je parlais pour les CNN, d'avoir une matrice, d'accord ?
00:05:37 :Dont chaque ligne contient les mêmes colonnes, d'accord ?Ensuite, ce qu'on fait, c'est qu'on crée un RNN, d'accord ?Donc une couche d'RNN en layers, d'accord ?
00:05:49 :On peut en faire une, on peut en faire deux dans un réseau un peu plus complexeEt quand on est terminé de tout ça, on va ensuite faire notre tâche de classification avec une couche denseDonc rappelez-vous, une couche dense, c'est une couche qui a seulement un ensemble de perceptrons, d'accord ?
00:06:03 :Je leur balance des entrées, je leur dis, voilà, imaginons, je vais faire de la classificationDonc j'ai 10 labels différents, d'accord ?Si j'ai pris le jeu de données MNIST, rappelez, quand on avait fait avec les différents chiffres qui étaient manuscritsLes labels, du coup, on est bien d'accord que c'est les résultats des chiffres, donc de 0 à 9, d'accord ?
00:06:23 :Là, quelque chose que j'ai rajouté, c'est un softmaxAlors en fait, ça, ça permet de faire en sorte d'avoir pour chacune des valeurs qui vont être retournées par la couche densed'affecter une probabilité à chacune des sorties des neuronesEt en fait, le softmax, celui qui a la plus grande probabilité
00:06:47 :aura plus de chances d'avoir le label en question qui lui est attribué, d'accord ?Et ensuite, du coup, on a l'outputJe vous ai mis le lien de notre research guide, il y a un article assez intéressant sur CRNNsi vous voulez un peu plus de détails dedansAlors maintenant, ce qui va se passer, c'est que je vous ai parlé, donc il nous faut de la data, ok ?
00:07:10 :Donc IMDB, c'est un site internet où vous avez des reviews de films, d'accord ?Des avis sur différents films, différentes séries, etc.Et en fait, il y a pas mal de personnes qui ont donné leur avisEt en fait, ils ont dit, soit ils étaient contents, soit ils n'étaient pas contents
00:07:28 :Soit ils me donnaient un avis positif ou négatif, ok ?Donc nous, on va prendre ça comme label 0 et label 1, on va pas se casser la têteOu "-1", ça dépend de ce que vous préférezEt ensuite, ce qui se passe, c'est qu'on a 25 000 avis
00:07:42 :Donc ça fait quand même pas mal de données, pas mal de phrasesqu'on a labellisées par sentiments, d'accord ?Donc ce qu'on a fait par rapport aux phrasesAlors, quelque chose que je ne vous ai peut-être pas forcément ditC'est que, parmi les phrases, des fois on a des mots qui ne se répètent pas forcément souvent
00:07:59 :Si je prends par exemple, je sais pas, je prends un film qui a été tournédans le fin fond du Canada, dans une ville pas connue, tu voisSi je prends cette ville-là, moi j'aimerais avoir plus des mots qui se répètent le plus souventEt en fait, je vais vous montrer dans le code après, on a un petit paramètre
00:08:16 :qui permet de dire ça, de dire que je veux les 10 000 mots, d'accord ?Qui se répète le plus, d'accord, parmi les 25 000 séquencesDonc je parle bien, j'espère que tout le monde s'est compris, par rapport à une séquence, d'accord ?
00:08:27 :Une phrase, c'est une séquence, d'accord ?Parce que chaque mot a été, on lui a attribué une valeur, ok ?On a un dictionnaire, et ce dictionnaire, en fait, comme en Python, indique au classiqueOn va dire, le chiffre 0 correspond, je sais pas, à table, 1 à chaussette, etc
00:08:44 :Et ça, c'est un dictionnaire qui nous le donne, d'accord ?Donc chaque mot est indexé dans la phraseDonc on peut considérer les mots les plus communs à notre phraseQuelque chose aussi que je vous rappelle un petit peu sur ce qu'on faitquand on fait un entraînement de Deep Learning
00:09:00 :Quand on a nos données, d'accord, faites attention, on ne met pas toutes les données en entrée dans notre machineOn découpe en général en trois parties notre datasetOn le découpe en un ensemble qui va être le train, d'accord ?
00:09:14 :Qui va servir seulement à l'entraînement, d'accord ?On va prendre, donc en général, souvent on prend 70% du dataset, d'accord ?C'est quand même assez communEnsuite, on va prendre une partie qui va être le test, d'accord ?
00:09:32 :Donc le test, ça va nous permettre d'avoir une partie qui va nous permettre d'analyser les performances, d'accord ?D'avoir un petit peu des évaluations, notamment sur les pertes de notre machine, d'accord ?
00:09:46 :Sur les erreurs, et aussi sur les performances, d'accord ?Donc la QAC, comme on l'a vu l'autre fois, c'est vraiment le score qu'on aimerait, qui se rapproche le plus d'eux, d'accord ?
00:09:57 :Et en fait, on a un dernier son ensembleAlors celui-là, parfois, on n'est pas obligéEn Machine Learning classique, donc en Shell LearningOn ne le voit pas souvent, on le voit plus quand on fait un train-test-splitOn va prendre le train-testLa validation, en fait, c'est encore une couche qui va nous permettre de checker un petit peu le score en validation réelle
00:10:19 :C'est-à-dire qu'on va prendre...Alors en général, on va prendre 10% du dataset train, d'accord ?Et pas du test, attentionOn va prendre 10% du dataset trainDonc là, j'ai écrit un peu plus, j'en ai écrit 1000Et en fait, ces données-là, on ne va pas les faire...
00:10:35 :On ne va pas les donner à la machine, d'accord ?On va simplement lui passer, à la fin, quand tout le traitement sera terminé, d'accord ?
00:10:41 :Qu'on va vraiment tester sur des données réellesJuste avant de déployer cette IA, par exemple, dans un système embarqué, d'accord ?Et là, ça va nous permettre de pouvoir comparer finalement la validation avec le test, ok ?
00:10:54 :Et ça, ça va vraiment nous permettre de pouvoir voir s'il y a du sur-apprentissage, du sous-apprentissageDe regarder un petit peu le comportement de notre réseauParfois, on va avoir des pics au niveau de l'accuracyParce que, ben, tas d'expériences, ça peut être dû, par exemple, à une trop grande couche de neurones
00:11:15 :Ou trop grande... beaucoup trop d'unités par couche, vous voyez ?Donc, moi, ce que je vais vous proposer, c'est qu'en fait, par rapport au RNN, d'accord ?
00:11:24 :Ce qu'il faut savoir, c'est qu'ils sont assez coûteuxEn termes de temps, en termes de performance, d'accord ?Qu'une performance basique, on avait, voilà, d'autres foisParce que, vu qu'on a cette récurrence, d'accord ?
00:11:37 :Ben, on va avoir beaucoup plus de calculs qui vont être effectuésAlors, en amont, ce que je vous propose, c'est qu'en fait, j'ai réalisé, en fait, l'expérienceDe faire tourner, en fait, sur mon dataset IMDB, d'accord ?
00:11:50 :Deux réseauxUn réseau qui va simplement avoir une couche denseDonc, comme vous pouvez le voir sur la graphe droiteEt à gauche, j'ai mélangé en prenant l'RNN, d'accord ?
00:12:03 :En pré-traitement, enfin, en avant, pardon, en avant couche denseEt une couche dense pour faire ma classificationAlors, qu'est-ce qu'on peut regarder sur ça ?
00:12:11 :Qu'est-ce qu'on peut remarquer ?Donc, là, vous avez des graphes qui sont les lossesDurant le training process, d'accord ?Donc, ça, c'est la fonction de perteC'est ce qu'on essaie de minimiser, d'accord ?
00:12:20 :Plus on minimise la perte, et meilleur sera notre IA, d'accord ?Là, à gauche, on peut voir que les performancesLa loss, elle est vers...
00:12:29 :Donc, sur le dataset du training, d'accord ?Elle est entre 0.45Elle descend jusqu'à 0.35Mais, finalement, sur 10 époques, donc sur 10 répétitionsElle est ici à peu près 0.45
00:12:41 :Et on peut voir, par contre, sur la validationQue, par contre, ça descend bien, d'accord ?Ça descend même vers 0.25, d'accord ?Ce qui est quand même assez...
00:12:50 :C'est quand même pas malC'est pas excellentMais on peut faire mieuxOn peut toujours faire mieuxMais, contrairement aux graphes de droite, en faitLà, on voit qu'on a des loss à 0.7
00:13:01 :Bon, ben là, c'est un carnageC'est-à-dire que, vraiment, il n'y a pas d'apprentissageC'est-à-dire que l'accuré, ici, quand on compare, du coup, les...Là, maintenant, je vous montre les graphes avec les scores, d'accord ?
00:13:13 :Bon, ben, à droite, on peut voir qu'on a des picsQui sont assez catastrophiquesOn a un pic...Il est à 0.50 sans 0.49Il peut remonter à 0.51
00:13:22 :Alors, là, on a un écart, en fait, au niveau des centièmesMais on voit qu'on a quand même quelque chose qui n'est pas vraiment très stableEt qu'aussi qu'il est à 50%Donc, 50%, quand on a une classe...
00:13:33 :Quand on a deux classesDonc, quand nous, on a la classe 0 et la classe 1En fait, c'est un peu le seuil du hasardC'est-à-dire qu'on tire à pile ou face pour avoir...
00:13:40 :Tu vois, est-ce que c'est 0, est-ce que c'est 1 ?Bon, ben, en général, on est vers 50%Par contre, quand on regarde les RLN, du coupBen, là, on se rend compte que, là, on est à 80%On peut voir qu'en training, on peut monter super hautAlors, attention, je disais que parfois, la validation est toujours un petit peu plus basse que le training
00:13:58 :Là, c'est léger, d'accord, c'est à 0.05Ce qui est quand même pas malBon, maintenant, en fait, je vais vous raconter autre choseQue je ne vais pas avoir démanantQui est, en fait, le nom de la présentation que je vais faire aujourd'huiQui est, en fait, les LSTM
00:14:17 :Donc, les LSTM, en fait, c'est un autre réseau de neuronesD'accord ?Qui, on va dire, va permettre d'aider un peu RLNSi je reprends au tout début de ma phraseD'accord ? Bob via Londres et Céline via Marseille
00:14:30 :On se rend compte qu'en fait, les RLN, le problème, c'est que ça va prendre quelque chose d'assez courtD'accord ?Ça va prendre, par exemple, Céline via MarseilleMais ça ne va pas prendre Bob via LondresVous voyez, ça va être un peu limitéEt en fait, il y a, du coup, les LSTM
00:14:46 :Qui vont, eux, en fait, ça va être donc les Long Short Time MemoryD'accord ?Ils vont prendre toute la phraseD'accord ?Et du coup, les LSTM, vous vous en doutez, c'est aussi des réseaux de neurones qui sont récurrentsParce qu'ils fonctionnent de la même manièreLe réseau est beaucoup plus difficile à comprendre, l'architecture
00:15:02 :Je le présenterai dans la prochaine vidéoMais, en fait, les LSTM battent les RLNC'est-à-dire que lorsqu'on va comparer ici les différents scoresD'accord ?
00:15:12 :Notamment au niveau des lossesOk ?Là, on va avoir des losses qui vont être beaucoup plus bassesOn va avoir un écart qui va se diminuer entre le training et la validationD'accord ?
00:15:22 :Donc ça, c'est quand même assez bienParce qu'au final, on va pouvoir...C'est notre objectif, c'est de se direQuand je fais un entraînementQuelle est l'erreur avec la vérité réelle ?
00:15:33 :C'est-à-dire, quand je vais mettre mon IA en déploiement dans mon entrepriseJ'aimerais vraiment être proche de mon entraînementParce qu'au final, si je crée une IA qui veut me détecterPour me laisser une cancéreuse sur des imagesSi je n'ai pas un contrôle parfait sur çaSi j'ai des écarts et tout
00:15:49 :Vous vous doutez bien que ce n'est pas possible de mettre ça en productionVoilàDonc là, vous avez le...Excuse-moi, j'aurais juste une petite questionOui, vas-yComment ça se fait que la validation est toujours inférieure à ton entraînement ?
00:16:02 :C'est quoi le facteur qui fait que, justement, la validationElle est toujours en dessous du training ?Alors ça, ce n'est pas forcément tout le temps le casLà, dans l'occurrence, sur l'exemple que je mets, c'est souvent le casParce qu'en fait, là, il y a un petit peu du sur-apprentissage
00:16:19 :C'est-à-dire que la machine, vu qu'elle est quand même basée sur 25 000 séquencesElle va quand même être dans un environnement qu'elle va bien connaîtreDonc là de rien, on aura toujours cet écart-làC'est très rare de voir une validation qui soit plus haute que le trainingC'est-à-dire que finalement, ça serait du sous-apprentissage
00:16:40 :Je ne dirais pas du sur, mais du sous-apprentissageParce que finalement, ça peut être lié à la chanceQue la validation soit plus haute que le training dans un entraînementMais en général, on a toujours çaVu qu'on est sur des modèles statistiquesOn ne va pas forcément avoir toujours la vérité terrain
00:16:57 :Mais la vérité lorsque je vais mettre quelque chose en déploiementJe prends le cas par exemple sur...Qu'est-ce que je peux prendre comme idée ?
00:17:05 :Si je prends un truc pour faire de la classification d'imagesSi je récupère toutes les images d'ImageNetDonc ImageNet, c'est une grande base de données qui contient énormément d'imagesElle a l'air de rienIl y a des images que l'homme n'a pas forcément déjà vuesEt si je lui passe cette image que l'homme n'a jamais forcément vue à mon IA
00:17:29 :L'IA va peut-être réussir à le faireMais elle va toujours se baser sur ce qu'elle a vuDonc on va quand même avoir une erreur de ce côté-làOn va quand même avoir un léger écartC'est là qu'on aimerait le diminuer le plus possiblePour vraiment se direJ'ai même rapproché d'un raisonnement d'un spécialiste humain
00:17:53 :D'un scientifique purSi j'ai une détection d'une certaine matière sur notre planèteQue l'homme n'a jamais vueIl va pouvoir un petit peu deviner ce que c'estMais il n'aura jamais une véritéAlors la machine va faire exactement pareilOk, ça marche, merciComme d'habitude, ce que je vous propose de faire
00:18:23 :Vous avez le code qui est disponible sur mon GithubOù là j'ai faitÀ chaque fois que je fais une vidéoLe repo c'est irresourcesOù là en fait je mets tous les différents réseaux de neuronesQue moi j'étudie pour mon masterMais que j'étudie aussi pour ma passion
00:18:47 :Donc vous avez les SNN, les GAN, les LSTM, les RNNEt en fait dans le RNN vous avez le code directement qui est disponibleJe n'ai pas fait un live coding ce soirParce que comme je dis l'entraînement est assez longJe l'ai fait tourner sur ma machine, sur GPU
00:19:00 :Ça prenait vraiment une après-midi entièreParce que c'est assez gourmandMais là vous avez vraiment le code qui est assez détailléAvec les mêmes courbes que j'ai utilisées dans mon diaporamaAlors tout ce que je fais je ne l'invente pasJe me base sur un livre qui estC'est l'apprentissage profond avec Python de François Chollet
00:19:20 :C'est un bouquin que je vous ai déjà conçu sur les premières vidéosFranchement si vous êtes vraiment intéressé par le deepAllez le voir parce qu'il est bien expliqué, il est en françaisEt en plus il y a du code qui est dans le bouquinDonc c'est assez ludique à lire
00:19:32 :Donc moi je vous propose vraiment de foncer là-dedansEt voilà sinon si vous avez des questionsJe serais ravi d'y répondreJe vais regarder un petit peu sur le salon textuelS'il y a des choses que vous n'avez pas comprisesOu que vous voudriez que je revienneJe voudrais venir vous poser une question
00:19:59 :Les autres, pire, c'est l'apprentissageC'est-à-dire qu'il n'y a pas d'apprentissageC'est-à-dire qu'il n'y a pas d'apprentissageLes autres, Pierre, Loner, est-ce que vous avez d'autres questions ?
00:20:19 :Ça va, c'était assez clair ou c'était un peu compliqué ?N'hésitez pas à me faire un retour, moi je m'ai un peu adaptéC'était clair, il y avait juste la petite question que je te posaisSinon non, c'était clair, franchement superDe toute façon pour vraiment avoir un certain recul sur le deep
00:20:40 :Moi je pense qu'il faut coder quand même pas mal de ces réseaux-làCommencer par les CNN, de monter au fur et à mesureParce que là, par exemple, quelque chose que l'on peut faire avec les LSTMPour avoir une mémorisation sur les séquences d'avantC'est de faire une application de trading
00:21:02 :Ou en fait, si vous prenez une action, par exemple celle d'NVIDIAVous mémorisez plein d'autres actions, comme Tesla, etc.Vous mémorisez la valeur de l'action avec une quantité de paramètresDonc des features que vous pouvez trouverVous pouvez essayer de faire un petit botQui permettrait de prédire à court terme le cours de la bourse
00:21:27 :Sans prendre en compte, bien sûr, s'il y a des événementsJe ne sais pas, d'un coup Elon Musk va y parlerIl fait vendre une nouvelle voitureSi c'est juste des phénomènes non événementielsÇa peut marcherC'est un projet que je suis en train de développer pour les LSTM
00:21:44 :Que j'essaierai de vous présenter au cours de l'annéeMais voilà, c'est des petits projetsQue vous pouvez essayer de faireQui sont assez connus, assez populairesDans les différentes vidéos sur YouTubeIl y a quand même pas mal de data sur ça, etc.
00:22:01 :Donc n'hésitez pas à vous lancer là-dedansParce que c'est qu'en pratiquantQue vous arriverez à vous forgerVoilà, à venir forgerVoilà, voilàBon, si vous n'avez pas de questionsMoi je vais vous laisserEt je vous souhaite une très bonne soiréeEt merci encore d'être venusFranchement ça fait super plaisir
00:22:23 :Moi je prends vraiment du plaisir à vous montrer çaParce que moi j'essaie de vous transmettre un peu de savoirLes vidéos seront disponibles sur mon YouTubeJe ne sais pas si je vais remettre peut-être le lien dans la descriptionOù en fait on a chacune des vidéosQui est enregistrée par Joner
00:22:37 :On remercie aussi Joner d'enregistrer les vidéosEt de ImplicaPierre aussiDonc voilà, n'hésitez pasSi vous avez des questions ou quoiMême si vous avez les serveurs à prendre sur l'automatiqueEt forum aussi pour commencer doucementDonc avec du, comment ça s'appelleAvec du machine learning classiqueAvant qu'il y ait les raisons de Rome
00:23:03 :Parce que c'est quand même quelque chose qui est assez avancéDonc si vous voulez commencer avec de l'IAÀ prendre sur l'automatiqueJe vous conseille vraiment d'aller checker çaJe recherche la vidéo en deux deuxLà vous avez accès à toutes les vidéos qui ont été sortiesVoilà voilà
00:23:40 :Bon mais sur ce je vais vous laisserJe vous souhaite une très bonne soirée en tout casEt puis à la prochaine pour la prochaine vidéoQui sera peut-être sur, je crois que c'est laL'application météo, un truc comme çaOuais c'est l'application météoC'est l'application météo que tu nous prépares, c'est ça
Aucune occurrence trouvée pour « ».