Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).
So funktionieren neuronale Netze | KI-Basics
Das Wichtigste aus dem Video
Tipp auf eine Zeit – das Video springt genau dorthin.
Transkriptautomatisch erstellt · 148 Zeilen
- Neuronen, also Nervenzellen, können elektrische Impulse an
- ihren Synapsen wahrnehmen. Wenn sie von diesen Impulsen genug
- gereizt werden, dann feuern sie, indem sie selbst einen Impuls erzeugen.
- Biologisch ist das ein komplexer Vorgang, aber die Grundidee lässt sich
- ziemlich leicht am Rechner simulieren. Echte Neuronen werden kontinuierlich aus
- wie schnell Impulse ankommen. Das ist aufwendig zu simulieren.
- Stattdessen kann die Simulation einfach alles in einem Schritt rechnen.
- Viele oder starke Impulse stellt sie durch größere Zahlen dar, wenige oder
- schwache durch kleinere Zahlen. Das ist viel einfacher zu berechnen.
- Unterschiedlich starke Reize werden dann einfach über die Summe aller Werte
- dargestellt, die über die Synapsen reinkommen.
- Je höher diese Summe, umso höher der Reiz.
- Synapsen sind unterschiedlich reizbar, aber auch sehr anpassungsfähig.
- Nach neuen Erfahrungen verändern sie ihre Reizbarkeit.
- Und das ist der biologische Prozess hinter dem Begriff „Lernen“.
- Die einfachste Art, diesen Prozess mathematisch zu simulieren, ist,
- wenn man jede Eingabe mit einem eigenen Wert multipliziert.
- Irrelevante Eingaben kann das Neuron dann mit einem ganz kleinen Wert wie
- zum Beispiel 0,01 multiplizieren. Ganz wichtige mit 1,8 - oder so ähnlich.
- Normalerweise würde diese Summe dann immer nur um den Nullpunkt oszillieren.
- Und um das zu vermeiden, addiert die Simulation einfach noch
- pro Neuron einen festen Wert dazu. Das ist der sogenannte „Bias“.
- Was jetzt noch fehlt, ist das Feuern. Unser Modell muss vor allem simulieren,
- dass Neuronen einfach nichts tun, wenn sie nur wenig gereizt werden.
- Und genau dafür ist jetzt die Aktivierungsfunktion zuständig.
- Der einfachste Fall von so einer Aktivierungsfunktion, der hat einen
- ziemlich fancy Namen: „Rectified Linear Unit“, kurz: „ReLU“.
- Die Funktion ist aber extrem einfach. Sie reicht die Werte einfach unverändert durch,
- außer die Eingabe wäre negativ, dann gibt sie stattdessen 0 zurück.
- Programmiert ist das einfach das Maximum aus 0 und der Eingabe x.
- Den Wert, den wir vorhin berechnet haben, - also die Profis nennen
- solche Werte oft „Logits“ - schieben wir jetzt
- noch einmal durch die ReLU. Und das war es eigentlich schon! Das ist
- im Prinzip die komplette Mathematik, die in neuronalen Netzen steckt.
- Der nächste Schritt, der jetzt kommt, der ist für Informatiker gewohnt, für
- den Rest der Welt aber ein bisschen verwirrend:
- Da wir jetzt wissen, wie wir ein einzelnes Neuron simulieren, können wir
- das Gleiche ein paar Millionen mal machen und auch die Logits von Neuronen als
- Eingaben für andere Neuronen benutzen. Und wenn ihr jetzt sagt: „Hey, Moment mal!
- Ein paar Millionen mal! Und jedes Neuron hat einen eigenen Wert,
- die dann alle miteinander multipliziert werden. - Das ist doch
- eigentlich viel zu komplex! Das versteht doch kein Mensch!“
- Dann habt ihr eigentlich so den wichtigsten Aspekt von KI verstanden.
- Es ist wirklich so komplex, dass es selbst die Entwickler nicht verstehen.
- Aber dafür gibt es dann eben einige Algorithmen, die das
- Ganze automatisch berechnen. Und die Algorithmen sind alle so
- optimiert, dass der Mensch überhaupt keinen Überblick behalten muss.
- Aber damit man trotzdem versteht, was darin eigentlich passiert und wie das
- Ganze innerhalb dieser Netze berechnet wird,
- hat sich meine Kollegin Pina mal ein Beispiel überlegt, an dem man das alles
- auch selbst nachrechnen kann. Stellt euch für mein Beispiel vor,
- dass ich Smart-Home-Sensoren habe. Einer erkennt, ob mein Fahrrad im Keller steht
- und der andere ist ein smarter Lichtschalter in meinem Zimmer.
- Es geht darum, anhand dieser Daten vorherzusagen, ob ich schlafe.
- Der Datensatz besteht aus 8 Zeilen in einer Tabelle. In der Spalte Y steht,
- was das neuronale Netz ausgeben sollte. Vom Fahrradschloss kommt ein Bit vom
- Lichtschalter ein Stromverbrauch in Watt, einer etwas größeren Zahl.
- Dass aus einem einzelnen Neuron bestehenden Netz muss lernen,
- die Eingaben in die richtige Größenordnung, - normalerweise der Bereich zwischen 0 und 1 -
- zu skalieren und logisch zu verknüpfen. Ich schlafe, wenn das Fahrrad
- da ist und das Licht aus ist. Das heißt, das Gewicht für die Synapse
- zum Lichtschalter-Stromverbrauch muss eine kleine negative Zahl sein.
- Bei nur einem Neuron kommt man mit kurzem Nachdenken auf die perfekten Werte:
- 1,0 ... 0,05 und 0 für den Bias. Man kann das aber auch programmieren.
- Eine Loss-Funktion definieren, die partielle Ableitung für alle drei Werte berechnen
- und dann in mehreren kleinen Schritten ausgehend
- von Zufallszahlen die gleichen Werte mit dem Gradientenabstiegsalgorithmus annähern.
- Diese ganzen Schritte, die Pina da jetzt einfach so dahergesagt hat:
- Dahinter steckt die große Innovation aus den 80er Jahren,
- ohne die, die KI, wie wir es hier heute kennen, eigentlich gar
- nicht möglich gewesen wäre. Das Verfahren nennt sich „Backpropagation“.
- Und damit kann man die ganzen Parameter, also sowohl von sehr kleinen als auch
- den ganz großen Netzen annähern. Wie gut so ein künstliches neuronales
- Netz mit bestehenden Parametern funktioniert, kann ein Programm
- automatisch mit einer Loss-Funktion bestimmen.
- Diese Fehlerfunktion berechnet, wie stark die Ausgabe vom
- gewünschten Wert abweicht. Oft wird dazu der ausgegebene Wert vom
- gewünschten Wert abgezogen und das Ergebnis quadriert - damit immer eine
- positive Zahl entsteht. Je größer die ist, desto schlechter sind
- die momentan gewählten Parameter. Angenommen es gäbe nur zwei
- Parameter wie ein Pinas Beispiel: Dann könnte man die
- Loss-Funktion als Fläche darstellen. Am Punkt (1, –0,05) wäre
- sie besonders klein. An Punkten in der
- Nähe schon etwas größer. Und an weit entfernten
- Punkten ziemlich groß. Die Loss-Funktionen von neuronalen Netzen
- haben immer dort ein Tal, wo die optimale Parameterkombination liegt.
- Hat man diese fabelhaften Werte gefunden, dann liegen die Berechnungen des Netzes
- und die Zielwerte der Trainingsdaten in den meisten Fällen sehr nahe beieinander.
- Also rein mathematisch funktioniert das für Tausende oder Millionen Dimensionen
- genauso wie für zwei. Nur kann man dann eben keine Diagramme
- mehr zeichnen, auf denen man was erkennen kann.
- Weil die Loss-Funktion immer runtergeht in Richtung besserer Parameter,
- kann man einen Algorithmus benutzen, um sich vom Rechner gute
- Parameter suchen zu lassen. Dazu fängt man einfach mit zufälligen
- Werten an und berechnet, in welche Richtung es runtergeht.
- Dann ändert man die Werte ein wenig in diese Richtung.
- Von diesem besseren Punkt aus macht man das Gleiche wieder für den nächsten
- Schritt und so weiter. Nach genügend Schritten kommt man bei
- ziemlich guten Parametern an. Im Grunde rechnet der Algorithmus das
- Netz dann rückwärts, um herauszufinden, welche Parameter am
- meisten dazu beitragen, dass die Loss-Funktion
- noch größer als 0 ist. Das Ganze nennt man eben „Backpropagation“,
- weil das Netz rückwärts gerechnet wird. Künstliche neuronale Netze wurden
- eigentlich sogar schon in den 50ern erfunden.
- Die waren aber überhaupt nicht effizient trainierbar, weil die Backpropagation,
- also die zentrale Technik, die heutige KIs erst möglich macht,
- wurde erst in den 80ern erfunden und erst seitdem gibt es auch
- nennenswerte Forschung zu ihnen. Und das wirklich coole an
- neuronalen Netzen ist - also diese Erkenntnis hat mich total begeistert! -
- - ist einfach, dass sie jede Art von Funktionen nachbilden können, jede Art
- von Berechnungen ausführen können! Und das wurde übrigens
- auch theoretisch bewiesen! Und mit nur zwei Neurunenschichten
- kann man im Endeffekt alle Logikgatter nachbilden.
- Es gibt unendlich viele Möglichkeiten, wie man die Neuronen
- miteinander verdrahten könnte. Manche funktionieren gut für den einen
- Datensatz, andere missarabel. Theoretisch sind neuronale Netze
- beliebige Function-Approximator, also Programme,
- die jede Berechnung - nur anhand von Daten - nachahmen können.
- Aber in der Praxis brauchen Data-Scientists - also das
- sind die KI-Informatiker - eine Menge Bauchgefühl dafür, welche
- Netzwerksstrukturen für einen Datensatz funktionieren könnten
- und welche eben nicht. Damit die Datenwissenschaftler schnell
- experimentieren können, gibt es KI-Frameworks wie
- PyTorch oder TensorFlow. Die berechnen beispielsweise
- vollautomatisch die ganzen partiellen Ableitungen und nutzen wirklich alles,
- was das System hergibt. Das heißt, die rechnen mit voller
- Hardwarebeschleunigung der Vektor-Einheiten in der
- CPU und auf der Grafikkarte! Für die allerersten Experimente müsst ihr
- aber noch nicht mal was installieren. Ihr könnt nämlich auch im Browser ein
- paar Sachen ausprobieren, was sogar ziemlich schön umgesetzt ist.
- Es gibt den „TensorFlow-Playground“, das ist eine Webseite, die zu TensorFlow,
- dem KI-Framework von Google gehört. Auf der Webseite könnt ihr so ein
- bisschen Einstellungen machen, wie viele Neuronen ihr haben
- wollt, auf mehreren Schichten und könnt mit so ganz einfachen
- Minidatensätzen dann trainieren und auch sehen, wie gut das Training geklappt hat.
- Das haben sie sehr schön umgesetzt! Was ich euch zusätzlich empfehlen kann,
- ist eine Webseite namens „Hart und Trocken“, wo es diverse Visualisierungen gibt,
- auch eine zu neuronalen Netzen. Und da könnt ihr auch die einzelnen
- Parameter genau einsehen und seht also sozusagen die Matrix an Parametern,
- aus denen das Netz dann eigentlich besteht bzw. wo die
- Intelligenz dann drin steckt. Wenn ihr dann Lust gekriegt habt, wie es
- damit weitergeht und wollt vielleicht auch mal für ein reales Problem -
- so was wie handgeschriebene Ziffern erkennen - ein Netz selber trainieren,
- dann solltet ihr vielleicht den Kanal abonnieren! Weil wir werden nämlich hier
- so eine kleine Reihe von Videos veröffentlichen,
- wo wir auf die Installation eingehen und danach auch auf den Code, wie ihr das
- selber programmiert. Und deswegen abonniert vielleicht
- einfach, wenn ihr das nicht verpassen wollt.
Zum Nachlesen
Künstliches neuronales NetzEin künstliches neuronales Netz besteht aus mehreren künstlichen Neuronen, die miteinander verbunden sind und in der Regel in Schichten organisiert werden. Im …
Künstliches NeuronEin künstliches Neuron bildet die Basis für das Modell der künstlichen neuronalen Netze, ein Modell aus der Neuroinformatik, das durch biologische neuronale …
BackpropagationFehlerrückführung bzw. Rückpropagierung ist ein verbreitetes Verfahren zum Einlernen künstlicher neuronaler Netze. Es gehört in der einfachen Form zur Gruppe …
Multi-Layer-PerzeptronDer Backpropagation-Algorithmus wird oft verwendet, um die Gewichtsaktualisierung zu berechnen. Der Backpropagation-Algorithmus nutzt das Konzept der …