2016-07-07 6 views
0

Ich habe einen Code für ANN BP entwickelt, um Schnarchsegmente zu klassifizieren. Ich habe 10 Eingabemerkmale und 1 versteckte Schicht mit 10 Neuronen und einem Ausgangsneuron. Ich habe 1 als kein Schnarchen und 0 als Schnarchsegment bezeichnet. Ich habe 3000 Segmente und darunter sind 2500 keine Schnarchsegmente, die als 1. und 500 Schnarchsegmente markiert sind. Ich habe den Datensatz bereits in drei Sätze aufgeteilt (70% Training, 15% Validierung und 15% Test). .Künstliche neuronale Netzwerk-Rückpropagationstests

Nun, während ich das Netzwerk trainierte, mischte ich zunächst das Trainingssatz und mixte das Schnarchen und die Schnarchsegmente alle zusammen. Nachdem ich das Netzwerk trainiert habe, habe ich festgestellt, dass es nur eines von ihnen klassifizieren kann, wenn ich es validiere (nur durch Feed-Forward-Netzwerk). Lassen Sie mich es weiter klarstellen, angenommen, in dem Trainingssatz ist das letzte Element kein Schnarchen (was 1 ist). Also trainierte es das Netzwerk für die letzte Ausgabe. Dann gibt es in der Validierungsphase immer eine Ausgabe nahe 1, selbst für Schnarchsegmente (was 0 ist). Das Gleiche passiert, wenn das letzte Element schnarcht (0). Dann gibt es in der Validierungsphase immer eine Ausgabe nahe 0.

Wie kann ich dieses Problem lösen? Warum kann mein Netzwerk die Ausgabe für vorherige Segmente nicht speichern? Es speichert nur für das letzte Segment? Was sollte ich im Netzwerk ändern, um es zu lösen?

Antwort

0

Dies ist ein Klassifizierungsproblem, also würde ich empfehlen, dass Sie zwei Ausgabeneuronen haben. Ein Ausgabeneuron ist eins, wenn das Segment ein Schnarchsegment ist, und das andere ist -1, wenn es kein Schnarchsegment ist, und umgekehrt für Segmente ohne Schnarchen. Dies sollte dem Netzwerk helfen, beide zu klassifizieren. Sie sollten Ihre Eingabemerkmale auch auf einen Bereich zwischen 1 und -1 normalisieren. Dies wird dem neuronalen Netzwerk helfen, Ihre Eingaben besser zu verstehen. Sie können auch einen Softmax-Layer als Ausgabe verwenden.

Eine andere Sache, die Sie möglicherweise benötigen, ist möglicherweise müssen Sie eine weitere versteckte Schicht oder mehr Neuronen zu Ihrer aktuellen versteckten Schicht hinzufügen. Danke yo @YuryEuceda für diesen Vorschlag. Sie müssen möglicherweise auch einen Bias-Eingang hinzufügen, wenn Sie noch keinen haben.

+0

Es sollte mit 0 und 1 das gleiche wie mit -1 und 1, das Problem ist in der Anzahl der Neuronen und Synapsis in versteckter Lage r. –

0

Das Problem, das ich sehe, ist, dass es nicht genug Neuronen und Sinapsis in versteckter Schicht gibt. Denken Sie daran, dass es bis jetzt keine Möglichkeit gibt, die Anzahl der Neuronen in der versteckten Schicht genau zu berechnen. Daher müssen wir eine Test-Fehler-Methode verwenden. Es gibt viele empirische Formeln, die Sie in der nächsten Link überprüfen

https://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw

+0

Hallo, Danke für die Antwort. Das Problem liegt nicht in der versteckten Ebene. Weil ich die Kostenfunktion für jede Epoche berechnet habe. Und es ist schön, die Kostenfunktion im Training zu reduzieren. Das Problem besteht darin, die vorherigen Gewichte für ein Etikett zu speichern (angenommen 0). Wenn das andere Label annimmt, dass (1) in das Netzwerk kommt, vergisst es die Gewichte für die vorherige Ebene. Es hat kein optimales Gewicht gefunden, um beide zu klassifizieren. Bitte lassen Sie mich wissen, wie Sie es lösen können. – Odrisso