Wenn Sie ein abstraktes Fach wie die lineare Algebra studieren, fragen Sie sich vielleicht: Warum brauchen Sie all diese Vektoren und Matrizen? Wie werden Sie all diese Inversionen, Transpositionen, Eigenvektoren und Eigenwerte für praktische Zwecke anwenden?
Wenn Sie lineare Algebra mit dem Ziel des maschinellen Lernens studieren, ist dies die Antwort für Sie.
Kurz gesagt, Sie können die lineare Algebra für maschinelles Lernen auf drei verschiedenen Ebenen verwenden:
- Anwendung eines Modells auf Daten;
- das Modell trainieren;
- Verstehen, wie es funktioniert oder warum es nicht funktioniert.

Ich gehe davon aus, dass Sie als Leser zumindest eine vage Vorstellung von linearen Algebra- Konzepten (wie Vektoren, Matrizen, deren Produkten, inversen Matrizen, Eigenvektoren und Eigenwerten) und maschinellen Lernproblemen (wie Regression, Klassifizierung und Dimensionsreduktion) haben. . Wenn nicht, ist es jetzt vielleicht ein guter Zeitpunkt, in Wikipedia darüber zu lesen oder sich sogar für ein MOOC zu diesen Themen anzumelden.
Anwendung
Was maschinelles Lernen normalerweise tut, ist das Anpassen einer Funktion , wo ist die Eingabedaten, ist eine nützliche Darstellung dieser Daten, und sind zusätzliche Parameter, von denen unsere Funktion abhängt und die gelernt werden müssen. Wenn wir diese Darstellung haben können wir es zB verwenden, um die Originaldaten zu rekonstruieren (wie beim unbeaufsichtigten Lernen) oder um einen Wert von Interesse vorherzusagen, (wie beim überwachten Lernen).
Alle von , , und sind normalerweise numerische Arrays und können zumindest als Vektoren und Matrizen gespeichert werden. Lagerung allein ist jedoch nicht wichtig. Wichtig ist, dass unsere Funktion ist oft linear, das heißt, . Beispiele für solche linearen Algorithmen sind:
- lineare Regression, wo . Es ist eine sinnvolle Grundlage für Regressionsprobleme und ein beliebtes Werkzeug zur Beantwortung von Fragen wie "tut" beeinflussen , andere Dinge gleich? "
- logistische Regression, wo . Es ist eine gute Basis für Klassifizierungsprobleme, und manchmal ist diese Basis schwer zu übertreffen.
- Hauptkomponentenanalyse, wo ist nur eine niedrigdimensionale Darstellung von hochdimensional , von denen kann mit hoher Präzision wiederhergestellt werden. Sie können sich das als Komprimierungsalgorithmus vorstellen.
- Andere PCA-ähnliche Algorithmen (Matrixzerlegungen) werden häufig in Empfehlungssystemen verwendet, um eine sehr spärliche Matrix von "welche Produkte von welchen Benutzern gekauft wurden" in kompakte und dichte Darstellungen von Benutzern und Produkten umzuwandeln, die weiter verwendet werden können, um neue vorherzusagen Transaktionen.
Andere Algorithmen, wie das neuronale Netzwerk, lernen nichtlineare Transformationen, stützen sich jedoch immer noch stark auf lineare Operationen (dh Matrix-Matrix- oder Matrix-Vektor-Multiplikation). Ein einfaches neuronales Netzwerk kann so aussehen - Es werden zwei Matrixmultiplikationen und eine nichtlineare Transformation verwendet zwischen ihnen.
Schulung
Um einen Algorithmus zu trainieren, definieren Sie normalerweise eine Verlustfunktion und versuchen, diese zu optimieren. Der Verlust selbst ist manchmal bequem in Form einer linearen Algebra zu schreiben. Zum Beispiel kann der quadratische Verlust (verwendet in der Methode der kleinsten Quadrate) als Punktprodukt geschrieben werden , wo ist der Vektor Ihrer Vorhersage, und ist die Grundwahrheit, die Sie vorhersagen wollen. Diese Darstellung ist nützlich, da wir damit Wege ableiten können, um diesen Verlust zu minimieren. Wenn Sie beispielsweise mit dieser Methode der kleinsten Quadrate eine lineare Regression verwenden, sieht Ihre optimale Lösung so aus . Viele lineare Operationen an einem Ort!
Ein weiteres Beispiel für eine lineare Lösung ist PCA, wo die Parameter von Interesse sind sind die ersten Eigenvektoren der Matrix entsprechend den größten Eigenwerten.
Wenn Sie neuronale Netze trainieren, gibt es normalerweise keine analytische Lösung für die optimalen Parameter, und Sie müssen den Gradientenabstieg verwenden. Dazu müssen Sie den Verlust anhand der Parameter differenzieren, und dabei müssen Sie die Matrizen erneut multiplizieren, denn wenn (eine zusammengesetzte Funktion) also und alle diese Derivate sind Matrizen oder Vektoren, weil und sind mehrdimensional.
Ein einfacher Gefälleabstieg ist in Ordnung, aber langsam. Sie können es beschleunigen, indem Sie Newtonsche Optimierungsmethoden anwenden. Die grundlegende Methode ist , wo und Dies sind der Vektor der ersten Ableitungen und die Matrix der zweiten Ableitungen Ihres Verlusts anhand der Parameter . Es kann jedoch instabil und / oder rechenintensiv sein, und Sie müssen möglicherweise Näherungswerte (wie L-BFGS) erstellen, die eine noch komplexere lineare Algebra für eine schnelle und kostengünstige Optimierung verwenden.
Analyse
Sie sehen, dass die lineare Algebra Ihnen hilft, Ihre Modelle anzuwenden und zu trainieren. Aber die wahre Wissenschaft (oder Magie) beginnt, wenn Ihr Modell sich weigert, gut zu trainieren oder vorherzusagen. Das Lernen kann an einem schlechten Punkt stecken bleiben oder plötzlich wild werden. Beim tiefen Lernen kommt es häufig vor, dass Gradienten verschwinden oder explodieren. Das heißt, wenn Sie den Gradienten berechnen, multiplizieren Sie viele Matrizen, und dann passieren seltsame Dinge, und Sie müssen wissen, was, warum und wie Sie ihn überwinden können. Eine Möglichkeit, das Geschehen zu überprüfen, besteht darin, die Eigenwerte der Matrizen zu verfolgen, die Sie invertieren möchten. Wenn sie nahe bei 0 liegen oder nur sehr unterschiedlich sind, kann die Inversion dieser Matrix zu instabilen Ergebnissen führen. Wenn Sie viele Matrizen mit großen Eigenwerten multiplizieren, explodiert das Produkt. Wenn diese Eigenwerte klein sind, wird das Ergebnis auf Null gesetzt.
Verschiedene Techniken wie L1 / L2-Regularisierung, Batch-Normalisierung und LSTM wurden erfunden, um diese Probleme mit Konvergenz zu bekämpfen. Wenn Sie eine dieser Techniken anwenden möchten, müssen Sie messen, ob sie für Ihr spezielles Problem sehr hilfreich sind. Und wenn Sie eine solche Technik selbst erfinden möchten, müssen Sie nachweisen, dass sie überhaupt funktioniert. Dies beinhaltet wiederum viele Manipulationen mit Vektoren, Matrizen, deren Zerlegungen usw.
Fazit
Sie können sehen, dass je tiefer Sie in maschinelles Lernen eintauchen, desto mehr lineare Algebra Sie dort sehen. Um vorab trainierte Modelle anzuwenden, müssen Sie Ihre Daten mindestens in ein Format konvertieren, das mit der linearen Algebra kompatibel ist (z. B. numpy.array
in Python). Wenn Sie einen Trainingsalgorithmus implementieren oder sogar einen neuen erfinden müssen, müssen Sie darauf vorbereitet sein, viele Matrizen zu multiplizieren, zu invertieren und zu zerlegen.
In diesem Text habe ich auf einige Konzepte verwiesen, mit denen Sie möglicherweise nicht vertraut sind. Es ist okay Dieser Artikel ermutigt Sie, nach unbekannten Wörtern zu suchen und Ihren Horizont zu erweitern.
Übrigens wäre es interessant, in den Kommentaren einige Geschichten von Ihnen zu hören, wie Sie in Ihrem eigenen Job oder Studium auf Anwendungen der linearen Algebra gestoßen sind.
PS In einem meiner Artikel habe ich argumentiert, dass man keine Mathematik lernen muss, um erfolgreich zu sein (es ist immer noch ein beliebtes Stereotyp in Russland), selbst wenn man in der IT arbeitet. Ich habe jedoch nie gesagt, dass Mathematik nutzlos ist (sonst würde ich es nicht die ganze Zeit unterrichten). Normalerweise ist es nicht der Schlüssel zum Erfolg, aber in vielen Fällen hilft es, und in einigen Fällen (wie der Entwicklung von Deep-Learning-Modellen) ist es wichtig.
PPS Warum auf Englisch ?! Nur weil ich kann. Die ursprüngliche Frage wurde in dieser Sprache gestellt und auf Englisch beantwortet. Und dann entschied er, dass die Antwort auf das Niveau eines kleinen öffentlichen Artikels gebracht werden könnte.
Warum dann Habr und nicht zum Beispiel Medium? Erstens werden hier im Gegensatz zum Medium normalerweise Formeln unterstützt. Zweitens wollte Habr selbst in internationale Märkte eintreten. Warum also nicht versuchen, hier einen englischsprachigen Inhalt zu platzieren?
Mal sehen, was passiert.