Précédent   Forum du club des développeurs et IT Pro > Autres langages > Algorithmes > Intelligence artificielle
Intelligence artificielle Forum d'entraide sur l'intelligence artificielle. Avant de poster : Cours d'intelligence artificielle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/11/2012, 19h11   #1
Darkemal
Membre du Club
 
Homme
Lycéen
Inscription : 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 : 51
Points : 51
Par défaut [RdN] 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,
Darkemal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2012, 23h15   #2
Darkemal
Membre du Club
 
Homme
Lycéen
Inscription : 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 : 51
Points : 51
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,
Darkemal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2012, 22h41   #3
Aleph69
Membre Expert
 
Homme
Chercheur
Inscription : mars 2010
Messages : 1 143
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 143
Points : 1 654
Points : 1 654
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.
Aleph69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2012, 22h47   #4
Darkemal
Membre du Club
 
Homme
Lycéen
Inscription : 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 : 51
Points : 51
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
Darkemal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2012, 23h04   #5
Aleph69
Membre Expert
 
Homme
Chercheur
Inscription : mars 2010
Messages : 1 143
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 143
Points : 1 654
Points : 1 654
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.
Aleph69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2012, 23h37   #6
Darkemal
Membre du Club
 
Homme
Lycéen
Inscription : 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 : 51
Points : 51
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

Citation:
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).
Darkemal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2012, 23h58   #7
Aleph69
Membre Expert
 
Homme
Chercheur
Inscription : mars 2010
Messages : 1 143
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 143
Points : 1 654
Points : 1 654
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)].
Aleph69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2012, 08h47   #8
Darkemal
Membre du Club
 
Homme
Lycéen
Inscription : 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 : 51
Points : 51
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,
Darkemal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2012, 12h04   #9
Aleph69
Membre Expert
 
Homme
Chercheur
Inscription : mars 2010
Messages : 1 143
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 143
Points : 1 654
Points : 1 654
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.
Aleph69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2012, 13h56   #10
Darkemal
Membre du Club
 
Homme
Lycéen
Inscription : 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 : 51
Points : 51
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
Darkemal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2012, 14h08   #11
Aleph69
Membre Expert
 
Homme
Chercheur
Inscription : mars 2010
Messages : 1 143
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 143
Points : 1 654
Points : 1 654
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.
Aleph69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2012, 14h20   #12
davcha
Membre Expert
 
Avatar de davcha
 
Inscription : avril 2004
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 1 246
Points : 1 358
Points : 1 358
f(x) = -ln(1/x-1)
C'est la sigmoïde inverse, me semble-t-il. Ca doit marcher ça.
davcha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2012, 23h00   #13
Darkemal
Membre du Club
 
Homme
Lycéen
Inscription : 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 : 51
Points : 51
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.
Darkemal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h13.


 
 
 
 
Partenaires

Hébergement Web