Dieser Artikel ist der 5. Tagesartikel von "Money Forward Adventskalender 2015". Entschuldigung für die Verspätung
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.
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.
Betrachten Sie eine einfache logistische Regression. Lassen Sie uns diesmal das Minutenintegral von z und Gradient vektorisieren.
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.
Das heißt, wir möchten z mit nur einem Befehl in die folgende Form bringen.
Und jede der obigen Spalten kann wie folgt transformiert werden. Bitte erkenne es als ** so etwas **.
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.
Dann können Sie eine einfache Formel wie die folgende erstellen.
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)
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.
Wenn dies vektorisiert ist
Um dies zu transformieren, können Sie zunächst die folgenden Regeln verwenden. Bitte erkenne es als ** so etwas **.
Die Matrix, in der x aufgereiht ist, ist die Transposition von X, die in die Vektorisierung von z eingeführt wurde
Daher können Sie ein vektorisiertes partielles Differential der Kostenfunktion wie unten gezeigt schreiben.
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)
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.
Recommended Posts