In der klassischen Programmierung beschreibt der Entwickler in einer bestimmten Programmiersprache ein bestimmtes streng festgelegtes Regelwerk, das auf der Grundlage seiner Kenntnisse in einem bestimmten Fachgebiet festgelegt wurde und das in erster NÀherung die Prozesse beschreibt, die im menschlichen Gehirn bei der Lösung eines Àhnlichen Problems ablaufen.
Beispielsweise kann eine Strategie zum Spielen von Tic-Tac-Toe, Schach und mehr programmiert werden (Abbildung 1).
Abbildung 1 - Der klassische Ansatz zur Lösung von Problemen
WĂ€hrend Algorithmen fĂŒr maschinelles Lernen einen Satz von Regeln zur Lösung von Problemen ohne Beteiligung des Entwicklers definieren können, jedoch nur basierend auf der VerfĂŒgbarkeit eines Trainingsdatensatzes.
Ein Trainingssatz ist eine Art von Eingaben, die mit einer Reihe von erwarteten Ergebnissen (Antworten, Ausgaben) verbunden sind. Bei jedem Trainingsschritt optimiert und reduziert das Modell durch Ăndern des internen Zustands den Fehler zwischen der tatsĂ€chlichen Ausgabe des Modells und dem erwarteten Ergebnis (Abbildung 2).
Abbildung 2 - Maschinelles Lernen
Neuronale Netze
Lange Zeit versuchten Wissenschaftler, inspiriert von den Prozessen in unserem Gehirn, das Zentralnervensystem rĂŒckzuentwickeln und die Arbeit des menschlichen Gehirns nachzuahmen. Dank dessen wurde eine ganze Richtung im maschinellen Lernen geboren - neuronale Netze.
In Abbildung 3 sehen Sie die Ăhnlichkeiten zwischen dem Design eines biologischen Neurons und der mathematischen Darstellung eines Neurons, das beim maschinellen Lernen verwendet wird.
Abbildung 3 - Mathematische Darstellung eines Neurons
In einem biologischen Neuron empfĂ€ngt ein Neuron elektrische Signale von Dendriten und moduliert elektrische Signale mit unterschiedlichen StĂ€rken, die das Neuron bei Erreichen eines bestimmten Schwellenwerts anregen können, was wiederum zur Ăbertragung eines elektrischen Signals ĂŒber Synapsen an andere Neuronen fĂŒhrt.
Perceptron
Mathematisches Modell eines neuronalen Netzwerks, das aus einem Neuron besteht und zwei aufeinanderfolgende Operationen ausfĂŒhrt (Abbildung 4):
- berechnet die Summe der Eingangssignale unter BerĂŒcksichtigung ihrer Gewichte (LeitfĂ€higkeit oder Widerstand) der Verbindung
- wendet die Aktivierungsfunktion auf die Gesamtsumme der Eingangssignale an.

Abbildung 4 - Mathematisches Modell des Perzeptrons
Jede differenzierbare Funktion kann als Aktivierungsfunktion verwendet werden. Die am hĂ€ufigsten verwendeten sind in Tabelle 1 aufgefĂŒhrt. Die Wahl der Aktivierungsfunktion liegt auf den Schultern des Ingenieurs. Diese Wahl basiert normalerweise entweder auf den vorhandenen Erfahrungen bei der Lösung Ă€hnlicher Probleme, gut oder einfach auf der Methode Auswahl.
Die Notiz
Es gibt jedoch eine Empfehlung, dass die ReLU-Funktion am besten als Aktivierungsfunktion geeignet ist, die wÀhrend des Trainingsprozesses die besten Konvergenzraten des Modells aufweist, wenn in einem neuronalen Netzwerk NichtlinearitÀt erforderlich ist.
Tabelle 1 - Allgemeine Aktivierungsfunktionen
| Linear function | .
|
|
| Sigmoid function |
|
|
| Softmax function | ( 2) |
|
| Hyperbolic Tangent function | |
[-1, 1]. , , |
| Rectified Linear Unit (ReLU) | |
, , sigmoid tanh |
| Leaky ReLU | |
ReLU , 0 |
Perceptron-Lernprozess
Der Lernprozess besteht aus mehreren Schritten. Zur besseren Ăbersichtlichkeit betrachten wir ein bestimmtes fiktives Problem, das wir mit einem neuronalen Netzwerk lösen werden, das aus einem Neuron mit einer linearen Aktivierungsfunktion besteht (dies ist im Wesentlichen ein Perzeptron ohne Aktivierungsfunktion ĂŒberhaupt), und um die Aufgabe zu vereinfachen, schlieĂen wir den Verschiebungsknoten b im Neuron aus (Abbildung 5). ...
Abbildung 5 - Der Trainingsdatensatz und der Status des neuronalen Netzwerks im vorherigen Trainingsschritt
In dieser Phase befindet sich ein neuronales Netzwerk in einem bestimmten Status mit bestimmten Verbindungsgewichten, die in der vorherigen Trainingsphase des Modells berechnet wurden. Wenn dies die erste Iteration des Trainings ist, werden die Werte der Verbindungsgewichte in ausgewÀhlt zufÀllige Reihenfolge.
Stellen wir uns also vor, wir haben einen Satz von Trainingsdaten. Die Werte jedes Elements aus dem Satz werden durch einen Vektor von Eingabedaten (Eingabedaten) dargestellt, der 2 Parameter enthÀlt (Merkmal). ... UnterIn dem Modell kann abhÀngig von der fraglichen DomÀne alles impliziert werden: die Anzahl der RÀume im Haus, die Entfernung des Hauses vom Meer, na ja, oder wir versuchen nur, das neuronale Netzwerk der logischen Operation AND oder OR zu trainieren.
Jeder Eingabevektor im Trainingssatz wird einem erwarteten Ausgabevektor zugeordnet. In diesem Fall enthĂ€lt der Ausgabedatenvektor nur einen Parameter, der wiederum je nach ausgewĂ€hltem Themenbereich alles bedeuten kann - den Preis eines Hauses, das Ergebnis einer logischen UND- oder ODER-VerknĂŒpfung.
SCHRITT 1 - Feedforward-Prozess
In diesem Schritt berechnen wir die Summe der Eingangssignale unter BerĂŒcksichtigung des Gewichts jeder Bindung und wenden die Aktivierungsfunktion an (in unserem Fall gibt es keine Aktivierungsfunktion). Lassen Sie uns die Berechnungen fĂŒr das erste Element im Trainingssatz durchfĂŒhren:
Abbildung 6 - VorwÀrtsausbreitung des Fehlers
Beachten Sie, dass die obige Formel eine vereinfachte mathematische Gleichung fĂŒr den Spezialfall von Tensoroperationen ist.
Ein Tensor ist im Wesentlichen ein Datencontainer, der N Achsen und eine beliebige Anzahl von Elementen entlang jeder der Achsen haben kann. Die meisten Tensoren kennen sich mit Mathematik aus - Vektoren (Tensor mit einer Achse), Matrizen (Tensor mit zwei Achsen - Zeilen, Spalten).
Die Formel kann in der folgenden Form geschrieben werden, in der Sie die bekannten Matrizen (Tensoren) und ihre Multiplikation sehen und auch verstehen, welche Art von Vereinfachung oben diskutiert wurde:
SCHRITT 2 - Berechnen der Fehlerfunktion
Die Fehlerfunktion ist eine Metrik, die die Diskrepanz zwischen der erwarteten und der empfangenen Ausgabe widerspiegelt. Die folgenden Fehlerfunktionen werden hÀufig verwendet:
- Mittlerer quadratischer Fehler (MSE) - Diese Fehlerfunktion reagiert besonders empfindlich auf AusreiĂer im Trainingssatz, da sie das Quadrat der Differenz zwischen den tatsĂ€chlichen und erwarteten Werten verwendet (ein AusreiĂer ist ein Wert, der sehr weit von anderen Werten in entfernt ist Datensatz, der manchmal aufgrund von Datenfehlern auftreten kann, z. B. beim Mischen von Daten mit verschiedenen MaĂeinheiten oder schlechten Sensorwerten):
- Root Mean Square Deviation (Root MSE) - Dies entspricht zwar dem Root Mean Square Error im Kontext neuronaler Netze, kann jedoch eine reale physikalische MaĂeinheit widerspiegeln. Wenn in einem neuronalen Netz beispielsweise die Ausgabeparameter eines neuronalen Netzes der Preis eines Hauses in Dollar sind, dann die MaĂeinheit Der mittlere quadratische Fehler ist der quadratische Dollar (), und fĂŒr die Standardabweichung ist es Dollar ($), was die Aufgabe der menschlichen Analyse natĂŒrlich leicht vereinfacht:
- Die mittlere Abweichung (Mean Absolute Error, MAE) - ist im Gegensatz zu den beiden oben genannten Werten nicht so empfindlich gegenĂŒber AusreiĂern:
- Kreuzentropie - Verwendung fĂŒr Klassifizierungsaufgaben:
Wo
- die Anzahl der Kopien im Trainingssatz
- die Anzahl der Klassen bei der Lösung von Klassifizierungsproblemen
- erwarteter Ausgabewert
- der tatsÀchliche Ausgabewert des trainierten Modells
FĂŒr unseren speziellen Fall verwenden wir MSE:
SCHRITT 3 - Backpropagation
Das Ziel des Trainings des neuronalen Netzwerks ist einfach - es besteht darin, die Fehlerfunktion zu minimieren:
Eine Möglichkeit, das Minimum einer Funktion zu finden, besteht darin, die Verbindungsgewichte bei jedem nÀchsten Lernschritt - der Gradientenabstiegsmethode - in die dem Gradientenvektor entgegengesetzte Richtung zu Àndern. Dies sieht mathematisch so aus:
Wo - k-te Iteration des neuronalen Netzwerktrainings;
- Die Lernrate wird vom Ingenieur festgelegt und kann normalerweise 0,1 betragen. 0,01 (wie sich der Lernschritt auf den Lernkonvergenzprozess auswirkt, etwas spÀter beachten)
- der Gradient der Fehlerfunktion
Um den Gradienten zu finden, verwenden wir partielle Ableitungen in Bezug auf benutzerdefinierte Argumente::
In unserem speziellen Fall hat die Fehlerfunktion unter BerĂŒcksichtigung aller Vereinfachungen die Form:
Memo ĂŒber abgeleitete Formeln
,
Lassen Sie uns die folgenden partiellen Ableitungen finden:
Dann ist der Prozess der RĂŒckausbreitung des Fehlers eine Bewegung entlang des Modells von der Ausgabe zur Eingabe mit Modifikation der Modellgewichte in der dem Gradientenvektor entgegengesetzten Richtung. Einstellen des Lernschritts 0.1 (Lernrate), den wir haben (Abbildung 7):
Abbildung 7 - RĂŒckausbreitung des Fehlers
Daher haben wir k + 1 Trainingsschritte abgeschlossen, um sicherzustellen, dass der Fehler abgenommen hat und die Ausgabe des Modells mit neuen Gewichten nĂ€her an den Erwartungen liegt. Wir werden den Prozess der VorwĂ€rtsausbreitung des Fehlers entlang des Modells mit neuen Gewichten durchfĂŒhren (siehe SCHRITT 1). ::
Wie Sie sehen können, hat sich der Ausgabewert in Richtung des erwarteten Ergebnisses um eins um 0,2 Einheiten erhöht - eins (1). Der Fehler wird dann sein:
Wie Sie sehen können, betrug der Fehler im vorherigen Trainingsschritt 0,64, und mit den neuen Gewichten - 0,36 haben wir das Modell daher in die richtige Richtung angepasst.
NĂ€chster Teil des Artikels:
Maschinelles Lernen. Neuronale Netze (Teil 2): ââODER-Modellierung; XOR mit TensorFlow.js
maschinellem Lernen. Neuronale Netze (Teil 3) - Faltungsnetzwerk unter dem Mikroskop. Erkunden der Tensorflow.js-API
.