das Deep Learning

Abgeschlossen

Hinweis

Weitere Details finden Sie auf der Registerkarte "Text und Bilder ".

Deep Learning ist eine fortgeschrittene Form des maschinellen Lernens, die versucht, die Art und Weise zu emulieren, wie das menschliche Gehirn lernt. Der Schlüssel zum Deep Learning ist die Schaffung eines künstlichen neuralen Netzwerks , das elektrochemische Aktivität in biologischen Neuronen mithilfe mathematischer Funktionen simuliert, wie hier gezeigt.

Biologisches neurales Netzwerk Künstliches neurales Netzwerk
Diagramm eines natürlichen neuralen Netzwerks. Diagramm eines künstlichen neuralen Netzwerks.
Neuronen feuern als Reaktion auf elektrochemische Reize. Wenn es ausgelöst wird, wird das Signal an verbundene Neuronen übergeben. Jedes Neuron ist eine Funktion, die auf einem Eingabewert (x) und einer Gewichtung (w) arbeitet. Die Funktion wird in eine Aktivierungsfunktion eingeschlossen, die bestimmt, ob die Ausgabe übergeben werden soll.

Künstliche neurale Netzwerke bestehen aus mehreren Neuronenschichten - im Wesentlichen definieren eine tief geschachtelte Funktion. Diese Architektur ist der Grund, warum die Technik als Deep Learning bezeichnet wird und die modelle, die von ihr produziert werden, werden häufig als deep neural networks (DNNs) bezeichnet. Sie können tiefe neurale Netzwerke für viele Arten von Machine Learning-Problemen verwenden, einschließlich Regression und Klassifizierung sowie speziellere Modelle für die Verarbeitung natürlicher Sprachen und Computervision.

Genau wie andere in diesem Modul beschriebene Maschinelle Lerntechniken umfasst Deep Learning die Anpassung von Schulungsdaten an eine Funktion, die eine Bezeichnung (y) basierend auf dem Wert eines oder mehrerer Features (x) vorhersagen kann. Die Funktion (f(x)) ist die äußere Schicht einer geschachtelten Funktion, in der jede Ebene des neuralen Netzwerks Funktionen kapselt, die mit x und den mit ihnen verbundenen Gewichtungswerten (w) arbeiten. Der Algorithmus, der zum Trainieren des Modells verwendet wird, umfasst das iterative Durchleiten der Merkmalswerte (x) in den Trainingsdaten durch die Schichten, um Ausgabewerte für ŷ zu berechnen. Anschließend wird das Modell validiert, um zu bewerten, wie weit die berechneten ŷ-Werte von den bekannten y-Werten abweichen, was den Grad des Fehlers oder Verlusts im Modell quantifiziert. Danach werden die Gewichte (w) angepasst, um den Verlust zu verringern. Das trainierte Modell enthält die endgültigen Gewichtungswerte, die zu den genauesten Vorhersagen führen.

Beispiel: Verwenden von Deep Learning zur Klassifizierung

Um besser zu verstehen, wie ein deep neurales Netzwerkmodell funktioniert, untersuchen wir ein Beispiel, in dem ein neurales Netzwerk verwendet wird, um ein Klassifizierungsmodell für Pinguinarten zu definieren.

Diagramm eines neuralen Netzwerks, das zum Klassifizieren einer Pinguinart verwendet wird.

Die Merkmalsdaten (x) bestehen aus einigen Messungen eines Pinguins. Dabei handelt es sich um die folgenden Maße:

  • Die Schnabellänge des Pinguins
  • Die Schnabeltiefe des Pinguins
  • Die Länge der Flipper des Pinguins.
  • Das Gewicht des Pinguins

In diesem Fall ist x ein Vektor von vier Werten oder mathematisch x=[x1,x2,x3,x4].

Die vorherzusagende Bezeichnung (y) ist die Art des Pinguins. Drei Arten sind möglich:

  • Adeliepinguin
  • Eselspinguin
  • Kinnriemen

Dies ist ein Beispiel für ein Klassifizierungsproblem, bei dem das Machine Learning-Modell die wahrscheinlichste Klasse vorhersagen muss, zu der eine Beobachtung gehört. Ein Klassifizierungsmodell erreicht dies durch Vorhersagen eines Labels, das aus der Wahrscheinlichkeit für jede Klasse besteht. Mit anderen Worten, y ist ein Vektor von drei Wahrscheinlichkeitswerten; eine für jede der möglichen Klassen: [P(y=0|x), P(y=1|x), P(y=2|x)].

Der Prozess zum Ableiten einer vorhergesagten Pinguinklasse mit diesem Netzwerk lautet:

  1. Der Featurevektor für eine Pinguinbeobachtung wird in die Eingabeschicht des neuralen Netzwerks eingespeist, die aus einem Neuron für jeden x-Wert besteht. In diesem Beispiel wird der folgende x-Vektor als Eingabe verwendet: [37.3, 16.8, 19.2, 30.0]
  2. Die Funktionen für die erste Ebene von Neuronen berechnen jeweils eine gewichtete Summe, indem der x-Wert und die w-Gewichtung kombiniert werden, und übergeben Sie sie an eine Aktivierungsfunktion, die bestimmt, ob sie den Schwellenwert erfüllt, der an die nächste Ebene übergeben werden soll.
  3. Jedes Neuron in einer Ebene ist mit allen Neuronen in der nächsten Ebene verbunden (eine Architektur, die manchmal als vollständig verbundenes Netzwerk bezeichnet wird), sodass die Ergebnisse jeder Ebene über das Netzwerk weitergeleitet werden, bis sie die Ausgabeschicht erreichen.
  4. Die Ausgabeebene erzeugt einen Vektor von Werten; in diesem Fall unter Verwendung einer Softmax - oder ähnlichen Funktion zur Berechnung der Wahrscheinlichkeitsverteilung für die drei möglichen Pinguinklassen. In diesem Beispiel lautet der Ausgabevektor: [0,2, 0,7, 0,1]
  5. Die Elemente des Vektors stellen die Wahrscheinlichkeiten für die Klassen 0, 1 und 2 dar. Der zweite Wert ist der höchste, sodass das Modell voraussagt, dass die Art des Pinguins 1 (Gentoo) ist.

Wie lernt ein neurales Netzwerk?

Die Gewichtungen in einem neuralen Netzwerk sind zentral für die Berechnung vorhergesagter Werte für Bezeichnungen. Während des Schulungsvorgangs lernt das Modell die Gewichte, die zu den genauesten Vorhersagen führen. Sehen wir uns den Schulungsprozess etwas ausführlicher an, um zu verstehen, wie dieses Lernen stattfindet.

Diagramm eines neuralen Netzwerks, das trainiert, ausgewertet und optimiert wird.

  1. Die Schulungs- und Validierungsdatensätze werden definiert, und die Schulungsfeatures werden in die Eingabeebene eingespeist.
  2. Die Neuronen in jeder Schicht des Netzwerks wenden ihre Gewichtungen (die anfänglich zufällig zugewiesen werden) an und lassen die Daten durch das Netzwerk laufen.
  3. Die Ausgabeebene erzeugt einen Vektor, der die berechneten Werte für ŷ enthält. Beispielsweise kann eine Ausgabe für eine Vorhersage für die Pinguin-Klasse [0,3, 0,1, 0,6] lauten.
  4. Eine Verlustfunktion wird verwendet, um die vorhergesagten ŷ Werte mit den bekannten y-Werten zu vergleichen und die Differenz zu aggregieren (die als Verlust bezeichnet wird). Wenn beispielsweise die bekannte Klasse für den Fall, der die Ausgabe im vorherigen Schritt zurückgegeben hat, Chinstrap ist, sollte der y-Wert[0,0, 0,0, 1,0] sein. Der absolute Unterschied zwischen diesem und dem Vektor ŷ ist [0,3, 0,1, 0,4]. Tatsächlich berechnet die Verlustfunktion die Aggregatabweichung für mehrere Fälle und fasst sie als einzelner Verlustwert zusammen.
  5. Da das gesamte Netzwerk im Wesentlichen eine große geschachtelte Funktion ist, kann eine Optimierungsfunktion differenzielle Calculus verwenden, um den Einfluss der einzelnen Gewichte im Netzwerk auf den Verlust zu bewerten und zu bestimmen, wie sie (nach oben oder unten) angepasst werden können, um die Gesamtverlustmenge zu reduzieren. Die spezifische Optimierungsmethode kann variieren, umfasst jedoch in der Regel einen Gradientenabstieg, bei dem alle Gewichte erhöht oder verringert werden, um den Verlust zu minimieren.
  6. Die Änderungen an den Gewichtungen werden auf die Ebenen im Netzwerk zurückpropagiert , wobei die zuvor verwendeten Werte ersetzt werden.
  7. Der Prozess wird über mehrere Iterationen (als Epochen bezeichnet) wiederholt, bis der Verlust minimiert wird und das Modell korrekt vorhergesagt wird.

Hinweis

Obwohl es einfacher ist, sich jeden Fall in den Schulungsdaten zu überlegen, die jeweils über das Netzwerk übergeben werden, werden die Daten tatsächlich in Matrizen zusammengefasst und mithilfe linearer algebraischer Berechnungen verarbeitet. Aus diesem Grund werden neurale Netzwerkschulungen am besten auf Computern mit grafischen Verarbeitungseinheiten (GPUs) durchgeführt, die für die Vektor- und Matrixmanipulation optimiert sind.