Ein Podcast über KI
Johannes und Gesina, zwei Freunde aus der Forschung, unterhalten sich über Themen rund um künstliche Intelligenz.

Was ist ein neuronales Netz?

avatar
Gesina Schwalbe
avatar
Johannes Rabold

Heute soll es im Detail um die Frage gehen, was ein neuronales Netz eigentlich ist, wie es aussieht und warum sie so beliebt geworden sind, um komplexe Probleme damit zu modellieren. Außerdem sprechen wir ein paar Nachteile an und wo man anfangen kann, wenn man mal selber ein neuronales Netz basteln möchte. Vorwissen wird keines nötig.

Hausmeisterei

  • Vielen Dank an:
    • Oli, unseren Podcastpapi: Vielen Dank für die technische Unterstützung!
      Schaut doch mal bei seinem Podcast Coastercast auf coastercast.de vorbei.
    • Laura, Beepos Mami: Vielen Dank für die wunderschönen Illustrationen!
    • Alle, die uns Feedback gegeben haben!
  • Gebt uns Feedback aller Art (Kontaktinfos findet ihr auf unserer Homeage)! Was hat euch gefallen? Was stört euch?

Zusammenfassung: Ganz kurz für Beepo

  • Klassische neuronale Netze (NNs) haben wenig mit Gehirnen zu tun, sondern sind mathematische Funktionen die schon lange erforscht werden.
  • Wie bei allen Funktionen: Eine passende Modellierung des Problems als „Zahlen-rein-Zahlen-raus“ ist Voraussetzung, um das Problem mit einem NN lösen zu können.
  • NNs sind modular aufgebaut aus (vielen) kleinen, einfachen Funktionsbausteinen, den Neuronen, die miteinander verknüpft und häufig in Schichten angeordnet sind.
  • Neuronale Netze sind sehr flexibel (können viele Problem lösen), parallelisierbar und gut optimierbar und damit gut geeignet für maschinelles Lernen in komplexen Problemstellungen.
  • Natürlich haben NNs auch Nachteile: Aufgrund ihrere Größe sind ihre Entscheidungen oft schwer nachvollziehbar („black-box„) und NNs erlangen häufig nur Fähigkeiten der Mustererkennung aber kein echtes Verständnis von Randbedingungen eines Problems (z.B. physikalische Gesetzmäßigkeiten).

Ein paar Details

  • Klassische künstliche neuronale Netze (NN) haben wenig mit Gehirnen zu tun außer die Modularität. Sie sind lediglich von natürlichen Neuronen inspiriert und wurden bereits in den 1950er von Frank Rosenblatt in Form des einfachen Perzeptrons vorgestellt.
    (Das ist anders für sog. Spiking Neural Networks, die explizit echten biologischen Neuronen nachempfunden sind. Hier wird zusätzlich eine zeitliche Verzögerung beim „Feuern“ der Neuronen verwendet.)
  • Ein NN ist „nur“ eine sehr flexible Funktion, d.h. nimmt einen oder mehrere Zahlenwerte entgegen und gibt einen oder mehrere Zahlenwerte aus.
  • Anwendungen: Um ein NN anwenden zu können, muss man sein Problem so formulieren (mathematisch modellieren), dass man eine Funktion sucht, die Zahlen entgegennimmt und Zahlen zurückgibt. Z.B.
    • Eingaben: Bilder (jedes Pixel ist ein oder mehrere Zahlenwerte), Tabellarische Daten (jeder Spalteneintrag ist eine Zahl), Text (jedes Wort erhält eine eindeutige Zahlenrepräsentation), Audioaufnahmen (vgl. MP3-Format)
    • Ausgaben: z.B. bei Klassifizierung in N verschiedene Klassen wird für jede Klasse eine Zahl ausgegeben und für eine Eingabe „gedie mit dem höchsten Wert „gewinnt“ jeweils
  • Aufbau: Ähnlich wie ein Haus aus Legobausteinen ist ein NN modular aufgebaut aus einfachen kleinen Bausteinen, den Neuronen, und Verknüpfungen dazwischen.
    • Ein Neuron ist auch eine Funktion, die Zahlenwerte entgegen nimmt und einen Zahlenwert zurückgibt. Dabei ist die Reihenfolge der Zahlenwerte bei der Eingabe zumeist egal, z.B. weil sie im Neuron zuerst aufsummiert werden. Ein Neuron ist meistens nicht-linear:
    • Eine Verknüpfung zwischen Neuronen leitet die Ausgabe eines Neurons als Eingabe an ein anderes Neuron weiter. Dabei wird die Ausgabe gewichtet, d.h. mit einem Faktor (dem Gewicht) multipliziert (Intuition: Wie viel soll Neuron A zu Neuron B beitragen?). Diese Gewichte sind auch ein Teil, der angepasst (gelernt) werden kann.
    • Neuronen sind meist gruppiert in Schichten (Layer), wobei Neuronen innerhalb einer Schicht nicht miteinander verknüpft sind und daher parallel ausgewertet werden können. Schichten werden meist klassifiziert nach der Struktur der Verbindungen zur vorherigen Schicht, z.B.: Dense Layer, falls jedes Neuron als Eingabe alle Ausgaben der Vorschicht bekommt, oder Convolutional Layer, wenn jedes Neuron nur mit solchen aus demselben lokalen Bereich verknüpft sind .
    • Eingaben werden über Eingabeneuronen und Ausgaben über Ausgabeneuronen modelliert. Die Eingabeneuronen nehmen einfach den Werte der Eingabe an und leiten diese weiter (ein Neuron pro Zahl) und Ausgabeneuronen nehmen am Ende den Wert der Endausgabe an.
  • Stellschrauben:
    • Architektur: Typ & Anzahl & Verknüpfungen der Neuronen (u.a. auch Anzahl und Breite der Schichten)
    • Parameter, die gelernt werden können: Gewichte & Bias, u.U. weitere Parameter der Aktivierungsfunktion
  • Vorteilhafte Eigenschaften: NNs haben ein paar wirklich praktische Eigenschaften:
    • Flexibilität: Neuronale Netze können bei geeigneter Wahl der Architektur sehr komplexe Probleme mit Zahlen als Ein- und Ausgabe lösen. Genauer: Es ist mathematisch erwiesen, dass unter bestimmten Voraussetzungen für jedes Problem und jede gewünschte Genauigkeit theoretisch ein NN existiert, das dieses Problem mit entsprechender Genauigkeit löst (also entsprechend nah an die zugrundeliegende wahre Funktion heran kommt). Der Sammelbegriff für diese Aussagen ist Unversaler Approximationssatz.
      Aber Achtung: Das ein rein theoretisches Resultat, d.h. man weiß, dass es eine Architektur und Parameter gibt, die ein Problem lösen, aber leider nicht welche (und es können auch wirklich seeehr viele Neuronen nötig sein).
    • Parallelisierbarkeit: Alle Neuronen, die gegenseitig keine Eingabe voneinander bekommen, können parallel berechnet werden (meist in Schichten zusammengefasst).
      Das lässt sich auf spezieller Hardware, wie z.B. Grafikkarten, sehr schnell ausführen, oder sogar auf mehrere Geräte verteilen. Das gilt sowohl für das Ausführen als auch für das Training des NNs (Stichwort Federated Learning).
    • Optimierbarkeit: Die Grundoperationen sind einfach und gut erforscht. Insb. ist die Ableitung bekannt. D.h. man weiß für ein gegebenes Beispiel, in welche Richtung man die Parameter ändern muss, um für dieses Beispiel ein Stückchen besser zu werden, also näher an eine gewünschte Ausgabe heranzukommen. Die meisten Lernverfahren nutzen dies um ein NN schrittweise zu optimieren.
  • Nachteile:
    • Black-box: Neuronale Netze sind „Black-boxes„, d.h. sie sind mit teilweise mehreren Millionen Neuronen so komplex, dass man nicht mehr ohne weiteres nachvollziehen kann, aus welchen Gründen Entscheidungen getroffen werden. Mit der Frage, wie man trotzdem in NNs reingucken kann, beschäftigt sich das Forschungsfeld der erklärbaren künstlichen Intelligenz (XAI).
    • „Recognition is not understanding“ (Alan Turing?), frei übersetzt „Mustererkennung bedeutet kein Problemverständnis“. NNs sind statistischer Natur und versuchen anhand wiederkehrender Muster passende Verhaltensregeln zu finden. Allerdings erlangen sie hierbei meist kein tiefergreifendes Verständnis des Problem. Z.B. lernen NNs zur Objekterkennung häufig keine Objektpermanenz (Objekte verschwinden nicht sondern werden höchstens verdeckt).
  • Zum selber Ausprobieren:
    • Implementierung: Wer es selber ausprobieren will: Es gibt ein paar spezialisierte Software-Bibliotheken, die dabei helfen, NNs einfach und hardwareeffizient zu implementieren, z.B. Keras, Tensorflow (v.a. Python), Pytorch (Python), Caffe (C, C++), Deeplearning4j (Java).
    • Schöne interaktive Visualisierungen findet man z.B. im Tensorflow Playground oder in der Summit Visualisierung.
    • Es gibt einige Plattformen, auf denen Probleme aus der Praxis (mit Lerndaten) veröffentlicht und oft auch ein Preisgeld auf deren Lösungen ausgeschrieben wird. Dazu zählt z.B. Kaggle.

Was gibt es sonst noch

Was wir in dieser Folge (noch) nicht im Detail besprochen haben:

Weitere Links und Quellen

  • Hier geht’s zu Olis Podcast: https://www.coastercast.de/
    Und hier geht’s zu seiner Homepage mit seinen anderen Projekten: https://www.pheerai.de/
  • Ein ausführliches deutsches Tutorial zu Perzeptrons und deren Lernprozess (den wir uns in einer der nächsten Folgen nochmal genauer anschauen werden) findet ihr hier.
  • Warum mehr Layer das Training eines NNs erleichtern: Dieses Paper folgert aus näheren Untersuchungen zum Trainingsvorgang von NNs, dass mehr anstatt breiterer Schichten einen Vorteil fürs Training bringen:
    Shwartz-Ziv, Ravid, and Naftali Tishby. 2017. “Opening the Black Box of Deep Neural Networks via Information.” CoRR abs/1703.00810. http://arxiv.org/abs/1703.00810.
  • Eine sehr ausführliche und aktuelle Liste zu Frameworks für Deep Learning, also mit denen man neuronale Netze implementieren und trainieren kann. findet man auf der englischen Wikipedia.
    In dieser Folge haben wir folgende Deep Learning Frameworks erwähnt:
  • Im Tensorflow Playground kann man neuronale Netze für ganz einfache Klassifikationsproblem grafisch zusammenbauen, trainieren lassen und analysieren.
  • SUMMIT bietet eine schöne interaktive Visualisierung der Vorgänge innerhalb eines Faltungsnetzes für Bilderkennung. Das Paper dazu ist:
    Summit: Scaling Deep Learning Interpretability by Visualizing Activation and Attribution Summarizations, Fred HohmanHaekyu ParkCaleb Robinson, and Duen Horng (Polo) Chau.
    IEEE Transactions on Visualization and Computer Graphics (TVCG, Proc. VAST’19). 2020. https://fredhohman.com/papers/19-summit-vast.pdf
  • Ein Beispiel einer Plattform, auf der Wettbewerbe zu Machine Learning Problemen veröffentlicht werden, ist Kaggle.
  • Wer sehen will, wie vielfältig man Neuronen zu neuronalen Netzen zusammenbauen kann, sollte einen Blick auf diese Übersicht von Architekturen im Neural Network Zoo werfen: https://www.asimovinstitute.org/neural-network-zoo/