Merci à tous pour vos retours positifs ! - Edit 1 - J'ai ajouté en description un lien github vers le code source du programme, ça vous évitera de recopier celui de la vidéo :D - Edit 2 - Réponse à une question intéressante : Question : Pourquoi avoir choisis qu'une seul couche de "neurones cachés" et pourquoi il y en a t'il 3 ? Est ce lié à un coup du hasard ? une intuition que cela fonctionne mieux ainsi ? Réponse : La question du nombre de couche cachée est un sujet qui fait pas mal débat au sein de la communauté de l'IA, suffit de voir le nombre de commentaires à ce sujet sur internet. Il faut savoir que dans une TRÈS grande majorité des cas, 1 seul couche cachée suffit amplement. En revanche, il existe de rare cas ou plusieurs couches améliorent les performances de notre IA. Pour ce qui est du nombre de neurones, j'essaie en général d'avoir au moins une valeur de plus que le nombre de neurones d'entrer.Une convention connue sinon c'est d'être entre le nombre de neurones d'entrer ET ceux de sortie. Mais ça dépend également des différents cas, je te laisse tester mon code avec différents nombres de neurones, tu verras peut-être une différence. - Edit 3 - Réponse à une question intéressante : Question : Je me demandais, est-il possible de sauvegarder le résultat de l'apprentissage de l'IA, car ici tu dois à chaque fois exécuter ta boucle pour que l'algorithme réapprenne non ? Réponse : Absolument ! Il te suffit de les sauvegarder dans un fichier à part, et de le recharger quand tu en as besoin :D (Sauvegarde W1 et W2 du coup) Tu fais une fonction : def sauvegardePoids(self): np.savetxt("w1.txt", self.W1, fmt="%s") np.savetxt("w2.txt", self.W2, fmt="%s") Et tu appelles cette fonction avant Predict(). - Edit 4 - Réponse à une question intéressante : Question : Pourquoi tu mets les valeurs de longueur et largeur entre 0 et 1 ? T'aurais pas pu laisser les vraies valeurs ? Réponse : L'intérêt est de donner une échelle à nos valeurs ([0,1]), sans cette standardisation, notre IA ne comprendrait pas l'échelle de nos valeurs. Tu peux lire cet excellent article à ce sujet : machinelearningmastery.com/how-to-improve-neural-network-stability-and-modeling-performance-with-data-scaling/ - Edit 5 - Réponse à une question intéressante : Question : Salut dans la fonction backward de ton code tu emplois un T à trois reprises mais je ne comprends pas d'ou il sort et surtout à quoi il sert Réponse : Ça permet de faire la transposée sur la matrice, tes lignes deviennent donc des colonnes et tes colonnes des lignes. Par exemple : W2: [[ 0.2980888 ] [-0.19630084] [-0.37035302]] devient W2.T : [[ 0.2980888 -0.19630084 -0.37035302]] On est obligé de faire cette manipulation car le calcul d'une matrice demande des conditions spécifiques. Si je veux multiplier une matrice (avec m lignes et n colonnes) [m,n] * [n,l] (avec n lignes et l colonnes) il y a pas de soucis, par contre [m,x] * [n,l] ne peut pas fonctionner. Il faut obligatoirement que le nombre de colonnes du premier soit égal au nombre de lignes du second !
Hello StudioTV, je me demandais, est-il possible de sauvegarder le résultat de l'apprentissage de l'IA, car ici tu dois à chaque fois exécuter ta boucle pour que l'algorithme réapprenne non ?
@@fieldytidus6385 Absolument ! Il te suffit de les sauvegarder dans un fichier à part, et de le recharger quand tu en as besoin :D (Sauvegarde W1 et W2 du coup) Tu fais une fonction : def sauvegardePoids(self): np.savetxt("w1.txt", self.W1, fmt="%s") np.savetxt("w2.txt", self.W2, fmt="%s") Et tu appelles cette fonction avant Predict().
@@StudioTV Bonjour je pense avoir compris ta video maus je ne comprend pas a la fin pourquoi quand tu changz la valeur la rose est alors bleu et surtout coment tu le sais avant meme d'entrainer ton IA sur cette nouvelle valeur
Très bonne vidéo, bon étant donné mon niveau de math niveau 2nd je n’ai pu comprendre que les grandes lignes mais grâce a toi je connais le principe d’IA 😁
Merci beaucoup ! Cela fait 3 semaines que je ne trouve pas d'exemples complets et simples mais là si. C'est très bien expliqué et on peut même comprendre les notions de maths abordées sans les avoir encore étudiées ! Merci beaucoup encore une fois !
Salut StudioTV ! Je me demandait si tu pouvais prochainement nous faire un tuto sur une intelligence artificielle où il y aurait une bases de données d'images (par exemple un dossier nommé éléphant où il y aurait les 500 premières photo d'éléphant que l'on trouve en faisant une recherche) qui serait capable de classer des images, ou d'en générer une ? Je pense que beaucoups de personnes seraient interressées par ce tutoriel =D
Très pédagogique ! J'ai ajouté pour ma part une "Fonction = perte de l'entropie croisée", Cette fonction calcule la perte de l'entropie croisée pour chaque exemple d'entraînement et retourne la perte moyenne. Merci pour cet exercice sur la mystérieuse et redoutable I.A
Pffiou, c'est tellement satisfaisant quand on a créé l'IA. J'ai appris tellement de choses. Vu toute la complexité, maintenant je me rends compte qu'il va me falloir beaucoup de courage et de recherche pour mon 1er objectif.. (créer une IA Génératrice d'images 😅).
Après avoir vu votre vidéo, pas le choix, je me suis abonné pourtant je suis pas un codeur python, mais tellement vous avez tout expliqué que j'ai tout compris. Je vais m’intéresser un peu plus à python.
très belle vidéo, j'ai repris ton programme en multipliant le gradient par différentes valeurs notamment 0.3 (return 0.3*s*(1-s)) et ça a donnée de très bons résultats avec une itération de 30000.(0 erreur en validation, 0 erreur en prédiction.
Vidéo très intéressante, notamment pour ceux qui découvrent ce domaine, j'ai cependant quelques remarques à faire : - tout d'abord sur le code en lui-même, si vous voulez accélérer la vitesse d'apprentissage, supprimez les affichages (ou ne gardez que les valeurs finales des poids) ; - j'ai du mal à comprendre pourquoi vous avez choisi la sigmoïde avec λ = 1 pour la couche de sortie, autant prendre une fonction de Heaviside qui donne directement un résultat à 0 ou à 1 (et la Heaviside n'est qu'un cas limite de sigmoïde avec λ → ∞, donc la rétro-propagation fonctionne toujours) ; - une chose me gêne, en effet vous dite que plus l'entrainement à d'itérations, plus le réseau est bon, cependant avec un nombre trop grand d'itérations vous risquez la sur-apprentissage (overfitting). Malgré ces quelques points votre vidéo reste un travail de qualité.
Merci pour votre commentaire :D Je vais répondre dans l'ordre : - Effectivement le mieux à faire est d'afficher seulement les dernières valeurs, ce sont les plus intéressantes, en revanche je voulais que les viewers voient bien l'évolution de la prédiction. C'est pour ça que j'ai laissé cet affichage :) - Pour entrainer mon réseau de neurones j'ai utilisé l'algorithme du gradient, cet algorithme du gradient a besoin d'une fonction d'activation différentiable, hors la fonction d'activation Heaviside n'est pas différentiable .La dérivée de la fonction Heaviside est égale à 0 quand x0. Ça pose donc de gros problèmes dans la mis à jour des poids. Donc la fonction Heaviside n'est JAMAIS utilisée pour la rétropropagation. - J'aurais effectivement du préciser ce détail, petite erreur de ma part :/
@@StudioTV Merci de votre réponse, sans en arriver à Heaviside, il suffit de prendre un λ très grand ^^, mais pas trop pour ne pas augmenter la complexité. Et sinon, même avec une Heaviside, on ne peut normalement pas avoir de valeurs en 0, sinon où la placer (en rouge ou en bleue dans votre exemple) donc je ne pense pas que ça pose de problèmes en pratique. De plus, mathématiquement Heaviside peut être dérivée en 0 en considérant les distributions, mais ce n'est qu'une remarque mathématique, un Dirac n'a pas d'existence propre numériquement.
J'ai trouvé la vidéo très enrichissante, pour moi qui commence à m'intéresser atla programmation j'étais larguer mais c'est tellement bien expliqué et passionnant que je suis resté jusqu'au bout bravo et merci.
merci c'est la meilleur vidéo de ma vie sur le sujet sa fait 10 ans que je chercher une video comme sa je suis choquer et révolter et surpris de voir la date de la video la pédagogie est remarquable impressionnent bravo j’en veut encore combien sa coute je contribue
Merci pour ta vidéo. Question : la dérivée de sigmoid(x) ce n'est pas x*(1-x). C'est sigmoid(x) * (1-sigmoid(x)) ce qui n'est pas du tout la même chose ! C'est une dérivée qu'on peut écrire à partir de la fonction de base, ce qui est bien pratique. Je ne comprends pas pourquoi ici on utilise s*(1-s). [ Edit ] Pour ceux que ça intéresse : en fait le code est juste, mais l'explication manque. En réalité le "s" qu'on passe à sigmoidPrime() est déjà une valeur de sigmoid. C'est pour ça qu'on ne réapplique pas la sigmoid à l'intérieur de la méthode qui calcule sa dérivée.
Il faut s'accrocher pour tout comprendre ! Merci beaucoup, c'était très intéressant, mais comme je suis en 1ère je n'ai pas encore appris les matrices et ses fonctions.
@@helpstofindhelpstofind7118 matrices et probas = niveau terminale S, mais depuis qu'il n'y a plus de S je crois que ça ne se voit plus et qu'ils ont baissé le niveau
Hey, la vidéo est insane mec je l'avait vu il y a quelque mois et aujourd'hui en cours on nous a demander de faire une page ou on parle d'un sujet ( pour moi ca a été l'IA) j'ai directe penser à cette video! c'est super bien expliquer dans les détails et étape par étape sans pour autant qu'on perde le fil (Chuis en première et franchement si c'était les profs qui nous l'avait expliquer j'pense pas que quelqu'un aurait suivis) enfin bref continue comme ca bg tu gère!
Ouais t'as fait un réseau de neurones quoi, c'est un peu la base. J'ai beaucoup utilisé anaconda d'ailleurs, c'est ce que je préconise également aux débutants, mais à un moment donné le python c'est bien gentil trois secondes. Ok ça prend des mois de tout se retaper en scratch et en C++ mais franchement ça en vaut la peine, j'ai même pu faire de nombreuses petites découvertes mathématiques (et redécouvertes, ça ce sont les risques du hors piste hein ça arrive, parfois on croise d'autres skieurs, woops) au cours des dernières années, donc ouais je regrette pas. D'ailleurs personne ne comprenait mon obsession pour l'ia il y a (super jeu de mots) encore de ça quelques années, on me prenait pour un dingue. Et aujourd'hui tout le monde en parle, surtout ceux qui n'y connaissent rien. Ça ne me dérange pas, mais c'est quand-même du bon gros enfumage. 😂 J'entends vraiment tout et n'importe quoi (rien à voir avec toi tkt, je parle en général sur youtube ou autour de moi). Même parfois j'entends des patrons d'entreprise en train de complètement fantasmer ou de délirer sur le sujet. 😂 Ils sont tous monumentalement à côté de leurs pompes et j'inclus aussi google dans le lot avec leurs gros algorithmes et leurs gros data centers hein. Pour moi le plus gros du boulot a été fait par IBM, puis NVIDIA. Et évidemment des tas de petits étudiants brillants et autres énergumènes dont je fais partie. 😅 Sans oublier tous les mathématiciens de l'Histoire qui ont apporté leur pierre à l'édifice évidemment. Les autres globalement ce sont tous plus ou moins des escrocs hein, on ne va pas se mentir, ils sont là pour la thune avant tout. 😂
Pour connaitre le nombre ou elle trouvera 0 et 1 à la perfection il fallait créer une boucle qui vérifier que chaque valeur tombe bien sur 1 0 1 0 1 0. Pour connaitre le nombre de calcul a faire pour être sur au moment des tests. Super vidéo !
Super vidéo, tu comptes continuer dans ce domaine pour de prochaines vidéos ? Ça serait vraiment super intéressant d'avoir d'autres exemples détaillés comme celui là !
Pour avoir un meilleur apprentissage, tu devrais prendre en compte un biais pour chaque neurones (bias en anglais). si tu ne sais pas de quoi je parle, Google est ton ami 😂
Vidéo très sympa et assez bien expliqué. Néanmoins un point ne me semble pas avoir été expliqué et me gène un peu : Pourquoi avoir choisis qu'une seul couche de "neurones cachés" et pourquoi il y en a t'il 3 ? Est ce lié à un coup du hasard ? une intuition que cela fonctionne mieux ainsi ? ou plutôt est ce lié à un calcul mathématiques ou autres ?
Salut Remi ! Tout d'abord merci pour ton commentaire :D C'est une excellente remarque, je vais donc essayer de te répondre clairement et en profiter pour ajouter ta question à mon commentaire épinglé . La question du nombre de couche cachée est un sujet qui fait pas mal débat au sein de la communauté de l'IA, suffit de voir le nombre de commentaires à ce sujet sur internet. Il faut savoir que dans une TRÈS grande majorité des cas, 1 seul couche cachée suffit amplement. En revanche, il existe de rare cas ou plusieurs couches améliorent les performances de notre IA. Pour ce qui est du nombre de neurones, j'essaie en général d'avoir au moins une valeur de plus que le nombre de neurones d'entrer. Une convention connue sinon c'est d'être entre le nombre de neurones d'entrer ET ceux de sortie. Mais ça dépend également des différents cas, je te laisse tester mon code avec différents nombres de neurones, tu verras peut-être une différence. Voilà, j'espère que cela aura répondu à ta question !
Privelol Effectivement et c’est regrettable ... , si tu n’es pas bilingue c’est dur de trouver des infos sur internet. Le mieux si tu veux en faire ton métier c’est d’intégrer une filière qui en donne des cours 🤷🏻♂️
ainsi il faudrait avoir un super PC (ou avec une carte graphique NVIDIA balèze) pour pouvoir enchainer des fonctions chain() rapidement. parce que admettons que je vais qu'il train 2millions de fois. mais c'est ouf n'empeche , avec ton raisonnement , on pourrait faire une appli de predict pour le PMU en mettant en params les stats des chevaux?
Hey salut ! J'aimerai contacter Studio Tv car j'aurais une question a propose de sa video sur : "creer sa premiere ia". Dans son exemple l'ia devait predire la couleur de petale. Bleu avait la valeur de 1 et rouge la valeur de 0. Ma question est la suivant, comment faire si on a une troisieme couleur de petale ? Quelle valeur elle doit prendre ? 0,5 ? J'attends votre reponse et je trouve ses videos génialissimes
Dans ce cas on ajoute des neurones de sortie. Typiquement, si on a 3 couleurs à prédire, on met 3 neurones en sortie, chacun correspondant à la prédiction d'une couleur. On choisit ensuite le neurone qui donne la plus grande valeur.
Bonjour! Cette vidéo et géniale. J'ai essayé de le programmer sur scratch (très compliqué) et je suis bloqué à l’étape de rétropropagation. Quelqu’un pourrait-il me l’expliquer un peu mieux svp?
Super vidéo! Seulement à 17:30, je ne comprends pas pourquoi tu as mis o=NN.forward(X) alors qu'on avait définit la fonction forward avec 2 parametres?
WOAW merci de partager tes connaissance, c'est pas facile de trouver des infos sur le sujet et surtout que elle soit compressible! J'aurais une question est-ce que se serait pas plus intéressant entrainer plusieurs ia et d'ajouter un peu de random sur la modification des poids pour augmenter la probabilité d'obtenir les valeurs les plus optimal pour les poids?
Merci, j'avais déjà compris le système de poids et neurones mais les IA me paraîssaient extrêmement complexes et inaccessibles alors que là j'ai tout compris.
Je constate que le programme nécessite systématiquement une phase d'entraînement avant de répondre à la question. Serait-il possible que le programme puisse sauvegarder son entraînement et fournir une réponse à la question sans avoir à répéter l'intégralité du processus à chaque fois ?
Comment ta trouver le 1,000 pour la 2ème synapse. J'ai fait 2×0,6+9×0,3 ça fait 3,9 mais quand je calcul la sigmoide de 3,9 je trouve un autre résultat que 1,000 j'ai bien mis les parenthèse pourtant je trouve 0,9801 alors que les autres je trouve bien le même résultat
Salut donc si je comprends bien cela signifie qu’il y a 2 façons d’augmenter l’efficacité de l’IA : - augmenter le nombre de données - augmenter le nombre de tentatives pour ajuster la valeur des synapses
Merci pour la vidéo, mais du coup quelle application ( gratuite) utiliser pour "créer" cela enfaite. Difficile de trouver sur le web. Pour un chatbot avec des emotions voir une conscience.
Bonjour, ou bonsoir, dépendra de l'heure à laquelle vous me lirez. J'ai bien aimer votre vidéo. Je voulais vous demander comment faire pour entraîné son IA pour qu'il fasse une tache bien spécifique genre reconnaître des mots clé dans des phrases dans une base de donnée. Merci de votre retour. Bonne journée.
Bonjour je pense avoir compris ta video maus je ne comprend pas a la fin pourquoi quand tu changz la valeur la rose est alors bleu et surtout coment tu le sais avant meme d'entrainzr ton IA sur cette nouvelke valeur
Dans la fonction "train", pourquoi ne pas avoir créé une boucle "While" qui s'exécute tant que les valeurs de sortie sont différentes des valeurs attendues, au lieu de cette boucle "For" qui limite à l'avance le nombre d'itération ?
Mais donc a chaque fois il faut faire n iteration pour que la nieme soit juste, il peut pas garder en memoire les valeurs qu'il a utilise pour la derniere iteration plutot que de eepartir de 0 a chaque fois Et comment on fait surtout
Comment en apprendre plus ? j'ai réussi à te suivre dans les calculs. Je trouve ça super intéressant mais je n'est pas trouver de cas pratique. Je vais déjà essayer d'augmenter le nombre d'entrée. Y a t'il une relation entre le nombre d'entrée et le nombre de couche hidden ?
Franchement super passionnant comme vidéo mais j ai une questions. La tu entraînes ton ia à quelque chose qu il fait une fois. Mais quels sont les différences dans une ia qui va exécuter plusieurs action et qui doit y "refelchir" en permanence, pour donner un exemple plus réel: le snake. Mais merci pour ton boulot c est top
salut juste t'a vidéo était super mais peut tu me dire ou me rediriger vers des ligne de code pour que l'IA ne cherche pas une fleure mais qu'elle plisse résoudre des problème mathématique ? Sinon continue comme sa
A chaque fois que tu relancer le programme, ca réinitialiser le NN. faut l'initialisé qu'1x, et ensuite supprimer l'étape du code. (j'ai remarqué ca en testant, je comprenais pas pk quand je lancais 5M de fois sans les print (pour aller vite), puis 1x avec les print me donné un résultat nul. ) au passage super vidéo
Super video Bro, comment fair un réseau avec plusieurs hidden layer et 3 valeurs de sortie (a,b,c) ? Peut tu donner une piste avec numpy sans trop d'embrouillage ??💪💪 Thnx.
Merci à tous pour vos retours positifs !
- Edit 1 - J'ai ajouté en description un lien github vers le code source du programme, ça vous évitera de recopier celui de la vidéo :D
- Edit 2 - Réponse à une question intéressante :
Question : Pourquoi avoir choisis qu'une seul couche de "neurones cachés" et pourquoi il y en a t'il 3 ? Est ce lié à un coup du hasard ? une intuition que cela fonctionne mieux ainsi ?
Réponse : La question du nombre de couche cachée est un sujet qui fait pas mal débat au sein de la communauté de l'IA, suffit de voir le nombre de commentaires à ce sujet sur internet.
Il faut savoir que dans une TRÈS grande majorité des cas, 1 seul couche cachée suffit amplement. En revanche, il existe de rare cas ou plusieurs couches améliorent les performances de notre IA.
Pour ce qui est du nombre de neurones, j'essaie en général d'avoir au moins une valeur de plus que le nombre de neurones d'entrer.Une convention connue sinon c'est d'être entre le nombre de neurones d'entrer ET ceux de sortie.
Mais ça dépend également des différents cas, je te laisse tester mon code avec différents nombres de neurones, tu verras peut-être une différence.
- Edit 3 - Réponse à une question intéressante :
Question : Je me demandais, est-il possible de sauvegarder le résultat de l'apprentissage de l'IA, car ici tu dois à chaque fois exécuter ta boucle pour que l'algorithme réapprenne non ?
Réponse : Absolument ! Il te suffit de les sauvegarder dans un fichier à part, et de le recharger quand tu en as besoin :D (Sauvegarde W1 et W2 du coup)
Tu fais une fonction :
def sauvegardePoids(self):
np.savetxt("w1.txt", self.W1, fmt="%s")
np.savetxt("w2.txt", self.W2, fmt="%s")
Et tu appelles cette fonction avant Predict().
- Edit 4 - Réponse à une question intéressante :
Question : Pourquoi tu mets les valeurs de longueur et largeur entre 0 et 1 ? T'aurais pas pu laisser les vraies valeurs ?
Réponse : L'intérêt est de donner une échelle à nos valeurs ([0,1]), sans cette standardisation, notre IA ne comprendrait pas l'échelle de nos valeurs.
Tu peux lire cet excellent article à ce sujet : machinelearningmastery.com/how-to-improve-neural-network-stability-and-modeling-performance-with-data-scaling/
- Edit 5 - Réponse à une question intéressante :
Question : Salut dans la fonction backward de ton code tu emplois un T à trois reprises mais je ne comprends pas d'ou il sort et surtout à quoi il sert
Réponse : Ça permet de faire la transposée sur la matrice, tes lignes deviennent donc des colonnes et tes colonnes des lignes.
Par exemple :
W2:
[[ 0.2980888 ]
[-0.19630084]
[-0.37035302]]
devient
W2.T :
[[ 0.2980888 -0.19630084 -0.37035302]]
On est obligé de faire cette manipulation car le calcul d'une matrice demande des conditions spécifiques.
Si je veux multiplier une matrice (avec m lignes et n colonnes) [m,n] * [n,l] (avec n lignes et l colonnes) il y a pas de soucis, par contre [m,x] * [n,l] ne peut pas fonctionner.
Il faut obligatoirement que le nombre de colonnes du premier soit égal au nombre de lignes du second !
Hello StudioTV, je me demandais, est-il possible de sauvegarder le résultat de l'apprentissage de l'IA, car ici tu dois à chaque fois exécuter ta boucle pour que l'algorithme réapprenne non ?
@@fieldytidus6385 Absolument ! Il te suffit de les sauvegarder dans un fichier à part, et de le recharger quand tu en as besoin :D (Sauvegarde W1 et W2 du coup)
Tu fais une fonction :
def sauvegardePoids(self):
np.savetxt("w1.txt", self.W1, fmt="%s")
np.savetxt("w2.txt", self.W2, fmt="%s")
Et tu appelles cette fonction avant Predict().
@@StudioTV Merci :) J'adore ce que tu fais, continue comme ça !
Très bonne vidéo. J'ai fait avec EDUpython et les bibliothèques nécessaires y sont pour ceux que ça intéresse.
@@StudioTV Bonjour je pense avoir compris ta video maus je ne comprend pas a la fin pourquoi quand tu changz la valeur la rose est alors bleu et surtout coment tu le sais avant meme d'entrainer ton IA sur cette nouvelle valeur
Alors là si tout vas bien, bah vous avez toujours rien compris x) super intéressant, un exemple très concret
très bonne vidéo et je trouve que le sujet est très bien vulgarisé. Si bien que cela dérange ceux qui veulent garder ce savoir que pour eux.
espece d'égoïste, on aime apprendre ici
Je m'attendais pas a ce que tu fasses un vidéo comme ça... passionné par la programmation, tu m'as épatés
Très bonne vidéo, bon étant donné mon niveau de math niveau 2nd je n’ai pu comprendre que les grandes lignes mais grâce a toi je connais le principe d’IA 😁
Vraiment génial comme vidéo, tu me donnes envie d'en apprendre encore plus là ! je sens que je vais passer ma nuit à regarder ce genre de vidéos...
Merci beaucoup ! Cela fait 3 semaines que je ne trouve pas d'exemples complets et simples mais là si. C'est très bien expliqué et on peut même comprendre les notions de maths abordées sans les avoir encore étudiées ! Merci beaucoup encore une fois !
Si j'avais eu ça pour mon TPE de cette année, ça nous aurait bien aidé ! Super intéressant !
J'aurais sûrement plus de chance que toi
Excellent vidéo ! Avec un exemple complet et un peu de vulgarisation, le secret des réseaux de neurones n est plus :)
Salut StudioTV !
Je me demandait si tu pouvais prochainement nous faire un tuto sur une intelligence artificielle où il y aurait une bases de données d'images (par exemple un dossier nommé éléphant où il y aurait les 500 premières photo d'éléphant que l'on trouve en faisant une recherche) qui serait capable de classer des images, ou d'en générer une ? Je pense que beaucoups de personnes seraient interressées par ce tutoriel =D
Très pédagogique ! J'ai ajouté pour ma part une "Fonction = perte de l'entropie croisée", Cette fonction calcule la perte de l'entropie croisée pour chaque exemple d'entraînement et retourne la perte moyenne. Merci pour cet exercice sur la mystérieuse et redoutable I.A
Super intéressant, merci. C'est bien que tu détails tout depuis le début, on comprends mieux comme ça.
Juste incroyable, je n'avais jamais compris comment fonctionnait une IA, et tu vient de me l'expliquer en moins de 30 minutes, merci !!
c'est quand-même beaucoup plus compliqué que ça ahah
Pffiou, c'est tellement satisfaisant quand on a créé l'IA. J'ai appris tellement de choses.
Vu toute la complexité, maintenant je me rends compte qu'il va me falloir beaucoup de courage et de recherche pour mon 1er objectif.. (créer une IA Génératrice d'images 😅).
Force, il va falloir beaucoup de connaissances
Quel plaisir quand tu finis par trouver le bon résultat... Merci pour la vidéo !
Après avoir vu votre vidéo, pas le choix, je me suis abonné pourtant je suis pas un codeur python, mais tellement vous avez tout expliqué que j'ai tout compris. Je vais m’intéresser un peu plus à python.
très belle vidéo, j'ai repris ton programme en multipliant le gradient par différentes valeurs notamment 0.3 (return 0.3*s*(1-s)) et ça a donnée de très bons résultats avec une itération de 30000.(0 erreur en validation, 0 erreur en prédiction.
Vidéo très intéressante, notamment pour ceux qui découvrent ce domaine, j'ai cependant quelques remarques à faire :
- tout d'abord sur le code en lui-même, si vous voulez accélérer la vitesse d'apprentissage, supprimez les affichages (ou ne gardez que les valeurs finales des poids) ;
- j'ai du mal à comprendre pourquoi vous avez choisi la sigmoïde avec λ = 1 pour la couche de sortie, autant prendre une fonction de Heaviside qui donne directement un résultat à 0 ou à 1 (et la Heaviside n'est qu'un cas limite de sigmoïde avec λ → ∞, donc la rétro-propagation fonctionne toujours) ;
- une chose me gêne, en effet vous dite que plus l'entrainement à d'itérations, plus le réseau est bon, cependant avec un nombre trop grand d'itérations vous risquez la sur-apprentissage (overfitting).
Malgré ces quelques points votre vidéo reste un travail de qualité.
Merci pour votre commentaire :D Je vais répondre dans l'ordre :
- Effectivement le mieux à faire est d'afficher seulement les dernières valeurs, ce sont les plus intéressantes, en revanche je voulais que les viewers voient bien l'évolution de la prédiction. C'est pour ça que j'ai laissé cet affichage :)
- Pour entrainer mon réseau de neurones j'ai utilisé l'algorithme du gradient, cet algorithme du gradient a besoin d'une fonction d'activation différentiable, hors la fonction d'activation Heaviside n'est pas différentiable .La dérivée de la fonction Heaviside est égale à 0 quand x0. Ça pose donc de gros problèmes dans la mis à jour des poids.
Donc la fonction Heaviside n'est JAMAIS utilisée pour la rétropropagation.
- J'aurais effectivement du préciser ce détail, petite erreur de ma part :/
@@StudioTV Merci de votre réponse, sans en arriver à Heaviside, il suffit de prendre un λ très grand ^^, mais pas trop pour ne pas augmenter la complexité. Et sinon, même avec une Heaviside, on ne peut normalement pas avoir de valeurs en 0, sinon où la placer (en rouge ou en bleue dans votre exemple) donc je ne pense pas que ça pose de problèmes en pratique.
De plus, mathématiquement Heaviside peut être dérivée en 0 en considérant les distributions, mais ce n'est qu'une remarque mathématique, un Dirac n'a pas d'existence propre numériquement.
Merci pour ce partage. Un bout de code bien expliqué est bien plus parlant qu'un long texte d’université pour un vieux dev comme moi :)
J'ai trouvé la vidéo très enrichissante, pour moi qui commence à m'intéresser atla programmation j'étais larguer mais c'est tellement bien expliqué et passionnant que je suis resté jusqu'au bout bravo et merci.
la meilleur video sur l IA j'ai eu à suivre jusqu'a ce jour. franchement chapeaux
merci c'est la meilleur vidéo de ma vie sur le sujet sa fait 10 ans que je chercher une video comme sa je suis choquer et révolter et surpris de voir la date de la video la pédagogie est remarquable impressionnent bravo j’en veut encore combien sa coute je contribue
c'est énorme jvai faire une fonction predict en entrant les perf (musique) des chevaux du PMU MDR !! c'est excellent ta vidéo merci
La musique seule ne suffirait pas , mais avec une dizaine de param en entrée jsuis curieux de voir les resultat avc le deep learning
Franchement c'est génial c'est consepte de vidéo sur les IA et machine learning,
Continue comme cela !
Hâte de voir la prochaine vidéo !!! 👌
Excellente vidéo, très bien expliqué ,Merci pour le code.
Merci pour ta vidéo.
Question : la dérivée de sigmoid(x) ce n'est pas x*(1-x). C'est sigmoid(x) * (1-sigmoid(x)) ce qui n'est pas du tout la même chose ! C'est une dérivée qu'on peut écrire à partir de la fonction de base, ce qui est bien pratique. Je ne comprends pas pourquoi ici on utilise s*(1-s).
[ Edit ] Pour ceux que ça intéresse : en fait le code est juste, mais l'explication manque. En réalité le "s" qu'on passe à sigmoidPrime() est déjà une valeur de sigmoid. C'est pour ça qu'on ne réapplique pas la sigmoid à l'intérieur de la méthode qui calcule sa dérivée.
MErci beaucoup pour l'éclaircissement, j'ai également constaté la même erreur et je ne comprenais pas pourquoi ça fonctionnait
Il faut s'accrocher pour tout comprendre ! Merci beaucoup, c'était très intéressant, mais comme je suis en 1ère je n'ai pas encore appris les matrices et ses fonctions.
Ouais c est la aussi ou je bloque
si tu fais maths expertes on le vois cette année normalement
@@nicolascolinas9986 Oui je viens de terminer le chapitre
petit c 'est le niveau universitaire il faut maitriser les matrices et les probabilités sinon tu ne pourras rien comprendre dans cette video
@@helpstofindhelpstofind7118 matrices et probas = niveau terminale S, mais depuis qu'il n'y a plus de S je crois que ça ne se voit plus et qu'ils ont baissé le niveau
Hey, la vidéo est insane mec je l'avait vu il y a quelque mois et aujourd'hui en cours on nous a demander de faire une page ou on parle d'un sujet ( pour moi ca a été l'IA)
j'ai directe penser à cette video!
c'est super bien expliquer dans les détails et étape par étape sans pour autant qu'on perde le fil (Chuis en première et franchement si c'était les profs qui nous l'avait expliquer j'pense pas que quelqu'un aurait suivis) enfin bref continue comme ca bg tu gère!
j'aime le concept de cette vidéo en plus sa apprend beaucoup chose dans la création de IA
c'est incroyable merci de me permettre de découvrir ce monde là
Ouais t'as fait un réseau de neurones quoi, c'est un peu la base. J'ai beaucoup utilisé anaconda d'ailleurs, c'est ce que je préconise également aux débutants, mais à un moment donné le python c'est bien gentil trois secondes. Ok ça prend des mois de tout se retaper en scratch et en C++ mais franchement ça en vaut la peine, j'ai même pu faire de nombreuses petites découvertes mathématiques (et redécouvertes, ça ce sont les risques du hors piste hein ça arrive, parfois on croise d'autres skieurs, woops) au cours des dernières années, donc ouais je regrette pas.
D'ailleurs personne ne comprenait mon obsession pour l'ia il y a (super jeu de mots) encore de ça quelques années, on me prenait pour un dingue. Et aujourd'hui tout le monde en parle, surtout ceux qui n'y connaissent rien. Ça ne me dérange pas, mais c'est quand-même du bon gros enfumage. 😂
J'entends vraiment tout et n'importe quoi (rien à voir avec toi tkt, je parle en général sur youtube ou autour de moi).
Même parfois j'entends des patrons d'entreprise en train de complètement fantasmer ou de délirer sur le sujet. 😂
Ils sont tous monumentalement à côté de leurs pompes et j'inclus aussi google dans le lot avec leurs gros algorithmes et leurs gros data centers hein.
Pour moi le plus gros du boulot a été fait par IBM, puis NVIDIA. Et évidemment des tas de petits étudiants brillants et autres énergumènes dont je fais partie. 😅
Sans oublier tous les mathématiciens de l'Histoire qui ont apporté leur pierre à l'édifice évidemment.
Les autres globalement ce sont tous plus ou moins des escrocs hein, on ne va pas se mentir, ils sont là pour la thune avant tout. 😂
Extraordinaire merci du partage, tu as un avenir en pédagogie je pense.
Pour connaitre le nombre ou elle trouvera 0 et 1 à la perfection il fallait créer une boucle qui vérifier que chaque valeur tombe bien sur 1 0 1 0 1 0.
Pour connaitre le nombre de calcul a faire pour être sur au moment des tests.
Super vidéo !
Bogo-sort in a nutshell
Hello Studio TV, j'adore la vidéo ! On en veut d'autres :)
Fieldytidus Merci ! C’est noté !
Merci au moins maintenant j'ai compris comment on appliquait la rétropropagation
t'es un crack, merci pour cette vidéo !
Super vidéo, tu comptes continuer dans ce domaine pour de prochaines vidéos ? Ça serait vraiment super intéressant d'avoir d'autres exemples détaillés comme celui là !
Cette vidéo a de bons retours, alors oui il y a des chances que je continue sur l'IA :D
Très bonne introduction à l'intelligence artificielle, continue, bravo !
Merci pour cette vidéo, excellentes explications !! bravo
Franchement juste génial ta vidéo, t'es explications sont très claire merci beaucoup ^^
J’ai rien compris parce que je comprends rien au Python et aux algos mais j’ai bien aimé, c’est bien expliqué
tu sais vraiment bien expliquées j'ai tout compris merci a toi
cc vince super video le montage au top comme dhabitude c est super l intelligence artificielle merci pour le partage
C'est vraiment cool de faire ça. Par contre je n'aurais jamais cru qu'un verbe à l'infinitif me pique les yeux dans un programme.
Super vidéo, on voit un aperçu de ce qu'on peut faire en IA. Ca semble moins flou. Tu fais/as fait quoi comme études ?
Merci ! J'ai fais Maths/Info :)
Pour avoir un meilleur apprentissage, tu devrais prendre en compte un biais pour chaque neurones (bias en anglais). si tu ne sais pas de quoi je parle, Google est ton ami 😂
Un grand bravo pour ta vidéo très pédagogique.
une très bonne vidéo bravo. 👍🏻
Très bonnes explications . Merci
Vidéo très sympa et assez bien expliqué.
Néanmoins un point ne me semble pas avoir été expliqué et me gène un peu :
Pourquoi avoir choisis qu'une seul couche de "neurones cachés" et pourquoi il y en a t'il 3 ?
Est ce lié à un coup du hasard ? une intuition que cela fonctionne mieux ainsi ? ou plutôt est ce lié à un calcul mathématiques ou autres ?
Salut Remi !
Tout d'abord merci pour ton commentaire :D
C'est une excellente remarque, je vais donc essayer de te répondre clairement et en profiter pour ajouter ta question à mon commentaire épinglé .
La question du nombre de couche cachée est un sujet qui fait pas mal débat au sein de la communauté de l'IA, suffit de voir le nombre de commentaires à ce sujet sur internet.
Il faut savoir que dans une TRÈS grande majorité des cas, 1 seul couche cachée suffit amplement. En revanche, il existe de rare cas ou plusieurs couches améliorent les performances de notre IA.
Pour ce qui est du nombre de neurones, j'essaie en général d'avoir au moins une valeur de plus que le nombre de neurones d'entrer.
Une convention connue sinon c'est d'être entre le nombre de neurones d'entrer ET ceux de sortie.
Mais ça dépend également des différents cas, je te laisse tester mon code avec différents nombres de neurones, tu verras peut-être une différence.
Voilà, j'espère que cela aura répondu à ta question !
C'est un domaine dans lequel j'avais envie d'en apprendre plus mais j'avais du mal à trouver des infos
Privelol Effectivement et c’est regrettable ... , si tu n’es pas bilingue c’est dur de trouver des infos sur internet.
Le mieux si tu veux en faire ton métier c’est d’intégrer une filière qui en donne des cours 🤷🏻♂️
Je recommande !!!!!!!!!!!!!! best ia video on youtube fr
Merci beaucoup
Mercii enfin trouvé un bon tuto depuis des jours
ainsi il faudrait avoir un super PC (ou avec une carte graphique NVIDIA balèze) pour pouvoir enchainer des fonctions chain() rapidement. parce que admettons que je vais qu'il train 2millions de fois. mais c'est ouf n'empeche , avec ton raisonnement , on pourrait faire une appli de predict pour le PMU en mettant en params les stats des chevaux?
Tres bonne vidéo , interessante et bien expliquée , merci
Top merci pour les explications :)
Tres intéressant bien expliqué merci
Hey salut ! J'aimerai contacter Studio Tv car j'aurais une question a propose de sa video sur : "creer sa premiere ia". Dans son exemple l'ia devait predire la couleur de petale. Bleu avait la valeur de 1 et rouge la valeur de 0. Ma question est la suivant, comment faire si on a une troisieme couleur de petale ? Quelle valeur elle doit prendre ? 0,5 ? J'attends votre reponse et je trouve ses videos génialissimes
Dans ce cas on ajoute des neurones de sortie. Typiquement, si on a 3 couleurs à prédire, on met 3 neurones en sortie, chacun correspondant à la prédiction d'une couleur. On choisit ensuite le neurone qui donne la plus grande valeur.
Et à ce moment là normalement vous avez rien compris, +1abonne je t’adores 😂
Merci beaucoup, ce fut intéressant, même si j'ai lâcher à la rétropropagation ça deviens trop compliquer pou un novice ^^.
Bonjour! Cette vidéo et géniale. J'ai essayé de le programmer sur scratch (très compliqué) et je suis bloqué à l’étape de rétropropagation. Quelqu’un pourrait-il me l’expliquer un peu mieux svp?
en très gros, la rétropropagation va vérifier si la réponse de l'IA est correcte, c'est pour ça que la réponse est dans la deuxieme phrase
Une question 3ans après mais bon il les sauves ces donnés à chaque fois c'est reset ?
Bonsoir disons c'est intéressant encore bravo d'autres videos svp
Super vidéo! Seulement à 17:30, je ne comprends pas pourquoi tu as mis o=NN.forward(X) alors qu'on avait définit la fonction forward avec 2 parametres?
Merci pour cette vidéo très claire.
WOAW merci de partager tes connaissance, c'est pas facile de trouver des infos sur le sujet et surtout que elle soit compressible! J'aurais une question est-ce que se serait pas plus intéressant entrainer plusieurs ia et d'ajouter un peu de random sur la modification des poids pour augmenter la probabilité d'obtenir les valeurs les plus optimal pour les poids?
Merci énormément pour ces explications très utiles
Merci, j'avais déjà compris le système de poids et neurones mais les IA me paraîssaient extrêmement complexes et inaccessibles alors que là j'ai tout compris.
Merci pour le tuto le Matheu!
Je constate que le programme nécessite systématiquement une phase d'entraînement avant de répondre à la question. Serait-il possible que le programme puisse sauvegarder son entraînement et fournir une réponse à la question sans avoir à répéter l'intégralité du processus à chaque fois ?
Comment ta trouver le 1,000 pour la 2ème synapse. J'ai fait 2×0,6+9×0,3 ça fait 3,9 mais quand je calcul la sigmoide de 3,9 je trouve un autre résultat que 1,000 j'ai bien mis les parenthèse pourtant je trouve 0,9801 alors que les autres je trouve bien le même résultat
Les synapses sa me rappel mes cours de SVT
Tu es un très bon pédagogues
Salut donc si je comprends bien cela signifie qu’il y a 2 façons d’augmenter l’efficacité de l’IA :
- augmenter le nombre de données
- augmenter le nombre de tentatives pour ajuster la valeur des synapses
Super vidéo !
Par contre, le pourcentage de chance qu'il y ait 3 sorties prédites fausses après les 29 999 essais est, je pense, assez faible :')
Merci pour la vidéo, mais du coup quelle application ( gratuite) utiliser pour "créer" cela enfaite. Difficile de trouver sur le web. Pour un chatbot avec des emotions voir une conscience.
Super vidéo
Bonne pédagogie en plus
Bonjour, ou bonsoir, dépendra de l'heure à laquelle vous me lirez. J'ai bien aimer votre vidéo. Je voulais vous demander comment faire pour entraîné son IA pour qu'il fasse une tache bien spécifique genre reconnaître des mots clé dans des phrases dans une base de donnée. Merci de votre retour. Bonne journée.
Bonjour je pense avoir compris ta video maus je ne comprend pas a la fin pourquoi quand tu changz la valeur la rose est alors bleu et surtout coment tu le sais avant meme d'entrainzr ton IA sur cette nouvelke valeur
Dans la fonction "train", pourquoi ne pas avoir créé une boucle "While" qui s'exécute tant que les valeurs de sortie sont différentes des valeurs attendues, au lieu de cette boucle "For" qui limite à l'avance le nombre d'itération ?
merci pour ta video inspirante
Mais pour des choses plus complexes avec beau oup plus de parametres qui entre en jeux il faut du coup d'autres fonctions j'imagine ?
Mais donc a chaque fois il faut faire n iteration pour que la nieme soit juste, il peut pas garder en memoire les valeurs qu'il a utilise pour la derniere iteration plutot que de eepartir de 0 a chaque fois
Et comment on fait surtout
Comment en apprendre plus ? j'ai réussi à te suivre dans les calculs. Je trouve ça super intéressant mais je n'est pas trouver de cas pratique. Je vais déjà essayer d'augmenter le nombre d'entrée. Y a t'il une relation entre le nombre d'entrée et le nombre de couche hidden ?
Bonjour, à la place de python, est-ce que le logiciel RAD studio peut créer une I.A. Merci
Merci de tout coeur !!!!!!
Stp je vais bientôt débuter dans l'IA tu peux proposer un ordi puissant pour ça ainsi que pour la programmation
Franchement super passionnant comme vidéo mais j ai une questions. La tu entraînes ton ia à quelque chose qu il fait une fois. Mais quels sont les différences dans une ia qui va exécuter plusieurs action et qui doit y "refelchir" en permanence, pour donner un exemple plus réel: le snake.
Mais merci pour ton boulot c est top
Vraiment sympa comme vidéo
Très intéressant !
salut juste t'a vidéo était super mais peut tu me dire ou me rediriger vers des ligne de code pour que l'IA ne cherche pas une fleure mais qu'elle plisse résoudre des problème mathématique ? Sinon continue comme sa
merciiii je vous aime
Bonjour génial la vidéo,
La dérivée de la fonction sigma est σ(s)*(1 - σ(s)) et pas s(1 - s)... non?
bonjour, juste jene comprends pas comment tu défini l'entré et le poids de tes synapses? est-ce fait au pif
Wow sacrée vidéo bravo !
A chaque fois que tu relancer le programme, ca réinitialiser le NN. faut l'initialisé qu'1x, et ensuite supprimer l'étape du code.
(j'ai remarqué ca en testant, je comprenais pas pk quand je lancais 5M de fois sans les print (pour aller vite), puis 1x avec les print me donné un résultat nul. )
au passage super vidéo
svp est cela marche aussi avec les images ,videos et données d'autre nature?
Super video Bro, comment fair un réseau avec plusieurs hidden layer et 3 valeurs de sortie (a,b,c) ? Peut tu donner une piste avec numpy sans trop d'embrouillage ??💪💪 Thnx.