Worum es in diesem Buch geht

Neuronale Netze gehören zu den schönsten Programmierparadigmen, die je erfunden wurden. Beim herkömmlichen Ansatz der Programmierung geben wir dem Computer vor, was er tun soll: Wir teilen große Probleme in viele kleine präzise definierte Aufgaben auf, welche der Computer einfach erledigen kann. Bei einem neuronalen Netz hingegen sagen wir dem Computer nicht, wie er unser Problem lösen soll. Stattdessen lernt er aus Beobachtungsdaten und findet seine eigene Lösung für das Problem.

Automatisch aus Daten zu lernen klingt vielversprechend. Allerdings wussten wir bis 2006 nicht wie wir neuronale Netze trainieren müssen, um mit ihnen traditionelle Ansätze zu übertreffen - abgesehen von einigen Spezialproblemen. 2006 wurden Methoden zum Lernen in sogenannten "tiefen neuronalen Netzen" entwickelt. Diese Methoden sind heute als "Deep Learning" bekannt. Sie wurden weiterentwickelt und heute erreichen tiefe neuronale Netze und Deep Learning hervorragende Leistungen bei vielen wichtigen Aufgabenstellungen in der Bilderkennung, der Spracherkennung und der Verarbeitung natürlicher Sprache. Sie werden in großem Maßstab von Unternehmen wie Google, Microsoft und Meta eingesetzt.

Der Zweck dieses Buches ist, Dir dabei zu helfen die Kernkonzepte neuronaler Netze zu erlernen, einschließlich moderner Methoden des Deep Learning. Wenn Du das Buch durchgearbeitet hast, wirst Du Code geschrieben haben, der neuronale Netze und Deep Learning nutzt, um komplexe Probleme der Mustererkennung zu lösen. Und Du wirst die Grundlagen haben, um neuronale Netze und Deep Learning zur Lösung Deine eigenen Probleme zu nutzen.

Vermittlung von Kernprinzipien

Diesem Buch liegt die Überzeugung zugrunde, dass es besser ist, ein solides Grundverständnis der Kernprinzipien von neuronalen Netzen und Deep Learning zu erwerben als ein vages Verständnis einer langen Liste von Ideen. Wenn Du die Kernideen gut verstanden hast, kannst Du anderen neuen Stoff schnell erlernen.

Das bedeutet, dass dieses Buch ausdrücklich kein Tutorial ist, wie eine bestimmte Bibliothek für neuronale Netze zu verwenden ist. Wenn Du hauptsächlich lernen möchtest, eine bestimmte Bibliothek zu nutzen, dann lese nicht dieses Buch! Suche Dir eine Bibliothek, die Du lernen möchtest und arbeite Dich durch deren Tutorials und Dokumentation. Aber sei gewarnt. Diese Vorgehensweise belohnt Dich zwar mit einer sofortigen Problemlösung, aber wenn Du ein Grundverständnis erwerben möchtest, welches für viele Jahre relevant bleibt, dann reicht es nicht aus, die Nutzung einer angesagten Bibliothek zu erlernen. Du musst die bleibenden Erkenntnisse über die Funktionsweise neuronaler Netze verstehen. Technologien kommen und gehen, aber Erkenntnisse sind unvergänglich.

Praxisorientierter Zugang

Wir werden die Grundprinzipien hinter neuronalen Netzen und Deep Learning lernen, indem wir die konkrete Aufgabe angehen, einem Computer die Erkennung von handgeschriebenen Ziffern beizubringen. Diese Aufgabe lässt sich extrem schwierig mittels konventioneller Programmierung lösen. Wie wir sehen werden, kann sie ziemlich gut mit einem einfachen neuronalen Netzwerk gelöst werden - mit nur ein paar Dutzend Zeilen Code ohne spezielle Bibliotheken. Darüber hinaus werden wir das Programm in mehreren Iterationen verbessern und schrittweise immer mehr der Kernideen von neuronalen Netzen und von Deep Learning mit einbeziehen.

Dieser praxisorientierte Ansatz hat zur Folge, dass Du etwas Programmiererfahrung benötigst, um das Buch zu lesen. Aber Du musst kein professioneller Programmierer sein. Ich habe den Programmcode in Python geschrieben. Der Code sollte auch dann einfach zu verstehen sein, wenn Du nicht in Python programmierst. Michael Nielsen hat den Code ursprünglich für Version 2.7 von Python geschrieben. Er steht hier zum Download bereit. Ein an Python 3.8-3.10 angepasster Code steht hier zum Download bereit. Im Laufe des Buches werden wir eine kleine Bibliothek für neuronale Netze entwickeln. Du kannst sie nutzen, um mit ihr zu experimentieren und Dein Verständnis aufzubauen. Wenn Du das Buch durchgearbeitet hast, oder auch schon während Du es liest, kannst Du zu einer umfangreicheren Bibliothek für neuronale Netze greifen, die für den Einsatz in Produktionsumgebungen bestimmt ist.

Die mathematischen Anforderungen für die Lektüre des Buches sind bescheiden. Mathematik kommt zwar in den meisten Kapiteln vor, aber es handelt sich meist nur um elementare Algebra und die Darstellung von Funktionen. Ich gehe davon aus, dass die meisten Leser kein Problem damit haben werden. Gelegentlich setze ich fortgeschrittene Mathematik ein, aber ich habe den Stoff so strukturiert, dass Du auch dann folgen kannst, wenn Dir einige mathematische Details entgehen. Nur in Kapitel 2 wird anspruchsvolle Mathematik ausgiebig verwendet. Hier werden Multivariablenrechnung und lineare Algebra eingesetzt. Wenn Du mit der Mathematik auf dem Kriegsfuß stehst, kannst Du auch einfach zur Zusammenfassung der wichtigsten Ergebnisse des Kapitels springen. Auf jeden Fall musst Du Dir wegen der Mathematik keine Sorgen machen.

Es ist selten, dass ein Buch sowohl prinzipienorientiert als auch praxisnah sein will. Aber ich glaube, Du wirst am besten lernen, wenn wir die grundlegenden Gedanken neuronaler Netze ausarbeiten. Wir beschäftigen uns nicht nur mit abstrakter Theorie, sondern werden lebendigen Code schreiben, den Du erkunden und erweitern kannst. So wirst Du die Grundlagen verstehen lernen, sowohl in Theorie als auch in Praxis. Und Du wirst gut gerüstet sein, Dein Wissen erweitern zu können.

Inhaltsverzeichnis