Neuronale Netze

 

Was ist ein neuronales Netz?

Drei Dinge, die Sie wissen sollten

Ein neuronales Netz ist ein Rechenmodell, das in Schichten aufgebaut ist. Diese Struktur ähnelt der Netzstruktur von Neuronen im Gehirn. Sie umfasst Schichten miteinander verbundener Knotenpunkte. Ein neuronales Netz kann aus Daten lernen. Daher kann es so trainiert werden, dass es Muster erkennt, Daten klassifiziert und zukünftige Ereignisse vorhersagt.

Ein neuronales Netz schlüsselt Ihre Eingabe in Abstraktionsebenen auf. Es kann anhand zahlreicher Beispiele trainiert werden, damit es beispielsweise Muster in gesprochener Sprache oder in Bildern genauso erkennt wie das menschliche Gehirn. Sein Verhalten wird durch die Art und Weise, in der die einzelnen Elemente verbunden sind, und durch die Stärke, also die Gewichtung, der einzelnen Verbindungen definiert. Diese Gewichtungen werden während des Trainings automatisch gemäß einer angegebenen Lernregel angepasst, bis das neuronale Netz die gewünschte Aufgabe korrekt ausführt.

Wichtigkeit neuronaler Netze

Neuronale Netze sind vor allem gut für die Mustererkennung geeignet, mit der Objekte oder Signale in gesprochener Sprache, Kameradaten und Steuerungssystemen identifiziert und klassifiziert werden. Außerdem können sie für die Prognose und Modellierung von Zeitreihen verwendet werden.

Einige Beispiele für den Einsatz neuronaler Netze:

  • Elektrizitätswerke können die Last ihrer Stromnetze präzise vorhersagen, um ihre Zuverlässigkeit sicherzustellen und die Effizienz ihrer Stromerzeugungsanlagen zu optimieren.
  • Geldautomaten können Verrechnungsschecks zuverlässig annehmen, indem sie die Kontonummer und den Betrag auf dem Scheck lesen.
  • Pathologen nutzen Anwendungen für die Krebserkennung, um Tumore abhängig von der Einheitlichkeit der Zellengröße, der Klumpendicke, der Mitose und anderer Faktoren als gutartig oder bösartig zu klassifizieren.

Deep Learning

Neuronale Netze, die auf zwei oder drei Schichten miteinander verbundener Neuronen basieren, werden als flache neuronale Netze bezeichnet. Deep-Learning-Netze können viele Schichten umfassen, sogar Hunderte. Beides sind Machine-Learning-Techniken, die direkt aus Eingabedaten lernen.

Deep learning erhält sehr viel Aufmerksamkeit, und das aus gutem Grund. Hiermit können Ergebnisse erzielt werden, die zuvor unmöglich waren.

Deep Learning ist vor allem für komplexe Identifikationsanwendungen geeignet, wie die Gesichtserkennung, die Übersetzung von Texten und die Spracherkennung. Außerdem ist es eine wichtige Technologie für Fahrerassistenzsysteme und entsprechende Aufgaben wie die Klassifikation von Fahrspuren und die Erkennung von Verkehrsschildern.

Wie funktionieren neuronale Netze?

In einem neuronalen Netz sind mehrere Verarbeitungschichten kombiniert. Dabei werden einfache Elemente verwendet, die parallel arbeiten. Vorbild sind Nervensysteme in der Biologie. Ein neuronales Netz besteht aus einer Eingabeschicht, einer oder mehreren verborgenen Schichten und einer Ausgabeschicht. Die Schichten sind über Knotenpunkte, oder Neuronen, miteinander verbunden. Jede Schicht nutzt die Ausgabe der vorigen Schicht als ihre Eingabe.

Typische Architektur eines neuronales Netzes.

Mit neuronalen Netzen verwendete Techniken

Verbreitete Machine-Learning-Techniken für den Entwurf von Anwendungen mit neuronalen Netzen sind überwachtes und unüberwachtes Lernen, Klassifikation, Regression, Mustererkennung und Clustering.

Überwachtes Lernen

Bei überwachten neuronalen Netzen handelt es sich um Netze, die entsprechend trainiert wurden, um die gewünschten Ausgaben in Reaktion auf Sample-Eingaben zu erhalten. Diese Netze eignen sich besonders gut für das Modellieren und Steuern dynamischer Systeme, das Klassifizieren verrauschter Daten und die Vorhersage zukünftiger Ereignisse. Die Deep Learning Toolbox™ umfasst vier Arten überwachter Netze: Feed-Forward, radiale Basisfunktion, dynamisch und  lernende Vektorquantisierung.

Klassifikation

Die Klassifikation ist eine Art von überwachtem Machine-Learning, bei dem ein Algorithmus anhand gekennzeichneten/qualifizierten Beispieldaten „lernt“, neue Beobachtungen zu klassifizieren.

Regression

Regressionsmodelle beschreiben die Beziehung zwischen einer Antwort (Ausgabevariablen) und einem oder mehreren Prädiktoren (Eingabevariablen).

Mustererkennung

Die Mustererkennung ist eine wichtige Komponente von Anwendungen neuronaler Netze in den Bereichen Computer Vision (maschinelles Sehen), Radardatenverarbeitung, Spracherkennung und Textklassifikation. Sie funktioniert durch Zuordnung der Eingabedaten zu Objekten oder Klassen anhand ihrer Hauptmerkmale. Diese Klassifikation kann überwacht oder unüberwacht erfolgen.

Beispielsweise werden bei Computer Vision Techniken der überwachten Mustererkennung für die optische Zeichenerkennung (OCR), Gesichtserfassung, Gesichtserkennung, Objekterkennung und Objektklassifikation verwendet. In der Bildverarbeitung und im Maschinellen Sehen werden Techniken der unüberwachten Mustererkennung zur Objekterkennung und Bildsegmentierung verwendet.

Unüberwachtes Lernen

Unüberwachte neuronale Netze werden trainiert, indem dafür gesorgt wird, dass sie sich ständig den neuen Eingaben anpassen. Sie werden verwendet, um Rückschlüsse aus Datenmengen zu ziehen, die aus Eingabedaten ohne klassifizierte Ausgänge bestehen. Sie können sie verwenden, um natürliche Verteilungen, Kategorien und Kategoriebeziehungen innerhalb von Daten zu entdecken.

Die Deep Learning Toolbox umfasst zwei Arten unüberwachter Netze: Competitive-Layers und selbstorganisierende Karten.

Clustering

Das Clustering ist ein Ansatz für das unüberwachte Lernen, mit dem neuronale Netze für explorative Datenanalysen verwendet werden können, um verborgene Muster oder Gruppierungen in Daten zu finden. Bei diesem Prozess werden Daten nach Ähnlichkeit gruppiert. Anwendungen für die Clusteranalyse sind beispielsweise Gensequenzanalyse, Marktforschung und Objekterkennung.

Developing Shallow Neural Networks with MATLAB

Neben Tools und Funktionen für die Verwaltung großer Datenmengen bietet MATLAB® spezialisierte Toolboxes für die Arbeit mit Machine Learning, neuronalen Netzen, Deep Learning, Computer Vision und autonomem Fahren.

Mit nur wenigen Codezeilen können Sie mit MATLAB neuronale Netze entwickeln, ohne ein Experte sein zu müssen. Machen Sie schnell die ersten Schritte, erstellen und visualisieren Sie Modelle und stellen Sie Modelle auf Servern und Embedded-Geräten bereit.

Mit MATLAB können Sie Ergebnisse in Ihre vorhandenen Anwendungen integrieren. MATLAB automatisiert die Bereitstellung Ihrer Modelle mit neuronalen Netzen auf Unternehmenssystemen, in Clustern, in Clouds und auf Embedded-Geräten.

Typischer Workflow für den Entwurf neuronaler Netze

Jede Anwendung neuronaler Netze ist einzigartig. Bei der Entwicklung des Netzes werden jedoch im Allgemeinen die folgenden Schritte durchgeführt:

  1. Datenzugriff und -vorbereitung
  2. Erstellung des neuronalen Netzes
  3. Konfigurieren der Ein- und Ausgaben des Netzes
  4. Optimieren der Netzparameter (der Gewichtungen und Bias-Werte), um die Leistung zu optimieren
  5. Trainieren des Netzes
  6. Validieren der Ergebnisse des Netzes
  7. Integrieren des Netzes in ein Produktionssystem

Klassifikation und Clustering flacher Netze

MATLAB und die Deep Learning Toolbox bieten Befehlszeilenfunktionen und Apps für die Erstellung, das Training und die Simulation flacher neuronaler Netze. Die Apps erleichtern das Entwickeln neuronaler Netze für Aufgaben wie die Klassifikation, die Regression (einschließlich Zeitreihen-Regression) und das Clustering. Nach Erstellung der Netze mithilfe dieser Werkzeuge können Sie dann automatisch den MATLAB-Code generieren, um Ihre Arbeitsschritte zu erfassen und Aufgaben zu automatisieren.

Vorverarbeitung, Nachverarbeitung und Verbessern Ihres Netzes

Durch die Vorverarbeitung der Netzeingaben und Ziele erhöht sich die Effizienz des Trainings eines flachen neuronalen Netzes. Durch die Nachverarbeitung wird eine detaillierte Analyse der Netzleistung möglich. MATLAB und Simulink® bieten Tools, mit denen Sie:

  • die Dimensionen von Eingabevektoren mittels Hauptkomponentenanalyse verringern können
  • eine Regressionsanalyse zwischen Netzantwort und entsprechenden Zielen durchführen können
  • Eingaben und Ziele skalieren können, sodass sie im Bereich [-1,1] liegen
  • Mittelwert- und Standardabweichung des Trainingsdatensatzes normalisieren können
  • beim Erstellen Ihrer Netze automatische Datenvorverarbeitung und Datenaufteilung verwenden können

Durch Verbesserung der Fähigkeit zur Verallgemeinerung des Netzes wird eine Überanpassung vermieden, die beim Entwerfen neuronaler Netze oft ein Problem darstellt. Die Überanpassung wird dadurch verursacht, dass ein Netz sich zwar das Trainingsset gut eingeprägt hat, aber noch nicht gelernt hat, neue Eingaben zu verallgemeinern. Bei der Überanpassung handelt es sich anfangs nur um einen verhältnismäßig kleinen Fehler im Trainingsset. Dieser Fehler kann jedoch erheblich größer werden, wenn das Netz neue Daten verarbeiten muss.

Mit den folgenden beiden Lösungen können Sie die Verallgemeinerung verbessern:

  • Durch Regularisierung wird die Rechenleistungsfunktion des Netzes (d. h. der Messwert des Fehlers, der durch den Trainingsvorgang minimiert werden soll) modifiziert. Durch Einbeziehung der Größen von Gewichtungen und Bias-Werten wird mittels Regularisierung ein Netz erstellt, das mit den Trainingsdaten sehr gut funktioniert und auch mit neuen Daten ein glatteres Verhalten zeigt.
  • Vorzeitiges Anhalten arbeitet mit zwei verschiedenen Datensätzen, nämlich dem Trainingssatz, um die Gewichtungen und Bias-Werte zu aktualisieren, und dem Validierungssatz, um das Training anzuhalten, sobald das Netz damit beginnt, die Daten übermäßig anzupassen.

Darstellungen der Nachverarbeitung für die Analyse der Netzleistung, einschließlich Leistung der Validierung des mittleren Fehlerquadrats für aufeinanderfolgende Trainingsepochen (oben links), Fehlerhistogramm (oben rechts) und Konfusionsmatrizen (unten) für die Trainings-, Validierungs- und Testphase.

Codegenerierung und -bereitstellung

Mithilfe der Deep Learning Toolbox mit MATLAB Coder™, GPU Coder™ und MATLAB Compiler™ können Sie trainierte Netze auf Embedded-Systemen bereitstellen oder sie in zahlreiche unterschiedliche Produktionsumgebungen integrieren. Sie können MATLAB Coder verwenden, um C- und C++-Code für Ihr trainiertes Netz zu generieren. So können Sie ein trainiertes Netz auf PC-Hardware simulieren und das Netz dann auf Embedded-Systemen bereitstellen. Sie können MATLAB Compiler und MATLAB Compiler SDK™ verwenden, um trainierte Netze von MATLAB-Programmen aus als C/C++ Shared Libraries, Microsoft® .NET-Assemblies, Java®-Klassen und Python® -Pakete bereitzustellen. Sie können auch ein Netzwerk-Modell in der bereitgestellten Anwendung oder Komponente trainieren.

Simulink-Unterstützung

Die Deep Learning Toolbox enthält einen Satz von Blöcken zur Erstellung flacher neuronaler Netze in Simulink. Alle Blöcke sind mit Simulink Coder™ kompatibel. Diese Blöcke sind in vier Bibliotheken unterteilt:

  • Transferfunktionsblöcke, die anhand eines Netzeingabevektors einen Ausgabevektor erzeugen
  • Netzeingabefunktionsblöcke, die anhand einer beliebigen Anzahl von gewichteten Eingabevektoren, Ausgabevektoren von Gewichtungsschichtenund Bias-Vektoren einen Netzeingabevektor liefern
  • Gewichtungsfunktionsblöcke, die den Gewichtungsvektor eines Neurons auf einen Eingabevektor (oder einen Ausgabevektor einer Schicht) anwenden, um einen gewichteten Eingabewert für ein Neuron zu erhalten
  • Datenvorverarbeitungsblöcke, die Eingabe- und Ausgabedaten auf die Bereiche abbilden, die sich für die direkte Verarbeitung durch das neuronale Netz am besten eignen.

Sie können aber auch Ihre Netze in der MATLAB-Umgebung erstellen und trainieren und automatisch Netzsimulationsblöcke zur Verwendung mit Simulink erzeugen. Bei dieser Methode können Sie außerdem Ihre Netze grafisch darstellen.

Anwendungen mit neuronalen Netzen

Die Universität Lund hat ein prädiktives Modell entwickelt und Tausende von Risikoprofil-Kombinationen simuliert, um die langfristigen Überlebensraten von Empfängern zu verbessern.
Verbesserung von Krebsdiagnosen mit einem neuronalen Netz, um Krebs anhand Massenspektrometerdaten von Proteinprofilen zu erkennen.
Trainieren eines neuronalen Netzes für die Klassifikation von Bildern von Ziffern.