Hobbyprojekte
Rauschunterdrückung in Messdaten
Methoden des maschinellen Lernens können in der Signalverarbeitung eingesetzt werden, um die Qualität von verrauschten Signalen zu verbessern. Ein Beispiel, das ich in PyTorch programmiert habe, legt nahe, dass diese Methode für Spektrosopie-Signale gut funktioniert. Solche Signale haben typischerweise Lorentz-Form. Reale Messdaten sind allerdings nie identisch mit der glatten Kurve, die die Theorie vorhersagt, sondern vielmehr verrauscht, wie das folgende Bild qualitativ zeigt (dunkel = Realteil des komplexen Signals, hell = Imaginärteil). Oft ist das Rauschen so stark, dass einzelne Peaks nicht mehr mit bloßem Auge zu erkennen sind.
Synthetisch generierte Daten wie die obigen eignen sich, um ein neuronales Netz zu trainieren: Das Netz nimmt ein verrauschtes Signal entgegen und wird darauf trainiert, das Original (engl. “Ground Truth”) zu reproduzieren. Die Trainingsarchitektur ist im nächsten Bild veranschaulicht.
Mein Code ist als Google Colab Notebook offen verfügbar: my_notebook
. Jeder kann den Code herunterladen oder (mit einem Google-Account) in der Cloud ausführen.
Die folgenden Bilder veranschaulichen das Ergebnis eines colvolutional Netzes mit 6 Layers, das mit MSE-Loss-Funktion trainiert wurde. Offensichtlich rekonstruiert das neuronale Netz die Originaldaten gut, wie das Schaubild des Approximationsfehlers (rechts unten) zeigt.
Dieses Projekt ist Teil einer größeren Kollaboration (mehr Details gibt es in unserem kürzlichen Abstract). Eine jüngere Version des Python Codes gibt es auf meiner GitHub-Seite: https://github.com/frank-roesler/MRspecNET (dieser Code ist noch work in progress).