Maschinelles Lernen. Neuronale Netze (Teil 1): Der Perceptron-Lernprozess

Ich möchte im Voraus darauf hinweisen, dass diejenigen, die wissen, wie das Perzeptron lernt, in diesem Artikel kaum etwas Neues finden werden. Sie können es sicher ĂŒberspringen. Warum ich mich dazu entschlossen habe - Ich möchte eine Reihe von Artikeln ĂŒber neuronale Netze und die Verwendung von TensorFlow.js schreiben, daher konnte ich allgemeine theoretische AuszĂŒge nicht auslassen. Deshalb bitte ich Sie, die endgĂŒltige Idee mit großer Geduld und VerstĂ€ndnis zu behandeln.



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

    sum= X→TW→+B→=∑i=1nxiwi+b

  • wendet die Aktivierungsfunktion auf die Gesamtsumme der Eingangssignale an.

    out=φ(sum)







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

φ(x)=x

.

Sigmoid function

φ(x)=11+e−x



Softmax function

φ(xj)=exj∑iexi

φ([1.20.90.4])=[0.460.340.20]



( 2)

Hyperbolic Tangent function

φ(x)=ex−e−xex−e−x





[-1, 1]. , ,

Rectified Linear Unit (ReLU)

φ(x)=max(0,x)





, , sigmoid tanh

Leaky ReLU

φ(x)=max(0.01x,x)





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). x1,x2... Unterx1,x2In 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:

ypredicted=∑i=1nxiwi=1⋅0.1+0.5⋅0.2=0.2







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:



Y→predicted= X→TW→=[x1x2]T⋅[w1w2]=[x1x2]⋅[w1w2]=[x1w1+x2w2]





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):

L=1N∑i=1N(ypredicted(i)−yexpected(i))2



- 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 ($2), und fĂŒr die Standardabweichung ist es Dollar ($), was die Aufgabe der menschlichen Analyse natĂŒrlich leicht vereinfacht:



L=1N∑i=1N(ypredicted(i)−yexpected(i))2



- Die mittlere Abweichung (Mean Absolute Error, MAE) - ist im Gegensatz zu den beiden oben genannten Werten nicht so empfindlich gegenĂŒber Ausreißern:

L=1N∑i=1N|ypredicted(i)−yexpected(i)|



- Kreuzentropie - Verwendung fĂŒr Klassifizierungsaufgaben:

L=−∑i=1N∑j=1Myexpected(ij)log⁡(ypredicted(ij))



Wo

N - die Anzahl der Kopien im Trainingssatz

M - die Anzahl der Klassen bei der Lösung von Klassifizierungsproblemen

yexpected - erwarteter Ausgabewert

ypredicted- der tatsÀchliche Ausgabewert des trainierten Modells



FĂŒr unseren speziellen Fall verwenden wir MSE:

L=1N∑i=1N(ypredicted(i)−yexpected(i))2=(0.2−1)2=0.64





SCHRITT 3 - Backpropagation

Das Ziel des Trainings des neuronalen Netzwerks ist einfach - es besteht darin, die Fehlerfunktion zu minimieren:

L→min



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:

w→(k+1)=w→k−Ό∇L(w→k)



Wo k - 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)

∇L- der Gradient der Fehlerfunktion

Um den Gradienten zu finden, verwenden wir partielle Ableitungen in Bezug auf benutzerdefinierte Argumentew1,w2::

∇L(w→)=[∂L∂w1⋼∂L∂wN]



In unserem speziellen Fall hat die Fehlerfunktion unter BerĂŒcksichtigung aller Vereinfachungen die Form:

L(w1,w2)=(ypredicted−yexpected)2=(x1w1+x2w2−yexpected)2=

=(1⋅w1+0.5⋅w2−1)2



Memo ĂŒber abgeleitete Formeln
,

ddxc=0;c=const

ddx[cf(x)]=cfâ€Č(x); c=const

ddxxn=nxn−1

ddx[f(x)±g(x)]=fâ€Č(x)±gâ€Č(x)

ddx[f(x)g(x)]=fâ€Č(x)g(x)+gâ€Č(x)f(x)

ddxf(g(x))=fâ€Č(g(x))gâ€Č(x)





Lassen Sie uns die folgenden partiellen Ableitungen finden:

∂∂w1(w1+0.5w2−1)2=2⋅(w1+0.5w2−1)∂∂w1(w1+0.5w2−1)=

=2⋅(w1+0.5w2−1)⋅1=2(0.1+0.5⋅0.2−1)=−1.6



∂∂w2(w1+0.5w2−1)2=2⋅(w1+0.5w2−1)∂∂w2(w1+0.5w2−1)=

=2⋅(w1+0.5w2−1)⋅0.5=2(0.1+0.5⋅0.2−1)⋅0.5=−0.8





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):

w1(k+1)=w1(k)−Ό∂L(w1,w2)∂w1=0.1−0.1⋅(−1.6)=0.26



w2(k+1)=w2(k)−Ό∂L(w1,w2)∂w2=0.2−0.1⋅(−0.8)=0.28





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). ::

ypredicted=x1w1+x2w2=1⋅0.26+0.5⋅0.28=0.4



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:

L=(0.4−1)2=0.36



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



All Articles