Frage

Wie kann ich Neuronale Netze, so dass sie akzeptieren und liefern einen kontinuierlichen Wertebereich anstelle eines diskreten diejenigen? Von dem, was ich mich erinnere vor ein paar Jahren ein Neural Network-Klasse zu tun, würde die Aktivierungsfunktion eine S-förmige sein, der einen Wert zwischen 0 und 1 ergibt Wenn ich mein neuronales Netz will einen reellen skalar erhalten, was soll ich tun ? Ich dachte, vielleicht, wenn ich einen Wert zwischen 0 und 10 wollte konnte ich nur durch 10 den Wert multiplizieren? Was passiert, wenn ich negative Werte haben? Ist das, was die Menschen in der Regel tun, oder gibt es eine andere Art und Weise? Was ist mit dem Eingang?

Danke

War es hilfreich?

Lösung

Ein großer Teil der Arbeit im Bereich der neuroevolution beinhaltet die Verwendung neuronaler Netze mit kontinuierlichen Ein- und Ausgänge.

Es gibt verschiedene Ansätze:

  • Ein Knoten pro Wert
    • Lineare Aktivierungsfunktionen - wie andere hier schon berichtet haben, können Sie nicht-sigmoiden Aktivierungsfunktionen auf den Ausgangsknoten, wenn Sie besorgt über die begrenzte Reichweite von Sigmoidfunktionen sind. Dies kann jedoch die Ausgabe verursacht beliebig groß werden, was zu Problemen beim Training führen kann.
    • Sigmoid Aktivierungsfunktionen - einfach Skalierung Sigmoid-Ausgang (oder Verschiebung und Skalierung, wenn Sie negative Werte wollen) ist ein gemeinsamer Ansatz in neuroevolution. Allerdings lohnt es sich, dafür zu sorgen, dass Ihre Sigmoidfunktion nicht zu steil ist: eine steile Aktivierungsfunktion bedeutet, dass die „nützlichen“ Wertebereich klein ist, die Netzgewichte zwingt klein zu sein. (Dies ist in erster Linie ein Problem mit genetischen Algorithmen, die eine feste Gewichtungsmodifikationsstrategie verwenden, die nicht gut funktionieren, wenn kleine Gewichte erwünscht sind.)


(Quelle: natekohl.net )
steil sigmoid
(Quelle: natekohl.net )

  • Mehr Knoten pro Wert - einen einzigen kontinuierlichen Wert über mehrere Knoten verbreitet, ist eine gemeinsame Strategie für die Darstellung von kontinuierlichen Eingaben. Es hat den Vorteil, mehr „Features“ für ein Netzwerk mit, auf Kosten Größe der Erhöhung Netzwerk zu spielen bietet.
    • Binning - einen einzigen Eingang über mehrere Knoten verteilt (zB RBF-Netze , wobei jeder Knoten eine Basisfunktion mit einem anderen Zentrum ist, die durch die Eingabe wird teilweise aktiviert wird). Sie erhalten einige der Vorteile der Digitaleingänge ohne eine glatte Darstellung zu verlieren.
    • Binärdarstellung - Unterteilen eines einzigen fortlaufenden Wert in 2 N chunks, dann zuzuführen, diesen Wert in das Netz als ein binäres Muster zu N Knoten. Dieser Ansatz ist kompakt, aber irgendwie spröde und ergibt Eingabe, die in einer nicht-kontinuierlichen Art und Weise verändert.

Andere Tipps

Es gibt keine Regeln, die die Ausgabe (*) erfordern eine bestimmte Funktion sein. In der Tat müssen wir in der Regel zu in einige arithmetische Operationen am Ende der Funktion per se in einem bestimmten Knoten implementiert, um und sonst zwingen die Ausgabe in eine bestimmte Form zu skalieren.

Der Vorteil des Arbeitens mit Alles-oder-nichts-Ausgänge und / oder 0,0 bis 1,0 normalisierte Ausgabe ist, dass es Dinge leichter handhabbar und auch vermeiden, Fragen des Überlaufens und so macht.

(*) „Output“ hier verstanden als können entweder die ouptut ein gegebener Knoten (Neuron) innerhalb des Netzwerks oder des Netzwerks als Ganzes.
Wie von Mark Bessey die Eingangs angegeben [an das Netzwerk als Ganzes] und den Ausgang [des Netzes] typischerweise eine gewisse Filterung / Konvertierung erhalten. Wie es in dieser Antwort und in Marks Kommentar angedeutet, kann es bevorzugt sein normalisiert / Standard Knoten zu haben, in den „versteckten“ Schichten des Netzes, und gilt als eine Normalisierung / Umwandlungs- / Diskretisierung für die Eingabe erforderlich und / oder für die Ausgabe von das Netzwerk; Eine solche Praxis ist jedoch nur eine Frage der Zweckmäßigkeit und nicht ein zwingendes Erfordernis Neuronaler Netze im Allgemeinen.

Sie werden in der Regel müssen sowohl den Eingang und Ausgang auf eine Filterung (Pegelumsetzung, etc.) zu tun. Offensichtlich wird den internen Zustand zu ändern, um die Eingangsfilterung, so einige Überlegungen muss gegeben werden, um nicht zu verlieren, das Signal Sie versuchen zu trainieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top