AI-United » Allgemein » Arbeitsweise eines neuronalen Netzwerkes: Algorithmen, Training, Aktivierungs- und Verlustfunktionen

Arbeitsweise eines neuronalen Netzwerkes: Algorithmen, Training, Aktivierungs- und Verlustfunktionen

Arbeitsweise eines neuronalen Netzwerkes

Unter einem neuronalen Netzwerk versteht man den Versuch, die Arbeit des menschlichen Gehirns teilweise wiederzugeben, um Mechanismen mit künstlicher Intelligenz auszuarbeiten.

Um diese Ziele zu erreichen, wird ein Trainingssatz (Datensatz) benötigt. Idealerweise besteht dieser Satz aus Beispielen mit echten Werten: Tags, Klassen, Kennzahlen.

Analysiert beispielsweise der Trainingssatz die Texttonalität, so ist die Liste von Sätzen mit jeweils entsprechenden emotionalen Bewertungen erforderlich. Bezeichnen wir Sätze als X und Tags als Y. Eine Funktion stellt die Beziehung zwischen diesen fest. Im Falle der Analyse der Texttonalität sind dies Merkmale wie Wörter, Phrasen, Satzstruktur, die den Satz negativ oder positiv tönen.

Früher wurden diese Merkmale manuell generiert, dieses Verfahren wird Feature-Engineering oder Erstellung von Merkmalen genannt. In letzten Jahren war dieser Prozess vom neuronalen Netzwerk automatisiert.

Die drei wichtigsten Bestandteile eines künstlichen neuronalen Netzwerkes sind:

  • Eingangsschicht;
  • Verborgene (rechnerische) Schichten;
  • Ausgangsschicht.

Das Training neuronaler Netzwerke läuft in zwei Etappen:

  • Direkte Propagation
  • Backpropagation

Bei der direkten Propagation wird eine Antwort vorhergesagt. Die Besonderheit der  Backpopagation besteht in der Minimierung des Fehlers zwischen der tatsächlichen Antwort und der vorhergesagten.

Direkte Propagation

Geben wir die Anfangsgewichtungen zufälligerweise an:

  • w1
  • w2

Multiplizieren wir dann die Eingabedaten mit den Gewichtungen, um die verborgen Schicht zu erstellen:

  • h1 = (x1 * w1) + (x2 * w1)
  • h2 = (x1 * w2) + (x2 * w2)
  • h3 = (x1 * w3) + (x2 * w3)

Die nichtlineare Funktion (Aktivierungsfunktion) übergibt die Ausgangsdaten aus der verborgenen Schicht, um die Netzwerkausgabe zu bekommen:

  • y_ = fn( h1 , h2, h3 )

Backpropagation

  • Der Gesamtfehler (total_error) ist die Differenz zwischen dem erwarteten Wert „y“ (aus dem Trainingssatz) und dem erhaltenen Wert „y_“ (d.h. er wird in der Phase der direkten Propagation berechnet), die die Verlustfunktion (Kostenfunktion) durchlaufen.
  • Die partielle Ableitung des Fehlers wird für jedes Gewicht berechnet. Diese partiellen Differenziale werden als Widerspiegelung des Beitrags jeder Gewichtung zum Gesamtfehler (total_loss) betrachtet.
  • In der nächsten Phase werden diese Differenziale mit einer Zahl multipliziert, die Lerngeschwindigkeit oder Lernrate (η) genannt wird.

Zum Schluss wird das Ergebnis von den entsprechenden Gewichtungen abgezogen.

Als Ergebnis bekommt man die folgenden aktualisierten Gewichtungen:

  • w1 = w1 — (η * ∂(err) / ∂(w1))
  • w2 = w2 — (η * ∂(err) / ∂(w2))
  • w3 = w3 — (η * ∂(err) / ∂(w3))

Hier ist ein Widerspruch zu beachten: Obwohl die Gewichtungen zufälligerweise angenommen und initialisiert werden, geben sie genaue Antworten. Dies hört sich nicht ganz begründet an, funktioniert aber trotzdem gut.

Die Backpropagation kann man mit Taylorreihen vergleichen: Die Endergebnisse sind gleich. Der Unterschied besteht jedoch darin, dass nicht die unendliche Reihe, sondern ihr erstes Mitglied optimiert wird.

Verschiebungen sind Gewichtungen, die den verborgenen Schichten hinzugefügt werden. Sie werden auch wie die verborgene Schicht zufälligerweise initialisiert und aktualisiert. Worin unterscheiden sie sich aber? Die Rolle der verborgenen Schicht besteht in der Bestimmung der Form der Grundfunktion in den Daten. Die Rolle der Verschiebung dagegen besteht darin, die Hauptfunktion so zu versetzen, dass sie teilweise mit der Ausgangsfunktion übereinstimmt.

Partielle Ableitungen

Teilableitungen kann man berechnen. Deshalb ist der Beitrag zum Fehler für jede Gewichtung bekannt. Die Notwendigkeit von Ableitungen ist offensichtlich. Als Beispiel kann man ein neuronales Netzwerk anführen, das versucht, die optimale Geschwindigkeit eines unbemannten Wagens zu bestimmen. Wenn der Wagen feststellt, dass er schneller oder langsamer als die erforderliche Geschwindigkeit fährt, passt das neuronale Netzwerk die Geschwindigkeit an, indem der Wagen beschleunigt oder verlangsamt wird. Was wird dabei beschleunigt / verlangsamt? Die abgeleiteten Geschwindigkeiten.

Weiter werden einige Beispiele betrachtet, um die Notwendigkeit partieller Ableitungen zu analysieren.

Beispielsweise bekommen die Kinder die Aufgaben, einen Pfeil auf ein Ziel zu werfen, indem sie auf das Zentrum zielen. Hier sind die Ergebnisse:

Wenn ein gemeinsamer Fehler gefunden wird und einfach von allen Gewichtungen abgezogen wird, werden die von jedem Kind gemachten Fehler verallgemeinert. Angenommen, ein Kind warf zu niedrig, obwohl alle Kinder darum gebeten wurden, sich anzustrengen, das Ziel zu treffen. Dies führt zu folgenden Ergebnissen:

Der Fehler einiger Kinder kann reduziert werden, der Gesamtfehler steigt aber weiter.

Wenn partielle Ableitungen gefunden werden, können die Fehler erkannt werden, die jeder Gewichtung im Einzelnen entsprechen. Wenn die Gewichtungen stichprobenweise korrigiert werden, bekommt man folgendes Ergebnis:

Hyperparameter

Das neuronale Netzwerk wird zur Automatisierung der Auswahl von Merkmalen verwendet. Einige Parameter werden jedoch manuell eingestellt.

Lerngeschwindigkeit (learning rate)

Die Lerngeschwindigkeit gehört zu den sehr wichtigen Hyperparametern. Bei niedriger Lerngeschwindigkeit erreicht das neuronale Netzwerk sogar nach dauerndem Training keine optimalen Ergebnisse. Die Ergebnisse können so dargestellt werden:

Andererseits gibt das neuronale Netzwerk bei hoher Lerngeschwindigkeit sehr schnell die Antworten. Hier sind die Ergebnisse:

Aktivierungsfunktion (activation function)

Die Aktivierungsfunktion ist eines der leistungsfähigsten Werkzeuge, da sie die Leistung beeinflusst, die neuronalen Netzwerken zugewiesen wird. Zum Teil bestimmt sie, welche Neuronen aktiviert werden, d. h. welche Informationen an nachfolgende Schichten weitergegeben werden.

Ohne Aktivierungsfunktionen verlieren tiefe Netzwerke einen großen Teil ihrer Lernfähigkeit. Da die Nichtlinearität dieser Funktionen für die Erhöhung des Freiheitsgrades verantwortlich ist, können die Probleme der hohen Dimension in niedrigeren Abmessungen verallgemeinert werden. Nachfolgend sind die Beispiele für gängige Aktivierungsfunktionen angeführt:

Verlustfunktion (loss function)

Die Verlustfunktion steht in der Mitte des neuronalen Netzwerks. Sie wird zur Berechnung des Fehlers zwischen realen und erhaltenen Antworten verwendet. Unser globales Ziel ist Minimierung dieser Fehler. Auf diese Weise wird das neuronale Netzwerk durch die Verlustfunktion diesem Ziel effektiv herangebracht.

Die Verlustfunktion misst, „wie gut“ das neuronale Netzwerk in Bezug auf diese Trainingsdaten und die erwarteten Antworten ist. Sie kann auch von Variablen wie Gewichtungen und Verschiebungen abhängig sein.

Die Verlustfunktion ist eindimensional und kein Vektor, da sie misst, wie gut das neuronale Netzwerk im Ganzen funktioniert.

Einige bekannte Verlustfunktionen sind:

  • Quadratische (mittlere quadratische Abweichung)
  • Kreuzentropie
  • Exponentiale (AdaBoost  / Adaptive Boosting)
  • Kullback-Leibler-Divergenz oder Information Gain.

Die mittlere quadratische Abweichung ist die einfachste und am häufigsten verwendete Verlustfunktion. Sie wird so eingestellt:

Es gibt zwei Bedingungen, die die Verlustfunktion in einem neuronalen Netzwerk erfüllen muss:

  • Die Verlustfunktion wird als Durchschnitt dargestellt.
  • Die Verlustfunktion hängt nicht von irgendwelchen Aktivierungswerten des neuronalen Netzwerks ab. Die Ausnahme bilden die Werte, die am Ausgang ausgegebenen werden.

Tiefe neuronale Netzwerke

Deep Learning (tiefes Lernen, tiefgehendes Lernen) bezeichnet eine Klasse von Algorithmen des maschinellen Lernens, die mit dem Ziel trainiert werden, die Daten tiefer (abstrakter) zu verstehen. Das Schema unten stellt beliebte Algorithmen der neuronalen Netzwerke von Deep Learning dar:

Einige Einzelheiten zu Deep Learning:

  • Aus vielen Verarbeitungsschichten (nichtlinear) wird zum Extrahieren und Transformieren von Merkmalen eine Kaskade verwendet, d.h. eine Pipeline als sequentiell übertragener Fluss.
  • Deep Learning basiert auf dem Erlernen von Merkmalen (Darstellung von Informationen) in den Daten ohne überwachtes Lernen. Die Funktionen einer höheren Ebene, die sich in den letzten Schichten befinden, erhält man aus den Funktionen der unteren Ebene, die sich in den Ausgangsschichten befinden.
  • Deep Learning erforscht mehrschichtige Darstellungen, die verschiedenen Abstraktionsebenen entsprechen. Diese Ebenen bilden eine Darstellungshierarchie.
Beispiel

Unten ist die Darstellung eines einschichtigen neuronalen Netzwerks:

Es sollte darauf hingewiesen werden, dass in diesem Fall nur die erste Schicht (grüne Neuronen) trainiert und einfach zum Ausgang übergeben wird.

Während im Fall des zweischichtigen neuronalen Netzwerks, unabhängig davon, wie die grüne verborgene Schicht trainiert wird, sie an die blaue verborgene Schicht übertragen wird, wo das Training weiter durchläuft:

Dementsprechend kann man folgende Schlussfolgerung ziehen: Je höher die Anzahl der verborgenen Schichten ist, desto größer sind die Trainingsmöglichkeiten des Netzwerks.

Nicht zu verwechseln mit einem breiten neuronalen Netzwerk, wo eine große Anzahl von Neuronen in einer Schicht kein tiefes Verständnis der Daten verursacht, sondern zum Erlernen einer größeren Anzahl von Merkmalen führt.

Beispiel:

Wenn man die deutsche Grammatik lernt, muss man eine Vielzahl von Begriffen kennen. In diesem Fall ist die Anwendung eines einschichtigen breiten neuronalen Netzwerkes sinnvoller als eines tiefen neuronalen Netzwerkes, das viel kleiner ist.

Aber

Beim Erlernen der Fourier-Transformation muss das neuronale Netzwerk tief sein, da es nicht so viele Begriffe gibt, die zu kennen sind, aber jeder davon ist ziemlich kompliziert und erfordert tiefes Verständnis.

Am Wichtigsten ist das Gleichgewicht

Es lohnt sich sehr, tiefe und breite neuronale Netzwerke für jede Aufgabe zu verwenden. Hier sind einige Gründe, warum dies nicht immer eine gute Idee ist:

  • Für beide Netzwerke wird eine wesentlich größere Anzahl von Daten für das Training benötigt, um die gewünschte Mindestgenauigkeit zu erreichen.
  • Für beide Netzwerke ist eine exponentielle Komplexität typisch.
  • Ein zu tiefes neuronales Netzwerk wird einen Versuch machen, die grundlegenden Vorstellungen zu vernichten. Dabei wird es aber falsche Vorhersagen machen und Pseudo-Abhängigkeiten finden, die überhaupt nicht existieren.
  • Ein zu breites neuronales Netzwerk wird versuchen, mehr Merkmale zu finden, als es gibt. So wie auch ein tiefes Netzwerk, wird es falsche Vorhersagen über die Daten machen.

Fluch der Dimensionalität

Der Fluch der Dimension ist der Begriff, der sich auf verschiedene Erscheinungen bezieht, wenn die Daten in mehrdimensionalen Räumen (oft mit Hunderten oder Tausenden von Dimensionen) analysiert und organisiert werden. In Situationen mit niedriger Dimensionalität kommt er nicht vor.

Die Grammatik der deutschen Sprache verfügt über eine hohe Anzahl von Attributen, die sie beeinflussen. Im maschinellen Lernen werden sie als Merkmale in Form eines Arrays / einer Matrix von endlicher und wesentlich kürzerer Länge als die Anzahl der bestehenden Merkmale dargestellt. Zu diesem Zweck verallgemeinern die Netzwerke diese Merkmale. Dies führt zu zwei Problemen:

  • Falsche Annahmen verursachen Verschiebungen. Hohe Verschiebung kann dazu führen, dass der Algorithmus einen wesentlichen Zusammenhang zwischen Merkmalen und Zielvariablen nicht merkt. Diese Erscheinung wird Untertraining genannt.
  • Kleine Abweichungen in der Vielzahl von Trainingsdaten steigern die Varianz, da die Merkmale ungenügend erlernt sind. Hohe Varianz verursacht das Übertraining, Fehler werden als verlässliche Information wahrgenommen.

Kompromiss

In früher Trainingsphase ist die Verschiebung groß, da die Ausgabe des Netzwerks weit vom nötigen Ergebnis ist. Und die Varianz ist wegen der zur Zeit geringen Wirkung von Daten zu klein.

Am Ende des Trainings ist die Verschiebung klein, da die Hauptfunktion in den Daten vom Netzwerk festgestellt wurde. Bei anhaltendem  Training erforscht das Netzwerk auch das Rauschen, das für diesen Datensatz typisch ist. Dies verursacht große Streuungen von Ergebnissen beim Testen auf verschiedenen Mehrheiten, da sich das Rauschen von Datensatz zu Datensatz ändert.

Tatsächlich liegen die Algorithmen mit einer großen Verschiebung in der Regel einfachen Modellen zugrunde, die nicht zum Übertraining neigen. Sie können jedoch untertrainiert werden und wichtige Gesetzmäßigkeiten oder Eigenschaften von Merkmalen nicht feststellen. Modelle mit kleiner Verschiebung und großer Varianz sind in der Regel komplizierter in Bezug auf ihre Struktur, wodurch genauere Darstellung des Trainingssatzes ermöglicht wird. Da sie viel Rauschen aus dem Trainingssatz abbilden können, sind ihre Vorhersagen trotz ihrer zusätzlichen Kompliziertheit ungenauer.

Daraus kann man schließen, dass das gleichzeitige Vorhandensein einer kleinen Verschiebung und einer kleinen Varianz in der Regel unmöglich ist.

Heutzutage gibt es viele Werkzeuge, die das Erstellen von komplizierten Modellen des maschinellen Lernens erleichtern, das Übertraining nimmt den ersten Platz ein. Wenn das Netzwerk ungenügend Informationen erhält, kommt die Verschiebung vor. Je mehr Beispiele trainiert werden, desto mehr Varianten von Abhängigkeiten und Variabilitäten entstehen in diesen Korrelationen.

Wenn Sie mehr über das Funktionieren und Training eines neuronalen Netzwerkes, seine Algorithmen und Funktionen erfahren möchten, so können Sie sich an das Team von AI-United.de per Mail oder Q&A wenden.

Quelle

AI-United-Redaktion

Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.