Le machine learning et les réseaux de neurones

Une première approche du machine learning

a marqué ce sujet comme résolu.

Tout le monde se secoue ! :D

J'ai commencé (jeudi 26 mai 2016 à 16h33) la rédaction d'un tutoriel au doux nom de « Le machine learning et les réseaux de neurones » et j'ai dans l'objectif de proposer en validation un texte aux petits oignons. Je fais donc appel à votre bonté sans limite pour dénicher le moindre pépin, que ce soit à propos du fond ou de la forme. Vous pourrez consulter la bêta à votre guise à l'adresse suivante :

Merci !

Je comprends pas

  • pourquoi "réseau de neurones" mais "machine learning"
  • pourquoi tu envisages de parler des SVM et d'apprentissage non-supervisé à la fin. C'est un peu comme si je faisais un cours de C mais que je finissais par un chapitre "Java et programmation fonctionnelle" (sauf si tu veux faire du non-supervisé avec des réseaux de neurones, mais ça à mon avis ça demanderait plus de place).

Edit : en y réfléchissant 30 secondes (et en relisant le titre), je me rends compte que tu envisages de placer les réseaux de neurones au centre de l'apprentissage automatique, par exemple comme un modèle incontournable ou qui suffirait à décrire le reste. Je te déconseille vivement cette approche. Tu gagnerais à te spécialiser dans les seuls réseaux neuronaux, et à laisser d'autres gens parler d'autres choses dans d'autres cours.

+0 -0

J'ai pas compris ton premier point ^^

Pour ton deuxième point, le but du dernier chapitre est de montrer ce qui existe d'autres pour éveiller la curiosité du lecteur et lui permettre de poursuivre son apprentissage. Il ne s'agira pas du tout d'un tutoriel mais simplement une présentation rapide des divers sujets. C'est un peu comme si tu finissais un cours sur la programmation C et que tu avais un dernier chapitre expliquant qu'il y a d'autres manières de programmer (objet et fonctionnel par exemple) en expliquant les bases, mais aussi qu'en C on peut aller plus loin en s'interessant à la programmation système, réseau ou je sais pas quoi d'autres.

Un neurone formel prend en entrée un vecteur ligne de nombre, qu'on notera X, fait une moyenne pondérée par son vecteur ligne de poids W qu'on appellera y. On a y=XW′, où W′ désigne la matrice transposée à W, la notation française serait tW.

C'est quand même sacrément plus simple de dire que c'est le produit scalaire des vecteurs $X$ et $W$. Btw j'ai jamais vu $W'$ comme notation pour la transposition, même chez les anglais.

Mais ici, j'ai l'impression que ce ne sont pas deux vecteurs que tu manipules, mais plutôt une application linéaire et un vecteur.

Pour la notation $W'$, c'est celle utilisée dans tout les cours que j'ai vu sur le machine learning ^^, mais je peux changé si elle est mauvaise.

C'est volontaire de parler du produit matriciel uniquement, simplement pour simplifier les explications lorsqu'on aura plusieurs neurones, ainsi la formule ne changera pas mais les dimensions oui. C'est peut être une erreur de pédagogie et fait d'ailleurs partie des questions sans réponse.

Mais ici, j'ai l'impression que ce ne sont pas deux vecteurs que tu manipules, mais plutôt une application linéaire et un vecteur.

Je n'y avais pas réfléchit, mais effectivement je pense que $W$ est une application linéaire. La encore, d'un point de vue pédagogique je ne sais pas si il faut vraiment le préciser mais je n'en suis pas sûr, j'aurais peur que les non matheux puissent se perdre dans trop de notions différentes (et avouons le, inutile dans le contexte).

Edit : pour la notation $W'$, je pense qu'elle est bonne puisque c'est celle utilisé dans Octave (et il me semble Mathlab)

+0 -0

Pour la notation $W'$, c'est celle utilisée dans tout les cours que j'ai vu sur le machine learning ^^, mais je peux changé si elle est mauvaise.

Ricocotam

Laisse là si c'est la tradition dans ce domaine ;-).

C'est volontaire de parler du produit matriciel uniquement, simplement pour simplifier les explications lorsqu'on aura plusieurs neurones, ainsi la formule ne changera pas mais les dimensions oui. C'est peut être une erreur de pédagogie et fait d'ailleurs partie des questions sans réponse.

Bah là, en l'état, faut vraiment être à l'aise avec les produits matriciels pour se faire une idée de ce qu'il se passe.

Je n'y avais pas réfléchit, mais effectivement je pense que W est une application linéaire. La encore, d'un point de vue pédagogique je ne sais pas si il faut vraiment le préciser mais je n'en suis pas sûr, j'aurais peur que les non matheux puissent se perdre dans trop de notions différentes (et avouons le, inutile dans le contexte).

AMHA c'est plus compliqué si tu ne mets pas les mots simples. Donc parler d'application linéaire permet de se faire un lien et de comprendre qu'on est face à un modèle linéaire.

Bah là, en l'état, faut vraiment être à l'aise avec les produits matriciels pour se faire une idée de ce qu'il se passe.

Je pense que tu as raison, je vais changer ça :)

AMHA c'est plus compliqué si tu ne mets pas les mots simples. Donc parler d'application linéaire permet de se faire un lien et de comprendre qu'on est face à un modèle linéaire.

Si je parle à ma copine (qui est quand même en licence de bio) d'une application linéaire, elle va pas comprendre grand chose et va même se sentir perdue. Ce tuto s'adresse plutôt à des étudiants info qu'à des étudiants maths, voir des termes de maths va les perdre (je le sais d'expérience) voire leur faire peur. En dehors de la relation entre les mots linéaires l'intérêt me semble faible. Il me semble que parler de produit vectoriel/matriciel est amplement suffisant à la compréhension. Cependant je suis d'accord avec toi qu'il faut mettre les bons mots donc je pense ajouter un petit mot avec les blocs spéciaux pour préciser qu'il s'agit d'une application linéaire. Qu'en penses-tu ?

Ps : J'ai fait un edit pour la $W'$ ;)

Si je parle à ma copine (qui est quand même en licence de bio) d'une application linéaire, elle va pas comprendre grand chose et va même se sentir perdue. Ce tuto s'adresse plutôt à des étudiants info qu'à des étudiants maths, voir des termes de maths va les perdre (je le sais d'expérience) voire leur faire peur. En dehors de la relation entre les mots linéaires l'intérêt me semble faible. Il me semble que parler de produit vectoriel/matriciel est amplement suffisant à la compréhension. Cependant je suis d'accord avec toi qu'il faut mettre les bons mots donc je pense ajouter un petit mot avec les blocs spéciaux pour préciser qu'il s'agit d'une application linéaire. Qu'en penses-tu ?

J'en pense que je suis pas du tout d'accord, mais bon, la décision te revient. Le point le plus important de ta partie, c'est que les neurones formels sont des modèles des neurones biologiques. À ce stade de l'apprentissage, dire qu'on va faire un modèle linéaire (ce qui est quand même le truc le plus simple qu'on puisse imaginer quand on veut faire un modèle), c'est ni compliqué à comprendre, ni source de confusion.

En plus, à partir de ça, rien n'empêche le lecteur d'essayer de trouver d'autres modèles, maintenant qu'il sait où ça se joue précisément. Par exemple les modèles affines changent un petit peu le formalisme, mais une fois qu'on a compris qu'il faut rajouter une translation, la difficulté disparait.

La notation $X'$ est effectivement utilisée de temps en temps en apprentissage, essentiellement dans des articles anglophones. C'est vraiment très désagréable quand on n'a pas l'habitude, d'ailleurs. Je ne pense pas que ça soit raisonnable de l'introduire dans un cours en français. Personnellement je préfère de loin la notation ISO (page 28), $A^{\intercal}$, mais ce fil SO sur les notations possibles montre qu'on n'est malheureusement pas prêt de se mettre d'accord. Pas sûr de ce qu'il conviendrait de faire exactement pour le web, non plus.

Concernant le débat application linéaire/matrice : je ne connais pas bien les réseaux de neurones, mais il me semble que $W$ est juste la matrice des poids des entrées d'un neurone, non ? Par conséquent c'est bien un simple vecteur ligne. Je ne vois pas vraiment ce qu'apporterait le fait de parler d'application linéaire (sauf erreur de ma part, on n'utilise jamais de fonction d'activation linéaire) — mais encore une fois peut-être qu'il y a des propriétés intéressantes qui apparaissent plus loin, je ne sais pas. Par contre parler de produit scalaire, à mon avis ça vaut le coup.

Pardon si je suis à côté de la plaque, j'ai du mal à voir l'enjeu de la discussion.

+1 -0

En fait $W$ est une application linéaire par définition. Je ne connais pas du tout ton niveau de maths donc je vais le considérer niveau lycée. Le neurone agit comme une fonction : on lui donne une entrée et il te renvoie un (ou plusieurs) nombre(s) et ce de manière linéaire. Le fait de multiplier la variable ($X$) par $W$ met en évidence le fait que ce soit une application linéaire.

Pour la notation je ne savais pas qu'il y avait un ISO dessus, je vais modifier ça.

C'est quand même sacrément plus simple de dire que c'est le produit scalaire des vecteurs $X$ et $W$. Btw j'ai jamais vu $W'$ comme notation pour la transposition, même chez les anglais.

Holosmos

C'est le choix qui a été fait pour la transposition sur matlab (beurk). Je ne sais pas si ça a un rapport mais cette façon de noter existe au moins à cet endroit.
Après matlab (beurk) c'est le truc qui utilise des raccourcis claviers pas standard du tout et qui fait tout à sa sauce :colere:

A partir du moment où tu sais programmer et que tu connais les matrices (et les opérations qui vont avec : additions, multiplications et transposée). Il faut être à l'aise avec des algorithmes un peu compliqué (même si j'essaierai d'expliquer au maximum) et savoir faire de la programmation scientifique (Octave/scilab ou numpy par exemple) est un plus non negligeable :)

Je rejoins la remarque d'Holosmos, c'est pas clair ce qu'est le $W$, de la même manière on se demande ce qu'est $y$ : un scalaire ? Un vecteur ?

Dans le cas général c'est un vecteur si j'ai bien compris mais comme tu prends le cas particulier "n entrées et une sortie", $W$ est un vecteur et $y$ est un scalaire c'est ça ?

A partir du moment ou tu fais l'hypothèse que les lecteurs connaissent les matrices, tu dois pouvoir introduire la forme général avec $Y$ et non $y$. Et pour l'exemple, expliciter un cas particulier avec par exemple une seul sortie (mais quand même garder $Y$ je pense … enfin a voir avec les pro de la notation ^^).

Pas forcement nécessaire d'introduire forme linéaire

Le modèle du neurone formel fait une moyenne pondérée de ses entrées. Une moyenne pondérée c'est exactement ce que vous faites en calculant votre moyenne au Bac avec les différents coefficients, sauf qu'au lieu de diviser à la fin du calcul, les coefficients sont divisés dès le début. Au lieu d'avoir des coefficients de 6, on va avoir des coefficients de 6/35 (si on a 35 coefficients). En fait, la moyenne est pondérée par un vecteur de poids (les poids jouent le rôle de coefficients) et ces poids sont stockés dans un vecteur ligne appelé W dans notre exemple.

C'est bien flou. Je pense qu'il faut soit passer un peu plus de temps a expliquer clairement, soit l'expliciter plus succinctement en ne gardant que le début :

Le modèle du neurone formel fait une moyenne pondérée de ses entrées. Une moyenne pondérée c'est exactement ce que vous faites en calculant votre moyenne au Bac avec les différents coefficients. Vos notes sont pondérées par les coefficients.

Sinon le ton parait un peu trop enfantin pour le sujet. Globalement il est accessible à partir de Bac+1 (a par les spé maths on ne voit pas les matrice au lycée il me semble)

Ce genre de passage :

Interro surprise : C'est quoi la date ? Et on ne triche pas en remontant !

Aah, parce qu'en plus tu pensais que je te donnerais la réponse en spoiler ? Tsss

risque de laisser le lecteur plus perplexe qu'autre chose, ça marche peut être pas mal au collège quand tu (on ^^) lisais les cours du zero mais pour des bac+1… et je le perçois plus comme du bruit de fond énervant…

Mais bon, passons à autre chose de plus sympathique en partant sur un problème sexiste. Pourquoi ne nous amuserions pas à deviner le sexe d'une personne en fonction de sa taille et son poids ? A tout nos lecteurs féministes, je le suis aussi mais il faut bien s'amuser de temps en temps ;)

Ce n'est pas sexiste et introduire un commentaire rend le truc particulièrement gênant je trouve.

@Lz36… S je dis pas de connerie $W$ est une application linéaire car si tu as plusieurs sorties, tu fais des pondérations différentes sur chaque sortie (inutile d'avoir le même poids pour chaque sortie…), dans le cas général pour n entrées et m sorties $W$ est dimension nxm.

@Lz36… S je dis pas de connerie $W$ est une application linéaire car si tu as plusieurs sorties, tu fais des pondérations différentes sur chaque sortie (inutile d'avoir le même poids pour chaque sortie…), dans le cas général pour n entrées et m sorties $W$ est dimension nxm.

Vael

Avec plusieurs sorties d'accord, mais ça n'est pas le cas sur le schéma qui précède la formule.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte