|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() ![]() Lycéen Inscription : novembre 2012 Messages : 35 ![]() |
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, |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() ![]() Lycéen Inscription : novembre 2012 Messages : 35 ![]() |
Bonsoir,
J'ai continué mes recherches et j'affine un peu ma question 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, |
|
|
00
|
|
|
#3 | |
|
Membre Expert
![]() Chercheur Inscription : mars 2010 Messages : 1 143 ![]() |
Bonsoir,
Citation:
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. |
|
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() ![]() Lycéen Inscription : novembre 2012 Messages : 35 ![]() |
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 |
|
|
00
|
|
|
#5 | |||
|
Membre Expert
![]() Chercheur Inscription : mars 2010 Messages : 1 143 ![]() |
Citation:
Citation:
Citation:
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. |
|||
|
|
00
|
|
|
#6 | |
|
Membre du Club
![]() ![]() Lycéen Inscription : novembre 2012 Messages : 35 ![]() |
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:
|
|
|
|
00
|
|
|
#7 | |||
|
Membre Expert
![]() Chercheur Inscription : mars 2010 Messages : 1 143 ![]() |
Citation:
Citation:
Citation:
La fonction que tu cherches ressemblerait plutôt à (x-1/2)/[x(1-x)]. |
|||
|
|
00
|
|
|
#8 | ||
|
Membre du Club
![]() ![]() Lycéen Inscription : novembre 2012 Messages : 35 ![]() |
Citation:
Citation:
Merci, |
||
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Chercheur Inscription : mars 2010 Messages : 1 143 ![]() |
Citation:
Citation:
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. |
||
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() ![]() Lycéen Inscription : novembre 2012 Messages : 35 ![]() |
Comme quoi, on en apprends toujours
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 |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Chercheur Inscription : mars 2010 Messages : 1 143 ![]() |
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. |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Inscription : avril 2004 Messages : 1 246 ![]() |
f(x) = -ln(1/x-1)
C'est la sigmoïde inverse, me semble-t-il. Ca doit marcher ça. |
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() ![]() Lycéen Inscription : novembre 2012 Messages : 35 ![]() |
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
Merci encore pour vos explications on ne peut plus clair. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com