.
Чтение книги онлайн.
Читать онлайн книгу - страница 20
Matrizenrechnung
Um unser System auf mehrere Variablen zu erweitern, brauchen wir zwei Matrizenoperationen. Ich möchte die Einführung dieser Operationen nicht auf den Zeitpunkt verschieden, an dem wir schon mit der Programmierung genug zu tun haben, sondern hier einige Seiten einschalten, um diese Hürde aus dem Weg zu räumen.
Eine Matrix ist ein zweidimensionales Arrays. Beispielsweise zeigt die folgende Abbildung eine (4, 3)-Matrix mit vier Zeilen und drei Spalten:
Die beiden Operationen, mit denen wir uns hier beschäftigen, sind die Matrizenmultiplikation und die Transposition. Beide sind im Machine Learning allgegenwärtig und verdienen daher jeweils ihren eigenen Abschnitt.
Mathematischer Hintergrund: Lineare Algebra
Matrizenoperationen wie die Matrizenmultiplikation und die Transposition gehören zu einem Teilgebiet der Mathematik, das als lineare Algebra bezeichnet wird. Wenn Sie mehr darüber erfahren wollen, schauen Sie sich die Lektionen der Khan Academy an.1
Matrizen multiplizieren
Haben Sie sich jemals gefragt, warum für ML gewöhnlich große Anlagen mit vielen Grafikprozessoren verwendet werden? Das liegt daran, dass ML-Systeme den Großteil der Zeit mit einer einzigen Operation beschäftigt sind, die sich auf Grafikprozessoren besonders schnell ausführen lässt, nämlich mit der Multiplikation großer Matrizen.
Die »goldene Regel« der Matrizenmultiplikation lautet: Zwei Matrizen können genau dann miteinander multipliziert werden, wenn die Anzahl der Zeilen in der zweiten Matrix gleich der Anzahl der Spalten in der ersten ist.
M1 ist eine (4, 3)-Matrix und M2 eine (3, 2)-Matrix. Laut der obigen Regel können wir sie also miteinander multiplizieren. Doch was steckt hinter dieser Regel? Um diese Frage zu beantworten, schreiben wir die Operation wie folgt:
Wenn die inneren Dimensionen gleich sind – wie in diesem Fall –, ist die Multiplikation zulässig. Das Ergebnis ist dann eine Matrix mit den äußeren Dimensionen, hier also (4, 2):
Schauen wir uns das an einigen konkreten Beispielen genauer an. Der einfachste Fall ist dabei eine Matrix mit einer einzigen Zeile, die mit einer Matrix mit einer einzigen Spalte multipliziert wird:
Als Erstes prüfen wir wieder, ob die Multiplikation zulässig ist. Wir haben hier eine (1, 3)- und eine (3, 1)-Matrix, und nach unserer goldenen Regel ist die Multiplikation (1, 3)·(3, 1) zulässig und ergibt eine (1, 1)-Matrix, also eine Matrix mit nur einem Element.
Um dieses eine Element zu berechnen, multiplizieren wir jedes Element von M1 mit dem korrespondierenden Element von M2, also das erste mit dem ersten, das zweite mit dem zweiten usw., und addieren schließlich die einzelnen Produkte:
2 * 2.5 + 3 * 4 + 5 * 1 = 22
Die Multiplikation sieht also wie folgt aus:
Vielleicht ist Ihnen schon die Ähnlichkeit zwischen dieser Multiplikation und der Formel am Ende des Abschnitts »Noch mehr Dimensionen« auf Seite 58 aufgefallen. Diese Ähnlichkeit ist natürlich kein Zufall. Wenn wir uns hinreichend mit der Matrizenmultiplikation beschäftigt haben, werden wir sie zur Implementierung unseres Modells mit linearer Regression verwenden.
Was aber müssen wir tun, wenn die Matrizen mehrere Zeilen und Spalten aufweisen? In diesem Fall gehen wir im Prinzip genauso vor wie im ersten Beispiel, multiplizieren aber jede Zeile der ersten Matrix mit jeder Spalte der zweiten. Jedes Element (i, j) der resultierenden Matrix enthält das Produkt von Zeile i von M1 und Spalte j von M2:
M3[i][j] = i-te_Zeile_von_M1 · j-te_Spalte_von_M2
Konkret sieht das wie folgt aus:
Prüfen wir das anhand eines der Elemente von M3 nach, z. B. M3[0][1]. Dieses Element hat den Wert 40. Nach unserer Rechenregel muss M3[0][1] gleich dem Produkt von Zeile 0 von M1 und Spalte 1 von M2 sein:
Das Produkt dieser Zeile mit dieser Spalte ist wie erwartet 2 * -3 + 3 * 12 + 5 * 2 = 40. Auf die gleiche Weise können Sie auch alle anderen Elemente von M3 überprüfen.
Anders als bei der regulären Multiplikation kommt es bei der Matrizenmultiplikation auf die Reihenfolge an. Wenn wir die beiden Matrizen vertauschen, erhalten wir im Allgemeinen ein anderes Ergebnis; in den meisten Fällen ist die Multiplikation dann nicht einmal mehr zulässig. In unserem Beispiel können wir M2 nicht mit M1 multiplizieren, da bei (3, 2)·(4, 3) die inneren Dimensionen ungleich sind.
In diesem Buch kommen sehr viele Matrizenmultiplikationen vor, allerdings werden wir sie nicht selbst ausrechnen, sondern dazu NumPy heranziehen. Es erleichtert die Sache jedoch, wenn Sie sich die goldene Regel merken: Die inneren Dimensionen müssen bei der Matrizenmultiplikation identisch sein, und die äußeren sind die Dimensionen der resultierenden Matrix. In unserem Beispiel haben wir (4, 3)·(3, 2) gerechnet und als Ergebnis eine (4, 2)-Matrix erhalten.
Das war es auch schon zum Thema Matrizenmultiplikation. Wenden wir uns nun der Transposition zu.
Matrizen transponieren
Im Vergleich zur Matrizenmultiplikation ist die Transposition einfach. Dabei spiegeln Sie die Matrix lediglich an der Diagonale, die von oben links nach unten rechts verläuft. In der folgenden Abbildung wird dies durch die verschiedenen Farbschattierungen der einzelnen Zellen deutlich gemacht:
Beim Transponieren einer Matrix werden aus den Zeilendaten Spaltendaten und umgekehrt. Die Dimensionen der Matrix werden vertauscht. In dem vorstehenden Beispiel wird aus der (4, 3)-Matrix durch Transponieren eine (3, 4)-Matrix.
Jetzt wissen Sie, wie die Matrizenmultiplikation und die Transposition funktionieren. Beide Operationen werden wir in Kürze benötigen. Kehren wir nun aber wieder zu unserem Code zurück.
Das ML-Programm erweitern
Nach diesem mathematischen Exkurs kommen wir wieder zu unserer praktischen Arbeit zurück. Wir möchten unser ML-Programm so erweitern, dass es mit mehreren Eingabevariablen umgehen kann. Um den Überblick zu behalten, stellen wir zunächst einen Plan dafür auf:
Erstens müssen wir die mehrdimensionalen