Ich möchte ein neuronales Netzwerk trainieren, um eine Signalklassifizierung durchzuführen.Geeignete Backpropagation-Parameter
The network has 50 inputs of the format: [-1 .. 1]
50 hidden layers (not restricted)
10 outputs
hyperbolic tangent (not restricted)
Ich bin in der Bibliothek beschränkt (hnn), um die Ausbildung zu tun.
Mein Problem ist, dass ich weiß nicht, was die geeignet ist Lernrate und die Anzahl der Ausbildung Iterationen
ich viele mögliche Einstellungen im Bereich versucht:
[1K - 10K] training iterations
[0.001 - 1.5] learning rate
Aber wenn ich meine Trainingsdaten wieder in das trainierte neuronale Netzwerk einspeise, bekomme ich sehr schlechte Ergebnisse (in Form einer Konfusionsmatrix) - maximal 2 korrekt klassifizierte Klassen.
Was ist der geeignete Satz dieser beiden Parameter für die Eingabedaten?
Bei der Suche nach ähnlichen Fällen in der Literatur habe ich festgestellt, dass verschiedene Fälle unterschiedliche Parametereinstellungen verwenden, ohne die Argumentation wirklich zu erklären.
Experimente: Erwähnt Bibliothek hat eine Funktion trainUntilErrorBelow (selbsterklärend). Ich habe diese Funktion verwendet, um zu sehen, wie schnell ich einen bestimmten Fehler erreichen kann, indem ich die Aktivierungsfunktion und die Anzahl der versteckten Ebenen ändere.
Ich habe gewählt, um die folgenden:
minimum error: 300
learning rate: 0.01
Ergebnisse: Hyperbeltangens:
1 hidden layer (50 neurons) - 32.12 sec
2 hidden layers (50/50 neurons) - 31.51 sec
3 hidden layers (50/50/50 neurons) - 12.18 sec
4 hidden layers (50/50/50/50 neurons) - 42.28 sec
Sigmoid:
1 hidden layer (50 neurons) - 21.32 sec
2 hidden layers (50/50 neurons) - 274.29 sec
3 hidden layers (50/50/50 neurons) - ∞ sec
4 hidden layers (50/50/50/50 neurons) - ∞ sec
Ist es sinnvoll, dass die Tangenshyperbolicus Aktivierung assume Funktion mit 3 versteckten Schichten (50/50/50 ne Urons) ist eine gute Wahl für die Netzwerkarchitektur?
Im Allgemeinen benötigen Sie Trial-and-Error für diese Hyper-Parameter. Dies ist der Grund für die Beobachtung einer großen Bandbreite in der Literatur. Ich bin mir ziemlich sicher, dass das Problem in Ihrem Fall nicht die Lernrate ist, sondern die Netzwerkarchitektur und vielleicht Ihr Datensatz. Wenn Sie bereits einige Lernraten ausprobiert haben, sollten Sie etwas Zeit in Bezug auf die Regelsetzung investieren. Ihr Netzwerk könnte die ganze Zeit überarbeiten. Fügen Sie Ihren Gewichtungen eine L1/L2-Regulierung hinzu oder sogar eine Dropout-Schicht. – sascha
@sascha danke, versuche einige Experimente durchzuführen, um die richtigen Einstellungen für die Hyperparameter zu bestimmen –
@MocialovBoris Wie Sascha sagte, sieht es eher wie ein Problem mit den zu klassifizierenden Daten aus. Zur Signalklassifizierung berechnen Sie normalerweise (oft;)) einige Merkmale aus den Signalen selbst (Mittelwert, Fourier-Transformation, Blah-Koeffizienten) und klassifizieren diese Merkmale dann. Die eine Sache hier ist, welche Eigenschaften du nimmst (Kunst mehr als Wissenschaft); die andere, mehr oder weniger eine Faustregel, um die Daten zu normalisieren, am häufigsten in [-1,1]. Was sind deine 50 Eingänge? Welche Art von Werten haben sie? Warum hast du 50 Ausgangsknoten (du hast 10 schon erwähnt)? – Luis