Was sind neuronale Netze?
Neuronale Netze, auch bekannt als künstliche neuronale Netze (ANNs) oder simulierte neuronale Netze (SNNs), sind eine Teilmenge 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, wie biologische Neuronen einander signalisieren.
Künstliche neuronale Netzwerke (ANNs) bestehen aus einer Knotenschicht, die eine Eingabeschicht, eine oder mehrere versteckte Schichten und eine Ausgabeschicht enthält. Jeder Knoten, oder künstliches Neuron, ist mit einem anderen verbunden und hat eine zugehörige Gewichtung und einen Schwellenwert. Wenn die Ausgabe eines einzelnen Knotens über dem angegebenen Schwellenwert liegt, wird dieser Knoten aktiviert und sendet Daten an die nächste Schicht des Netzwerks. Andernfalls werden keine Daten an die nächste Schicht des Netzes weitergeleitet.
Neuronale Netze sind auf Trainingsdaten angewiesen, um zu lernen und ihre Genauigkeit mit der Zeit zu verbessern. Sobald diese Lernalgorithmen jedoch auf Genauigkeit getrimmt sind, sind sie mächtige Werkzeuge in der Informatik und der künstlichen Intelligenz, die es uns ermöglichen, Daten mit hoher Geschwindigkeit zu klassifizieren und zu clustern. Aufgaben in der Sprach- oder Bilderkennung können im Vergleich zur manuellen Identifizierung durch menschliche Experten Minuten statt Stunden dauern. Eines der bekanntesten neuronalen Netzwerke ist der Suchalgorithmus von Google.
Wie funktionieren neuronale Netzwerke?
Stellen Sie sich jeden einzelnen Knoten als ein eigenes lineares Regressionsmodell vor, das aus Eingabedaten, Gewichten, einem Bias (oder Schwellenwert) und einer Ausgabe besteht. Die Formel würde etwa so aussehen:
Wenn eine Eingangsschicht bestimmt ist, werden Gewichte zugewiesen. Diese Gewichte helfen dabei, die Wichtigkeit einer bestimmten Variablen zu bestimmen, wobei größere Variablen im Vergleich zu anderen Eingaben einen größeren Beitrag zur Ausgabe leisten. Alle Eingaben werden dann mit ihren jeweiligen Gewichtungen multipliziert und anschließend summiert. Danach wird die Ausgabe durch eine Aktivierungsfunktion geleitet, die die Ausgabe bestimmt. Wenn die Ausgabe einen bestimmten Schwellenwert überschreitet, wird der Knoten „gefeuert“ (oder aktiviert) und die Daten werden an die nächste Schicht im Netzwerk weitergeleitet. Dies führt dazu, dass die Ausgabe eines Knotens zur Eingabe des nächsten Knotens wird. Dieser Prozess der Weitergabe von Daten von einer Schicht zur nächsten Schicht definiert dieses neuronale Netz als Feedforward-Netz.
Lassen Sie uns aufschlüsseln, wie ein einzelner Knoten mit binären Werten aussehen könnte. Wir können dieses Konzept auf ein konkreteres Beispiel anwenden, z. B. ob man surfen gehen sollte (Ja: 1, Nein: 0). Die Entscheidung zu gehen oder nicht zu gehen ist unser vorhergesagtes Ergebnis, oder y-hat. Nehmen wir an, dass es drei Faktoren gibt, die Ihre Entscheidung beeinflussen:
- Sind die Wellen gut? (Ja: 1, Nein: 0)
- Ist das Line-Up leer? (Ja: 1, Nein: 0)
- Hat es in letzter Zeit eine Haiattacke gegeben? (Ja: 0, Nein: 1)
Dann nehmen wir Folgendes an, was uns die folgenden Eingaben beschert:
- X1 = 1, da die Wellen pumpen
- X2 = 0, da die Menschenmassen draußen sind
- X3 = 1, da es in letzter Zeit keine Haiattacke gab
Nun müssen wir einige Gewichtungen zuweisen, um die Wichtigkeit zu bestimmen. Größere Gewichtungen bedeuten, dass bestimmte Variablen für die Entscheidung oder das Ergebnis von größerer Bedeutung sind.
- W1 = 5, da großer Wellengang nicht oft vorkommt
- W2 = 2, da Sie an Menschenmassen gewöhnt 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 nun Werte in die Formel einsetzen, um die gewünschte Ausgabe zu erhalten.
Y-Hut = (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 Gewichte oder den Schwellenwert anpassen, können wir verschiedene Ergebnisse des Modells erzielen. Wenn wir eine Entscheidung beobachten, wie im obigen Beispiel, können wir sehen, wie ein neuronales Netzwerk immer komplexere Entscheidungen treffen könnte, abhängig von der Ausgabe vorheriger Entscheidungen oder Schichten.
Im obigen Beispiel haben wir Perceptrons verwendet, um einige der Mathematik zu veranschaulichen, die hier im Spiel ist, aber neuronale Netzwerke 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, wird durch die Verwendung von x-Werten zwischen 0 und 1 die Auswirkung einer bestimmten Änderung einer einzelnen Variable auf die Ausgabe eines bestimmten Knotens und damit auf die Ausgabe des neuronalen Netzes reduziert.
Wenn wir anfangen, über praktischere Anwendungsfälle für neuronale Netze nachzudenken, wie z. B. Bilderkennung oder Klassifizierung, werden wir überwachtes Lernen oder gelabelte Datensätze verwenden, um den Algorithmus zu trainieren. Während wir das Modell trainieren, wollen wir seine Genauigkeit mithilfe einer Kosten- (oder Verlust-) Funktion bewerten. Dies wird auch als mittlerer quadratischer Fehler (MSE) bezeichnet. In der folgenden Gleichung stellt
- i den Index der Probe dar,
- y-hat das vorhergesagte Ergebnis,
- y ist der tatsächliche Wert und
- m ist die Anzahl der Proben.
Endlich ist das Ziel, unsere Kostenfunktion zu minimieren, um die Korrektheit der Anpassung für jede gegebene Beobachtung sicherzustellen. Während das Modell seine Gewichte und den Bias anpasst, verwendet es die Kostenfunktion und das Reinforcement Learning, um den Punkt der Konvergenz oder das lokale Minimum zu erreichen. Der Prozess, in dem der Algorithmus seine Gewichte anpasst, erfolgt durch Gradientenabstieg, wodurch 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, um allmählich auf das Minimum zu konvergieren.
Siehe diesen IBM Developer-Artikel für eine tiefere Erklärung der quantitativen Konzepte, die bei neuronalen Netzwerken eine Rolle spielen.
Die meisten tiefen neuronalen Netze sind feedforward, d. h. sie fließen nur in eine Richtung, von der Eingabe zur Ausgabe. Sie können Ihr Modell jedoch auch durch Backpropagation trainieren, d. h. in die entgegengesetzte Richtung von der Ausgabe zur Eingabe. Backpropagation ermöglicht es uns, den mit jedem Neuron verbundenen Fehler zu berechnen und zuzuordnen, wodurch wir die Parameter des Modells bzw. der Modelle entsprechend anpassen können.
Typen neuronaler Netze
Neuronale Netze können in verschiedene Typen klassifiziert werden, 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 für die üblichen Anwendungsfälle finden werden:
Das Perzeptron ist das älteste neuronale Netz, das 1958 von Frank Rosenblatt geschaffen wurde. Es hat ein einzelnes Neuron und ist die einfachste Form eines neuronalen Netzes:
Neuronale Netze mit Vorwärtskopplung oder mehrschichtige Perzeptrons (MLPs) sind das, worauf wir uns in diesem Artikel hauptsächlich konzentrieren. Sie bestehen aus einer Eingabeschicht, einer versteckten Schicht oder Schichten und einer Ausgabeschicht. Obwohl diese neuronalen Netzwerke auch als MLPs bezeichnet werden, ist es wichtig zu wissen, dass sie eigentlich aus Sigmoid-Neuronen und nicht aus Perceptrons bestehen, da die meisten realen Probleme nichtlinear sind. Diese Modelle werden normalerweise mit Daten gefüttert, um sie zu trainieren, und sie sind die Grundlage für Computer Vision, natürliche Sprachverarbeitung und andere neuronale Netzwerke.
Convolutional neural networks (CNNs) sind ähnlich wie Feedforward-Netzwerke, aber sie werden normalerweise für Bilderkennung, Mustererkennung und/oder Computer Vision verwendet. Diese Netze nutzen Prinzipien der linearen Algebra, insbesondere die Matrixmultiplikation, um Muster in einem Bild zu erkennen.
Rekurrente neuronale Netze (RNNs) erkennt man an ihren Rückkopplungsschleifen. Diese Lernalgorithmen werden vor allem bei der Verwendung von Zeitreihendaten eingesetzt, um Vorhersagen über zukünftige Ergebnisse zu treffen, z. B. bei Börsenprognosen oder Umsatzprognosen.
Neuronale Netze vs. Deep Learning
Deep Learning und neuronale Netze werden in der Konversation oft synonym verwendet, was verwirrend sein kann. Daher ist es erwähnenswert, dass das „Deep“ in Deep Learning sich nur auf die Tiefe der Schichten in einem neuronalen Netzwerk bezieht. Ein neuronales Netzwerk, das aus mehr als drei Schichten besteht – was die Eingänge und den Ausgang einschließt – kann als Deep Learning-Algorithmus betrachtet werden. Ein neuronales Netzwerk, das nur zwei oder drei Schichten hat, ist nur ein einfaches neuronales Netzwerk.
Um mehr über die Unterschiede zwischen neuronalen Netzwerken und anderen Formen der künstlichen Intelligenz, wie maschinelles Lernen, zu erfahren, lesen Sie bitte den Blogbeitrag „AI vs. Machine Learning vs. Deep Learning vs. Neural Networks: Was ist der Unterschied?“
Geschichte der neuronalen Netzwerke
Die Geschichte der neuronalen Netzwerke ist länger, als die meisten Menschen denken. Während die Idee einer „denkenden Maschine“ bis zu den alten Griechen zurückverfolgt werden kann, konzentrieren wir uns auf die Schlüsselereignisse, die zur Entwicklung des Denkens über neuronale Netzwerke geführt haben, die im Laufe der Jahre an Popularität verloren haben:
1943: Warren S. McCulloch und Walter Pitts veröffentlichten „A logical calculus of the ideas immanent in nervous activity (PDF, 1K KB) (Link liegt außerhalb von IBM)“ Diese Forschung versuchte zu verstehen, wie das menschliche Gehirn komplexe Muster durch verbundene Gehirnzellen, oder Neuronen, erzeugen kann. Eine der Hauptideen, die aus dieser Arbeit hervorging, war der Vergleich von Neuronen mit einer binären Schwelle zur Booleschen Logik (d.h. 0/1 oder wahr/falsch Aussagen).
1958: Frank Rosenblatt wird die Entwicklung des Perceptrons zugeschrieben, dokumentiert in seiner Arbeit „The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain“ (PDF, 1.6K KB) (Link befindet sich außerhalb von IBM). Er führt die Arbeit von McCulloch und Pitt einen Schritt weiter, indem er Gewichte in die Gleichung einführt. Mit Hilfe eines IBM 704 gelang es Rosenblatt, einen Computer dazu zu bringen, zu lernen, wie man links markierte Karten von rechts markierten Karten unterscheidet.
1974: Während zahlreiche Forscher zur Idee der Backpropagation beitrugen, war Paul Werbos die erste Person in den USA, die ihre Anwendung in neuronalen Netzwerken in seiner Doktorarbeit (PDF, 7,8 MB) (Link liegt außerhalb von IBM) feststellte.
1989: Yann LeCun veröffentlichte eine Arbeit (PDF, 5,5K KB) (Link liegt außerhalb von IBM), die veranschaulichte, wie die Verwendung von Einschränkungen in der Backpropagation und ihre Integration in die Architektur eines neuronalen Netzwerks zum Trainieren von Algorithmen verwendet werden kann. Diese Forschung nutzte erfolgreich ein neuronales Netzwerk, um handgeschriebene Postleitzahlenziffern des U.S. Postal Service zu erkennen.
Neuronale Netzwerke und IBM Cloud
Seit Jahrzehnten ist IBM ein Pionier in der Entwicklung von KI-Technologien und neuronalen Netzwerken, hervorgehoben durch die Entwicklung und Weiterentwicklung von IBM Watson. Watson ist heute eine vertrauenswürdige Lösung für Unternehmen, die fortschrittliche natürliche Sprachverarbeitung und Deep-Learning-Techniken auf ihre Systeme anwenden möchten und dabei einen bewährten, mehrstufigen Ansatz für die KI-Einführung und -Implementierung 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 und Watson Machine Learning kann Ihr Unternehmen Ihre Open-Source-KI-Projekte nahtlos in die Produktion überführen und Ihre Modelle auf jeder beliebigen Cloud bereitstellen und ausführen.
Weitere Informationen zum Einstieg in die Deep-Learning-Technologie finden Sie in IBM Watson Studio.
Registrieren Sie sich für eine IBMid und erstellen Sie Ihr IBM Cloud-Konto.