[PYTHON] [Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen


Dieser Artikel ist der 5. Tagesartikel von "Money Forward Adventskalender 2015". Entschuldigung für die Verspätung

Überblick

Ziel

Was nicht zu tun

Intro Ich bin der Meinung, dass die Aufregung in diesem Bereich zunimmt, da IT-Giganten wie Googe, Microsoft und IBM maschinelle Lernsysteme zu Open Source gemacht haben. Meiner Meinung nach (vielleicht Hoffnung) hat der dritte KI-Boom vor dem Winter Wurzeln geschlagen, und wir sind uns jetzt bewusst, Dienste zu schaffen, die "maschinelles Lernen nutzen, um es natürlich zu machen + zu differenzieren". Ist es nicht?

Daher habe ich die letzten Monate der Input-Aktivitäten ausschließlich der Einnahme von MOOC und dem Lesen der MLP-Reihe gewidmet.

Was ich darin fühlte, war auch in Der kürzeste Weg für berufstätige Erwachsene, die Mathematik vermieden haben, um mit dem Studium des maschinellen Lernens zu beginnen. Zumindest, wenn Sie nicht an den Umgang mit Matrizen und Vektoren gewöhnt sind, selbst wenn Sie die Matrix im Kurs leicht bedienen, ist es leicht, sich in einen Zustand zu versetzen, in dem Sie gerade arbeiten (Zitat). " Ich habe mich an der Universität auf Steuerungstechnik und Mechatronik spezialisiert, hatte also einige Hintergrundinformationen, aber ich hatte immer noch Probleme (entschuldigen Sie, weil ich eine vierjährige Lücke hatte). Ich hatte es selbst schwer, deshalb ist es schwierig für Leute in der gleichen Position oder ohne Hintergrund! Aus einer etwas höheren Perspektive möchte ich über maschinelles Lernen anhand von Vektoren und Matrizen mit Beispielen schreiben.

Warum Vektoren / Matrizen verwenden?

Es ist einfach, weil die Ausführungsgeschwindigkeit (Lerngeschwindigkeit) schnell ist. Wenn Sie keine Matrix verwenden, verwenden Sie die for-Schleife, um jede Probe zu trainieren. Wenn jedoch n> 1000 ist, sinkt die Lerngeschwindigkeit dramatisch. Dies liegt daran, dass Octave und Python, die interpretierte Sprachen sind, für jede Minute einen Overhead verursachen. Daher wird empfohlen, mit einer Matrix anstatt mit einer for-Schleife zu studieren.

Als Referenz werde ich die Leistung vorstellen, als ich versuchte, MNIST-Daten (28 x 28 Pixel) zu implementieren, um das MLP-Modell (Multilayer Perceptron) sowohl in der Matrixversion als auch in der Satzversion zu lernen.

Wie vektorisieren Sie es?

Betrachten Sie eine einfache logistische Regression. Lassen Sie uns diesmal das Minutenintegral von z und Gradient vektorisieren.

Zustand z Vektorisierung

Der Vektor z (jedes Element) vor dem Eintauchen in die Aktivierungsfunktion kann wie folgt berechnet werden. Das Obige wird zuerst mit einer for-Anweisung implementiert, aber das Ziel besteht darin, es in einer Form zu implementieren, die eine Matrix verwendet.

image

Das heißt, wir möchten z mit nur einem Befehl in die folgende Form bringen.

image

Und jede der obigen Spalten kann wie folgt transformiert werden. Bitte erkenne es als ** so etwas **.

image

Wie oben erwähnt, ist jedes Element in z das innere Produkt von Vektor x und Vektor Theta. Um dies mit x und Theta auszudrücken, ohne die for-Anweisung zu verwenden, erstellen Sie X so, als ob jeder Vektor x (Translokation) einer Zeile überlagert ist, wie unten gezeigt.

image

Dann können Sie eine einfache Formel wie die folgende erstellen.

image

Implementierung

Wenn Sie dies mit Octave / Python implementieren, können Sie eine ordentliche Form erhalten, wie unten gezeigt.

octave.m


z = X * theta;

python.py


#Mit der Methode mit numpy
np.dot(theta, X)

Beispiel 2 Gradientenvektorisierung

Um den optimalen Parameter zu finden, möchten wir einen Wert finden, der die partielle Differenzierung für jeden Parameter der Bewertungsfunktion 0 vornimmt, oder einen Parameter, der unter dem Schwellenwert liegt. Daher müssen wir die partielle Differenzierungsformel implementieren.

\frac{\partial J}{\partial \theta_j} = \frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)}) - y^{(i)}) x_{j}^{(i)}

Wenn dies vektorisiert ist

image

Um dies zu transformieren, können Sie zunächst die folgenden Regeln verwenden. Bitte erkenne es als ** so etwas **.

image

Die Matrix, in der x aufgereiht ist, ist die Transposition von X, die in die Vektorisierung von z eingeführt wurde

image

Daher können Sie ein vektorisiertes partielles Differential der Kostenfunktion wie unten gezeigt schreiben.

image

Implementierung

Ich werde es kurz wie folgt nennen.

octave.m


h = activate_function(z)
grad = 1 / m * (X'*(h-y))

python.py


h = activate_function(z)
grad = 1/m * np.dot(X.T, h-y)

Zusammenfassung

Das Obige ist die Erklärung zur Vektorisierung. Damit möchte ich die Herzen der Anfänger ergänzen. Ich habe jedoch nicht das Gefühl, einen Fehler zu machen, daher würde ich gerne Ihre Meinungen und Kommentare hören.

Bücher gelesen / Kurse belegt

Beiseite

Recommended Posts

[Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen
Eine Einführung in OpenCV für maschinelles Lernen
Eine Einführung in Python für maschinelles Lernen
Einführung in das maschinelle Lernen
Eine Einführung in das maschinelle Lernen
Super Einführung in das maschinelle Lernen
Alles für Anfänger, um maschinelles Lernen zu können
Einführung in Deep Learning (1) --Chainer wird Anfängern leicht verständlich erklärt.
Einführung in das maschinelle Lernen Schreiben von Notizen
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
Einführung in die Bibliothek für maschinelles Lernen SHOGUN
[Erklärung für Anfänger] Einführung in die Faltverarbeitung (erklärt in TensorFlow)
Einführung in das maschinelle Lernen: Funktionsweise des Modells
Erste Schritte für Anfänger des maschinellen Lernens (KI)
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 8 Einführung in Numpy
Vor der Einführung in das maschinelle Lernen. ~ Techniken, die für anderes maschinelles Lernen als maschinelles Lernen erforderlich sind ~
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 10 Einführung in Cupy
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 9 Einführung in das Scikit-Lernen
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
[Super Einführung in das maschinelle Lernen] Lernen Sie Pytorch-Tutorials
Eine Einführung in die objektorientierte Programmierung für Anfänger von Anfängern
Empfohlene Studienreihenfolge für Anfänger des maschinellen Lernens / Deep Learning
Versuchen Sie, RPN mit Python zu berechnen (für Anfänger)
Lassen Sie uns die kostenlose "Einführung in Python für maschinelles Lernen" bis zum 27. April online stellen
[Super Einführung in das maschinelle Lernen] Lernen Sie Pytorch-Tutorials
Python-Anfänger veröffentlichen Web-Apps mit maschinellem Lernen [Teil 2] Einführung in explosives Python !!
[Einführung für Anfänger] Umgang mit MySQL mit Python
Einführung in die Graph Database Neo4j in Python für Anfänger (für Mac OS X)
Ich habe versucht, die Veränderung der Schneemenge für 2 Jahre durch maschinelles Lernen vorherzusagen
Einführung in IPython (Python2) in Mac OS X-Vorbereitung für den Einstieg in die Theorie des maschinellen Lernens
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 11 und 12 Einführung in Pandas Matplotlib
Ein Memorandum über Methoden, die häufig beim maschinellen Lernen mit Scikit-Learn (für Anfänger) verwendet werden.
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Vorbereitung zum Starten von "Python Machine Learning Programming" (für macOS)
Anfänger des maschinellen Lernens versuchen, einen Entscheidungsbaum zu erstellen
Versuchen Sie, das Modell des maschinellen Lernens in das Python-Paket aufzunehmen
Cross-Entropie zur Überprüfung in Coursera Machine Learning Woche 2 Aufgaben
Einführung in das maschinelle Lernen mit Simple Perceptron
Datensatz für maschinelles Lernen
[Lernmemorandum] Einführung in vim
Japanische Vorverarbeitung für maschinelles Lernen
Lernablauf für Python-Anfänger
Wird in EDA für maschinelles Lernen verwendet
Einführung in Deep Learning ~ Lernregeln ~
Tiefe Stärkung des Lernens 1 Einführung in die Stärkung des Lernens
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
Einführung in Python For, While
Einführung in Deep Learning ~ Backpropagation ~
So passen Sie mehrere Bibliotheken für maschinelles Lernen auf einmal an
Einführung in das maschinelle Lernen mit scikit-learn-Von der Datenerfassung bis zur Parameteroptimierung
Python-Anfänger veröffentlichen Web-Apps mithilfe von maschinellem Lernen [Teil 1] Einführung
Die Verwendung von icrawler zum Sammeln von Daten zum maschinellen Lernen wurde vereinfacht
Für diejenigen, die mit TensorFlow2 maschinelles Lernen beginnen möchten
Wie nutzt man maschinelles Lernen für die Arbeit? 03_Python-Codierungsverfahren
Anfänger des maschinellen Lernens versuchen, Naive Bayes zu erreichen (2) - Implementierung
Für Anfänger, wie man mit häufigen Fehlern in Keras umgeht
Maschinelles Lernen mit Nogisaka 46 und Keyakizaka 46 Teil 1 Einführung
[Python] Einführung in die Diagrammerstellung mit Corona-Virendaten [Für Anfänger]
Versuchen Sie Q-Lernen in einem Kampf im Drakue-Stil [Einführung in die Stärkung des Lernens]