Neuronale Netze Deep Learning kann viel mehr als Bildklassifikation

Mehr Einsatzmöglichkeiten in der Deep Learning Anwendung.
Mehr Einsatzmöglichkeiten in der Deep Learning Anwendung.

Deep-Learning-Anwendungen werden bisher hauptsächlich für die Bilderkennung und Klassifikation von Bildern genutzt. Doch es gibt weitere Einsatzmöglichkeiten: Die Spracherkennung und Textanalyse sowie das Entrauschen von Bildern.

Deep-Learning-Netze erweisen sich als vielseitige Werkzeuge. Sie waren ursprünglich für die Bildklassifikation gedacht, werden jedoch zunehmend auch für viele andere Aufgaben eingesetzt. Sie bieten Genauigkeit und hohe Verarbeitungsgeschwindigkeit – und sie ermöglichen auch Anwendern, die keine Fachexperten sind, komplexe Analysen großer Datenmengen. Nachfolgend sind einige Aufgaben skizziert, für die die Verwendung eines Deep-Learning-Netzes
in Betracht kommen kann.

In diesem ersten Beispiel werden Daten von Twitter analysiert, um festzustellen,
ob die Stimmung in Bezug auf einen bestimmten Begriff oder Ausdruck positiv oder negativ ist. Stimmungsanalysen finden praktische Anwendungen, etwa für das Branding einer Marke oder eines Produkts, politische Kampagnen und klassische Werbung.

Für Stimmungsanalysen wird häufig noch Machine Learning eingesetzt. Ein solches Modell kann einzelne Wörter analysieren und einordnen.  Ein Deep-Learning-Netz hingegen kann ganze Sätze unter die Lupe nehmen.

Der Trainingsdatensatz besteht aus Tausen-den von Beispiel-Tweets, die als positiv oder negativ klassifiziert sind. Das ML-Modell wird also mit manuell sortierten Beispieldaten gefüttert und lernt seine Kriterien auf diese Weise selbstständig. Hier einige Beispiele für Trainings-Tweets, die zuvor manuell bewertet wurden:

Tweet    Stimmung
„ICH LIEBE @MenschTierGesundheit ihr seid genial Leute!!“    
Positiv
„@nicolerichie: was seid ihr schnuckelig auf dem Foto“    
Positiv
„Zurück an die Arbeit!“    
Negativ
„Hatte gerade die schlechteste Präsentation aller Zeiten!“    
Negativ

Bereinigt werden die Daten, indem wir »Stoppwörter« wie »das« und »und« entfernen, die dem Algorithmus nicht beim Lernen helfen. Dann wird ein LSTM-Netz (Long Short-Term Memory) hochgeladen, genauer ein rekurrentes neuronales Netz (RNN), das Abhängigkeiten im Zeitverlauf lernen kann. Die Besonderheit von RNNs ist, dass Neuronen der gleichen Schicht oder verschiedener Schichten rückgekoppelt sind. Dadurch können zeitlich codierte Informationen aus Daten gewonnen werden.

LSTMs sind geeignet, um Sequenz- und Zeitreihendaten zu klassifizieren. Bei
der Textanalyse berücksichtigt ein LSTM nicht nur einzelne Wörter, sondern auch Satzstrukturen und Wortkombinationen.Der MATLAB-Code für das Netz ist einfach:

layers = [
sequenceInputLayer(inputSize)
    lstmLayer(outputSize,‘OutputMode‘,‘last‘)

fullyConnectedLayer(numClasses)
  softmaxLayer
  classificationLayer ]

Auf einer GPU lässt es sich sehr schnell trainieren: 30 Epochen – also komplette Durchläufe durch die Daten – dauern nur sechs Minuten. Sobald das Modell trainiert ist, kann es für neue Daten verwendet werden. Beispielsweise kann es ermitteln, ob es eine Korrelation zwischen Stimmungswerten und Aktienkursen gibt.

Sprache kompakt darstellen

Im zweiten Beispiel sollen Audiodateien mit gesprochener Sprache in entsprechende Kategorien von Wörtern klassifiziert werden. Auf den ersten Blick sieht dieses Problem völlig anders aus als die Bildklassifikation, aber tatsächlich ist es ihr sehr ähnlich. Ein Spektrogramm ist eine 2D-Visualisierung der Signale in einer 1D-Audiodatei (Bild 1). Es kann als Eingabe für ein neuronales Faltungsnetzwerk (CNN), das aus mehreren Faltungsschichten besteht, verwendet werden, genau wie ein »richtiges« Bild.

Diese Funktion bietet eine einfache Möglichkeit, eine Audiodatei in die entsprechenden Frequenzen im Zeitverlauf zu konvertieren. Gesprochene Sprache verlangt eine besondere Form der Audioverarbeitung, da wichtige Merkmale in bestimmten Frequenzen verortet sind. Damit soll erreicht werden, dass sich das CNN auf diese Orte konzentriert. Hierfür wird der Mel-Frequenz-Cepstrum-Koeffizient verwendet. Er führt zu einer kompakten Darstellung des Frequenzspektrums.

Es werden Trainingsdaten verwendet, die gleichmäßig auf die Kategorien von Wörtern verteilt sind, in die die Daten klassifiziert werden. Um weniger falsch-positive Ergebnisse zu erhalten, wird eine Kategorie für Wörter aufgenommen, die mit den beabsichtigten Kategorien verwechselt werden können. Wenn das beabsichtigte Wort zum Beispiel »an« ist, werden Wörter wie »am«, »Kahn« und »Jan« in die Kategorie »unbekannt« aufgenommen

 

Das Netz muss diese Wörter nicht kennen, sondern nur berücksichtigen, dass es sich um die nicht zu erkennenden Wörter handelt. Dann wird ein CNN definiert. Da das Spektrogramm als Eingabe verwendet wird, kann die Struktur des CNN ähnlich sein wie das für Bilder. Nach dem Training klassifiziert das Modell das eingegebene Bild (Spektrogramm) in die entsprechenden Kategorien (Bild 2). Die Genauigkeit des Validierungssatzes liegt bei etwa 96 Prozent.

Bilder entrauschen

Wavelets und Filter sind gängige Methoden für das Entrauschen von Bildern. In diesem dritten Beispiel wird gezeigt, wie ein vortrainiertes Bildentrauschungs-CNN (Denoising CNN, DnCNN) auf eine Reihe von Bildern angewendet werden kann, die sogenanntes Gaußsches Rauschen enthalten (Bild 3).

Umgangssprachlich nennt man dieses Bildrauschen »verpixelt«.  Zunächst  wird ein Bild mit Gaußschem Rauschen heruntergeladen.
imshow(noisyRGB);

Weil es sich um ein Farbbild handelt und das Netz an Graustufenbildern trainiert wurde, besteht der einzige halbwegs schwierige Teil dieses Prozesses darin, das Bild in drei separate Kanäle zu unterteilen:

Rot (R), Grün (G) und Blau (B).
noisyR = noisyRGB(:,:,1);
noisyG = noisyRGB(:,:,2);
noisyB = noisyRGB(:,:,3);

Das vortrainierte DnCNN-Netz wird geladen.
net = denoisingNetwork(‚dncnn‘);

Um das Rauschen aus den einzelnen Farbkanälen zu entfernen, kann dieses nun verwendet werden.

denoisedR =
denoiseImage(noisyR,net);
denoisedG =
denoiseImage(noisyG,net);
denoisedB =
denoiseImage(noisyB,net);

Bilder: 3

Bilder entrauschen, Bilder 3-5

Bilder entrauschen, Bilder 3-5

Es folgt die Kombination der entrauschten Farbkanäle zum entrauschten RGB-Bild.
denoisedRGB = cat(3,denoisedR,
denoisedG,denoisedB);
imshow(denoisedRGB)
title(‚Entrauschtes Bild‘)

Ein kurzer visueller Vergleich des ursprünglichen (nicht verrauschten) Bilds mit dem entrauschten Bild zeigt, dass das Ergebnis durchaus in Ordnung ist (Bild 4).

Links das ursprüngliche (nicht verrauschte) und rechts das entrauschte Bild.
Vergrößerung einiger Details:

rect = [120 440  130  130];
cropped_orig = imcrop(RGB,rect);
cropped_denoise = imcrop(denoisedRGB,rect);
imshowpair(cropped_orig,cropped_denoise,‘montage‘);

Die vergrößerte Ansicht in Bild 5 zeigt, dass das Entrauschen einige Seiteneffekte erzeugt hat – das ursprüngliche (nicht verrauschte) Bild ist sichtlich schärfer, insbesondere die Dachfläche und das Gras. Dieses Ergebnis kann so bereits akzeptabel sein oder das Bild muss je nach Verwendungszweck weiterbearbeitet werden.

Das DnCNN für das Entrauschen von Bildern kann nur die Art von Rauschen erkennen, für die es trainiert wurde – in diesem Beispiel das Gaußsche Rauschen. Um mehr Flexibilität zu erhalten, kann die MATLAB und die Deep Learning Toolbox verwendet werden, um das eigene Netz aus vordefinierten Schichten zu trainieren oder um ein vollständig benutzer­definiertes neuronales Entrauschungsnetz zu trainieren.

 

Johanna Pingel
 _______________________________________________________________________

ist Produktmarketing-Managerin bei MathWorks. Ihr Fachgebiet ist die Bildverarbeitung
und Computer Vision. Sie hat einen Bachelor-Abschluss in Musikdarbietung von der Carnegie Mellon University und einen Master-Abschluss in Archi­tekturwissenschaften und Akustik vom Rensselaer Polytechnic Institute.