Wie man ein neuronales Netz in drei mathematischen Linien baut

Ein Code-freier Leitfaden für künstliche Intelligenz

Foto von Lukas auf Unsplash

Vor ungefähr einem Jahr habe ich diesen fantastischen Artikel von Trask gelesen.

Wenn Sie nicht auf den Link geklickt haben, tun Sie es jetzt.

Hast du? OK gut.

Hier ist die Sache - Der Artikel verlangt, dass Sie ein bisschen Python kennen, was Sie wahrscheinlich auch tun.

Ein neuronales Netzwerk in 11 Codezeilen

Wenn Sie sich nicht für Neuronale Netze interessieren (wenn dieser Satz für Sie völlig fremd ist, sehen Sie sich diese YouTube-Wiedergabeliste an) und Python noch nicht gelernt haben, herzlichen Glückwunsch, Sie sind am richtigen Ort.

Aber egal, wo Sie sich in der weiten Landschaft des tiefen Lernens befinden, ich denke, dass es von Zeit zu Zeit schön ist, zu den Grundlagen zurückzukehren und die grundlegenden mathematischen Ideen zu überdenken, die uns Siri, Alexa und endlose Stunden Netflix-Binge-up beschert haben. Aufpassen.

Foto von freestocks.org auf Unsplash

Daher präsentiere ich Ihnen ohne weitere Umstände die drei Gleichungen, die das bilden, was ich als "Grundsatz des tiefen Lernens" bezeichne.

1. Lineare Regression

Die erste Gleichung ist ziemlich einfach. Ich denke, die anderen sind es auch, aber wir werden sie zu gegebener Zeit erreichen.

Im Moment berechnen wir nur einen Vektor z (aus der obigen Gleichung), wobei W eine Matrix ist, die anfangs nur mit einer Reihe von Zufallszahlen gefüllt ist, und b ein Vektor ist, der anfangs nur mit einer Reihe von Zahlen gefüllt ist Zufallszahlen und x-Vektor, der anfänglich nicht mit einer Reihe von Zufallszahlen gefüllt ist.

x ist ein Trainingsbeispiel aus unserem Datensatz. Wenn Sie zum Beispiel ein neuronales Netz trainieren, um das Alter einer Person anhand ihres Geschlechts und ihrer Größe vorherzusagen, benötigen Sie zunächst einige (oder vorzugsweise umso mehr, je besser) Beispiele für Daten in der Form [[Größe, Geschlecht, Alter]. Der Vektor [Größe, Geschlecht] ist das, was wir als x bezeichnen.

2. Aktivierungsfunktionen

Auf der linken Seite sehen Sie unsere vorhergesagten Werte für y, die Variable, mit der ich die Bezeichnungen in unseren Daten bezeichne.

Der Hut oben bedeutet, dass dieser Wert von y ein vorhergesagter Wert ist, im Gegensatz zu den Grundwahrheitsbezeichnungen aus unserem Datensatz.

Das z in dieser Gleichung ist das gleiche, das wir oben berechnet haben. Das Sigma stellt die Sigma-Aktivierungsfunktion dar, die folgendermaßen aussieht:

Im Klartext nehmen wir also z, einen Vektor reeller Zahlen, der beliebig groß oder klein sein kann, und zerquetschen seine Komponenten auf einen Wert zwischen 0 und 1.

Eine Zahl zwischen 0 und 1 ist nützlich, da wir, wenn wir versuchen, einen Klassifikator zu erstellen, beispielsweise vorhersagen, ob es sich bei einem Bild um eine Katze oder einen Hund handelt, 1 für Hunde und 0 für Katzen stehen kann. Oder umgekehrt, wenn Sie Katzen mehr mögen.

Foto von Erik-Jan Leusink auf Unsplash

Aber nehmen wir an, wir machen keine Hunde und Katzen (ja, richtig, wie bei jedem anderen besseren Anwendungsfall für maschinelles Lernen). Kehren wir zu unserem Altersprädiktor zurück. Dort können wir nicht nur Einsen und Nullen vorhersagen.

Im Allgemeinen können Sie eine beliebige Funktion verwenden, nicht unbedingt nur ein Sigma. Aber ein Haufen kluger Leute bemerkte, dass das Sigmoid ziemlich gut funktionierte. Also bleiben wir dran.

Anders sieht es jedoch aus, wenn es sich um Bezeichnungen handelt, bei denen es sich um tatsächliche Zahlen und nicht um Klassen handelt. Für unseren Altersprädiktor müssen wir eine andere Aktivierungsfunktion verwenden.

Geben Sie ReLU ein.

Quelle: https://upload.wikimedia.org/wikipedia/commons/8/85/ReLU_and_Nonnegative_Soft_Thresholding_Functions.svg

Lassen Sie mich vorweg sagen, dass ich denke, dass dies der langweiligste Teil des tiefen Lernens ist. Ich meine im Ernst, nur eine langweilige, einfach aussehende Funktion? Wo ist der Spaß dabei?

Blicke können jedoch täuschen. Während es ziemlich langweilig ist - ReLU (x) ist nur max (0, x) - funktioniert die ReLU-Funktion in der Praxis sehr gut. Also hey, lebe damit.

3. Rückausbreitung und Gefälle

Ok, du hast mich erwischt. I habe betrogen. Es sind technisch gesehen vier Zeilen Mathematik. Aber hey, Sie könnten die Schritte 1 und 2 zu einem einzigen Schritt zusammenfassen, also schätze ich, dass ich als Sieger hervorgehe.

Nun, um all das (wörtliche) griechische Zeug zu verdauen.

In der ersten Gleichung werden y und y-hat auf diese Art und Weise eine einzelne Zahl berechnet, die als Verlust bezeichnet wird und mit L bezeichnet wird.

Wie der Name schon sagt, misst der Verlust, wie schwer wir in unserem bösartigen Kampf um die Eroberung des Grimoires des maschinellen Lernens verloren haben.

Foto von Karly Santiago auf Unsplash

Insbesondere misst unser L hier etwas, das als binärer Kreuzentropieverlust bezeichnet wird. Dies ist eine Abkürzung für das Klingen, als hätten Sie einen mathematischen Doktortitel. wenn Sie tatsächlich nur messen, wie weit y von y-hat entfernt ist. Dennoch gibt es unter der Oberfläche der Gleichung noch viel mehr. Lesen Sie den Artikel von Daniel Godoy zu diesem Thema.

Alles, was Sie wissen müssen, um die Intuition hinter diesem Zeug zu bekommen, ist, dass L groß wird, wenn unsere vorhergesagten Werte weit von den Grundwahrheitswerten entfernt sind, und L winzig wird, wenn unsere Vorhersagen und die Realität übereinstimmen.

Die Summe ist da, damit wir für jedes der Trainingsbeispiele das gesamte Durcheinander addieren können, damit unser neuronales Netz versteht, wie durcheinander es insgesamt ist.

Nun beginnt der eigentliche „Lernteil“ des Tiefenlernens.

Foto von Ben White auf Unsplash

Der letzte Schritt in unserem Stapel besteht darin, die Matrix W und den Vektor b so zu aktualisieren, dass unser Verlust abnimmt. Auf diese Weise minimieren wir effektiv, wie weit die Vorhersagen von den Grundwahrheitswerten entfernt sind, und auf diese Weise wird unser Modell genauer.

Hier ist noch einmal die Gleichung:

W ’ist die Matrix mit aktualisierten Zahlen, die uns der Grundwahrheit näher bringt. Alpha ist eine Konstante, die wir wählen können. Der letzte Begriff, den Sie betrachten, ist der Gradient des Verlusts in Bezug auf einen Parameter. Einfach ausgedrückt ist es ein Maß für die großen Verluständerungen bei einer kleinen Änderung der Zahlen in der W-Matrix.

Auch hier werde ich nicht zu ausführlich auf den Gradientenabstieg eingehen (den Prozess der Aktualisierung unserer Zahlen in der Matrix), da zu diesem Thema bereits viele großartige Ressourcen zur Verfügung stehen. Ich kann diesen Artikel von Sebastian Ruder nur wärmstens empfehlen.

Übrigens können wir dasselbe für die anfänglich zufälligen Werte im b-Vektor tun. Just Tweak sie um die richtige Menge in die richtige Richtung, und BOOM! Wir nähern uns einem so niedrigen Verlust wie nie zuvor.

Fazit

Und da hast du es. Die drei großen Gleichungen, die die Grundlagen der neuronalen Netze bilden, die wir heute verwenden.

Halten Sie inne und überlegen Sie eine Sekunde. Was Sie gerade gesehen haben, ist eine Zusammenstellung des Verständnisses der Menschheit für die Feinheiten der Intelligenz.

Sicher, dies ist ein ziemlich grundlegendes neuronales Vanillenetz, das wir uns gerade angesehen haben, und es gab im Laufe der Jahre unzählige Verbesserungen bei den Lernalgorithmen, die zu bedeutenden Durchbrüchen geführt haben. In Verbindung mit der beispiellosen Explosion von Daten und Rechenleistung im Laufe der Jahre scheint es bis zu einem gewissen Grad fast unvermeidlich, dass durchdachte Mathematik die subtile Kunst der Unterscheidung von Katzen und Hunden erfassen kann.

Aber dennoch. Hier hat alles begonnen.

In gewisser Weise liegt das Herz und die Seele des (wohl) bedeutendsten technischen Fortschritts dieses Jahrzehnts direkt vor Ihren Augen. Also nimm dir eine Sekunde. Anhalten und nachdenken.

Quelle: https://pbs.twimg.com/media/C1hNo_KUcAAJDQ9.jpg:large