Wie erhalte ich eine echte kontinuierliche Ausgabe von Neural Network?

13

In den meisten Beispielen, die ich bisher für neuronale Netze gesehen habe, wird das Netz zur Klassifizierung verwendet, und die Knoten werden mit einer Sigmoidfunktion transformiert. Ich möchte jedoch ein neuronales Netzwerk verwenden, um einen kontinuierlichen Realwert auszugeben (realistisch wäre die Ausgabe normalerweise im Bereich von -5 bis +5).

Meine Fragen sind:

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?

Ich bin auf der Suche , um es zunächst zu implementieren PyBrain der diese beschreibt Schichttypen .

Also denke ich, dass ich 3 Ebenen haben sollte (eine Eingabe-, versteckte und Ausgabeebene), die alle lineare Ebenen sind? Ist das ein vernünftiger Weg? Oder könnte ich alternativ die Sigmoidfunktion über den Bereich von -5 bis 5 "strecken"?

Benutzer
quelle
1
Sicher können Sie ein Sigmoid . ZB ausgehend von der Logistikfunktion mit 10 multiplizieren, 5 subtrahieren ...[,][5,5]
Glaubwürdigkeiten unterstützen Monica 10.04.12
Gibt es einen bestimmten Grund, warum Sie es vermeiden, zwei versteckte Ebenen zu verwenden? Dies scheint der einfachste Weg zu sein, um von einem neuronalen Netzwerk eine kontinuierliche Ausgabe mit realem Wert zu erhalten. "Jede Funktion kann durch ein Netzwerk mit zwei verborgenen Ebenen beliebig genau approximiert werden" (in den Notizen der Mitchell-Maschinelllerntext-Folie 26 erwähnt): cs.cmu.edu/afs/cs.cmu.edu/project/theo-20/ www / mlbook / ch4.pdf )
Chris Simokat
@ ChrisSimokat: Nein, aber das meiste, was ich bisher gelesen habe, deutet auf eine einzelne versteckte Ebene als vernünftigen Ausgangspunkt hin. Kann ein einzelnes Hidden-Layer-Netzwerk keine Funktion approximieren?
Benutzer
1
@ ChrisSimokat: Vielleicht fehlt mir etwas, aber ich dachte, einzelne versteckte Schicht entspricht nicht "Single Layer Perceptron", nicht wahr?
Benutzer
1
Nein, Sie verpassen nichts, was ich anscheinend nicht genau genug gelesen habe. Tut mir leid.
Chris Simokat

Antworten:

11

1 . Sollte ich die Eingabe-Features dennoch mithilfe der Feature-Skalierung skalieren? Welcher Bereich?

Skalierung macht nichts schlimmer. Lesen Sie diese Antwort aus Sarles FAQ zu neuronalen Netzen: Betreff: Soll ich die Daten normalisieren / standardisieren / neu skalieren? .

2 . Welche Transformationsfunktion soll ich anstelle des Sigmas verwenden?

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

alfa
quelle
Wie lässt sich die neuronale Netzwerkleistung korrekt auf den Bereich [-5,5] skalieren?
Benutzer
3
e[a,b][c,d]eaba(dc)+c
2
Da Sigmoid jedoch nicht linear ist, würden wir bei einer gleichmäßigen Verteilung des Sigmoid-Werts wahrscheinlich einen Wert nahe 1 oder nahe 0 erhalten. Dies bedeutet, dass wir unser Netzwerk lernen müssen, um Werte in der Mitte sorgfältiger auszuwählen. Ist Sigmoid + Skalierung wirklich eine gute Wahl?
Smarty77