Hallo zusammen,
ich habe eine Projektaufgabe und weiß nicht so recht wie ich ran gehen soll. Ich habe schon viel quer gelesen doch ich finde nichts was mich wirklich weiterbringt . Vielleicht könnt ihr mir weiterhelfen über einfache Links bin ich schon hoch erfreut.
Hier meine Aufgabe:
Ein neuronale Netz bekommt als Input ein zeitabhängiges Signal y(t). Das Netz soll nun erkennen um was für ein Typ Signal es sich handelt.
Die Typen sind vordefinierte Signale dessen Muster bekannt sind und von denen eine Wertetabelle existiert.
z.B.:
Typ 1 = Sinussignal
Typ 2 = Cosinussignal
Typ 3 = Sägezahn
usw.
Jetzt stelle ich mir das in etwa so vor, ich gebe meinem Netz die Typen zum lernen. Anhand der erlernten Signale soll das Netz nun in der Lage sein ein dem Typen ähnliches Input Signal zu erkennen. Als Output soll mir die Typennummer ausgeben werden, welche dem Eingangssignal ähnlich ist. Vielleicht macht es der folgende Ablauf klarer.
Schritt 1
Input = verschwommener Sinus
Schritt 2
Netz erkennt eine Sinusform und schließt auf den Typ 1
Schritt 3
Output = Typnummer 1
Ich hoffe das ich die Aufgabenstellung einigermaßen verständlich rübergebracht habe.
Wie schon gesagt ich bin für jeden Tipp Dankbar.
Gruß mrwhite
Signalerkennung
Re: Signalerkennung
Hallo mrwhite,
zunächst ein paar Rückfragen, um die Aufgabenstellung besser verstehen zu können:
1.) In welcher Form liegen die Signalverläufe vor und wie wird die Vielfalt begrenzt? Damit meine ich im Wesentlichen:
- Konstante Abtastrate? (Wie hoch?, d.h., wie viele Zeitpunkte pro Signalzug)
- Festes Zeitfenster?
- Normierte Aplitude?
- Feste Frequenz?
- Kannst Du immer von einem vollen Wellenzug als Signal ausgehen?
- Beginnt ein Wellenzug immer bei der mathematischen zeitlichen 'Null' Deines Signals (ich nehme das an, sonst könntest Du wohl Sinus und Cosinus nicht unterscheiden)?
2.) Wie stark variieren Deine Signalverläufe, kannst Du mal ein csv-File mit ein paar Beispielen posten?
3.) Haben Deine Signale einen Bias (Gleichanteil)?
4.) Wie viele Signalverläufe hast Du zum Training und zur Validierung zur Verfügung?
Viele Grüße
zunächst ein paar Rückfragen, um die Aufgabenstellung besser verstehen zu können:
1.) In welcher Form liegen die Signalverläufe vor und wie wird die Vielfalt begrenzt? Damit meine ich im Wesentlichen:
- Konstante Abtastrate? (Wie hoch?, d.h., wie viele Zeitpunkte pro Signalzug)
- Festes Zeitfenster?
- Normierte Aplitude?
- Feste Frequenz?
- Kannst Du immer von einem vollen Wellenzug als Signal ausgehen?
- Beginnt ein Wellenzug immer bei der mathematischen zeitlichen 'Null' Deines Signals (ich nehme das an, sonst könntest Du wohl Sinus und Cosinus nicht unterscheiden)?
2.) Wie stark variieren Deine Signalverläufe, kannst Du mal ein csv-File mit ein paar Beispielen posten?
3.) Haben Deine Signale einen Bias (Gleichanteil)?
4.) Wie viele Signalverläufe hast Du zum Training und zur Validierung zur Verfügung?
Viele Grüße
Thomas Jetter
Re: Signalerkennung
Hallo Zusammen,
zunächst mal danke für die schnelle Antwort und Entschuldigung für die späte Meldung bin die Woche einfach nicht dazu gekommen zu antworten.
Zu 1)
Abtastrate?
Konstante Abtastrate ist gegeben, die Sampelrate 44100Hz bei 32Bit.
Ich sehe gerade das es sehr hohe Abtastraten sind. Die könnte man unter umständen auch abändern aber prinzipiell ist sie konstant.
Festes Zeitfenster?
Ist Wahrscheinlich sehr sinnvoll ein solches einzurichten, ist auch kein Problem das umzusetzen. Im Moment ist es aber noch nicht der Fall.
Normierte Amplitude?
Im Trainingssignal sind leichte Schwankungen drin
Feste Frequenz?
Auch hier sind im Trainingssignal leichte Schwankungen.
Kannst Du immer von einem vollen Wellenzug als Signal ausgehen?
Ja die Welle ist immer im Signalverlauf vorhanden halt nur bei den Trainingsdaten
Beginnt ein Wellenzug immer bei der mathematischen zeitlichen 'Null' Deines Signals?
Sehr gute Frage, ich habe mein Beispiel ungeschickt gewählt die Phase spielt keine Rolle.
Zu 2)
Die Daten die ich habe sind im Moment noch in einer txt–File und die Datei ist 30MB groß. Ich könnte mir vorstellen das es beim Posten Probleme bereitet alternativ hätte ich noch ne wav–File im Angebot mit 1,7MB wobei auch das relativ groß ist.
Zu 3) Haben Deine Signale einen Bias (Gleichanteil)?
Der Signalverlauf wiederholt sich alle paar Hundertmillisekunden, wenn du das meinst. Soviel kann ich verraten es handelt sich um ein menschliches Biosignal dessen Herkunft ich an dieser stelle noch gerne geheim halten würde da ich nicht weiß in wie weit ich mit diesem Thema an die Öffentlichkeit gehen kann.
Zu 4) Wie viele Signalverläufe hast Du zum Training und zur Validierung zur Verfügung?
Hmm schwer zu sagen je nach dem wie man das Zeitfenster setzt bis zu 30. Ich weiß jetzt auch nicht was das Netz für Daten benötigt?
Ich hoffe das Ihr damit mehr anfangen könnt ansonsten gebt Bescheid.
zunächst mal danke für die schnelle Antwort und Entschuldigung für die späte Meldung bin die Woche einfach nicht dazu gekommen zu antworten.
Zu 1)
Abtastrate?
Konstante Abtastrate ist gegeben, die Sampelrate 44100Hz bei 32Bit.
Ich sehe gerade das es sehr hohe Abtastraten sind. Die könnte man unter umständen auch abändern aber prinzipiell ist sie konstant.
Festes Zeitfenster?
Ist Wahrscheinlich sehr sinnvoll ein solches einzurichten, ist auch kein Problem das umzusetzen. Im Moment ist es aber noch nicht der Fall.
Normierte Amplitude?
Im Trainingssignal sind leichte Schwankungen drin
Feste Frequenz?
Auch hier sind im Trainingssignal leichte Schwankungen.
Kannst Du immer von einem vollen Wellenzug als Signal ausgehen?
Ja die Welle ist immer im Signalverlauf vorhanden halt nur bei den Trainingsdaten
Beginnt ein Wellenzug immer bei der mathematischen zeitlichen 'Null' Deines Signals?
Sehr gute Frage, ich habe mein Beispiel ungeschickt gewählt die Phase spielt keine Rolle.
Zu 2)
Die Daten die ich habe sind im Moment noch in einer txt–File und die Datei ist 30MB groß. Ich könnte mir vorstellen das es beim Posten Probleme bereitet alternativ hätte ich noch ne wav–File im Angebot mit 1,7MB wobei auch das relativ groß ist.
Zu 3) Haben Deine Signale einen Bias (Gleichanteil)?
Der Signalverlauf wiederholt sich alle paar Hundertmillisekunden, wenn du das meinst. Soviel kann ich verraten es handelt sich um ein menschliches Biosignal dessen Herkunft ich an dieser stelle noch gerne geheim halten würde da ich nicht weiß in wie weit ich mit diesem Thema an die Öffentlichkeit gehen kann.
Zu 4) Wie viele Signalverläufe hast Du zum Training und zur Validierung zur Verfügung?
Hmm schwer zu sagen je nach dem wie man das Zeitfenster setzt bis zu 30. Ich weiß jetzt auch nicht was das Netz für Daten benötigt?
Ich hoffe das Ihr damit mehr anfangen könnt ansonsten gebt Bescheid.
Re: Signalerkennung
Prinzipiell habe ich den Verdacht, dass das Problem im Zeitbereich (alleine) nicht in den Griff zu kriegen ist. Mir scheint eine FFT als Signalvorverarbeitung angebracht. Dem Netz könnte man dann einen Satz Spektrallinien aus dem Frequenzbereich präsentieren, den man vorher evtl. sogar noch bzgl. seiner Grundfrequenzamplitude normalisieren sollte (um Lautstärkeschwankungen zu kompensieren) . Das dürfte schon sehr gut ausreichen, um ein zeitlich 'konstantes' Signal zu beurteilen, d.h., ein Signal, das seine Frequenzzusammensetzung über der Zeit nicht ändert.
Sollte sich das Spektrum des Signals über den Beobachtungszeitraum hinaus auch noch verändern, dann muss man über ein zeitabhängiges Netz nachdenken, oder über ein Netz, das mehrere Spektren von verschiedenen Zeitpunkten als Inputs erhält.
Hast Du die Möglichkeit, aus Deinen Signalen FFTs zu erzeugen (z.B. mit Matlab)?
Nochmal genauer: Hängt die Beurteilung/Klassifizierung des Signals auch davon ab, wie es sich über einen längeren Zeitraum hinweg verändert? Z.B., wie es in der Amplitude abklingt, oder die Anzahl Oberwellen über die Zeit hinweg abnimmt o.ä.?
Über welche Frequenzbandbreite reden wir denn?
Handelt es sich bei Deinem Signal wirklich um so 'einfache' Grundsignale wie Dreicke, Sinus, o.ä. oder sind es komplexere Signalverläufe?
Insgesamt
Wie gesagt, ohne eine FFT-Aufbereitung wird da nicht viel gehen, denke ich...
Viele Grüße
Sollte sich das Spektrum des Signals über den Beobachtungszeitraum hinaus auch noch verändern, dann muss man über ein zeitabhängiges Netz nachdenken, oder über ein Netz, das mehrere Spektren von verschiedenen Zeitpunkten als Inputs erhält.
Hast Du die Möglichkeit, aus Deinen Signalen FFTs zu erzeugen (z.B. mit Matlab)?
Prinzipiell musst Du einem NN qualitativ später das selbe vor die Nase setzen, wie beim Training. Natürlich wird es Abweichungen vom Trainingssignal geben, man möchte das Netz ja gerade dazu verwenden, unbekannte Daten zu analysieren. Diese dürfen sich aber von den Trainingsdaten nicht vollständig unterscheiden. D.h., auch später musst DU dem Netz immer qualitativ das selbe präsentieren, z.B. immer einen Wellenzug oder eine feste Anzahl Wellenzüge oder immer das selbe Zeitfenster oder immer die selbe Anzahl Spektrallinien mit den selben Frequenzen o.ä.mrwhite wrote:Kannst Du immer von einem vollen Wellenzug als Signal ausgehen?
Ja die Welle ist immer im Signalverlauf vorhanden halt nur bei den Trainingsdaten
Reden wir über ein Signal, bei dem sich immer ein konstantes Spektrum angeben lässt, d.h., eine gleichmäßige, sich wiederholende Schwingungsform (wenn auch nicht sinusförmig), oder geht es sogar darum, ein Signal zu erkennen, das sich über den Beobachtungszeitraum in seiner Schwingungsform verändert, d.h., das seine Spektralzusammensetzung während eines Beobachtungsintervals verändert?mrwhite wrote:Feste Frequenz?
Auch hier sind im Trainingssignal leichte Schwankungen.
Nochmal genauer: Hängt die Beurteilung/Klassifizierung des Signals auch davon ab, wie es sich über einen längeren Zeitraum hinweg verändert? Z.B., wie es in der Amplitude abklingt, oder die Anzahl Oberwellen über die Zeit hinweg abnimmt o.ä.?
Über welche Frequenzbandbreite reden wir denn?
mrwhite wrote:Beginnt ein Wellenzug immer bei der mathematischen zeitlichen 'Null' Deines Signals?
Sehr gute Frage, ich habe mein Beispiel ungeschickt gewählt die Phase spielt keine Rolle.
Handelt es sich bei Deinem Signal wirklich um so 'einfache' Grundsignale wie Dreicke, Sinus, o.ä. oder sind es komplexere Signalverläufe?
Insgesamt
Das ist allerdings ziemlich hoch und auch eine sehr hohe Auflösung im Amplitudenbereich (32Bit sind mehr als 4 Milliarden Quantisierungsstufen!) Hier nochmal die Frage: Um welchen Frequenzbereich geht es?mrwhite wrote:Abtastrate?
Konstante Abtastrate ist gegeben, die Sampelrate 44100Hz bei 32Bit.
Ich sehe gerade das es sehr hohe Abtastraten sind. Die könnte man unter umständen auch abändern aber prinzipiell ist sie konstant.
Wie gesagt, ohne eine FFT-Aufbereitung wird da nicht viel gehen, denke ich...
Viele Grüße
Thomas Jetter
Re: Signalerkennung
Hallo mrwhite,
ich habe unsere kleine Diskussion als Anlass genommen, die nächste MemBrain-Version mit der Fähigkeit zur FFT-Berechnung auszustatten, ist bereits in Arbeit und sollte in den nächsten Wochen online gehen.
Die FFT-Berechnungen werden dann sowohl im Lesson-Editor Menü, als auch über Skript-Befehle verfügbar sein.
Allerdings muss man bei einem Problem wie dem hier betrachteten sehr genau über die nötige Abtastrate nachdenken, denn diese bestimmt auch die Auflösung im Frequenzbereich und damit die Anzahl Stützstellen für die FFT. Da für jede FFT-Stützstelle ein Input-Neuron vorzusehen wäre, ist eine Begrenzung der Auflösung unbedingt notwendig. Die Abtastfrequenz sollte also so niedrig wie unbedingt notwendig gewählt werden (und damit nach dem Nyquist-Theorem doppelt so hoch wie die höchste interessierende Frequenz).
Wichtig ist auch, sich über die niedrigste interessierende Frequenz Gedanken zu machen, um so wenig wir möglich Input-Neuronen zu erhalten.
Viele Grüße,
Thomas
ich habe unsere kleine Diskussion als Anlass genommen, die nächste MemBrain-Version mit der Fähigkeit zur FFT-Berechnung auszustatten, ist bereits in Arbeit und sollte in den nächsten Wochen online gehen.
Die FFT-Berechnungen werden dann sowohl im Lesson-Editor Menü, als auch über Skript-Befehle verfügbar sein.
Allerdings muss man bei einem Problem wie dem hier betrachteten sehr genau über die nötige Abtastrate nachdenken, denn diese bestimmt auch die Auflösung im Frequenzbereich und damit die Anzahl Stützstellen für die FFT. Da für jede FFT-Stützstelle ein Input-Neuron vorzusehen wäre, ist eine Begrenzung der Auflösung unbedingt notwendig. Die Abtastfrequenz sollte also so niedrig wie unbedingt notwendig gewählt werden (und damit nach dem Nyquist-Theorem doppelt so hoch wie die höchste interessierende Frequenz).
Wichtig ist auch, sich über die niedrigste interessierende Frequenz Gedanken zu machen, um so wenig wir möglich Input-Neuronen zu erhalten.
Viele Grüße,
Thomas
Thomas Jetter
Re: Signalerkennung
Nochmal kurz 'hallo':
Gerade ist eine neue MemBrain Version online gegangen, die die beschriebenen FFT-Berechnungen unterstützt.
Viele Grüße
Gerade ist eine neue MemBrain Version online gegangen, die die beschriebenen FFT-Berechnungen unterstützt.
Viele Grüße
Thomas Jetter
Re: Signalerkennung
Hi,
zu erwähnen ist hier auch das Recurrent Netzwerk
Referenzen:
Elman, J.L., "Finding structure in time," Cognitive Science, Vol. 14, 1990, pp. 179-211.
http://www.pri.univie.ac.at/~schiki/unt ... pframe.htm
http://de.wikipedia.org/wiki/Elman-Netz
Es wird mit "Trainingssignalen" (Abtastwerte sin, cos, o.ä.) trainiert und kann dann die Signalart erkennen. Es gibt für MatLab+Neuronal Network toolbox eine demo-Applikation siehe http://www.mathworks.com
LG
Peter
zu erwähnen ist hier auch das Recurrent Netzwerk
Referenzen:
Elman, J.L., "Finding structure in time," Cognitive Science, Vol. 14, 1990, pp. 179-211.
http://www.pri.univie.ac.at/~schiki/unt ... pframe.htm
http://de.wikipedia.org/wiki/Elman-Netz
Es wird mit "Trainingssignalen" (Abtastwerte sin, cos, o.ä.) trainiert und kann dann die Signalart erkennen. Es gibt für MatLab+Neuronal Network toolbox eine demo-Applikation siehe http://www.mathworks.com
LG
Peter