17 November 2016

Ein Computer versucht Morsen zu lernen

Eine Bemühenszusage

Morgens sitzt der OM mit seiner Frau am Frühstückstisch und lässt sich den Kaffee und die Brötchen schmecken. Er liest eine Zeitung, die nichts Neues aus der Welt berichtet, während seine Gattin ihn über den bevorstehenden Einkaufsbummel informiert.

 http://www.radiomuseum.org/forumdata/users/1146/Radio_News_Dec23.jpg

Im Hintergrund hört man ein Kurzwellenradio. Es tummeln sich einige Stationen auf dem Band, aber der Artikel über die ... Plötzlich verändert sich die Haltung des OM: Er sieht zum Radio hinüber. Eben hatte er zweifelsfrei eine Station erkannt, die ihm seit langem im Log fehlt. Er verschüttet seinen Kaffee und rennt zum Shack.




Was war passiert?

Wenn er sich auf das Gehör alleine verlassen hätte, hätte er keine Chance gehabt, das Rufzeichen aus dem Geräuschpegel herauszufiltern. Wie ein Stereomikrofon hätte er alle Geräusche der Küche getreulich registriert, aber  keinen Alarm geschlagen. Somit waren es nicht die Ohren, sondern das nachgeschaltete Hirn, dass alle eingehenden Töne analysierte und filterte: Zeitungsrascheln, Brötchenknacken, Kesselpfeifen, Frauengeplapper ... alles uninteressant und unterhalb der Aufmerksamkeitsschwelle. Aus dem Radio tönten  vier Stationen gleichzeitig und dann "CQ CQ CQ DE FO..."

Wenn man als angehender CWist über die Buchstabierphase in CW hinausgekommen ist, beginnt die Magie und man kann einzelne Buchstaben erkennen. Es ist nicht mehr die Punkt/Strichfolge, sondern ein Rhythmus oder eine Melodie, die sich einprägen. Tonhöhen und Melodieerkennung (Abfolge von verschiedenen Tönen) werden nicht im Ohr, sondern u.a. in der primären Hörrinde verarbeitet. So kann man leicht aus einer Klangkakaphonie einzelne Töne heraushören - filtern und unser Gehirn auf diesen Reiz fokussieren.

Wenn ein CW-Buchstabe als Rhythmus erkannt wird, werden sehr viele weitere Hirnareale aktiviert, die sogar den zuständigen Bewegungsbereich (Fußklopfen) umfassen.

Aber der erste Buchstabe in der Abkürzung "CQ" in kodiert in Morsezeichen ist noch nicht besonders interessant. Ein geübter CWist hört keine Buchstaben mehr, sondern Q-Codes, Abkürzungen und Worte. Die Melodie/der Rhythmus der Buchstabenfolgen sind durch das Training verinnerlicht und liegen als "komplexe Muster" vor, die als Ganzes erkannt werden ("pattern matching") werden. Doch die Verarbeitungsleistung des Gehirns geht noch weiter. Das DIT-DIT-DIT-DAH Motiv im Kopfsatz von Beethovens 5.Symphonie ist Musik (Melodie und Rhythmus), für den "einfachen" OM ist dies allerdings nur der Buchstaben "V" .

Wenn wir deutsche Funkamateure "CQ" hören, verbinden wir dies mit der Übersetzung "Allgemeiner Anruf". Und genau diese Verbindung haben wir unserem Hirn in den Sprachverarbeitungsregionen an trainiert. Es gibt fast keinen Unterschied zwischen dem CW-CQ und dem vom Menschen gesprochenen "CQ". Unser  Gehirn wandelt diese Tonfolgen in Verständnis um.

Aber alle OMs der Welt sprechen die Sequenz "CQ" im Sprechfunk anders aus: "Sie Kuh", "ceku", "zieh Kuh" ... Nun haben wir ein weiteres Problem: Varianten der Ausprache oder Dialekte Doch wir sind nicht erst seit gestern Funkamateure und haben schon fleißig trainiert. Wir haben viele Patterns abgespeichert, die sich alle mit dem "CQ", das wir er warten, spiegeln. So werden in unserem Kopf die Varianten immer wieder in den Begriff "Allgemeiner Anruf" übersetzt.


Bei der Produktion von Varianten des sprachlichen Ausdrucks kann der geübte CWist locker mithalten: Er gibt schnell, langsam, ohne Pause, vergisst einen Punkt, ... und trotzdem verstehen wir es, da der Grundrhythmus und die Melodiekontur ähnlich sind. Außerdem stehen wir in einem Kommunikationsszenario und haben eine berechtigte Erwartungshaltung: Jetzt sollte mal einer "CQ" rufen!


CW als Sprache

Wenn wir CW als Kommunikationsszenario betrachten, dann ist CW unser Medium oder unsere Sprache. Was macht CW als Sprache aus? Zuerst die Kodierung der Buchstaben, die ein besonderes Medium benutzen. Aus diesen Buchstaben werden Worte gebildet, deren Kern einige feste Begriffe umfassen, z.B. Q-Codes. Die eingeschränkte Syntax(z.B. "CQ de XXX") folgt den Erfordernissen des uns zur Verfügung stehenden Mediums. Bei Klartext-QSOs gelten die Regeln der jeweiligen verwendeten Sprache, die wir verinnerlicht oder gelernt haben (Englisch).

Der geübte CWist kann einen "CW-Satz" wie das Gespräch am Nebentisch in einem Restaurant verfolgen. Über das Ohr bis zum (Sprach)Verständnis wird die Übersetzungsleistung vom Gehirn geleistet. Im Sprachzentrum klingeln nach dem "unbewusst" oder nebenbei aufgenommenen "CQ CQ de " bei "FO..." plötzlich die Alarmglocken, die der OM vorher "programmiert" hatte.

Sein Sprach-, Sprech-, motorisches und Erinnerungsvermögen sind miteinander vernetzt. Seine Wissensaneignung funktioniert "nur" über die Verknüpfung von neuen Fakten an alte, vorhandene  "Wissensnetze". Somit wird bei der Buchstabenfolge "FO" augenblicklich die Liste der fehlenden Calls aufgerufen.

Da kommt in unserem Hirn einiges an "Rechenleistung" zusammen, um den armen OM zu veranlassen seinen Kaffee zu verschütten.


Der Rechner will CW lernen


Morgens sitzt der Rechner im dunklen Shack und überwacht das 30m Band. Er kennt aus seinem Logbuch die gearbeiteten und fehlenden Stationen und Länder. Auch er liest auf dem Band den CQ-Ruf, aber dann ist die Hölle los und er versteht gar nichts mehr. Er ist sauer, aber da kommt sein Herrchen, um ihm einige Tricks zu zeigen, die der geübte CWist schon lange kennt.


1. Versuch


Der Rechner wird über den Mikrofoneingang mit akustischen CW-Zeichen auf einer bestimmten Frequenz (600 Hz) gespeist. Wir teilen ihm mit, dass die Zeichen mit der Geschwindigkeit von 25 Buchstaben pro Minute gesendet werden.

Der Rechner kann rechnen und notiert sich als
Konstanten:
    1 DIT = 240 ms
    1 DAH = 3 * DIT = 720 ms
    1 Pause zwischen DIT und DAH = 1 DIT = 240 ms
    1 Pause zwischen Buchstaben = 3 * DIT = 1 DAH = 720 ms
    1 Pause zwischen Wörtern = 7 * DIT = 1680 ms
    Frequenz = 600
 
START
    Höre auf der Frequenz
    WENN ein Signal erkannt wird, miss die Länge
    WENN das Signal 240 ms dauert,
        DANN speichere ein Punktsymbol
    WENN das Signal 720 ms dauert
        DANN speichere ein Strichsymbol
    WENN die Pause 240 ms dauert
        DANN gehe auf START
    WENN die Pause 720 ms dauert
        DANN vergleiche die gespeicherte Strich/Punktfolge
    mit einer Tabelle des Morsealphabets
    Gib den gefundenen Buchstaben auf dem Monitor aus
    Gehe zu START
    ... usw.

Der Rechner ist erstaunt, mit welcher Leichtigkeit er plötzlich Morsezeichen dekodieren kann.


2. Versuch

Der Rechner soll nicht übermütig werden. Er bekommt wie gewohnt ein Signal auf einer Frequenz geliefert. Wir streichen ihm aber die Konstanten. Er weiß nicht mit welcher Geschwindigkeit die Morsezeichen gegeben werden. Er muss diese Konstante durch Erfahrung lernen.

Ein leichtes Rauschen im Band, der Computer döst vor sich hin. Doch da misst er auf der vereinbarten Frequenz einen Ton. Der Rechner beginnt mit der Zeitmessung. Wenn das Signal verschwindet stoppt er seine Uhr und der Zeitwert wird in eine Tabelle eingetragen.

Doch sofort wird der Zeitmesser angeworfen und die Länge der Pause vermessen und wieder in die Tabelle eingetragen. Das nächste Zeichen kommt. Die Zeit wird genommen ...

    WENN der Rechner ein Zeichen mit der Dauer X findet
    UND WENN er ein Zeichen mit der Dauer 3 * X erkennt
    UND WENN die Pausen Vielfache der Dauer X sind,
        DANN kann er die Zuweisung zu Dit und Dah machen, und seine Konstanten eintragen.

Da er eine konstante Geschwindigkeit gefunden hat, kann er nun mit dem Programm seines ersten Versuches weiterarbeiten,


3. Versuch

Der Rechner ist immer noch unterfordert. Wir liefern ihm ein Signal, sagen ihm aber nicht, wo das Signal in einem 500 Hz breiten Segment auftauchen wird.

So langsam kommt er Rechner ins Schwitzen. Zu jeder Millisekunde kommt ein komplexes Signal mit der vereinbarten Bandbreite an. Der Rechner muss nun jede einzelne der 500 Frequenzen untersuchen, ob ein Signalpegelanstieg zu verzeichnen ist. Hat er diesen Anstieg gefunden, darf er sich diese Frequenz als neue Frequenzkonstante merken und darf wieder mit dem Gelernten aus dem zweiten Versuch fortfahren.


4. Versuch


Der Rechner meldet Langeweile, obwohl die CPU schon zu tun hatte. Für uns kein Problem: Wir füttern ihn auf dem 500 Hz Bandabschnitt mit maschinen-generiertem CW unterschiedlicher Geschwindigkeit. Doch dieses Mal lassen wir gleichzeitig zehn verschiedene Signale in diesem Bandabschnitt palavern.

Es wird ruhig im Shack, der Lüfter beginnt zu heulen und nichts kommt mehr.
Dabei sind die Aufgaben vergleichbar mit dem dritten Versuch:

1. Analyse des Bandes
2. Erkennen eines anliegenden Signals
3. Notieren der Frequenz
4. Berechnen des Punkt/Strichverhältnisses
5. usw.

Aber es sind zu viele Signale. EIN Rechner kann nur EINE Aufgabe in derselben Zeiteinheit bearbeiten. Sicherlich kann er wie Rumpelstilzchen hin und her springen oder die berühmte Parallelverarbeitung starten, aber wir müssen es ihm mitteilen. So gönnen wir dem Rechner Unterstützung und setzen neuronale Netzwerke ein.

Dies kann man z.B. mit künstlichen neuronalen Netze modellieren, die die Netze unseres Körpers nachbilden. Jedes Neuron ist eine autonome (Software-)Einheit, die selbständig lernen kann. Sie hat einen festen Auftrag und weiß, mit welchen anderen Knoten Nachrichten ausgetauscht werden können.

Der Rechner scannt die Bandbreite und immer wenn er ein Signal entdeckt, übergibt er dieses Signal einem selbständigen "Software-Agenten". Seine Aufgabe: Überwache diese Frequenz und führe das Programm aus dem zweiten Versuch durch. Der Hauptrechner bekommt die Lösungen der Agenten geschickt und veröffentlicht sie.

Der Rechner lehnt sich etwas zurück und schafft es.


5. Versuch

Die neuronalen Agenten scheinen ihrer Aufgabe gewachsen zu sein. Wir nähern uns der Realität und schicken die 10 CW-Signale auf das 30m Band.

Der Rechner analysiert den Bandbereich und verteilt seine Agenten. Aber es sind so viele Scheinsignale, dass er nicht mehr nur die 10 sondern 50, 100 oder 200 Agenten auf eine jeweilige Signalspitze ansetzen muss. Das war zu viel. Ein guter Agent weiß was er zu tun hat, wenn er nicht innerhalb von ein paar Sekunden ein valides Signal entdeckt: Er löst sich in Luft auf.

Mein kleiner Rechner nimmt nur noch hin und wieder schöne Signale auf ...


x. Versuch und die Realität


Bis jetzt war der Rechner auf der sicheren Seite. Wir haben ihn nur mit Signalen gefüttert, die ordentlich mit einer Maschine generiert wurden. Nun lassen richtige CW-Operator die CW-Passagen produzieren. Es beginnt zu menscheln:

- Pausen zwischen Zeichen sind ungleichmäßig:
Die verwirft die gesamten Berechnungsgrundlagen für die maßgebliche Gebe-Geschwindigkeit. Wir können Toleranzen einführen, aber die Grenzen sind sehr eng gesteckt. Die Pause ist ein wesentlicher Bestandteil der Dekodierung.

- Vergessene Abstände oder Zeichen:
Hier versagt fast jeder Algorithmus. Der Rechner ist in der Lage, Signalfolgen in Buchstaben umzusetzen. Er kann noch Worte erkennen, aber er versteht die Bedeutung der Wort nicht. Ganz zu schweigen von Sätzen. Dazu müsste er Wissen haben, aber das gibt es in geringstem Umfang in kleinen Bereichen, deren Codierung sehr aufwendig ist. Da Funker aber über alles reden, benötigte er das Weltwissen eines OM, um einzelne Worte zu korrigieren. Für einige Ausnahmen ließen sich kleine Wörterbücher für normierte Phrasen erstellen, die zusätzlich konsultiert werden. Aber der Erfolg ist äußerst begrenzt.

- Rufzeichenerkennung:
Rufzeichen sind weltweit bekannt und könnten zum Abgleich verwendet werden, aber die Entscheidung ob das Rufzeichen DL1SDZ oder DL1SDY lautet, kann kein Rechner selbstständig entscheiden. Ein erfahrener CWist erkennt sein Gegenüber an der "Handschrift" ;-)

Aber wir sind noch lange nicht am Ende der Schwierigkeiten. Fügen wir noch die Unwägbarkeiten der Hochfrequenz hinzu:


- Signalstärke:
Ab welcher Signalstärke wird ein CW-Signal als valides Signal angesehen? Signalstärken von S3-9 sind kein Problem. Aber das Signal aus FO erreicht mit Mühe S1 und ist für einen Menschen leicht lesbar. Diesem machen auch Signale unter der Rauschgrenze keine Schwierigkeiten und erlauben erst viele DX-Kontakte. Der Rechner muss aber dann sehr viel mehr Agenten einsetzen, um alle möglichen Signale zu überprüfen. Er wird an die Grenzen seiner Rechenleistung kommen.

- Einschwingphase des Signals:
Es wäre schön, wenn ein Signal wie ein Kanonenschuss beginnt. Aber das ist nicht die Realität. Wenn man die Hüllkurven von CW-Signalen analysiert, erkennt man deutliche Ein und Ausschwingphasen. Da wir im Millisekundenbereich arbeiten und CW-Tempi um die 150 bpm Standard sind, dauert das Signal nur noch 45 mS. Wenn ich jetzt noch die Ein- und Ausschwingphase variabler Länge bei der automatischen Berechnung berücksichtigen muss, wird die Zuverlässigkeit der Geschwindigkeitskonstante gering und damit auch die Interpretation der Buchstaben.

- Signalbreite:
Bis jetzt sind wir davon ausgegangen, dass das Signal auf das Hertz genau geortet werden kann. Aber dies war auch eine theoretische Annahme. Sie können von 1 - 20? Hertz breit sein. Der Rechner muss sich entscheiden, welche Frequenz er analysiert. Das probate Mittel ist die Isolierung des Signals durch Filterung, Filterung, Filterung ... bis ein sauberes Signal auf einer Frequenz übrig bleibt. Mmmmh, ein gefiltertes Signal hat eine veränderte Einschwingphase ... s.o.

- Unstabile Sender:
Der Sender wandert ein paar Hertz hin und her. Für das menschliche Ohr ist das kaum bemerkbar, aber die CW-Software-Agenten drehen durch. Für sie hört das gefilterte Signal auf zu existieren und sie beenden ihre Arbeit. Drei Hertz weiter beginnt ein neuer Agent zu werkeln und versucht sich auf die seltsamen Zeichen einen Reim zu machen.


Kann der Rechner CW oder nicht?

Der Rechner braucht für eine Aufgabe, die ein erfahrener Operator beim Kaffee trinken nebenbei macht, Power, Power, Power und ist doch noch überfordert, da mathematische Formeln und Verfahren noch (nicht) mit der gesammelten Kompetenz eines menschlichen Gehirns mithalten können. Rechneranalyse und menschliches Verstehen sind zweierlei Paar Schuhe. Aber spannend ist es schon zu versuchen, die Realität analysieren zu lassen und sie anschließend ein bisschen besser zu verstehen.


Nachbemerkung

Dieser Artikel entstand auf Anregung eines bereits abgeschlossenen Wettbewerbs bei Kaggle:
Build a learning machine to decode audio files containing Morse code.
https://inclass.kaggle.com/c/morse-challenge
Er wurde von Mauri Niininen (AG1LE) initiiert, der auch u.a. den CW-Analysecode für das Programm FlDigi verbessert hat.

Kaggle ist eine Plattform auf der Modellierungs- und Analyse Wettbewerbe ausgeschrieben werden, an denen sich weltweit Forscher und Firmen beteiligen können. An dem o.g. Wettbewerb hatten sich 11 Gruppen beteiligt, die zum Teil hervorragende Ergebnisse veröffentlicht haben.


Literatur


ZEN UND DIE KUNST DER FUNKTELEGRAFIE Carlo Consoli, IKØYGJ
http://www.qsl.net/ik0ygj/enu/ZARTGerman.pdf

Juan G. Roederer: Physikalische und psycholakustische Grundlagen der Musik
Robert Jourdain: Das wohltemperierte Gehirn: Wie Musik im Kopf entsteht und wirkt

Weitere Literatur:

Benade, Arthur H.  Fundamentals of Musical Acoustics
Levitin, Daniel J. This is your Brain on Music
Pierce, John R. Klang mit den Ohren der Physik
Temperley, David The Cognition of Basic Musical Structures
http://de.wikipedia.org/wiki/Morsezeichen#mediaviewer/File:Morse-Tafel.png

http://de.wikipedia.org/wiki/K%C3%BCnstliches_neuronales_Netz