Signalerkennung

Sie haben ein bestimmtes Projekt zu bearbeiten und wissen nicht, wie Sie an die Aufgabe heran gehen sollen? Sie sind sich nicht sicher, ob Ihr Netzentwurf zu Ihrem Problem passt oder ob es da Optimierungsmöglichkeiten gibt? Ist es überhaupt sinnvoll an Ihre Daten mit einem NN basierten Ansatz heranzugehen? Ist MemBrain das richtige Werkzeug für Ihr Problem und Ihre Infrastruktur?

Hier ist der richtige Platz für diese Art von Fragen.
Post Reply
mrwhite
Posts: 2
Joined: Mon 21. Sep 2009, 12:16

Signalerkennung

Post by mrwhite »

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
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Signalerkennung

Post by Admin »

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
Thomas Jetter
mrwhite
Posts: 2
Joined: Mon 21. Sep 2009, 12:16

Re: Signalerkennung

Post by mrwhite »

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.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Signalerkennung

Post by Admin »

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)?
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
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:Feste Frequenz?
Auch hier sind im Trainingssignal leichte Schwankungen.
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?
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
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.
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?

Wie gesagt, ohne eine FFT-Aufbereitung wird da nicht viel gehen, denke ich...

Viele Grüße
Thomas Jetter
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Signalerkennung

Post by Admin »

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
Thomas Jetter
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Signalerkennung

Post by Admin »

Nochmal kurz 'hallo':

Gerade ist eine neue MemBrain Version online gegangen, die die beschriebenen FFT-Berechnungen unterstützt.

Viele Grüße
Thomas Jetter
goe
Posts: 2
Joined: Thu 4. Feb 2010, 12:39

Re: Signalerkennung

Post by goe »

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
Post Reply