Neurale Netzwerke

menu icon

Neurale Netzwerke

Neuronale Netze spiegeln das Verhalten des menschlichen Gehirns wider und ermöglichen es Computerprogrammen, Muster zu erkennen und allgemeine Probleme in den Bereichen KI, maschinelles Lernen und Deep Learning zu lösen.

Was sind neuronale Netze?

Neuronale Netze, die auch als künstliche neuronale Netze (Artificial Neural Networks, ANN) oder simulierte neuronale Netze (Simulated Neural Networks, SNN) bezeichnet werden, sind ein Teilbereich des maschinellen Lernens und bilden das Herzstück von Deep-Learning-Algorithmen. Ihr Name und ihre Struktur sind vom menschlichen Gehirn inspiriert und ahmen die Art und Weise nach, in der biologische Neuronen einander Signale übermitteln.

Künstliche neuronale Netze bestehen aus einer Knotenschicht, die eine Eingabeschicht, eine oder mehrere verborgene Schichten und eine Ausgabeschicht enthält. Jeder Knoten, bzw. jedes künstliche Neuron, ist mit einem anderen verbunden und hat ein zugehöriges Gewicht und einen Schwellenwert. Wenn die Ausgabe eines einzelnen Knotens über dem festgelegten Schwellenwert liegt, wird dieser Knoten aktiviert und sendet Daten an die nächste Schicht des Netzes. Andernfalls werden keine Daten an die nächste Schicht des Netzes weitergegeben.

Visuelles Diagramm einer Eingabeschicht, versteckter Schichten und einer Ausgabeschicht eines neuronalen Feedforward-Netzes

Neuronale Netze sind auf Trainingsdaten angewiesen, um hinzu zu lernen und ihre Genauigkeit mit der Zeit zu verbessern. Sind diese Lernalgorithmen jedoch erst einmal auf Genauigkeit getrimmt, sind sie leistungsstarke Tools in der Computerwissenschaft und der künstlichen Intelligenz, mit denen wir Daten mit hoher Geschwindigkeit klassifizieren und clustern können. Aufgaben der Sprach- oder Bilderkennung nehmen mit diesen Algorithmen nur noch Minuten in Anspruch, während eine manuelle Identifizierung durch menschliche Experten Stunden dauert. Eines der bekanntesten neuronalen Netze ist der Suchalgorithmus von Google.

Wie funktionieren neuronale Netze?

Stellen Sie sich jeden einzelnen Knoten als ein eigenes lineares Regressionsmodell vor, das aus Eingabedaten, Gewichten, einer Verzerrung (oder Schwellenwert) und einer Ausgabe besteht. Die Formel würde etwa so aussehen:

Mathematische Formel zur Bestimmung der Summe

∑wixi + Verzerrung = w1x1 + w2x2 + w3x3 + Verzerrung

Mathematische Formel zur Bestimmung der Ausgabe

Ausgabe = f(x) = 1, wenn ∑w1x1 + b> = 0; 0, wenn ∑w1x1 + b < 0

Sobald eine Eingabeschicht festgelegt ist, werden die Gewichte zugewiesen. Mithilfe dieser Gewichte lässt sich die Bedeutung einer bestimmten Variablen bestimmen, wobei größere Variablen im Vergleich zu anderen Eingaben einen größeren Beitrag zur Ausgabe leisten. Alle Eingaben werden dann mit ihren jeweiligen Gewichten multipliziert und anschließend summiert. Anschließend wird die Ausgabe durch eine Aktivierungsfunktion geleitet, die die Ausgabe bestimmt. Wenn diese Ausgabe einen bestimmten Schwellenwert überschreitet, wird der Knoten „abgefeuert“ (oder aktiviert) und die Daten werden an die nächste Schicht im Netz weitergeleitet. Dies führt dazu, dass die Ausgabe eines Knotens in die Eingabe des nächsten Knotens einfließt. Dieser Prozess der Weitergabe von Daten von einer Schicht zur nächsten definiert dieses neuronale Netz als Feedforward-Netz.

Schauen wir uns an, wie ein einzelner Knoten mit binären Werten aussehen könnte. Wir können dieses Konzept auf ein konkreteres Beispiel anwenden, z. B. auf die Frage, ob man surfen gehen sollte (Ja: 1, Nein: 0). Die Entscheidung, zu gehen oder nicht zu gehen, ist unser vorhergesagtes Ergebnis, oder y-Dach. Nehmen wir an, dass es drei Faktoren gibt, die Ihre Entscheidungsfindung beeinflussen:

  1. Sind die Wellen günstig? (Ja: 1, Nein: 0)
  2. Ist genügend Platz vorhanden oder sind zu viele Surfer vor Ort? (Ja: 1, Nein: 0)
  3. Gab es in letzter Zeit einen Haiangriff? (Ja: 0, Nein: 1)

Gehen wir also von folgenden Annahmen aus, die uns die folgenden Eingaben liefern:

  • X1 = 1, da die Wellen eine ordentliche Größe haben
  • X2 = 0, da nicht zu viele Surfer vor Ort sind
  • X3 = 1, da es in letzter Zeit keinen Haiangriff gegeben hat

Nun müssen wir einige Gewichte zuweisen, um die Wichtigkeit zu bestimmen. Größere Gewichte bedeuten, dass bestimmte Variablen für die Entscheidung oder das Ergebnis von größerer Bedeutung sind.

  • W1 = 5, da große Wellen nicht oft vorkommen
  • W2 = 2, da normalerweise viele Surfer am Strand sind
  • W3 = 4, da Sie Angst vor Haien haben

Schließlich nehmen wir auch einen Schwellenwert von 3 an, was einem Verzerrungswert von -3 entsprechen würde. Mit all den verschiedenen Eingaben können wir beginnen, Werte in die Formel einzusetzen, um die gewünschte Ausgabe zu erhalten.

Y-Dach = (1*5) + (0*2) + (1*4) – 3 = 6

Wenn wir die Aktivierungsfunktion vom Anfang dieses Abschnitts verwenden, können wir feststellen, dass die Ausgabe dieses Knotens 1 sein würde, da 6 größer als 0 ist. In diesem Fall würden Sie surfen gehen; aber wenn wir die Gewichtung oder den Schwellenwert anpassen, können wir mit dem Modell andere Ergebnisse erzielen. Wenn wir eine Entscheidung beobachten, wie im obigen Beispiel, können wir sehen, wie ein neuronales Netz immer komplexere Entscheidungen treffen kann – abhängig von der Ausgabe der vorherigen Entscheidungen oder Schichten.

Im obigen Beispiel haben wir Perzeptronen verwendet, um einige der mathematischen Zusammenhänge zu veranschaulichen, aber neuronale Netze nutzen sigmoide Neuronen, die sich dadurch auszeichnen, dass sie Werte zwischen 0 und 1 haben. Da sich neuronale Netze ähnlich wie Entscheidungsbäume verhalten, indem sie Daten von einem Knoten zu einem anderen kaskadieren, werden die Auswirkungen von x-Werten zwischen 0 und 1 auf die Ausgabe eines beliebigen Knotens und damit auf die Ausgabe des neuronalen Netzes reduziert.

Wenn wir anfangen, über praktischere Anwendungsfälle für neuronale Netze nachzudenken, wie Bilderkennung oder Klassifizierung, werden wir überwachtes Lernen oder markierte Datensätze nutzen, um den Algorithmus zu trainieren. Während wir das Modell trainieren, wollen wir seine Genauigkeit anhand einer Kostenfunktion (oder Verlustfunktion) bewerten. Dies wird allgemein auch als mittlerer quadratischer Fehler (Mean Squared Error, MSE) bezeichnet. In der folgenden Gleichung

  • steht i für den Index der Stichprobe,
  • y-Dach ist das vorhergesagte Ergebnis,
  • y ist der tatsächliche Wert, und
  • m ist die Anzahl der Stichproben.
Mathematische Formel zur Bestimmung der Kostenfunktion

Kostenfunktion = 𝑀𝑆𝐸 =1/2𝑚 ∑129_(𝑖 =1)^𝑚▒(𝑦 ̂^((𝑖) )−𝑦^((𝑖) ) )^2

Letztendlich besteht das Ziel darin, unsere Kostenfunktion zu verkleinern, um die Korrektheit der Anpassung für jede beliebige Beobachtung zu gewährleisten. Während das Modell seine Gewichte und Verzerrungen anpasst, verwendet es die Kostenfunktion und bestärkendes Lernen, um den Konvergenzpunkt oder das lokale Minimum zu erreichen. Der Prozess, bei dem der Algorithmus seine Gewichtung anpasst, erfolgt durch Gradientenabstieg, sodass das Modell die Richtung bestimmen kann, die es einschlagen muss, um Fehler zu reduzieren (oder die Kostenfunktion zu minimieren). Mit jedem Trainingsbeispiel passen sich die Parameter des Modells an und konvergieren allmählich zum Minimum.

Liniendiagramm zur Darstellung des Konvergenzpunkts

In diesem Artikel von IBM Developer werden die quantitativen Konzepte von neuronalen Netzen näher erläutert.

Die meisten tiefen neuronalen Netze sind Feedforward-Netze, d. h. sie fließen nur in eine Richtung – von der Eingabe zur Ausgabe. Sie können Ihr Modell jedoch auch durch Rückwärtspropagierung trainieren, d. h. in umgekehrter Richtung – von der Ausgabe zur Eingabe. Die Rückwärtspropagierung ermöglicht es uns, den mit jedem Neuron verbundenen Fehler zu berechnen und zuzuordnen, sodass wir die Parameter des Modells bzw. der Modelle entsprechend anpassen und ausrichten können.

Typen neuronaler Netze

Neuronale Netze lassen sich in verschiedene Typen einteilen, die für unterschiedliche Zwecke verwendet werden. Dies ist zwar keine umfassende Liste von Typen, aber die folgenden sind repräsentativ für die gängigsten Typen neuronaler Netze, die Sie in den üblichen Anwendungsfällen finden:

Das Perzeptron ist das älteste neuronale Netz und wurde 1958 von Frank Rosenblatt entwickelt. Es besitzt ein einziges Neuron und ist die einfachste Form eines neuronalen Netzes:

Einfaches Diagramm eines Perzeptrons mit Linien und einem blauen Kreis

In diesem Artikel konzentrieren wir uns hauptsächlich auf vorwärtsgerichtete neuronale Netze oder mehrschichtige Perzeptronen (Multi-Layer Perceptrons, MLPs). Sie bestehen aus einer Eingabeschicht, einer oder mehreren verborgenen Schichten und einer Ausgabeschicht. Diese neuronalen Netze werden zwar auch als MLPs bezeichnet, aber es ist wichtig zu wissen, dass sie eigentlich aus Sigmoid-Neuronen und nicht aus Perzeptronen bestehen, da die meisten realen Probleme nicht linear sind. Normalerweise werden Daten in diese Modelle eingespeist, um sie zu trainieren, und sie bilden die Grundlage für die Bildverarbeitung, die Verarbeitung natürlicher Sprache und andere neuronale Netze.

Convolutional Neural Networks (CNNs) sind ähnlich wie Feedforward-Netze, werden aber in der Regel für Bilderkennung, Mustererkennung und/oder Bildverarbeitung eingesetzt. Diese Netze nutzen die Prinzipien der linearen Algebra, insbesondere die Matrixmultiplikation, um Muster in einem Bild zu erkennen.

Rekurrente neuronale Netze (RNNs) sind durch ihre Rückkopplungsschleifen gekennzeichnet. Diese Lernalgorithmen werden in erster Linie bei der Verwendung von Zeitreihendaten eingesetzt, um Vorhersagen über künftige Ergebnisse zu treffen, z. B. bei Börsen- oder Umsatzprognosen.

Neuronale Netze vs. Deep Learning

Deep Learning und neuronale Netze werden in Gesprächen oft synonym verwendet, was verwirrend sein kann. Daher ist es erwähnenswert, dass sich das „deep“ (tief) in Deep Learning lediglich auf die Tiefe der Schichten in einem neuronalen Netz bezieht. Ein neuronales Netz, das aus mehr als drei Schichten besteht – einschließlich der Eingaben und der Ausgabe – kann als Deep Learning-Algorithmus betrachtet werden. Ein neuronales Netz, das nur zwei oder drei Schichten hat, ist nur ein grundlegendes neuronales Netz.

Wenn Sie mehr über die Unterschiede zwischen neuronalen Netzwerken und anderen Formen der künstlichen Intelligenz, wie maschinelles Lernen, erfahren möchten, lesen Sie bitte den Blogbeitrag „KI vs. Maschinelles Lernen vs. Deep Learning vs. Neuronale Netze: Was ist der Unterschied?

Geschichte der neuronalen Netze

Die Geschichte der neuronalen Netze reicht weiter zurück, als die meisten Menschen denken. Die Idee eine „denkende Maschine“ zu erschaffen, hat ihre Ursprünge im antiken Griechenland. Wir werden uns jedoch auf die wichtigsten Ereignisse konzentrieren, die zur Weckung des Interesses für neuronale Netze geführt haben, das im Laufe der Jahre immer wieder eine Zeit lang sehr groß war und danach wieder abgeflaut ist:

1943: Warren S. McCulloch und Walter Pitts veröffentlichten „A logical calculus of the ideas immanent in nervous activity (Ein logisches Kalkül der der Nerventätigkeit innewohnenden Ideen) (PDF, 1 MB) (Link befindet sich außerhalb von IBM)“. Diese Forschungsarbeit versuchte zu verstehen, wie das menschliche Gehirn komplexe Muster durch miteinander verbundene Gehirnzellen, oder Neuronen, erzeugen kann. Eine der wichtigsten Ideen, die aus dieser Forschungsarbeit hervorging, war der Vergleich von Neuronen mit einem binären Schwellenwert mit Boolescher Logik (d. h. 0/1 oder „wahr“/„falsch“-Aussagen).

1958: Frank Rosenblatt wird die Entwicklung des Perzeptrons zugeschrieben, dokumentiert in seiner Forschungsarbeit „The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain (Das Perzeptron: Ein probabilistisches Modell für die Informationsspeicherung und -organisation im Gehirn)“ (PDF, 1,6 MB) (Link befindet sich außerhalb von IBM). Er führt die Arbeit von McCulloch und Pitt noch einen Schritt weiter, indem er Gewichte in die Gleichung einbaut. Mithilfe eines IBM 704 konnte Rosenblatt einen Computer dazu bringen, zu lernen, wie er zwischen links und rechts markierten Karten unterscheiden kann.

1974: Während zahlreiche Forscher am Konzept der Rückwärtspropagierung mitgewirkt haben, war Paul Werbos die erste Person in den USA, die ihre Anwendung in neuronalen Netzen in seiner Doktorarbeit (PDF, 8,1 MB) festhielt (Link befindet sich außerhalb von IBM).

1989: Yann LeCun veröffentlichte einen Bericht (PDF; 5,7 MB) (Link befindet sich außerhalb von IBM), der veranschaulicht, wie die Verwendung von Beschränkungen in der Rückwärtspropagierung und ihre Integration in die Architektur neuronaler Netze zum Trainieren von Algorithmen verwendet werden kann. Im Rahmen dieser Forschung wurde ein neuronales Netz erfolgreich eingesetzt, um handgeschriebene Postleitzahlen des U.S. Postal Service zu erkennen.

Neuronale Netze und IBM Cloud

IBM ist seit Jahrzehnten ein Pionier in der Entwicklung von KI-Technologien und neuronalen Netzen, insbesondere durch die Entwicklung und Weiterentwicklung von IBM Watson. Watson ist inzwischen eine vertrauenswürdige Lösung für Unternehmen, die fortschrittliche Techniken zur Verarbeitung natürlicher Sprache und zum Deep Learning auf ihre Systeme anwenden möchten und dabei einen bewährten mehrstufigen Ansatz für die Einführung und Implementierung von KI verfolgen.

Watson nutzt das Apache Unstructured Information Management Architecture (UIMA)-Framework und IBMs DeepQA-Software, um leistungsstarke Deep-Learning-Funktionen für Anwendungen verfügbar zu machen. Mithilfe von Tools wie IBM Watson Studio kann Ihr Unternehmen Open-Source-KI-Projekte nahtlos in die Produktion überführen und Modelle in jeder beliebigen Cloud implementieren und ausführen.

Weitere Informationen über den Einstieg in die Deep Learning-Technologie finden Sie in den Ressourcen über IBM Watson Studio und den Deep Learning-Service.

Melden Sie sich für eine IBMid an und erstellen Sie Ihr IBM Cloud-Konto.