Künstliche neuronale Netze und Deep Learning einfach erklärt

Data Science wäre nicht komplett ohne künstliche neuronale Netze und Deep Learning. Daher möchten wir in diesem Artikel die beiden Konzepte einfach erklären, die Bestandteile und den Algorithmus vorstellen und Probleme vorstellen. Unser Ziel ist es, eine einfache Definition zur Verfügung zu stellen, die dennoch die Tragweite eines der wichtigsten Themen im Bereich Data Science, Machine Learning und Big Data abdeckt.

Inhaltsverzeichnis

Inhalte Verbergen

Was ist ein künstliches neuronales Netz (KNN)?

Ein künstliches neuronales Netz ist eine Methode des maschinellen Lernens im Bereich der künstlichen Intelligenz. Es basiert, wie der Name bereits verrät, auf dem biologischen Konzept von Neuronen. Neuronen in unseren Gehirnen sammeln Signale aus umliegenden Zellen, geben jedem Signal ein Gewicht (“Wie wichtig ist dieses Signal?”) und entscheiden dann, ob sie selbst ein Signal senden. 

Diesem Prinzip folgend sind KNNs (englisch “artificial neural network”, ANN) aufgebaut. Es besitzt Input- (Eingabe, zum Beispiel ein Foto eines Tiers), Zwischen- und Output- (Ausgabe, zum Beispiel die Kategorisierung Hund / Katze) Ebenen. Während die Eingabe der Aufnahme der Signale entspricht, wird in den mittleren Ebenen (“Layers”) entschieden wie das Netz darauf reagiert, um den Output zu generieren. Ganz praktisch kann man sich künstliche neuronale Netze als Reihe von Regeln in einem Computerprogramm vorstellen, welches dann selbstständig basierend auf der Eingabe lernt, wie es reagieren soll – das sogenannte abstrakte Konzept des Inputs.

Warum sollte man also künstliche neuronale Netze einsetzen? Die Besonderheit an künstlichen neuronalen Netzen im Vergleich zu anderen Algorithmen, besonders auch zu anderen Machine Learning ist, dass KNNs abstrakte Zwischenkonzepte lernen können. So kann zum Beispiel bei der Eingabe “Gesicht” nicht nur entschieden werden ob es ein Gesicht ist oder nicht, sondern das Netz lernt zum Beispiel, dass zwei runde Objekte auf der Hälfte des Inputs positioniert sein müssen, um als Gesicht qualifiziert zu werden. 

Einfach erklärt: Ein künstliches neuronales Netz lernt abstrakte Konzepte

Einfach gesagt nutzt ein neuronales Netz Lernmaterial (zum Beispiel Bilder) um daraus ein allgemeines Konzept (“Modell”) zu lernen. Dieses Konzept kann dann genutzt werden, um Werte vorherzusagen oder neu präsentiertes Material in eine Kategorie (zum Beispiel Hund / Katze) einzuordnen.

Der neurobiologische Hintergrund von neuronalen Netzen

Wie bereits anskizziert kommt die Idee für die Konstruktion von künstlichen neuronalen Netzen aus der Neurobiologie. Neuronen übernehmen die Aufgabe der Signalweiterleitung und -konsolidierung im menschlichen Körper. So kann sensorischer Input (zum Beispiel das Sehen eines Bildes) in andere Signale umgewandelt werden, die eine Reaktion (zum Beispiel Emotionen) auslösen.

Ein Plastikgehirn mit vergrößerter Nervenzelle
Dendriten, Axon, Axonhügel: Die Grundlage allen Denkens

Dabei besteht der klassische Aufbau eines Neurons aus drei wesentlichen Teilen: Den Dendriten, die Signale aufnehmen, dem Axonhügel, der bestimmt ob ein Signal weitergeleitet wird und dem Axon, das ein neues Signal an andere Neuronen weiterleitet.

Die Signalverarbeitung im Neuron beginnt bei der Aufnahme von Signalen anderer Zellen an den Dendriten. Jedes Neuron hat zahlreiche, weitverzweigte Dendriten, die an viele andere Zellen angrenzen. Somit kann jedes Neuron quasi aufspüren, falls andere Zellen aktiv sind. Diese Signale – elektrisch oder chemisch – nehmen Dendriten auf und führen sie der Zelle zu.

Innerhalb der Zelle löst das Signal üblicherweise eine Reaktion aus. Dabei gibt es viele verschiedene Arten, wie Zellen auf Signale reagieren. Manche reagieren graduell (umso größer der Input, umso größer der Output) andere hingegen diskret (nur bei Überschreitung eines bestimmten Schwellwerts wird ein Output generiert). Ob, wann und welcher Output dabei generiert wird ist hoch individuell und die Entscheidung dazu fällt generell am Axonhügel (Englisch Axon Hillock), welcher als Art “Tor” zum Axon dient.

Das Axon ist nun quasi der Ausgabekanal. Falls ein Signal innerhalb der Zelle ausgelöst wurde, ist es die Aufgabe des Axons dieses Signal an andere Zellen weiter zu leiten. Und hier sieht man bereits den zirkulären Prozess: An jedem Axon docken wiederum Dendriten anderer Zellen an, weshalb ein Netz aus Neuronen entsteht.

Diese Prozesse laufen kontinuierlich und jederzeit in unserem Körper ab. Doch das dargestellte Beispiel notiert nur die Verhaltensweise von bereits trainierten Neuronen. Der Gedankentransfer in die Welt der Informatik und somit die künstlichen Neuronen liegt darin, dass hier den Neuronen erst beigebracht werden muss, wie sie reagieren sollen. Und genau dies ist eine der Hauptaufgaben im Bereich Data Science bzw. in der Modellierung von künstlichen neuronalen Netzen.

Ein wichtiger Unterschied in der Terminologie ist, dass künstliche neuronale Netze nicht versuchen alle Eigenheiten eines Neurons zu simulieren (dieses Vorgehen ist eher in der Computational Neuroscience und Projekten wie dem Blue Brain Project zu finden), sondern es steht eher das Grobkonzept der Signalverarbeitung zur Kreation eines Konzepts (Modells) im Fokus.

Die Geschichte von künstlichen neuronalen Netzwerken

Hier eine kurze Zusammenfassung der Historie von neuronalen Netzwerken und Deep Learning:

  • 1943: McCulloch und Pitts erstellen erstes algorithmisches Modell das einem Neuron ähnelt
  • 1958: Rosenblatt definiert und programmiert das Perzeptron, das erste Modell eines künstlichen Neurons
  • 1965: Das erste Modell mit mehreren Ebenen wird von Ivakhnenko und Lapa erstellt
  • 1975: Backpropagation, also das Zurückführen von erkannten Fehlern, betritt durch Werbo die Bühne
  • 1985: Neural Networks for Computing – eine Konferenz zum Thema startet
  • 1997: Rekurrente neuronale Netze werden vorgestellt
  • 2010: Deep Learning wird auf Grafikkarten getestet und etabliert

Das einfachste KNN: Das Perzeptron

BILD

Ein einfacher Weg künstliche neuronale Netze auch visuell zu erklären ist das Perzeptron, das 1958 von Rosenblatt vorgestellt wurde. Das Perzeptron besitzt drei einfache Komponenten: Die Eingabe, eine Gewichtung jedes Teils der Eingabe und eine Summenfunktion die entscheidet, ob positiv oder negativ auf die Eingabe reagiert werden soll.

BILD

Als Beispiel hier die Funktionsweise eines Perzeptrons. Die drei Inputs (0.8, 0.2, 0.7) werden mit ihren Gewichten (0.5, 1, 0.1) multipliziert und aufsummiert (= 0.4 + 0.2 + 0.07 = 0.67). Da sich dieses Ergebnis über der Aktivierungsgrenze (0.6) befindet, meldet das Perzeptron positiv.

Was ist Deep Learning (DL)?

BILD: NN vs. DL

Ein weiterer Begriff der oft im Zusammenhang mit neuronalen Netzen fällt ist “Deep Learning” oder auf Deutsch “tiefes Lernen”. Dabei ist Deep Learning eine Art von neuronalen Netzen, keine eigene Methode. Das hauptsächliche Merkmal von Deep Learning ist gut am deutschen Synonym “mehrschichtiges Lernen” zu erkennen. Denn Deep Learning bezeichnet prinzipiell nichts anderes als ein künstliches neuronales Netz, das mehrere Hidden Layer besitzt. 

Ein einfaches Beispiel für den Einsatz von neuronalen Netzen

Einer der prominentesten Anwendungsfälle für die Leistung von neuronalen Netzen ist die Handschrifterkennung, genauer die Erkennung von handgeschriebenen Zahlen. Der Ursprung ist die Schwierigkeit, diese von Menschen sehr einfach zu erledigende Aufgabe von herkömmlichen Algorithmen der künstlichen Intelligenz lösen zu lassen.

BILD

Generell klingt die Wahrnehmung von Zahlen nicht besonders schwierig, vor allem da unser Gehirn sehr problemlos dazu fähig ist. Doch wer versucht, ein herkömmliches Computerprogramm zur Erkennung von Handschrift zu schreiben, erkennt schnell wie schwer es ist. Die Schwierigkeit liegt einerseits darin, dass Zahlen aus mehreren Komponenten (z.B. Striche, Kreise) aufgebaut sind, die je nach Anordnung einen anderen Sinn ergeben. Andererseits variiert die Handschrift minimal bis erheblich zwischen Personen, so dass es nicht möglich ist, ein einfaches Template zu nutzen.

BILD

Neuronale Netze lösen die Probleme durch zwei Herangehensweisen. Erstens nutzen sie eine Vielzahl an Trainingsdaten um die Varianz an möglichen Handschriften abzudecken. Dies führt dazu, dass ein Großteil an menschlichen Besonderheiten direkt von Anfang an durch Deep Learning mitbeachtet wird und nicht später gelernt werden muss. Zweitens lernt ein künstliches neuronales Netz nicht fixe Regeln, sondern eher die „Idee“ der Zahlen in abstrakter Weise. Das erlaubt, dass neuer, unbekannter Input oder auch andere Schriften wie Computerschriftarten durch das Modell eingeordnet werden können.

Dass die Erkennung von handgeschriebenen Zahlen so gerne als Beispiel für künstliche neuronale Netze genutzt wird hat zwei Gründe. Zum Einen war die Erkennung von Zahlen für jedes Post-Unternehmen dieser Welt seit jeher eine Mammutaufgabe. Vor allem Postleitzahlen zu erkennen war einer der wichtigsten Aufgaben für den Menschen bei der Vorsortierung von Briefen, so dass dies massive Kosten verursacht hat. 

Als zweiten Grund für die Beliebtheit des Anwendungsfalls „Zahlenerkennung“ kann man den 1998 veröffentlichten Datensatz „MNIST“ nehmen. Dieser enthält 70.000 Bilder von handgeschriebenen Zahlen und wird seitdem gerne als Leistungsmetrik von Machine Learning Algorithmen eingesetzt. Dass sich die Fehlerrate bei der Erkennung von handschriftlichen Zahlen von 8% (1998) auf inzwischen 0.18% verringert, zeigt auch wie sich die eingesetzten Algorithmen weiterentwickeln.

Aufbau und Bestandteile künstlicher neuronaler Netze

Neuronale Netze bestehen im Prinzip immer aus vier Bestandteilen: Dem Input-Layer, dem/den Hidden-Layer/n, dem Output-Layer und Kanten die die einzelnen Layer verbinden. Genauer verbinden die Kanten einzelne Knoten innerhalb der Layer, wobei jeder “Knoten” als eine Art Container für einen numerischen Wert fungiert. Die Kanten zwischen den Knoten sind mit Gewichten versehen, die definieren wie der Input über die Kante zum nächsten Knoten berechnet wird. Die Anordnung dieser Bestandteile – die sogenannte Topologie – hängt stark von der Art und dem Einsatzzweck des Netzwerks ab. 

Generell ist es wichtig, sich vorab Gedanken über die Anordnung, Vernetzung und vor allem auch Anzahl an Hidden Layern und der Knoten je Hidden Layer zu machen, da davon sehr stark die Anforderungen an die Rechenleistung und Infrastruktur definiert werden. Üblicherweise werden heute mehrschichtige Netzwerke eingesetzt (= Deep Learning); einschichtige neuronale Netze sind sehr selten, da sie kaum abstrahieren können.

Input-Layer

Der Input sind die zu lernenden Konzepte und bestehen zum Beispiel aus annotierten Bildern, Text oder einfach numerischen Werten. Ganz konkret ist beispielsweise der Grauwert eines Pixels eines Bildes ein typischer Inputwert für ein neuronales Netz. Folglich kommt ein Inputlayer schon bei einer sehr spärlichen Größe eines Bildes von nur 32 x 32 Pixel auf 1024 Input-Knoten. Bei einer Größe von 256 x 256 sprechen wir bereits über 65.536 Pixel. Als Vergleichswert: Normale Digitale Fotos haben heute gerne mal 12 Megapixel, also würde bei einem vollauflösenden Bild der Inputlayer aus über 12 Millionen Knoten bestehen.

Hidden Layer

Das oder die Hidden-Layer stehen zwischen Input und Output und repräsentieren den Status von (Teil-)Konzepten. Damit repräsentieren sie auch den zentralen Teil bei neuronalen Netzen, da sie den “Lern”-Teil erst ermöglichen. 

Es gibt eine Bandbreite an möglichen Parametern in den Hidden Layern. Alleine die Frage wie viele “versteckte Schichten” bei einem Netzwerk eingesetzt werden muss aus vielen Blickwinkeln betrachtet werden. Einer der relevantesten ist tatsächlich schlicht die Potenzierung der Anforderungen an die Rechenkapazitäten. 

Nehmen wir das Beispiel eines Inputs von 256 x 256 Pixeln, also 65.536 Input-Knoten. Bei einer einfachen Deep Learning Topologie mit zwei Hidden Layern und Vollverknüpfung heisst dies, dass Kanten zwischen allen Knoten aller vier Schichten gewichtet werden. Folglich wäre die Anzahl der Gewichte bei 2 x (65.536 x 65.536) = 8,5 Milliarden Werten. 

Führt man diesen Gedanken weiter, erkennt man dass jedes dieser 8,5 Milliarden Gewichte bei jedem Trainings-Stimulus berechnet und aktualisiert werden muss. Ich denke an diesem einfachen Beispiel erkennt man schnell, warum es wichtig ist, gut zu planen welche Topologie, aber vor allem auch wie viele Input-Knoten man in seinem neuronalen Netz einsetzt.

Output-Layer

Als letztes Layer steht der Output-Layer, also die Ausgabe. Die Ausgabe kann verschiedene Formen annehmen, je nach Art des neuronalen Netzes. Die wohl häufigste Ausgabe ist eine Kategorie (“Label”), welches vorher trainiert wurde. Alternativ sind allerdings auch Vorhersagen von Werten (z.B. Umsatz) oder auch neue, generierte Objekte wie Bilder durch generative neuronale Netzwerke möglich.

Welche Form der Output auch annimmt, die Ausgabe ist auch das Ergebnis das weiterverarbeitet werden kann. Im Gegensatz zu den Hidden-Layer, den Kanten und deren Gewichte, die aufgrund der schieren Masse nicht bzw. nur sehr schwer weiterverarbeitet werden können, ist der Output das überprüfbare Ergebnis der Anwendungs des Lernens.

Daher erfüllt das Output-Layer zwei wichtige Funktionen. Zum Einen erlaubt es während des Trainings eine Entscheidung zu fällen, um diese Entscheidung mit der Realität gegenzuprüfen, ob das neuronale Netz bereits ausreichend trainiert ist. Zum Anderen ist das Ergebnis nach Abschluss der Optimierung des KNNs auch der Aspekt, der die finale “Aussage” des Netzwerks ist und somit weiterverarbeitet wird.

Kanten und Gewichte

Der wichtigste Teil in jedem neuronalen Netzwerk sind die Kanten und die dazugehörigen Gewichte. Eine Kante verbindet zwei Knoten aus zwei verschiedenen Layern oder auch innerhalb eines Layers miteinander. Jede Kante ist mit einem Gewicht versehen, welches definiert, wie der Wert des Ursprungsknoten (z.B. Input-Pixel) auf den nächsten Knoten umgerechnet wird.

Diese Gewichte sind das Herzstück von Deep Learning, denn sie repräsentieren das gelernte Konzept. Um abermals das Beispiel des Bildes mit einem Hund oder einer Katze zu bemühen, kann ein neuronales Netz lernen, dass ein hoher Identifikator für die Kategorie “Katze” spitze Ohren sind. Somit würden Pixel, die sich dort befinden, wo üblicherweise Ohren befinden, in einer eher spitz zulaufenden Weise hoch gewichtet werden. Während gleichzeitig Schlappohren sehr niedrig gewichtet werden könnten.

Bedenkt man nun die unmöglich hohe Variation an Input-Material mit der unglaublich hohen Nummer an Gewichten und den Teilkonzepten, die ein neuronales Netz lernt, hat man erkannt, weshalb ein Netzwerk einerseits faszinierende Ergebnisse liefern kann, andererseits aber auch sehr hohe Anforderungen an Technologie, Rechenkapazität und Fachwissen von Machine Learning Modellierung stellt.

Die algorithmische Funktionsweise: Wie lernen künstliche neuronale Netze?

Der Input: Features und Labels

Üblicherweise besteht der Input eines neuronalen Netzes aus einem “Stimulus”, also Bildern, Texten, Sound oder ähnlichem. Um beim Beispiel des Bildes zu bleiben: Hier besteht der Input normalerweise aus dem Grauwert jedes einzelnen Pixels. Bei tabellarischem Input wäre jedes Feature ein Input-Wert, wie beispielsweise alle Attribute eines Kunden (z.B. Dauer Mitgliedschaft, Geburtsjahr, Anzahl an genutzten Services..). In den meisten Fällen fällt der Input auch in die Kategorie “Big Data”, vor allem weil er unstrukturiert, von großer Menge oder sehr variabel ist.

Je nachdem welche Aufgabe das Netz oder Deep Learning Modell dann erledigen soll muss für das Training noch ein sogenanntes Label mitgeliefert werden. Im Falle einer kategorialen Zuordnung (“Klassifikation”) beinhaltet dieses Label eben die Kategorie, in die das Beispielbild fällt. Bei anderen Aufgaben wie zum Beispiel der Vorhersage von numerischen Werten (“Regression”) wäre das Label eben der Wert.

Die Labels sind insofern absolut fundamental, da sie als Kontrolle dienen, welche Aufgabe das neuronale Netz lernt. Sind die Labels falsch oder es gibt nicht genügend Daten mit Labels, kann das Netzwerk entsprechend nicht oder sehr schlecht das Konzept verinnerlichen – Details dazu im Abschnitt “Probleme und Nachteile”.

Die Initialisierung: Mit welchen Gewichten startet man?

Zu Beginn eines Trainings existieren die Knoten der verschiedenen Layer, in welche das (Zwischen-)Ergebnis jedes Wertes eingetragen werden. Dazwischen steht der Knoten mit seinem Gewicht. Während jeder Knoten bei jedem Input neu gefüllt wird, sind die Gewichte das Ergebnis des Trainings für das gesamte Netzwerk. 

Folglich muss man sich bei Initialisierung auch überlegen, wie man die Gewichte festlegt. Das Problem ist, werden die Gewichte ungünstig initialisiert kann dies dazu führen, dass alle Hidden Layer das gleiche lernen oder sehr langsam lernen. Während die genaue Initialisierung nun eine Wissenschaft für sich ist, ist die allgemeine Herangehensweise, dass die Gewichte zufällig, aber gleichverteilt und mit einem Mittelwert von 0, also sowohl positive als auch negative Werte, verteilt werden.

Das Training: Forward- und Backpropagation der Information

Das Herzstück von künstlichen neuronalen Netzwerken ist das Training. Hierzu wird der Input genutzt, um iterativ die Gewichte der einzelnen Kanten zu definieren. Das neuronale Netz versucht also die Gewichte so zu definieren, um in den Endknoten (Output) das korrekte Label zu erreichen. Das Spielen der Information durch das Netz zum Output-Layer nennt sich “Forward Propagation”, also das Schleusen der Signale zum Ende hin. 

Genauer definiert nutzt das KNN den Input (zum Beispiel Grauwert 100 an Pixelposition 222), multipliziert ihn mit dem Gewicht der Kante (zum Beispiel 0.5) um das Ergebnis (Wert 50) im Knoten des Hidden Layers zu speichern. Diesen Prozess durchläuft das Netz für jeden Inputwert für jede Kante für jeden Knoten für jedes Hidden und Outputlayer.

Im Outputlayer angekommen definiert die sogenannte Activation Function (Deutsch Aktivierungsfunktion), ob das künstliche Netz feuert oder nicht – identisch mit dem neurobiologischen Vorbild. Es gibt eine hohe Bandbreite an Aktivierungsfunktionen, welche alle unterschiedliche Stärken und Schwächen haben. Somit haben wir das Ergebnis – in unserem Bild-Beispiel die Antwort “Hund” oder “Katze”.

Doch damit hat das Netz bisher erst den Input klassifiziert, noch nicht gelernt, also die Gewichte angepasst. Dazu nutzt man die Antwort des Netzes und vergleicht sie mit dem vorher definierten Label um gegebenenfalls einen Fehler des Netzes festzustellen. Dieser Fehler (“error”) wird dann rückwärts durch das Netz propagiert (“back propagation”) um daraus zu lernen.

Die ausführliche Definition von back propagation ist etwas komplexer und verlangt eigentlich nach einem eigenen Artikel, aber einfach gesagt wird dabei berechnet wie sich die Gewichte eigentlich hätten verhalten sollen und dementsprechend in eine Richtung korrigiert, die ein besseres Ergebnis erwarten lassen (gradient descent). Darauf basierend wird jedes betroffene Gewicht korrigiert.

Dieser Vorgang – Input einspeisen, Fehler berechnen und Gewichte korrigieren – wird solange durchgeführt, bis ein Abbruchkriterium erreicht wird. Das Abbruchkriterium ist meist durch eine bestimmten Anzahl an Epochen definiert, wobei eine Epoche beendet ist, wenn alle Trainings-Stimuli einmal angewandt wurden. Dann ist das Training beendet und das künstliche neuronale Netz trainiert.

Der Einsatz des künstlichen neuronalen Netzwerks: Vorhersagen auf Basis des Modells

Ist der Trainingsprozess durchgeführt und das Netz hat alle Gewichte einem (auf den Trainingsdaten) optimalen Wert zugeführt, kann es eingesetzt werden. Vorher zur Seite gelegte Daten (Test-Set) werden dem Deep Learning Modell zugeführt und die Ergebnisse validiert. Genügt die Performanz, also sind die Vorhersagen zu Genüge korrekt, kann das Netz auf neuen, unbekannten Input angewandt werden. Dazu muss eine Data Pipeline aufgebaut werden, die neuen Input zum neuronalen Netz transportiert und die Prädiktion zurück liefert.

Die Bandbreite an Einsatzzwecken von KNNs: Wozu kann man neuronale Netze einsetzen?

Im Prinzip gibt es drei Hauptanwendungsgebiete von künstlichen neuronalen Netzen und Deep Learning. Dabei ist eine der Anwendung die häufigste: Die Classification, auf Deutsch “Klassifikation”, also das Einordnen von einem Input in eine Kategorie. Dennoch möchten wir gerne alle drei Aufgaben kurz darstellen, 

Classification (Supervised Machine Learning)

Klassifikation ist eine Art von Machine Learning Algorithmus, die Input in eine Kategorie einordnet. Dabei kommt die Classification aus der Kategorie “Supervised Learning”, also dem überwachten Lernen. Supervised Learning bezeichnet Algorithmen, die anhand von Beispielen lernen, um später dieses Modell auf neuen Input anzuwenden. 

Die Beispiele die wir mehrfach angeführt haben (Handschrifterkennung, Hund / Katze) sind eben aus der Kategorie Classification. Mittels der bereitgestellten Trainingsdaten (Bilder von Zahlen oder Hunden und Katzen) und dazugehöriger Labels (der Wert der Zahl, die Kategorie des Tiers) kann das Netzwerk entsprechend lernen.

Es gibt eine ganze Bandbreite an Beispielen für die Anwendung von Classifiern. Von der Gesichtserkennung über die Erkennung von Betrugsversuchen im Banking bis zur Abschätzung ob ein Kunde noch länger Kunde bleiben wird fallen viele Ideen in die Vorhersage von Kategorien. Für Details zu Anwendungsfällen, siehe der Abschnitt “Beispiele und Anwendungsfälle”.

Regression (Supervised Machine Learning)

Ein weiteres Beispiel aus der Kategorie des Überwachten Lernens sind Anwendungsfälle aus dem Bereich der Regression. Als Regression bezeichnet man generell Prädiktion von Werten. Da auch Regression in die Kategorie Supervised Learning fällt, brauchen neuronale Netze in dieser Kategorie auch in diesem Fall entsprechende Label.

Ein Label im Bereich der Regression entspricht nicht einer Kategorie wie in der Klassifikation, sondern vielmehr einem kontinuierlichen Wert. Ein sehr bekanntes Beispiel ist die Vorhersage von Umsatzzahlen in einem Unternehmen. Man nutzt Features wie Anzahl Bestellungen, Lagerbestände, Werbeinvest und anderes, um anhand der historischen Saleszahlen ein Deep Learning Modell zu trainieren.

Mit einem solchen Regressionsmodell lassen sich dann entsprechend zukünftige Zahlen vorhersagen. Als Beispiele gibt es Saleszahlen, Rücksendungen, Temperatur, optimaler Preis und vieles mehr. Ein ausführliches Beispiel ist im unteren Abschnitt der Beispiele von Deep Learning Use Cases zu finden.

Clustering (Unsupervised Machine Learning)

Als dritte Hauptkategorie des Einsatzes von Deep Learning und künstlichen neuronalen Netzen gilt das Clustering. Clustering bezeichnet das Erkennen von Gruppen von Datenpunkten anhand ähnlicher Merkmale. Im Gegensatz zur Classification und Regression sind Clustering Algorithmen sogenannte Unsupervised Machine Learning Algorithmen, zu Deutsch unüberwachtes Lernen, und brauchen keine Vorinformation über das Ergebnis. Dies liegt daran, dass Clustering keine Prädiktion erstellt, sondern rein die Information innerhalb eines Datensatzes nutzt, um Muster zu erkennen.

Dabei sei gesagt, dass es eher unüblich ist, ein künstliches neuronales Netz für Clustering einzusetzen. Das heisst nicht, dass es nicht möglich ist: Autoencoder oder Self-Organizing Maps werden oft eingesetzt, um Informationen über den Aufbau und die Struktur von Daten selbst zu erlangen. 


Welche Arten von neuronalen Netzen gibt es?

https://i.stack.imgur.com/LgmYv.png

Es gibt inzwischen eine ganze Reihe an Klassen von neuronalen Netzen. Dabei hat jede Art gewisse Vor- und Nachteile und teilweise werden bestimmte Klassen nur auf bestimmte Probleme angewandt. Wir stellen einige Beispiele vor:

  • Perceptron: Das einfachste neuronaler Netze, das nur aus einem Input-Layer, einer Aktivierungsfunktion und dem entsprechenden Output besteht. Hidden-Layer sucht man in dieser Version vergebens.
  • Feedforward artificial neural network (FFNN): Die nächste Stufe, bei der Information zwar nur in eine Richtung bewegt wird, aber mittels einem Hidden Layer auch Teilkonzepte repräsentiert werden können.
  • Deep Learning (DL): Neuronale Netze die mehr als ein Hidden Layer haben. Diese Topologie erlaubt es dem Netzwerk, auch Zwischenkonzepte (wie zum Beispiel Kanten oder Farbverteilungen) zu lernen.
  • Recurrent neural networks (RNNs, z.B. Long short term memory networks): Rekurrente neuronale Netze beachten im Vergleich zu normalen feedforward Netzen auch temporale Sequenzen, indem sie sich quasi gewisse Information “zwischenspeichern”. RNNs gelten als eine der stärksten Art von neuronalen Netzen, vor allem in Bereichen der Time Series Analysen (z.B. Vorhersage von Aktienentwicklung) und der Analyse von Sprache.
  • Symmetrically connected neural networks: Diese Netze sind aufgebaut wie RNNs, aber haben eine symmetrische Topologie sowohl in Anordnung als auch der Zuweisung von Gewichten.
  • Convoluted neural networks (CNN): Die “Convolutions” eines CNNs sind ein neuer Baustein in der Topologie von Netzwerken. Sie verarbeiten Informationen nicht linear, sondern betrachten quasi regionale Information gemeinsam (z.B. bei eine Bild die umliegenden Pixel). Dies führt zu massiven besseren Erkennungsraten in der Bildverarbeitung, aber ebenso zu schnelleren und effizienteren Training als klassische Netze.
  • Radial basis function network (RBFN): RBFNs sind einfache feedforward networks, die als Aktivierungsfunktion die Distanz zwischen den Knoten mit einbeziehen.
  • Self organizing neural network: Diese Art von neural Netzwerken erkennt wird vor allem zur Erkennung von Strukturen innerhalb des Datensatzes eingesetzt. Es findet Anwendung im Unsupervised Learning zur Dimensionsreduktion.
  • Modular neural networks: Modulare künstliche Netze kombinieren mehrere Arten von neuronalen Netzwerken um Teilaufgaben oder Teileingaben von unterschiedlichen Topologien und Algorithmen erledigen zu lassen.
  • Generative adversarial networks (GAN): GANs sind eine noch junge Generation von neuronalen Netzen, die jedoch rapiden Wachstum erfahren. Diese Art von KNNs generiert neue Daten aus den zu lernenden Daten, indem es zwei Netze kombiniert, bei denen eines Daten generiert und das andere das Ergebnis überprüft. GANs sind die Basis für die Generation von neuem Bildmaterial wie zum Beispiel Deep Fakes.

Probleme und Nachteile von künstlichen neuronalen Netzen

Lokale Optima: Wann ist das neuronale Netz fertig trainiert?

Als eines der Hauptprobleme im Training von neuronalen Netzen wird die Frage gesehen, wann das Training beendet werden kann. Da ein neuronales Netz versucht das Minimum an Fehlern für die Trainingsdaten zu finden, gibt es die Möglichkeit, dass es zwar ein Minimum findet, dies aber ein sogenanntes “lokales Minimum” ist. Das heisst, falls die Gewichte anders initialisiert oder angepasst worden wären, gäbe es potentiell eine andere Lösung für das Modell, welches noch optimaler das Problem löst – das sogenannte globale Optimum.

Man versucht diesem Problem sehr stark mit Algorithmen, Wiederholung des Trainings und anderen Methoden entgegen zu wirken, aber vieles davon führt meistens zu einer verlängerten Trainingsdauer und höherem Aufwand. Zudem kann man nie sicher sein, ob man final das globale Optimum erreicht hat oder nur ein besseres lokales Minimum. Daher ist die Frage, wann das neuronale Netz fertig trainiert ist und man einen Abbruch des Trainings durchführen kann eine offene.

Overfitting: Perfekte Ergebnisse im Training, schlechte in der Realität

Als Overfitting wird das Problem bezeichnet, dass ein Deep Learning Modell nach dem Training perfekt die Daten vorhersagen kann, aber dann bei der Konfrontation mit den Testdaten oder neuen Daten versagt. Dieses Problem liegt meist vor allem an einer mangelnden Varianz und/oder mangelnden Informationsgehalt in den Trainingsdaten. Entgegen gewirkt werden kann durch eine geringere Komplexität des Modells, ein besseres Abbruchkriterium oder bessere Daten.

Initialisierung der Gewichte: Mehr als nur ein Startpunkt

Wie wir bereits im Abschnitt des Algorithmus angerissen haben, ist die Frage wie die Gewichte im Netz initialisiert werden von zentraler Bedeutung. Gibt es innerhalb der Erstverteilung ein sehr starkes Ungleichgewicht oder noch schlimmer ein Muster, wirkt sich das selbstverständlich auf den gesamten Trainingsprozess aus. Denn durch diese Gewichte werden die ersten Durchläufe dominiert und somit ist auch die “Richtung” des Modells mit beeinflusst. 

Datenqualität: Schlechte Trainingsdaten oder Labels führen zu schlechten Ergebnissen

Wie bei Machine Learning üblich ist es auch im Falle von neuronalen Netzen bzw. Deep Learning der Fall, dass die Leistung eines Modells mit der Datenqualität steht oder fällt. Sind die Trainingsdaten sehr imbalanziert, haben schlechte oder falsche Labels versehen bekommen oder repräsentieren einfach nicht die realen Faktoren für ein Ergebnis, kann auch der Algorithmus nur schwer großes leisten. Daher ist auch im Falle von KNNs die Datenqualität von absolut zentraler Bedeutung.

Ein Sonderfall ist ein Bias, der sich bereits in den Daten abzeichnet. Als Beispiel seien hier die Vorkomnisse bei großen Unternehmen wie Amazon genannt, die versuchten, neuronale Netze einzusetzen, um Bewerber zu evaluieren. Da die Trainingsdaten auf ihren bisherigen Mitarbeitern basierten, diskriminierten die Deep Learning Algorithmen systematisch Frauen und andere Hautfarben – da sie dies als Faktor in den Ausgangsdaten identifizierten.

Bias ist ein großes Problem, das man aktiv beachten und lösen muss, damit man nicht durch die Datengrundlage bereits ausschließt, ein neutral agierendes Modell zu erstellen.

Anforderungen an Infrastruktur und Ressourcen

Abhängig von der Topologie, der Größe der Datenmengen (Big Data) und Anzahl der Features kann ein neuronales Netzwerk sehr schnell sehr ressourcenhungrig werden. Daher gilt es hierbei etwas genauer zu planen, welcher Input relevant sein kann und wie der Aufbau des Deep Learning Modells durchgeführt werden soll.

Deep Learning ist eine Blackbox

Wie wir hoffentlich in den vorherigen Kapiteln ausreichend darstellen konnten sind neuronale Netze, insbesondere Deep Learning, hochkomplexe Konstrukte mit einer unglaublich hohen Anzahl an Beteiligten (Layer, Kanten, Gewichte). Durch diese Multidimensionalität entsteht auch das Problem, dass man ab einer gewissen Größe nicht mehr nachvollziehen kann, weshalb ein KNN reagiert wie es reagiert. 

Dieses Problem nennt sich “Blackbox”, also eine Kiste, in der man Input steckt und aus der Output kommt, aber man nicht weiß, was dazwischen passiert. Die Blackbox ist mitunter auch eine der größten Kritiken an neuronalen Netzen und Deep Learning. Inzwischen gibt es allerdings auch Initiativen, die versuchen trotz der Komplexität die Blackbox aufzulösen – wir sind gespannt, wie erfolgreich diese sind.

Häufige Fragen zu künstlichen neuronalen Netzwerken und Deep Learning

Neuronale Netzwerke vs Deep Learning: Was ist der Unterschied?

Wie erläutert, ist Deep Learning ein Begriff für künstliche neuronale Netze die aus mehreren Hidden Layern bestehen. Dass dabei oft Deep Learning als eigenes Buzzword auftaucht hat den Hintergrund, dass mehrschichtige neuronale Netze nicht nur Teilaspekte des Inputs lernen können, sondern auch Zwischenrepräsentationen lernen können. Dies ist ein erheblicher Vorteil gegenüber einschichtigen Netzen.

Der Unterschied von neuronalen Netzen und Machine Learning

Oft werden neuronale Netze als Alternative zu Machine Learning positioniert. Dabei gibt es bei der Verordnung dieser beiden Begriffe eine klare Hierarchie: Künstliche Intelligenz ist das generelle Feld, Machine Learning eine Unterart von Anwendungen. Maschinelles Lernen hingegen hat wiederum viele Methoden, wovon neuronale Netze neben zum Beispiel Entscheidungsbäumen, Time Series Analysis, Regression eine von vielen Ist. Deep Learning hingegen ist, wie vorhergehend erläutert, die Bezeichnung für neuronale Netze mit mehreren hidden Layern.

Vorteile von neuronalen Netzen und Deep Learning: Wo, wann und warum sollte man neuronale Netze/ Deep Learning einsetzen?

  • Feature Selection: Bei Deep Learning muss nach dem Feature Engineering keine Feature Selection durchgeführt werden, da neuronale Netze die wichtigkeit von verschiedenen Features selbst bestimmt.
  • Komplexe Beziehungen: KNNs können sehr komplexe Verhältnisse innerhalb der Daten erkennen und modellieren; auch wenn diese nicht linear sind.
  • Generalisierung: Deep Learning lernt das abstrakte Konzept, nicht eine fixe Lösung für ein bestimmtes Problem. Somit lässt sich das gelernte generalisieren und auf neuen Input anwenden.
  • Geringere Anforderungen an die Daten: Neuronale Netze können besser als andere Machine Learning Technologien mit schwierig verteilten, invarianten oder inkonsistenten Daten umgehen.

Was ist die beste Programmiersprache für neuronale Netze?

Üblicherweise wird python als Hauptprogrammiersprache eingesetzt. Selbstverständlich sind auch Sprachen wie R oder Java dazu fähig, aber rein von der Varianz und Aktualität der Pakete sowie der kohärenten Option das Modell danach zu operationalisieren, gewinnt python.

Beispiele und Anwendungsfälle neuronaler Netze & Deep Learning

Inzwischen gibt es hunderte von Anwendungsfällen im Bereich Machine Learning und viele davon auch für den Einsatz von neuronalen Netzen und Deep Learning. Hier möchten wir fünf Beispiele darstellen, die in ihrer Art und Weise nicht ohne KNNs / DL existieren würden.

Face recognition: Gesichtserkennung als Beispiel für Deep Learning

In Science Fiction war es schon lange möglich: Die Erkennung von Menschen durch Maschinen. Doch vor neuronalen Netzen konnten dies die Algorithmen nicht leisten. Inzwischen sind solche Systeme jedoch im Einsatz: Egal ob zur Entsperrung von Mobiltelefonen oder bei China’s neuem Social Scoring System, das Gesicht ist der beste äußerliche Identifikator von uns Menschen.

Stock prediction: Leider noch nicht die Gelddruckmaschine die man sich wünscht

Wenn eine Branche kontinuierlich und tief in die Anwendung von Data Science und Machine Learning investiert, dann ist es die Finanzbranche. Der Grund ist auch offensichtlich: Wenn man die Entwicklung der Aktienmärkte vorhersagen könnte, wüsste man genau, wie man investieren muss. Das besondere an diesem Use Case ist, dass hierbei oft eine immens hohe Bandbreite an verschiedenen Datenquellen angebunden werden müssen, um die “Weltmarktentwicklung” zumindest ansatzweise abzudecken. Dies stellt eine besondere Herausforderung für das Data Engineering dar.

Der Grund weshalb der Einsatz von Deep Learning in der Finanzbranche noch nicht einer Gelddruckmaschine gleich kommt ist jedoch ein anderer. Die Märkte werden von sehr vielen Faktoren beeinflusst und sind ein Wechselspiel von kleinen und großen Anlegern, die sich oft auch entgegen jeder wiederholbarer Logik verhalten. Somit ist es selbst für sehr anspruchsvolle neuronale Netze noch nicht möglich, diese Entwicklungen in einem abstrakten Konzept zu modellieren.

Speech recognition: Endlich verstehen die Maschinen uns

Wer zur Jahrtausendwende versucht hat die aufkommenden Spracherkennungssoftwares zu nutzen, wird viel geflucht haben. Sie waren sehr fehleranfällig, man musste sie anschreien und auf Deutsch gab es kaum etwas brauchbares. Doch das hat sich durch Deep Learning geändert. Inzwischen befindet sich auf sehr vielen digitalen Produkten eine Spracherkennung: Sprachassistenten wie Alexa, automatische Speech-to-Text bei Google Sheets oder auch die Suche mittels Spracheingabe wie im e-Commerce-Bereich breitet sich immer weiter aus. Ohne neuronale Netze mit mehreren Abstraktionsebenen wäre dies nicht möglich.

Product Classification: Welches Kleid passt zu mir?

Foto machen – ähnliche Produkte finden. Dies ist nur einer von sehr vielen Anwendungsfällen für den Einsatz von Deep Learning in der Produktklassifizierung. Dabei kann das KNN darauf trainiert werden, dass es Farben, Muster oder auch Art des Kleidungsstücks erkennt und mit der Produktdatenbank im Unternehmen vergleicht. Somit rückt der Geschmack der Kunden noch mehr ins Zentrum und es wird immer einfacher, für sich passende Artikel zu finden.

Deep Fakes: Wird Deep Learning zu einer Gefahr für die Gesellschaft?

BILD

Ein ernsteres Thema als gute Produktempfehlungen sind die inzwischen aufkommenden Deep Fakes. Der Begriff setzt sich zusammen aus dem Begriff “Deep Learning” und “Fake” und hat zur Basis Generative Adversal Networks – GANs. Deep Learning basierte GANs können anhand von Trainingsmaterial komplett neue Bilder oder Videos kreieren. Dass dies vor allem gegenüber leichtgläubigen Mitmenschen sehr schnell gefährlich werden kann ist offensichtlich. Botschaften von Verwandten, Prominenten oder sogar der Bundeskanzlerin können nach Belieben erstellt und verbreitet werden. Deep Fakes werden noch sehr spürbare Auswirkungen auf die Gesellschaft haben, sind aber bereits im Fokus von Sicherheitsmaßnahmen und Detektionsalgorithmen.

Weitere Informationen und Ressourcen zu künstlichen neuronalen Netzen

Ein neuronales Netz in Aktion sehen

Wer nun Lust hat, neuronale Netze in Aktion zu sehen, aber nicht gleich programmieren lernen möchte, für den gibt es den Tensorflow Playground. Mittels Web-Interface können hier viele Parameter (Knoten / Neuronen, Layer, Inputs, etc) variiert werden und dann ein Deep Learning Modell trainiert werden. Sehr schön ist auch die Darstellung der gewichteten Kanten visualisiert um zu sehen, welcher Knoten wie viel Einfluss auf nachfolgende Layer hat. Die Website gibtes hier: http://playground.tensorflow.org/

Video-Tutorial zur Programmierung von künstlichen neuronalen Netzen in python

Wer nun Lust hat, ein neuronales Netz mittels python umzusetzen, dem empfehlen wir folgendes sehr einfach verständliches Video-Tutorial “Create a Simple Neural Network in Python from Scratch”: 

Video-Tutorial zur Programmierung von künstlichen neuronalen Netzen in R

Wer ein Deep Learning Modell in R erstellen möchte, dem hilft das Video-Tutorial “Deep Learning with Keras & TensorFlow in R | Multilayer Perceptron for Multiclass Classification”:

Buchempfehlungen als Deep Dive zu künstlichen neuronalen Netzen

Wenn nun jemand das Bedürfnis hat, noch tiefer in das Thema künstliche neuronale Netze einzusteigen, für den gibt es drei Ansatzpunkte:

Englisch, kostenlos, Web-Ressource

Unter neuralnetworksanddeeplearning.com ist ein kostenloses Onlinebuch zu finden, das sehr ausführlich und Mathematik-lastig auf sowohl neuronale Netzwerke als auch Deep Learning als Konzepte eingeht. 

Englisch, nicht günstig, theoretisch:

Das Buch “Neural Networks and Deep Learning: A Textbook” ist eher ein mathematisches Nachschlagewerk als eine verständliche Anleitung zum Thema Deep Learning, lohnt sich aber für diejenigen, die wirklich die Algorithmen im Detail verstehen möchten.

Deutsch, günstig, praktisch:

Unsere Empfehlung ist jedoch, wie man bereits am Artikel erkennen kann, mit einer eher praktischen Version zu beginnen. Das Buch “Neuronale Netze selbst programmieren: Ein verständlicher Einstieg mit Python” erlaubt genau dies: einen einfachen, verständlichen und günstigen Einstieg in das Thema Neuronale Netze und Deep Learning.