IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Méthodes prédictives Discussion :

[Réseaux de neurones] Approcher une fonction


Sujet :

Méthodes prédictives

  1. #1
    Membre du Club

    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Points : 49
    Points
    49
    Par défaut [Réseaux de neurones] Approcher une fonction
    Bonsoir,

    Je suis extrêmement intéressé par les réseaux de neurones et j'ai lu par ci par là qu'ils sont très utilisé pour approcher des fonctions, grâce à l'apprentissage. Mais j'ai du mal à imaginer comment le fait que des neurones soit ou pas activés peut arriver à ce résultat. J'ai déjà lu le cours de Alp et quelques pages wikipédia sur le sujet mais ça reste une zone d'ombre ...
    J'ai compris le principe de l'apprentissage, c'est pas un problème, mais comment utiliser les RdN pour approcher une fonction ?

    Merci,

  2. #2
    Membre du Club

    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Points : 49
    Points
    49
    Par défaut
    Bonsoir,

    J'ai continué mes recherches et j'affine un peu ma question Donc, pour un MLP par exemple, comment utiliser les sorties (comprises entre 0 et 1 donc) de la couche de sortie pour obtenir l'image de X par l'approximation de la fonction ?
    J'ai pensé à un système binaire pur et dure (donc les sorties seraient la forme binaire de l'image) mais ça me semble difficilement applicable, spécialement pour les flottants ...

    Merci,

  3. #3
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonsoir,

    Citation Envoyé par Darkemal Voir le message
    pour un MLP par exemple, comment utiliser les sorties (comprises entre 0 et 1 donc) de la couche de sortie pour obtenir l'image de X par l'approximation de la fonction ?
    Il s'agit juste d'une question d'échelle. Imaginons que tu cherches à prédire des valeurs contenues dans un segment [a,b], avec a<b. Alors, tu peux "transformer" [a,b] en le segment [0,1] et réciproquement à l'aide d'une fonction affine.

    Par exemple, la fonction affine f:[0,1]->[a,b] s'écrit f(x)=mx+p pour tout x compris entre 0 et 1. Pour déterminer les coefficients m et p, on utilise les relations f(0)=a et f(1)=b, c'est-à-dire p=a et m+p=b respectivement. On en déduit m=b-a et f(x)=(b-a)x+a. La fonction réciproque g:[a,b]->[0,1] s'écrit g(x)=(x-a)/(b-a) pour tout x compris entre a et b.

    Ensuite, tu as plusieurs approches possibles. Soit tu modifies ta fonction d'activation H pour qu'elle prenne des valeurs dans [a,b] et non pas dans [0,1]. Dans ce cas, il suffit de prendre la composée "f o H" définie par f(H(x)). Soit tu transformes la variable cible Y correspondant aux valeurs à prédire en une nouvelle variable Y' dont les valeurs sont comprises entre 0 et 1. Dans ce cas, tu poses Y'(x) = g(Y(x)).

    J'espère que c'est assez clair. J'ai essayé de faire au plus simple comme tu sembles être au lycée.

  4. #4
    Membre du Club

    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Points : 49
    Points
    49
    Par défaut
    Effectivement je suis en Terminale.
    Je comprends effectivement, mais dans ce cas je suis obligé d'avoir des bornes ? Si je veux que mon intervalle d'arrivée soit ]-inf; +inf[, comment je peux faire ? J'avais pensé à diviser par exp(x) pour avoir la correspondance dans [0; 1] d'une sortie dans ]-inf; +inf[, étant donné que la fonction exponentielle est plus "forte" qu'un polynôme de degré x, non ? Est-ce que ça n'empêcherait pas le système de généraliser ?

    Merci,

    PS : SI tu veux utiliser des termes techniques vas-y, je chercherai sur google et je te demanderai en dernier recours

  5. #5
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par Darkemal Voir le message
    Effectivement je suis en Terminale.
    Je comprends effectivement, mais dans ce cas je suis obligé d'avoir des bornes ?
    Des bornes tu en as, les valeurs minimales et maximales dans ta base d'apprentissage, la question est surtout de savoir si ce sont les bornes de ta population. Mais il s'agit d'un problème d'échantillonnage : l'échantillon d'apprentissage est-il représentatif de ta population? Rien ne t'empêche de prendre d'autres bornes que celles données par ta base d'apprentissage, par exemple la droite des réels, mais rien n'indique que tes résultats seront meilleurs tant que tu ne sauras pas définir ta population.

    Citation Envoyé par Darkemal Voir le message
    Si je veux que mon intervalle d'arrivée soit ]-inf; +inf[, comment je peux faire ?
    Tu peux prendre une fonction d'activation comprise entre -inf et +inf ou transformer ta variable cible avec une fonction adéquate (non affine).

    Citation Envoyé par Darkemal Voir le message
    J'avais pensé à diviser par exp(x) pour avoir la correspondance dans [0; 1] d'une sortie dans ]-inf; +inf[, étant donné que la fonction exponentielle est plus "forte" qu'un polynôme de degré x, non ?
    Effectivement, la fonction exponentielle croît plus vite que les polynômes, mais je ne vois pas comment tu passes de [0,1] à tout R avec cette simple fonction.

    Citation Envoyé par Darkemal Voir le message
    Est-ce que ça n'empêcherait pas le système de généraliser ?
    Généraliser à quoi? Dans la nature, on ne trouve pas de quantité physique non bornée; dans quelle application concrète a-t-on des mesures dans tout R? Tu n'auras besoin de ce genre de choses que dans des problèmes académiques qui peuvent avoir un intérêt théorique mais qui à ma connaissance n'admettent pas d'équivalent pratique.

  6. #6
    Membre du Club

    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Points : 49
    Points
    49
    Par défaut
    Quelque chose que je n'ai pas précisé : je fais ça dans le but d'en apprendre plus sur les RdN, avec mes maigres connaissances en maths (ça vole pas haut la Term ...). C'est juste de la théorie que je veux faire, genre représenter la fonction x² ou exp(x) "pour le fun" (eh oui les maths ça m'amuse).

    Pour passer de R à [0, 1] on divise par exp(x) avec x l'entrée donné au RdnN (pour ce que je veux modéliser, il n'y a logiquement qu'une seule entrée), et pour passer de [0, 1] à R, on a donc juste à multiplier par exp(x). Je me demandais justement si l'utilisation de l'entrée donné au RdN pour déterminer la sortie n'allait pas l'empêcher de généraliser la fonction, mais c'est contradictoire ce que je dit en fait

    Tu n'auras besoin de ce genre de choses que dans des problèmes académiques qui peuvent avoir un intérêt théorique mais qui à ma connaissance n'admettent pas d'équivalent pratique.
    La prochaine étape est moins académique J'hésite en reconnaissance de la langue d'un texte et reconnaissance d'écriture (dactylo d'abord puis pourquoi pas manuscrite) vu que c'est plus ou moins la même chose).

  7. #7
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par Darkemal Voir le message
    Quelque chose que je n'ai pas précisé : je fais ça dans le but d'en apprendre plus sur les RdN
    Je ne peux que te conseiller d'acheter, de te faire offrir ou d'emprunter un livre sur le sujet.

    Citation Envoyé par Darkemal Voir le message
    C'est juste de la théorie que je veux faire, genre représenter la fonction x² ou exp(x) "pour le fun" (eh oui les maths ça m'amuse).
    Places-toi sur un intervalle borné, c'est amplement suffisant pour commencer.

    Citation Envoyé par Darkemal Voir le message
    Pour passer de R à [0, 1] on divise par exp(x) avec x l'entrée donné au RdnN (pour ce que je veux modéliser, il n'y a logiquement qu'une seule entrée), et pour passer de [0, 1] à R, on a donc juste à multiplier par exp(x).
    Considère la fonction qui à x associe x*exp(x). Si x est dans [0,1] alors x*exp(x) est dans [0,e], non?

    La fonction que tu cherches ressemblerait plutôt à (x-1/2)/[x(1-x)].

  8. #8
    Membre du Club

    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Aleph69
    Je ne peux que te conseiller d'acheter, de te faire offrir ou d'emprunter un livre sur le sujet.
    J'ai déjà regardé les livres sur les RdN, c'est pas donné ... J'attendrai peut-être un niveau un peu plus poussé en maths avant de m'intéresser de plus près aux RdN (sachant que je m'intéresse aussi à l'algo de façon plus générale et aux algo génétiques). J'ai commencé par les RdN car ça me faisait penser à de la "vrai" IA (même si c'est plutôt un outil statistique, je le sais maintenant) grâce à sa structure. Sinon as-tu un livre à me conseiller, plus ou moins adapté à mon niveau ?

    Citation Envoyé par Aleph69
    Considère la fonction qui à x associe x*exp(x). Si x est dans [0,1] alors x*exp(x) est dans [0,e], non?

    La fonction que tu cherches ressemblerait plutôt à (x-1/2)/[x(1-x)].
    Ce serait plutôt la fonction qui associe x et ouput à output * exp(x). ouput étant la sortie de du RdN et x l'entrée qui lui est donné.

    Merci,

  9. #9
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par Darkemal Voir le message
    J'ai commencé par les RdN car ça me faisait penser à de la "vrai" IA (même si c'est plutôt un outil statistique, je le sais maintenant) grâce à sa structure.
    Je ne sais pas ce que tu appelles la "vraie" IA mais l'IA située est exclusivement statistique, par opposition à l'IA symbolique. Peut-être fais-tu fausse piste. Les réseaux de neurones ne sont pas nécessairement des outils statistiques; on peut les appliquer à plein de problèmes, notamment déterministes.

    Citation Envoyé par Darkemal Voir le message
    Sinon as-tu un livre à me conseiller, plus ou moins adapté à mon niveau ?
    Cela me paraît vraiment très compliqué de trouver un livre pour lycéens sur le sujet. Le plus simple et le pédagogique qui me vienne à l'esprit est le livre de Duda-Hart-Stork intitulé "Pattern Classification" qui traite les réseaux de neurones et donne un bon aperçu de l'ensemble du domaine.

    Citation Envoyé par Darkemal Voir le message
    Ce serait plutôt la fonction qui associe x et ouput à output * exp(x). ouput étant la sortie de du RdN et x l'entrée qui lui est donné.
    Si x est dans R et output dans [0,1], alors la fonction f(x,output)=output*exp(x) est dans [0,+inf], pas dans R.

  10. #10
    Membre du Club

    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Points : 49
    Points
    49
    Par défaut
    Comme quoi, on en apprends toujours J'ai lu ça dans plusieurs PDF sur internet, notamment celui-ci (début page 7).

    Il a l'air intéressant, mais il est aussi vachement cher :O Je verrai si la médiathèque du coin a des livres sur le sujet.

    Il suffit d'avoir une fonction d'activation qui renvoie un nombre entre -1 et 1, et ce sera bon alors ! La tangente hyperbolique a l'air adapté, par contre je devrais appliquer cette fonction pour tous les neurones du réseau puisque pour la sortie soit négative, les entrées du neurone de sortie doivent aussi être négatives ... Je vais tester tout ça

  11. #11
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Personnellement, je ne trouve pas que le livre de Dreyfus soit très bien pensé, et j'aurais tendance à te le déconseiller en première lecture. Les très bons livres sont tous en anglais malheureusement. Je pense que tu pourrais déjà commencer par lire le "que sais-je" sur les réseaux de neurones artificiels :
    http://perso.uclouvain.be/michel.ver...rs/qsj96fb.pdf
    C'est beaucoup plus adapté à ton niveau et plus pédagogique que le Dreyfus.

  12. #12
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    f(x) = -ln(1/x-1)
    C'est la sigmoïde inverse, me semble-t-il. Ca doit marcher ça.

  13. #13
    Membre du Club

    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Points : 49
    Points
    49
    Par défaut
    Merci à tous pour votre aide, mais je crois que je vais mettre en pause les RdN (à mon grand dam) pour l'instant. Le niveau en maths nécessaires pour comprendre la plupart des articles sur internet est clairement trop haut pour moi ... J'essaie depuis une semaine de faire fonctionner l'algo de rétro propagation du gradient, je respecte la procédure décrite dans le cours de Alp (le plus clair d'ailleurs), mais niet, nada. Je vais plutôt me pencher vers des algos plus simples (pas trop quand même ), génétiques ou de compression.

    Merci encore pour vos explications on ne peut plus clair.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Réseaux de neurones] Fonction d'activation
    Par rahma_gea dans le forum Méthodes prédictives
    Réponses: 0
    Dernier message: 11/12/2012, 11h52
  2. Réponses: 1
    Dernier message: 01/05/2010, 20h08
  3. Réponses: 1
    Dernier message: 12/12/2008, 13h42
  4. Approcher une fonction réelle à plusieurs variables.
    Par kindyroot dans le forum Intelligence artificielle
    Réponses: 22
    Dernier message: 21/07/2008, 21h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo