Neuronale Netze klingen ziemlich schick. Neural lässt Sie an Gehirne denken. Die kompliziert sind. Wenn Sie jedoch mit linearer Regression vertraut sind, verfügen Sie über die Bausteine, die Sie benötigen, um zu verstehen, was ein neuronales Netz tut.
Neuronale Netze (NNs) werden im Allgemeinen in folgende Kategorien eingeteilt: Überwachtes maschinelles Lernen (obwohl es Arten von NNs gibt, die auch ohne gekennzeichnete Daten erstaunliche Dinge leisten können #AutoEncoder). Sie nehmen eine Reihe von Eingaben (eine Reihe von Variablen, die Sie verwenden möchten, um etwas vorherzusagen) und sagen ein Ergebnis voraus.
Was ... sehr nach linearer Regression klingt.
Bei der linearen Regression nehmen wir eine oder mehrere Eingaben und sagen mithilfe der Formel eine kontinuierliche Ausgabe voraus
Wobei Y das ist, was Sie vorhersagen möchten, und das
sind Ihre Eingaben. Beispielsweise möchten wir möglicherweise anhand Ihres Alters, Ihres Geschlechts, Ihres Gehalts und Ihrer Miete vorhersagen, wie viel Geld Sie jährlich für Videospiele ausgeben.

Dann lassen wir die Regression zu lernen die Werte der Koeffizienten (das mag vielleicht albern klingen, aber bleiben Sie bei mir).
Wir nicht erzählen die Regression, was die Koeffizienten sind, stattdessen sagen wir ihr, wie es geht lernen ihnen. Im einfachen Fall bitten wir die Regression oft darum, die Methode der kleinsten Quadrate zu verwenden lernen was die optimalen Koeffizienten sind.
Im Wesentlichen geben wir der Regression a Struktur für das Modell und a Methode zum Lernen der Werte im Modell. Dann machen wir es auf den Weg zum Lernen.
Wenn wir ein neuronales Netzwerk aufbauen, wählen wir auch a Struktur und ein Methode zum Lernen, aber sie sehen oft etwas anders aus als die Struktur und Methode, die wir für die Regression verwenden.
Ein Regressionsbeispiel
STRUKTUR
Knoten. Verwendung neuronaler Netze Knoten als Behälter zur Aufbewahrung von Werten. Diese Knoten haben Verbindungen zwischen ihnen. Wenn sie grafisch gezeichnet werden, sehen sie ein bisschen aus wie ein Bündel nebeneinander gelegter Lutscher.
Die Verbindungen stellen mathematische Berechnungen dar, die auf die Werte eines Knotens angewendet werden, während diese die Verbindung verwenden, um zum nächsten zu gelangen.
Wenn wir unsere Videospiel-Regression als neuronales Netzwerk aufbauen wollten, wäre das durchaus möglich! Seine Struktur würde so aussehen:
Lagen. Unser Videospiel NN hat zwei Ebenen: eine Eingang Schicht, in der wir dem NN unsere Prädiktorvariablen Alter, Geschlecht, Gehalt und Miete sowie an geben Ausgabe Schicht, in der wir unsere Vorhersage aus dem NN erhalten.
Die Verbindungen zwischen den beiden Schichten enthalten Gewichte, wir können sie nennen M , n, p Und k , die wir auf jede Variable anwenden werden, während sie von der Eingabeebene zur Ausgabeebene wechselt. Das Alter wird also mit multipliziert M , Sex von N usw., und alle diese Produkte werden im Ausgabeknoten zusammengezählt.
Neuronale Netze fügen auch eine hinzu Voreingenommenheit (B) to auf den Wert im Ausgabeknoten. Der Bias ist nur ein Skalar (eine reguläre Zahl wie 1, -7 oder 42).
Basierend auf der von uns erstellten neuronalen Netzstruktur würde der Ausgabeknoten ein Ergebnis liefern, das auf dieser Formel basiert:
Das ist dasselbe wie die Regressionsformel, die wir oben gesehen haben.
LERNMETHODE
Wenn wir eine lineare Regression durchführen, müssen wir die Werte unserer Koeffizienten ermitteln/berechnen (b,m,n,p, Und k ), nachdem wir die Modellstruktur angegeben haben. Oft verwenden wir die Methode der kleinsten Quadrate, um unsere Koeffizienten zu ermitteln.
Kurz gesagt, die Methode der kleinsten Quadrate ermittelt die Koeffizienten, die die Summe der quadratischen Fehler zwischen der Vorhersage des Modells und den tatsächlichen Daten minimieren.
Mathematisch gesehen minimieren wir diese Funktion:
Wo
ist der tatsächliche Wert eines Datenpunkts und
ist die Vorhersage des Modells für diesen Datenpunkt.
Verlust. Wenn wir Lust hätten, könnten wir diese Funktion unsere nennen verlustfunktion . Und genau so nennt man es bei der Arbeit mit neuronalen Netzen. Verlustfunktionen liefern uns ein numerisches Maß dafür, wie Also Unser Modell tut es. Wenn der Verlust gering ist, sind die Vorhersagen ziemlich genau. Wenn es groß ist, wird es nicht so heiß. Unser Ziel beim Aufbau eines guten Modells besteht immer darin, unsere Verlustfunktion zu minimieren (und damit die Modellleistung zu maximieren).
Und während der mittlere quadratische Fehler (der ex) aus der Methode der kleinsten Quadrate) ist für viele Modelle eine gute Wahl, es gibt aber noch viele andere Möglichkeiten. Neuronale Netze können alle Arten von Strukturen haben, und unterschiedliche Daten/Strukturen könnten von anderen Arten von Verlustfunktionen profitieren.
"Lernen." Wir wissen, dass wir unsere Verlustfunktion minimieren wollen, und wir haben unsere Daten und die Struktur, die wir zum Aufbau unseres neuronalen Netzes verwendet haben, aber wir müssen die Minimierung tatsächlich *durchführen*. An diesem Punkt beginnt unser neuronales Netz von unserem Regressionsmodell abzuweichen.
In einfacheren Regressionen gibt es eine ziemlich einfache und schnelle mathematische Möglichkeit, unsere genauen Koeffizienten zu ermitteln, entweder mithilfe der linearen Algebra, der Geometrie oder der regulären Algebra. Aber neuronale Netze verfolgen einen etwas anderen Ansatz. Neuronale Netze verwenden häufig iterative Ansätze, um Werte zu finden, die die Verlustfunktion minimieren (und unser Modell optimieren). Im Wesentlichen versuchen wir, bei jedem Schritt unserer Iteration der „besten“ Antwort einen Schritt näher zu kommen.
Viele Tools und Tutorials verwenden irgendeine Form von Gradientenabstieg . Ich werde nicht viel Zeit auf die technischen Details des traditionellen Gradient Descent verwenden, da es nicht das ist, was JMP verwendet, aber die allgemeine Idee ist, dass es eines gibt Gradient der Verlustfunktion (denken Sie an eine Karte mit Bergen und Tälern), wobei höhere Punkte eine schlechtere Modellleistung und niedrigere Punkte eine gute, sogar optimale Modellleistung darstellen.
Sie können sich den Abstieg mit Gefälle als einen Wanderer vorstellen, der auf dieser Karte versucht, den tiefstmöglichen Punkt zu erreichen. Bei jedem Schritt, den sie machen, schauen sie sich um, finden heraus, in welche Richtung es am steilsten geht, und gehen in diese Richtung. Schließlich erreichen sie einen Tiefpunkt. Zurück zu unserer Wanderanalogie: Der Tiefpunkt stellt eine Reihe von Parametern dar (wie unsere Koeffizienten und Bias), bei denen die Verlustfunktion minimiert ist und unser Modell daher ziemlich gut funktioniert!
In JMP , wird eine etwas andere Technik zur Optimierung eines NN verwendet. Anstatt den typischen Gradientenabstieg zu verwenden Methoden verwendet JMP etwas namens BFGS Algorithmus (das steht nicht für B ich G F freundlich G iant S , Entschuldigung an die Roald-Dahl-Fans). Der BFGS-Algorithmus hilft dabei, iterativ Schritte zur Optimierung des Modells zu unternehmen, ähnlich wie Gradient Descent, verwendet jedoch eine andere Mathematik, um dies zu erreichen.
Anstatt zu warten, bis der Algorithmus einen endgültigen Tiefpunkt findet (eines der Täler in Ihrem Gradienten), entscheidet JMP anhand eines Validierungssatzes, dass ein Modell optimiert ist (aus diesem Grund wird JMP einen benötigen oder einen Teil davon zurückhalten). Ihre Daten werden beim Erstellen eines NN automatisch zur Validierung verwendet. Der Validierungssatz besteht aus Daten, die NICHT zur Optimierung des Modells verwendet werden.
JMP testet das aktuelle Modell anhand des Validierungssatzes. Sobald weitere „Schritte“ in Richtung des Tiefpunkts die Leistung des Modells im Validierungssatz nicht wesentlich verbessern, betrachtet JMP das Modell als optimiert. Das Testen des Modells anhand neuer Daten, die nicht zur Erstellung des Modells verwendet wurden, hilft uns zu verstehen, wie sich das von uns erstellte Modell möglicherweise bei zukünftigen Daten verhält. Diese Methode wird als „Frühes Stoppen“ bezeichnet, weil wir damit früher aufhören können, Schritte in Richtung Tiefpunkt zu unternehmen. Dadurch können wir unser Modell oft schnell optimieren.
Egal welche Methode verwendet wird: Sobald das Modell als ausreichend optimiert gilt, verfügen wir nun über alle Schätzungen für die Parameter in unserem neuronalen Netzwerk! Endlich haben wir ein funktionierendes Modell, mit dem wir etwas vorhersagen können.
Eine komplexere Struktur
Jetzt kennen Sie die Grundlagen, wie neuronale Netze funktionieren strukturiert , und wie sie lernen . Aber nicht alle neuronalen Netze müssen so aussehen wie das oben beschriebene Regressionsnetz. Neuronale Netze ermöglichen uns eine deutlich größere Flexibilität beim Aufbau ihrer Struktur.
Mehrere Schichten . Eine Sache, die wir mit neuronalen Netzen machen können, ist das Hinzufügen weiterer Schichten. In unserem Regressionsbeispiel hatten wir eine Eingabeschicht, die direkt mit unserer Ausgabeschicht verbunden war. Aber wir können eine zusätzliche Schicht dazwischen einfügen und jede Schicht mit der nächsten verbinden.
Das bedeutet, dass die Eingabedaten mehr Verbindungen (und damit mehr Berechnungen) durchlaufen, bevor sie die Ausgabeschicht erreichen. Je mehr Schichten und Verbindungen Sie haben, desto komplexer ist eine Funktion, die Sie approximieren können.
Wenn wir Modelle erstellen, tun wir dies im Wesentlichen, weil wir glauben, dass es einen Zusammenhang zwischen unseren Eingaben und unseren Ausgaben gibt. Es gibt eine mathematische Funktion, Das kann erklären, wie Sie alle Ihre Eingabewerte in Ihre Ausgabewerte umwandeln. Als würde man anhand von Alter, Geschlecht, Gehalt und Miete erraten, wie viel Geld man für Videospiele ausgibt.
Wir hoffen, dass die Modelle, die wir bauen (wir nennen es f*(x) )sind sehr nahe (oder ungefähr) f(x) . Aber f(x) könnte ein ziemlich kompliziertes Modell sein. Es könnte sein, dass es nicht einmal linear ist *keuch*! Durch die zusätzlichen Ebenen (und einige andere Tricks, über die wir gleich sprechen werden) kann das von uns erstellte Modell komplexer werden. Wenn f*(x) auch komplex ist, dann haben wir eine bessere Chance, ein Modell zu erstellen, das diesem nahe kommt f(x) .
Die Anzahl der Knoten in Ihren Eingabe- und Ausgabeschichten ist vorbestimmt. Ihre Eingabeebene verfügt über einen Knoten für jede Variable (oder jedes Merkmal, wie wir sie beim maschinellen Lernen oft nennen), und die Ausgabeebene verfügt über einen Knoten für jede Zahl, die Sie vorhersagen möchten. Wenn Sie jedoch mit dem Hinzufügen weiterer Ebenen – sogenannter ausgeblendeter Ebenen – beginnen, können Sie eine beliebige Anzahl von Knoten auswählen. An diesem Punkt in der Geschichte neuronaler Netze ist es eher eine Kunst als eine Wissenschaft. Es gibt gute Faustregeln dafür, wie viele Knoten wir für jede unserer verborgenen Schichten auswählen sollten (z. B. die Anzahl der Knoten in jeder Schicht langsam verringern), aber eine genaue Antwort gibt es nicht.
Aktivierungsfunktionen. OK, zurück zu meinem Kommentar darüber, dass einige Modelle nicht linear sind (*erneut nach Luft schnappen*). Auch neuronale Netze kommen zum Einsatz Aktivierungsfunktionen in jedem ihrer Knoten, damit die von uns erstellten Modelle nichtlinear sind.
JMP Pro bietet drei Optionen für Aktivierungsfunktionen: TanH, Linear und Gaussian. In unserem Regressionsmodell verwendeten wir „heimlich“ lineare Aktivierungsfunktionen. Aktivierungsfunktionen übernehmen die Eingabe in den Knoten und führen eine Art Transformation daran durch, bevor sie sie an die nächste Ebene weitergeben. A linear Die Aktivierung (in Rot) nimmt einen Wert an und gibt ihn unverändert zurück, was genau das ist, was wir in unserer einfachen Regression NN oben getan haben.
Aber wir müssen es nicht unverändert lassen. Der TanH Die Aktivierung (in Blau) ist eine Art der Sigmoid-Aktivierung (was bedeutet, dass ihre Funktion wie ein gestrecktes S aussieht). Dies ist nützlich, da es jede Eingabe entgegennimmt und sie einem Wert zwischen -1 und 1 zuordnet. Große negative Werte werden in Werte nahe -1 und große positive Werte nahe 1 umgewandelt. Dies ist oft sehr nützlich, wenn Ihr Modell Kategorien vorhersagt (z. B. ob jemand mit einem Kredit in Verzug gerät oder nicht) und nicht eine kontinuierliche Ausgabe.
A Gauß Die Aktivierungsfunktion (grün) nimmt Extremwerte (entweder hoch oder niedrig) an und gibt Werte nahe 0 zurück. Für weniger extreme Werte werden Werte nahe eins zurückgegeben.
Wenn wir nur lineare Aktivierungen verwenden, kann das von uns erstellte Modell nur linear sein. Wenn wir jedoch nichtlineare Aktivierungsfunktionen verwenden, können wir jetzt nichtlineare Modelle erstellen!
Mit JMP Pro können Sie neuronale Netze mit bis zu zwei Schichten erstellen und für jede Schicht unterschiedliche Aktivierungsfunktionen auswählen. Mit einer unterschiedlichen Anzahl von Schichten, Knoten und verschiedenen Aktivierungsfunktionen können wir eine große Anzahl von Strukturen für ein neuronales Netzwerk erstellen. Sie können neuronale Netze sogar verwenden, um Kategorien anstelle eines kontinuierlichen Werts vorherzusagen.
JMP
Um ein neuronales Netzwerk in JMP aufzubauen, gehen Sie zu Analysieren > Prädiktive Modellierung > Neuronal . Sobald die neuronale Plattform geöffnet ist, können Sie Ihre Ein- und Ausgänge auswählen, indem Sie sie in die X- bzw. Y-Felder ziehen.
Dadurch wird das Modellstartfenster geöffnet, in dem Sie angeben können, wie viele Knoten Sie in Ihren beiden ausgeblendeten Ebenen haben möchten und welche Arten von Aktivierungsfunktionen Sie verwenden möchten.
Sobald Sie klicken Gehen , JMP baut Ihr neuronales Netzwerk auf und erstellt eine Tabelle mit Messwerten für die Modellleistung (wie R^2 oder RMSE für kontinuierliche Ausgaben). Sie können die tatsächlichen Werte auch anhand der vorhergesagten Werte darstellen, indem Sie auf das rote Dreieck klicken und auswählen Tatsächliche Darstellung durch vorhergesagte Darstellung . Ebenso können wir unsere Restwerte darstellen, indem wir auf das rote Dreieck klicken und auswählen Plot-Residuum nach Vorhersage . Sie können auch zum Menü mit dem roten Dreieck gehen und auswählen Profiler um den Prediction Profiler zu erhalten, der Ihnen mehr darüber zeigt, was tatsächlich im neuronalen Netzwerk passiert. Keine Blackbox mehr!

Abschluss
Neuronale Netze machen viel Spaß und es klingt cool, den Leuten zu sagen, dass man eines nutzt. Aber wenn man ihre wahre Natur betrachtet, sind sie es nicht Also unterscheidet sich von der einfachen linearen Regression. In beiden Fällen müssen wir a angeben Struktur und ein Lernmethode um ein funktionierendes, optimiertes Modell zu erhalten. Neuronale Netze Tun ermöglichen es uns, komplexere Strukturen als die einfache lineare Regression zu modellieren. Daher sind sie oft nützlich, wenn wir denken, dass die Beziehung zwischen unseren Eingaben und unseren Ausgaben komplex ist.
Zusätzliche Ebenen und Aktivierungsfunktionen ermöglichen es uns, mit der Struktur unseres Netzwerks herumzuspielen, und das ist erst der Anfang! Wir können kategoriale Ergebnisse vorhersagen, mehrere kontinuierliche Ergebnisse, wir könnten fünf oder zehn Schichten haben! Es gibt noch weitere coole Funktionen, die wir auf neuronale Netze anwenden können (z. B. Dropout oder andere Aktivierungsfunktionen, die wir hier nicht behandelt haben), aber jetzt, da Sie die Grundlagen kennen, können Sie all diese Dinge etwas sicherer erkunden.