In Googles MNist-Tutorial mit TensorFlow wird eine Berechnung gezeigt, bei der ein Schritt der Multiplikation einer Matrix mit einem Vektor entspricht. Google zeigt zunächst ein Bild, in dem jede numerische Multiplikation und Addition, die für die Berechnung erforderlich wäre, vollständig ausgeschrieben ist. Als nächstes zeigen sie ein Bild, in dem es stattdessen als Matrixmultiplikation ausgedrückt wird, und behaupten, dass diese Version der Berechnung schneller ist oder zumindest sein könnte:
Wenn wir das als Gleichungen schreiben, erhalten wir:
Wir können dieses Verfahren "vektorisieren" und es in eine Matrixmultiplikation und Vektoraddition umwandeln. Dies ist hilfreich für die Recheneffizienz. (Es ist auch eine nützliche Art zu denken.)
Ich weiß, dass Gleichungen wie diese normalerweise von maschinell lernenden Praktikern im Matrixmultiplikationsformat geschrieben werden und dies natürlich unter dem Gesichtspunkt der Code-Knappheit oder des Verständnisses der Mathematik als vorteilhaft angesehen werden kann. Was ich nicht verstehe, ist Googles Behauptung, dass das Konvertieren von der Langschriftform in die Matrixform "für die Recheneffizienz hilfreich ist".
Wann, warum und wie können Leistungsverbesserungen in Software erzielt werden, indem Berechnungen als Matrixmultiplikationen ausgedrückt werden? Wenn ich als Mensch die Matrixmultiplikation im zweiten (matrixbasierten) Bild selbst berechnen würde, würde ich jede der im ersten (skalaren) Bild gezeigten unterschiedlichen Berechnungen nacheinander ausführen. Für mich sind sie nichts anderes als zwei Notationen für die gleiche Abfolge von Berechnungen. Warum ist das bei meinem Computer anders? Warum kann ein Computer die Matrixberechnung schneller ausführen als die skalare?