Apprendre le machine learning

a marqué ce sujet comme résolu.

Salut

2 remarques pour le moment

  • Prérequis et matériel ::
  • Programmation Python

puis

  • Installation de Python
  • Installation d’un éditeur de code ou d’un IDE
  • Démarrage d’un projet

Si tu considère que le python est un prérequis, je pense que tu peux te dispenser d’expliquer l’installation de python. Tu peux juste dire quels modules tu vas utiliser, au moment où tu vas les utiliser.

L’autre raison étant que j’avais du mal à savoir dans quel contexte d’application utiliser le machine learning et la plupart des cours ne rentrer pas toujours dans des exemples pratiques.

C’est mon sentiment aussi… et je ne trouve pas que ton plan aille dans cette direction. Pour le moment, cela ressemble plus à un catalogue de techniques, plutôt qu’une méthodologie pour aborder les différents types de problème et explorer les différentes solutions possibles.

+2 -0

Merci, je vais mettre à jour le cours pour supprimer la partie concernant l’installation de Python, par contre je vais mettre un lien vers le cours Python de ZdS pour permettre à des débutants complet de commencer par là.

En faites, je pensais éventuellement dans un premier temps à parcourir les notions fondamentales du ML avec à chaque fois, une partie "Théorie" qui permet de comprendre la théorie derrière la notion avant d’entrer dans la seconde partie Pratique ou j’utilise la théorie qu’on vient de voir dans une sorte de mini-projet

Ensuite, à la fin de l’aspect ML, un gros projet qui regroupe les notions qu’on a vu avec une réalisation étape par étape, de même pour la partie deep learning et pour finir un vrai projet que j’ai eu à faire dans ma vie professionnelle

Je suis ouvert à toute autre style pédagogique qui serait meilleur :)

Edit : Après réflexion, pourquoi pas inverser la pédagogie et plutôt faire un projet par notion pour mieux comprendre justement dans quel type de projet cette technique de ML est intéressante ?

Exemple : Au lieu de "régression linéaire" => "Prédire le prix d’un appartement"

+0 -0

Salut :)

Edit : Après réflexion, pourquoi pas inverser la pédagogie et plutôt faire un projet par notion pour mieux comprendre justement dans quel type de projet cette technique de ML est intéressante ?

Exemple : Au lieu de "régression linéaire" => "Prédire le prix d’un appartement"

Effectivement ça pourrait être intéressant je pense :)

;) Je ne pensais pas que les régressions (linéaire, polynomiale) puissent être du "machine learning" ou même de l' IA. Dans ce cas, je serais comme Monsieur Jourdain :

Par ma foi! il y a plus de quarante ans que je fais de l’intelligence artificielle sans que j’en susse rien, et je vous suis le plus obligé du monde de m’avoir appris cela.

Même si, dans mon cas, ce serait plutôt 50 ans ! :lol:

+1 -0

Hello,

Je rejoins les remarques précédentes : la structure de ton tuto pose problème surtout pour un contenu introductif au ML.

Tu devrais avoir plutôt une approche comme ceci :

Une partie préambule - introduction (à quoi ça sert ? Ce qu’est le ML et ce qu’il n’est pas ? Des exemples d’utilisation (NLP, finances,…), très très brièvement les méthodes d’apprentissage (qui seront vues dans la première partie), et une section sur la lecture du tuto).

Partie I : la théorie (plusieurs chapitres : apprentissage supervisé, apprentissage non supervisé, arbres de décision, exemples d’algos, etc.). Tu ne peux pas aller outre. Ne pas oublier ici un chapitre (ou deux,..) de rafraichissement mathématique.

Et une partie II, plus applicative. L’idéal serait de trouver une (ou plusieurs) idée(s) d’application(s) à développer. Rien de bien folichon mais qui offre une introduction pratique aux concepts vus en partie I. Les exemples de projets que tu as déjà mentionnés forment une bonne base donc là, je dirais que c’est bon. Il faudrait vraiment réarranger la partie théorique.

N’hésite pas à regarder la structure d’ouvrages introductifs au ML (attention à ne pas copier/coller la structure de ceux-ci à l’identique, c’est protégé par le droit d’auteur), mais tu verras que globalement tu as une scission théorie / application pour la simple et bonne raison qu’il est très compliqué de faire point par point.

+1 -0

Bonjour,

Eh bien, ça m’a l’air prometteur.

Edit : Après réflexion, pourquoi pas inverser la pédagogie et plutôt faire un projet par notion pour mieux comprendre justement dans quel type de projet cette technique de ML est intéressante ?
Exemple : Au lieu de "régression linéaire" => "Prédire le prix d’un appartement"

Je t’encourage à partir dans ce sens là, car comme tu le dis

L’autre raison étant que j’avais du mal à savoir dans quel contexte d’application utiliser le machine learning et la plupart des cours ne rentrer pas toujours dans des exemples pratiques.

A mon avis, tant qu’en premier plan tu as un sommaire par technique / algorithme, tu tomberas toi aussi dans le même genre de travers. Donc un sommaire par type de problème me parait mieux.

Personnellement ce que j’attendrais d’un bon cours sur le ML, c’est vraiment cette approche inverse:

  1. J’ai tel type de problème, quelle technique je peux utiliser pour le résoudre ?
  2. J’ai résolu mon problème, c’est magique ! Mais en fait comment et pourquoi ça marche ?

Ca serait aussi certainement intéressant de parler de ce que n’est pas le ML et de ce qu’il ne permet pas de résoudre. Je dis ça parce qu’aujourd’hui, si on écoute les médias, on met tellement tout dans les cases IA et ML que ça ne veut plus rien dire. Ca serait l’occasion de recadrer les choses.

Quoi qu’il en soit, bon courage pour la rédaction.

+1 -0

Je t’encourage à partir dans ce sens là, car comme tu le dis

Je ne le recommande sincèrement pas. D’un point de vue rédactionnel, ça va poser des problèmes (appel de notions de tous les côtés, répétitions entre les chapitres,..). Il est plus aisé de scinder en deux et ensuite, pour les applications, faire le lien entre les parties.

+0 -0

Je vois l’intérêt du « un projet par notion », mais j’y vois aussi deux grosses limites : il faut que l’exemple soit facilement généralisable et il faut que le lecteur soit capable de retrouver facilement l’information s’il revient dans le tuto. Si la partie sur les régressions linéaires s’appelle « prix du logement », retrouver où est l’info, c’est impossible.

Introduire des exemples et projets tôt a son intérêt, mais il faut un minimum pour comprendre ce qu’on fait et pourquoi on le fait. Le risque de la pédagogie trop théorique, c’est d’être incapable de l’appliquer à une situation concrète. Le risque de celle entièrement basée sur des exemples, c’est de ne savoir qu’appliquer des recettes de cuisine toute faite.

+2 -0

Je vois l’intérêt du « un projet par notion », mais j’y vois aussi deux grosses limites : il faut que l’exemple soit facilement généralisable et il faut que le lecteur soit capable de retrouver facilement l’information s’il revient dans le tuto. Si la partie sur les régressions linéaires s’appelle « prix du logement », retrouver où est l’info, c’est impossible.

Introduire des exemples et projets tôt a son intérêt, mais il faut un minimum pour comprendre ce qu’on fait et pourquoi on le fait. Le risque de la pédagogie trop théorique, c’est d’être incapable de l’appliquer à une situation concrète. Le risque de celle entièrement basée sur des exemples, c’est de ne savoir qu’appliquer des recettes de cuisine toute faite.

Gabbro

De toute façon, l’idéal est d’avoir la structure la plus simple possible au moment de la rédaction (keep it simple). Une fois qu’on a une idée globale de la structure du tuto, on peut regarder pour faire des "exercices intermédiaires", remodeler un peu le truc.

Mais je ne recommande pas du tout la suggestion ci-dessus comme première approche, c’est casse-gueule (je le sais, j’suis passé par là). Ce n’est pas anodin si la plupart des ouvrages dispos ont une structure plus générique. ;)

+1 -0

Salut ! Merci à tout le monde pour votre intervention sur le sujetAlors effectivement, j’ai eu un peu de mal avec le système de zeste de savoir, je pensais avoir réussi à tout diviser en catégories mais apparemment non

J’ai le même ressentit que @Gabbro et du coup suit bloqué entre deux chaises, et je pense qu’il serait judicieux de réfléchir à un compromis entre théorie et pratique

Salut ! Merci à tout le monde pour votre intervention sur le sujetAlors effectivement, j’ai eu un peu de mal avec le système de zeste de savoir, je pensais avoir réussi à tout diviser en catégories mais apparemment non

J’ai le même ressentit que @Gabbro et du coup suit bloqué entre deux chaises, et je pense qu’il serait judicieux de réfléchir à un compromis entre théorie et pratique

praemix

Tu n’es absolument pas obligé de faire quelque compromis que ce soit. On ne construit pas une formule 1 sans passer par une phase de conception avant, c’est pareil pour un tuto.

Une fois que tu as la base théorique fixée, tu peux sélectionner/adapter ta partie exercices en fonction. Donc, ne te prends pas (trop) la tête.

Donc :

Partie I : la théorie

  • Chapitre A
  • Chapitre B
  • Chaptire C

Partie II : la pratique

  • Chapitre A
  • Chapitre B
  • Chaptire C

A ce stade, tu fais deux grosses parties : une théorique et une pratique. Une fois que ta partie théorique est réalisée et que tu as sélectionné tes idées de projets pour la partie pratique, tu fais tes liens entre le projet A, B, C et les notions vues dans la partie théorique.

Partie II : la pratique

  • Chapitre A —> lien avec Chap. A et C
  • Chapitre B —> B et C
  • Chaptire C —> (etc)

Et une fois que tu as une vision claire de ton tutoriel, alors tu peux (éventuellement) réarranger les chapitres pour avoir des parties liées aux projets mêlant théorie et pratique.

Ici, c’est normal que tu ne vois pas trop commenter scinder tout cela puisque tu ne sais pas (encore) le fond du tutoriel. Il ne faut pas mettre la charrue devant les boeufs mais procéder par étape. C’est beaucoup plus facile de fixer une partie et puis de retravailler le contenu, restructurer celui-ci quand on sait ce qui est écrit ou non, que d’imaginer la structure sans avoir encore finalisé une grosse partie de celui-ci.

ZdS permet de remonter/descendre des parties et chapitres. Pour l’instant, tu dois "fixer" ton contenu théorique puis pratique (mais comme dit plus haut, tes idées de projets me semblent corrects) et ensuite seulement aviser.

+0 -0

Je note que nous avons déjà du contenu sur le deep learning dans le cadre d’un réseau de neurones avec un apprentissage supervisé. :
Deep learning, c’est quoi?
Cet article me semble assez satisfaisant; il parvient, en s’appuyant sur un exemple à mêler habilement la pratique et la théorie, sans rentrer dans un labyrinthe de détails. Je me demande s’il est nécessaire de traiter à nouveau ce sujet.

+0 -0

Salut !

Je pense que le machine learning est un domaine beaucoup plus vaste que juste le deep learning.

D’ailleurs, je pense qu’il ne serait pas forcément judicieux de faire un cours de ML sans en parler (puis y’a pas que le computer vision en DL)

Mais pourquoi pas faire un lien vers ce billet pour la partie computer vision

+1 -0

Plop,

Petite MAJ avec la section "régression linéaire" qui fait son apparition (avec un contenu déjà pas trop mal), j’attends vos retours là-dessus si sur l’aspect pédagogique on arrive à quelque chose de sympa

Je fais beaucoup de questions-réponses par ce que je me posais les mêmes questions quand j’apprenais.

L’écriture de la régression linéaire ma d’ailleurs fais pensé qu’il faudrait faire un chapitre avant sur le nettoyage des données :D

+0 -0

Salut,

Je trouve cela un peu confus.

La régression linéaire est une fonction mathématique

Ce n’est pas vraiment une fonction. C’est plutôt une procédure, qui consiste à trouver la « meilleure » droite pour représenter des données.

Quand on s’interroge sur l’évolution de notre salaire, l’évolution du prix de son loyer, d’une baguette de pain. En faites, on cherche à résoudre un problème de régression.

Pourquoi pas, sauf que la plupart du temps, si tant est que ce sont des problèmes de régression, il ne sont pas linéaires…

En faites, il existe d’autres types de régression non-linéaire. Une petite définition : "Dont les variations peuvent être représentées par une ligne droite."

Commencer par définir quelque cose par "il existe des choses qui ne sont pas cette chose", c’est pas très efficace. :D

On cherche en faites à trouver l’équation d’une droite qui résume au mieux un nuage de points.

Cette phrase devrait être la première. C’est exactement l’idée importante.

On choisit un modèle, ici la régression linéaire.

Tu n’expliques pas pourquoi tu choisis ce modèle. Faire du linéaire quand les données le sont pas, c’est pas une très bonne idée typiquement.

Et je lui donne quoi comme paramètre ? Généralement, on les génère de manières aléatoires !

Ben du coup, non. Vu que tu expliques que c’est pas du tout ce qu’on fait juste après.

on va maintenant obtenir la distance euclidienne

Le carré de la distance euclidienne en vérité.

Pour cela plusieurs algorithmes existent, comme les moindres carrés, mais nous allons voir la descente de gradient qui est l’algorithme le plus utilisé en ML !

Les moindres carrés, c’est la définition de la fonction coût habituelle, pas une méthode de minimisation en tant que tel. Si tu fais une descente de gradient sur ton MSE, tu fais les moindres carrés en fait.

Au passage, ta justification de "si l’erreur est négative, ça serait moins pratique" est foireuse. Si tu tentes de minimiser la formule sans valeur absolue ou carrés, il n’y a pas de minimum du tout en fait, donc c’est pas "moins pratique", c’est juste que ça n’a pas de sens, il n’y a rien à minimiser. En général, l’explication qu’on donne c’est sur la raison d’utiliser les carrés plutôt que les valeurs absolues (ce qui est une histoire de bonnes propriétés mathématiques des carrés).

Tes courbes sont un peu trompeuses aussi, parce que tu as deux paramètres à ajuster. Ça explique potentiellement bien la descente de gradient, mais ce n’est pas toute l’histoire pour trouver le minimum de la fonction de coût et donc trouver la droite de régression.

Tu ne parles pas du tout non plus de R, qui est pourtant assez intéressant dans l’interprétation du pouvoir prédictif du modèle linéaire pour les données.

Plop,

Je vois, j’ai voulu un peu trop vulgariser pour éviter de rentrer trop dans les détails et perdre des gens comme moi qui ont du mal avec les maths.

Je vais remédier au problème et faire les corrections qui s’imposent.

Merci pour ton retour :)

Je pense que la dose de maths que tu as mise est bien. On voit parfois la régression linéaire qui est présentée en sortant l’artillerie lourde sur le problème général (multilinéaire), et c’est assez indigeste.

Pour comprendre le principe de la chose (a fortiori si on a des outils pour faire les calculs à notre place), je pense qu’on n’a pas besoin de beaucoup plus que l’idée de meilleure droite, de mesure d’erreur de façon intuitive, et de savoir qu’il y a une procédure pour la minimiser et trouver les meilleurs paramètres.

Après pour s’en servir efficacement, je pense que c’est important d’éviter les écueils principaux, comme l’appliquer quand il n’y a aucune raison que ça soit linéaire ou ne pas savoir ce que représente R² au delà de "si j’ai au moins 3 9, c’est pas mal".

Ce sujet est verrouillé.