Comment obtenir une sortie continue de valeur réelle à partir de Neural Network?

13

Dans la plupart des exemples que j'ai vus jusqu'à présent de réseaux de neurones, le réseau est utilisé pour la classification et les nœuds sont transformés avec une fonction sigmoïde. Cependant, je voudrais utiliser un réseau de neurones pour produire une valeur réelle continue (de manière réaliste, la sortie serait généralement comprise entre -5 et +5).

Mes questions sont:

1. Should I still scale the input features using feature scaling? What range?
2. What transformation function should I use in place of the sigmoid?

Je cherche à l'implémenter initialement PyBrain qui décrit ces types de couches .

Je pense donc que je devrais avoir 3 couches pour commencer (une couche d'entrée, cachée et de sortie) qui sont toutes des couches linéaires? Est-ce une manière raisonnable? Ou bien pourrais-je "étirer" la fonction sigmoïde sur la plage -5 à 5?

Utilisateur
la source
1
Bien sûr, vous pouvez utiliser un sigmoïde . Par exemple, commencer à partir de la fonction logistique, multiplier par 10, soustraire 5 ...[,][5,5]
cbeleites prend en charge Monica
Y a-t-il une raison particulière pour laquelle vous évitez d'utiliser deux couches cachées? Cela semblerait être le moyen le plus simple d'obtenir une sortie continue de valeur réelle à partir d'un réseau de neurones. "N'importe quelle fonction peut être approchée à une précision arbitraire par un réseau avec deux couches cachées" (mentionné dans les notes de la diapositive 26 du texte d'apprentissage automatique de Mitchell: cs.cmu.edu/afs/cs.cmu.edu/project/theo-20/ www / mlbook / ch4.pdf )
Chris Simokat
@ChrisSimokat: Non, mais la plupart de ce que j'ai lu jusqu'à présent suggère une seule couche cachée comme point de départ raisonnable. Un réseau à couche cachée unique ne peut-il approximer aucune fonction?
Utilisateur
1
@ChrisSimokat: Peut-être qu'il me manque quelque chose mais je pensais qu'une seule couche cachée n'équivaut pas à un "perceptron à une seule couche", non?
Utilisateur
1
Non, vous ne manquez rien que je n'ai apparemment pas lu assez attentivement, désolé.
Chris Simokat

Réponses:

12

1 . Dois-je quand même mettre à l'échelle les entités en entrée à l'aide de la mise à l'échelle des entités? Quelle gamme?

La mise à l'échelle ne fait rien de pire. Lisez cette réponse de la FAQ du réseau de neurones de Sarle: Objet: Dois-je normaliser / standardiser / redimensionner les données? .

2 . Quelle fonction de transformation dois-je utiliser à la place du sigmoïde?

[0,1][-1,1][-5,5]

alfa
la source
Quelle est la bonne façon de mettre à l'échelle la sortie du réseau neuronal dans la plage [-5,5]?
Utilisateur
3
e[a,b][c,d]eaba(dc)+c
2
Mais comme sigmoïde est non linéaire, avec une distribution uniforme échantillonnant la valeur de sigmoïde, nous obtiendrions probablement quelque chose près de 1 ou près de 0. Ce qui signifie que nous devons apprendre à notre réseau à choisir des valeurs au milieu plus soigneusement. La mise à l'échelle sigmoïde + est-elle vraiment un bon choix?
Smarty77
0

Avertissement: l'approche présentée n'est pas réalisable pour les valeurs continues, mais je crois que cela a un certain poids dans la prise de décision pour le projet Smarty77 soulève un bon point sur l'utilisation d'une fonction sigmoïde redimensionnée. De façon inhérente, la fonction sigmoïde produit une probabilité, qui décrit un taux de réussite d'échantillonnage (c'est-à-dire que 95 des 100 photos avec ces caractéristiques sont avec succès «chien»). Le résultat final décrit est un résultat binaire, et la formation, utilisant l'entropie croisée binaire, décrit un processus de séparation des résultats diamétralement opposés, ce qui décourage intrinsèquement les résultats dans l'intervalle moyen. Le continuum de la sortie est simplement là pour une mise à l'échelle basée sur le nombre d'échantillons (c.-à-d. Un résultat de 0,9761 signifie que 9761 échantillons sur 10000 affichant ceux-ci ou des triats similaires sont des «chiens»), mais chaque résultat lui-même doit toujours être considéré comme binaire et non arbitrairement granulaire. En tant que tel, il ne doit pas être confondu et appliqué comme on le ferait avec des nombres réels et peut ne pas s'appliquer ici. Bien que je ne sois pas sûr de l'utilisation du réseau, je normaliserais le vecteur de sortie par lui-même. Cela peut être fait avec softmax. Cela exigera également qu'il y ait 11 sorties linéaires (bacs) du réseau (une pour chaque sortie -5 à +5), une pour chaque classe. Il fournira une valeur d'assurance pour tout «bac» étant la bonne réponse. Cette architecture pourrait être entraînée avec un codage à chaud, le 1 indiquant le bon bac. Le résultat est alors interprétable d'une manière, comme une stratégie gourmande ou un échantillonnage probabiliste. Cependant, pour le refondre en une variable continue, L'assurance de chaque indice peut être utilisée comme poids pour placer un marqueur sur une droite numérique (similaire au comportement de l'unité sigmoïde), mais cela met également en évidence le principal problème: si le réseau est assez certain, le résultat est -2 ou +3, mais absolument certain qu'il ne s'agit pas d'autre chose, +1 est-il un résultat viable? Merci pour votre considération. Bonne chance pour votre projet.

Robert Hildreth
la source