Maschinelles Lernen und neuronale Netze - Seite 28

 

Vorlesung 26. Struktur neuronaler Netze für Deep Learning



26. Struktur neuronaler Netze für Deep Learning

Dieses Video behandelt die Struktur neuronaler Netze für Deep Learning. Das Ziel besteht darin, Daten binär zu klassifizieren, indem ein neuronales Netzwerk mit Merkmalsvektoren konstruiert wird, die m Merkmale aufweisen, wodurch eine Lernfunktion erstellt wird, die Daten als eine von zwei Kategorien klassifizieren kann. Nichtlinearität ist beim Erstellen dieser Funktionen unerlässlich, da lineare Klassifikatoren nicht in der Lage sind, nichtlineare Daten zu trennen. Das Video erörtert auch die Bedeutung der Anzahl von Gewichtungen und Schichten im neuronalen Netz und stellt Ressourcen wie den TensorFlow Playground bereit, mit denen Benutzer das Erstellen von Funktionen üben können. Schließlich diskutiert das Video die Rekursion, die verwendet wird, um die Formel für die Anzahl der flachen Stücke zu beweisen, die durch das Schneiden eines Kuchens erhalten werden, und wie sie sich auf das Optimierungsproblem der Minimierung des Gesamtverlusts beim Deep Learning bezieht.

  • 00:00:00 In diesem Abschnitt stellt der Professor die zentrale Struktur tiefer neuronaler Netze vor, nämlich die Konstruktion der Lernfunktion f, die die Trainingsdaten lernt und auf die Testdaten angewendet werden kann. Das Ziel besteht darin, Daten binär zu klassifizieren, indem ein neuronales Netzwerk mit Merkmalsvektoren konstruiert wird, die m Merkmale aufweisen. Das Netzwerk wird eine Lernfunktion erstellen, die Daten in eine von zwei Kategorien klassifizieren kann, z. B. Junge oder Mädchen, Katze oder Hund oder Lastwagen oder Auto. Der Professor erwähnt auch, dass diese Struktur seit Monaten auf der Datenseite Mascot mit.edu/learning verfügbar ist und der Stellar-Plattform hinzugefügt wird.

  • 00:05:00 In diesem Abschnitt erklärt der Dozent, wie man eine Funktion f von X erstellt, die die richtige Antwort für die Zwei-Klassen-Klassifizierung zurückgibt. Der Dozent gibt an, dass die Funktion für die Klassifikation minus eins negativ und für die Klassifikation plus eins positiv sein soll. Der Dozent räumt jedoch ein, dass wir nicht jede Probe richtig machen müssen, da es zu einer Überanpassung kommen kann, und die Regel, die wir entdecken, sollte fast alle Fälle abdecken, aber nicht jeden "seltsamen" Fall. Der Dozent empfiehlt dann den Besuch der Website playground.tensorflow.org, wo ein einfaches Modellproblem Einzelpersonen dabei helfen kann, etwas über Deep Learning zu lernen. Der Spielplatz bietet vier Beispiele, und eines davon besteht darin, eine Funktion zu finden, die in einigen Punkten positiv und in anderen Punkten negativ ist.

  • 00:10:00 In diesem Abschnitt erörtert der Redner die Bedeutung der Nichtlinearität in neuronalen Netzen und weist darauf hin, dass es bei Verwendung linearer Klassifikatoren wie Support Vector Machines nicht möglich wäre, eine nichtlineare Funktion zu erstellen, die dies könnte trennen Sie die Daten. Dann zeigt er ein Beispiel für ein 2D-Klassifizierungsproblem mit einer Spirale, bei der das System versucht, eine Funktion zu finden, die auf der einen Spirale positiv und auf der anderen Spirale negativ ist, und das dauert ziemlich lange, viele Epochen. Der Referent erklärt auch, was eine Epoche ist und erwähnt den Unterschied zwischen Mini-Batches mit Ersatz und Mini-Batches ohne Ersatz im stochastischen Gradientenabstieg.

  • 00:15:00 In diesem Abschnitt diskutiert der Redner eine Website namens TensorFlow's Playground, die es Benutzern ermöglicht, eine Funktion f von X mithilfe einer nichtlinearen Funktion zu erstellen. Die Website zeichnet den Nullsatz für die Funktion, der die positiven und negativen Sätze trennt, wobei die Null dazwischen liegt. Die Website ermöglicht es Benutzern, die Anzahl der Schichten und Neuronen in jeder Schicht zu bestimmen, da diese wesentlich sind, um eine Funktion f zu finden, die die Daten lernt. Der Referent weist auch auf die Bedeutung linearer Funktionen in diesem Prozess hin und bittet um Empfehlungen für gute Convolutional Neural Net-Websites zum Üben. Die Funktion f hat die Form eines Vektors von X mit fünf Komponenten, Schicht eins mit sechs Neuronen und einer Ausgabeschicht mit einer Zahl.

  • 00:20:00 In diesem Abschnitt diskutiert der Referent die Struktur neuronaler Netze für Deep Learning. Sie beginnen mit der Erläuterung der Grundstruktur eines neuronalen Netzes, das eine Matrix von Gewichten zur Berechnung der Ausgabe Y beinhaltet. Der Prozess wird jedoch komplexer, wenn mehrere Schichten für Deep Learning hinzugefügt werden. Jede Schicht soll mehr über die Daten erfahren, wobei die erste Schicht grundlegende Fakten lernt und jede nachfolgende Schicht mehr Details lernt. Abschließend erörtert der Redner, wie das neuronale Netz eine Feinkarte beinhaltet und eine Funktion auf jede Komponente anwendet, um die endgültige Ausgabe zu erhalten.

  • 00:25:00 In diesem Abschnitt diskutiert der Referent die Struktur neuronaler Netze beim Deep Learning. Sie erklären, dass neuronale Netze aus einer Lernfunktion bestehen, die von den Gewichten und Eingaben abhängt, die durch eine Kette von Funktionen oder eine Zusammensetzung von Funktionen erstellt wird, die jeweils aus einer linearen oder affinen Karte, gefolgt von einer nichtlinearen Funktion, bestehen. Dies führt zu einer komplexen Funktion, die kontinuierlich und stückweise linear ist. Der Sprecher merkt an, dass eine solche Funktion auf zu erstellenden Matrizen und Vektoren angewiesen ist und von der Anzahl der Gewichtungen im Modell abhängt.

  • 00:30:00 In diesem Abschnitt spricht der Referent über die Struktur neuronaler Netze für Deep Learning, insbesondere die Idee einer „Kette“ linearer Funktionen gefolgt von ReLu-Funktionen. Sie diskutieren die Frage, ob auf diese Weise irgendeine Funktion erhalten werden kann, und kommen zu dem Schluss, dass nur stetige, stückweise lineare Funktionen möglich sind. Der Referent verwendet auch das Konzept des Origami, um den Graphen einer stückweise linearen Funktion in zwei Variablen zu visualisieren, die aus flachen Stücken besteht, die entlang gerader Kanten verbunden sind. Als Visualisierungshilfe wird die Frage nach dem Stückzählen gestellt.

  • 00:35:00 In diesem Abschnitt geht der Referent auf das Problem ein, wie viele flache Teile man durch Faltung einer Ebene mit n Faltungen erhalten kann. Dieses Problem ist wesentlich, um die Freiheit der Funktion f zu verstehen und ob sie sich jeder stetigen Funktion annähern kann, indem sie genügend Falten nimmt. Der Sprecher merkt an, dass die Antwort ja ist und diese Klasse von Funktionen universell ist. Darüber hinaus berührt der Abschnitt die Bedeutung des Verständnisses dieses Konzepts im breiteren Bereich der Informatik, insbesondere in neuronalen Netzen.

  • 00:40:00 In diesem Abschnitt diskutiert der Sprecher ein mathematisches Problem, bei dem es um die Anzahl der flachen Stücke in einem gefalteten Blatt Papier geht. Sie fragen, wie viele Teile entstehen würden, wenn sie das Papier öfter falten würden, und versuchen, eine Rekursionsformel zu entwickeln, um das Problem zu lösen. Der Sprecher stellt die bisher gefundenen Zahlen vor und erklärt, dass er eine Formel für die Anzahl der flachen Stücke in einem n-fach gefalteten Blatt Papier mit einer m-dimensionalen Oberfläche finden muss. Sie planen dann, die rekursive Formel zu ergänzen, sobald sie sie gefunden haben.

  • 00:45:00 In diesem Abschnitt verwendet der Sprecher ein visuelles Beispiel, um die Formel für die Anzahl der Teile zu erklären, die durch Schnitte in höherdimensionalen Räumen entstehen. Unter Verwendung von Binomialzahlen kann die Formel auf jede gegebene M- und N-Dimension angewendet werden. Der Sprecher gibt ein Beispiel, in dem N gleich 3 und M gleich 2 ist, um zu zeigen, wie die Formel anzuwenden ist. Schließlich wird die Formel als R von dargestellt, das M Dimensionen umfasst, die Binomialzahlen entsprechen, und 0 bis M.

  • 00:50:00 In diesem Abschnitt diskutiert der Sprecher die Rekursion, die beim Beweis der Formel für flache Stücke verwendet wird, die beim Schneiden eines Kuchens entstehen. Sie erklären, dass die Zahl, nach der sie suchen, die vorherige Anzahl der flachen Stücke plus die Anzahl der geschnittenen Stücke ist. Die Rekursionsregel wird in Abschnitt 7.1 der Arbeit von Kleinberg und anderen bewiesen. Der nächste Schritt nach dem Finden dieser Funktionsfamilie besteht darin, die A's und die Gewichte auszuwählen. Dies führt zu einem Problem bei der Minimierung des Gesamtverlusts, das durch Gradientenabstieg und Backpropagation gelöst werden kann.
 

Vorlesung 27. Backpropagation: Finde partielle Ableitungen



27. Backpropagation: Finde partielle Ableitungen

Dieses Video behandelt verschiedene Themen im Zusammenhang mit Backpropagation und der Suche nach partiellen Ableitungen. Der Referent demonstriert die Anwendung der Kettenregel für partielle Ableitungen und betont die Bedeutung der Rechenreihenfolge bei der Matrizenmultiplikation. Backpropagation wird als effizienter Algorithmus zur Berechnung von Gradienten hervorgehoben, und verschiedene Beispiele werden gegeben, um seine Wirksamkeit zu demonstrieren. Die Konvergenz des stochastischen Gradientenabstiegs wird kurz diskutiert, zusammen mit einer Projektidee, die sich auf die Verwendung einer zufälligen Reihenfolge von Verlustfunktionsabtastwerten beim stochastischen Gradientenabstieg bezieht. Insgesamt bietet das Video einen umfassenden Überblick über Backpropagation und seine Anwendungen.

  • 00:00:00 In diesem Abschnitt diskutiert der Sprecher zwei interessante Themen. Zunächst wird die Konvergenz des stochastischen Gradientenabstiegs diskutiert, wobei der Fokus mehr auf der Logik und den Annahmen des Algorithmus als auf dem Beweis selbst liegt. Zweitens schlägt der Referent eine Projektidee vor, die sich auf die Verwendung einer zufälligen Reihenfolge von Verlustfunktionsproben im stochastischen Gradientenabstieg bezieht. Insbesondere würde das Projekt die Berechnung der Mittelwerte einer Liste von 100 Zufallszahlen umfassen, wobei sowohl Ersetzungs- als auch Nichtersetzungsmethoden verwendet werden, um den Unterschied im Ansatz zu bestimmen.

  • 00:05:00 In diesem Abschnitt erörtert der Redner die Rückwärtsausbreitung als Methode zur Berechnung des Gradienten in Steilste-Abstieg-Algorithmen. Die Rückwärtsausbreitung ist die Schlüsselberechnung, die neuronale Netze populär gemacht hat, und beinhaltet die schnelle Berechnung von Gradienten und Ableitungen unter Verwendung der automatischen Differenzierung im Rückwärtsmodus. Der Redner schlägt auch vor, Beispiele für die Konvergenz des Durchschnitts zu untersuchen, wenn Ersetzungen vorgenommen werden, sowie den guten Start und das schlechte Ende für den stochastischen Gradientenabstieg, wobei das Zauberwort in Berechnungen frühes Stoppen ist.

  • 00:10:00 In diesem Abschnitt erörtert der Sprecher die Backpropagation und ihre Verwendung zum Auffinden partieller Ableitungen. Backpropagation wurde zuvor unter dem Namen automatische Differenzierung untersucht, und der Sprecher schreibt dem führenden Unternehmen in der Entwicklung tiefer neuronaler Netze die Erkenntnis seiner Wirksamkeit zu. Der Referent liefert ein einfaches Beispiel einer Funktion, um die Berechnung von f(x) und der Ableitungen zu veranschaulichen, und betont die Verwendung der Kettenregel zum Auffinden partieller Ableitungen. Der Abschnitt erwähnt auch einen Blog von Christopher Olah, der klare Erklärungen zum Thema liefert.

  • 00:15:00 In diesem Abschnitt erörtert der Moderator die Berechnung partieller Ableitungen unter Verwendung der Kettenregel. Sie verwenden ein Funktionsbeispiel mit zwei Variablen, um zu demonstrieren, wie die partiellen Ableitungen der Funktion berechnet werden, beginnend mit der Ermittlung von F und der Erstellung eines Rechendiagramms. Sie erklären, dass man zur Anwendung der Kettenregel jeden der bei der Berechnung von F gefundenen Faktoren differenzieren und angemessen bewerten muss. Dieses Berechnungsdiagramm wird verwendet, um die Berechnung partieller Ableitungen für Deep Learning zu demonstrieren, für die viele Variablen ausgewertet werden.

  • 00:20:00 In diesem Abschnitt erörtert der Redner den Prozess zum Auffinden partieller Ableitungen unter Verwendung der automatischen Differenzierung im Vorwärtsmodus. Sie beginnen damit, die partielle Ableitung von F DX zu berechnen, die Berechnung in einfache Teile zu zerlegen und Zwischenschritte durch Ableitungen zu ersetzen. Sie nutzen die Tatsache, dass die Kubik-Ableitung von X in Bezug auf X 3X zum Quadrat ist, was einen Wert von 12 ergibt, wenn X gleich 2 ist. Sie erkennen dann, dass die Vorwärtsmethode verschwenderisch ist, da sie einen weiteren Graphen für die Y-Ableitung erstellen müssen sowie. Der Sprecher verwendet auch die Produktregel, um die partielle Ableitung des Produkts zu finden. Der Prozess erfordert ein wenig Organisation, aber der springende Punkt ist, die Berechnung in einfache Teile zu zerlegen, um die Ableitungen zu vereinfachen.

  • 00:25:00 In diesem Abschnitt erklärt der Referent, wie die Produktregel verwendet wird, um partielle Ableitungen mithilfe eines Rechengraphen zu finden. Der Sprecher verwendet das Beispiel, die X-Ableitung eines Produkts zu finden, und ordnet den beiden Begriffen im Produkt Namen zu. Anschließend berechnet er die für die Produktregel benötigten Werte und verwendet sie zur Berechnung der Ableitung. Er bemüht sich jedoch, die endgültige Antwort zu finden, und gibt zu, dass er die Berechnung wiederholen müsste, wenn er den FD finden möchte. Der Sprecher schlägt vor, dass die Verwendung des Rückwärtsmodus effizienter wäre, da er die gleichzeitige Berechnung beider partieller Ableitungen ermöglicht.

  • 00:30:00 In diesem Abschnitt spricht der Sprecher darüber, wie die Backpropagation-Technik es ermöglicht, Gradienten effizient zu berechnen, indem alle Pfade rückwärts verfolgt werden. Diese Technik hilft, alle Ableitungen durch die Kettenregel zu finden, die auf einige bereits im Detail ausgearbeitete angewendet wird. Der Referent merkt an, dass Kalkül nach einem Rückblick auf das, was tatsächlich getan wurde, dazu neigt, einfach zu erscheinen. Der Reverse-Mode-Ad-Ansatz wird verwendet, um n erste Ableitungen mit nur dem vier- oder fünffachen Aufwand zu berechnen, was laut dem Sprecher erstaunlich ist. Der Referent gibt auch ein Beispiel dafür, wie die Reihenfolge, in der Berechnungen durchgeführt werden, einen Unterschied in Bezug auf die Effizienz machen kann, am Beispiel der Multiplikation zweier Matrizen.

  • 00:35:00 In diesem Abschnitt des Videos erörtert der Sprecher die Bedeutung der Reihenfolge der Berechnungen bei der Matrizenmultiplikation, da sie die Geschwindigkeit der Berechnungen erheblich beeinflussen kann. Dann fährt er mit einem Beispiel für Backpropagation fort und demonstriert, wie man die Kettenregel und verschiedene andere Ableitungsregeln verwendet, um partielle Ableitungen zu finden, während man rückwärts durch einen Rechengraphen geht. Er hebt die Tatsache hervor, dass durch die Wiederverwendung der Teile in der Kette ohne erhebliche Kosten eine breitere Kette erstellt werden kann, was zu schnelleren Berechnungen führt, selbst wenn die Funktion von Hunderten von Variablen abhängt.

  • 00:40:00 In diesem Abschnitt des Videos erklärt der Sprecher, wie man Backpropagation verwendet, um partielle Ableitungen zu finden. Sie demonstrieren ein Beispiel, in dem sie mithilfe der Kettenregel partielle Ableitungen in Bezug auf X und Y finden, und betonen, dass die Backpropagation es ermöglicht, alle Ableitungen aus einer Kette zu finden, anstatt separate Ketten für jede Variable. Der Referent weist darauf hin, dass dieser Prozess auf ein System beliebiger Größe angewendet werden kann, und erwähnt kurz die Konvergenz des stochastischen Gradientenabstiegs, die er in zukünftigen Vorträgen behandeln wird.

  • 00:45:00 In diesem Abschnitt erläutert der Sprecher zwei verschiedene Möglichkeiten, drei Matrizen - A, B und C - zu multiplizieren, und die Anzahl der dafür erforderlichen Operationen. Der erste Weg beinhaltet die Multiplikation von A mit BC, was M x N x PQ Operationen kostet, wobei P und Q die Anzahl der Zeilen und Spalten von B bzw. C sind. Der zweite Weg besteht darin, AB mit C zu multiplizieren, was M x P x Q Operationen kostet. Der Referent betont, dass es wichtig ist, bei der Multiplikation von Matrizen auf die Anzahl der erforderlichen Operationen zu achten, insbesondere wenn C ein Spaltenvektor ist, da dies möglicherweise zu sehr großen und schwer zu handhabenden Matrizen führen kann.

  • 00:50:00 In diesem Abschnitt erörtert der Sprecher partielle Ableitungen und Backpropagation. Der Referent demonstriert, dass Backpropagation die richtige Reihenfolge für partielle Ableitungen ist, da es die Multiplikation zweier großer Matrizen und das Erhalten eines Spaltenvektors ermöglicht, was viel schneller ist, als einen Spaltenvektor mit einer Matrix zu multiplizieren, um einen neuen Spaltenvektor zu erhalten und diesen dann zu multiplizieren durch eine andere Matrix, um einen anderen Spaltenvektor zu erhalten. Backpropagation vereinfacht den Prozess und ermöglicht um Größenordnungen schnellere Berechnungen.
 

Vorlesung 30: Vervollständigung einer Rang-Eins-Matrix, Zirkulanten!



Vorlesung 30: Vervollständigung einer Rang-Eins-Matrix, Zirkulanten!

In Vorlesung 30 geht der Dozent auf die Vervollständigung einer Rang-Eins-Matrix und zirkulanter Matrizen ein. Sie beginnen mit einer 2x2-Determinante und verwenden diese, um einzugrenzen, welche Werte in eine Matrix eingetragen werden können, um ihr Rang eins zu geben. Der Dozent geht dann auf ein kombinatorisches Problem für eine 4x4-Matrix ein und stellt zirkulante Matrizen vor, die zyklische Muster aufweisen, die mit nur vier gegebenen Zahlen erstellt werden können. Die Vorlesung behandelt auch zyklische Faltung, Eigenwerte und Eigenvektoren zirkulanter Matrizen, die in der Signalverarbeitung wichtig sind.

  • 00:00:00 In diesem Abschnitt gibt der Dozent eine Beispielfrage aus einer früheren Laborsitzung zum Vervollständigen einer Matrix zu einer Rang-Eins-Matrix. Die Frage konzentriert sich darauf, welche Positionen ausgefüllt werden können und welche nicht, um eine Rang-Eins-Matrix zu erreichen. Der Dozent erklärt, wie man Nicht-Null-Zahlen auswählt und stellt eine Frage, ob es möglich ist, eine Matrix mit fünf Nicht-Null-Zahlen zu einer Rang-Eins-Matrix zu vervollständigen.

  • 00:05:00 In diesem Abschnitt behandelt der Dozent das Ausfüllen einer Rang-Eins-Matrix und Zirkulanten. Sie beginnen mit der Untersuchung einer 2x2-Determinante, bei der alle zwei mal zwei den Rang 1 haben müssen und daher eine Determinante von 0 haben. Sie verwenden diese Idee, um einzugrenzen, was die fehlende Zahl in einer Matrix wäre und wie der Rest zu ergänzen ist der Werte. Der Dozent geht dann zu einem 4x4-Beispiel über und führt ein kombinatorisches Problem ein, um zu bestimmen, welche 5 Positionen funktionieren und welche nicht. Schließlich sprechen sie über Zirkulanten, die zyklische Muster in der Matrix aufweisen, bei denen jede Zeile zur vorherigen Zeile wird, die um ein Element nach rechts verschoben ist. Sie erklären, wie man zirkulante Matrizen und ihre Eigenschaften, einschließlich Diagonalisierung, erstellt.

  • 00:10:00 In diesem Abschnitt behandelt der Dozent die Vervollständigung einer Rang-Eins-Matrix und bipartiter Graphen. Sie beginnen damit, einige Zahlen in einer 4x4-Matrix vorzuschreiben und ein zweiteiliges Diagramm mit Zeilen und Spalten zu zeichnen, um die Verbindungen zwischen den Zahlen darzustellen. Der Dozent erklärt, dass zum Vervollständigen der Matrix auf Rang eins ein 2x2-Quadrat vermieden werden muss, in dem drei Einträge angegeben wurden. Wenn alle vier Einträge gegeben sind, kann keine Nulldeterminante gebildet werden und die Matrix hat keinen Rang eins. Der Dozent wandelt den bipartiten Graphen in eine Matrixdarstellung um, um zu veranschaulichen, wie bestimmt werden kann, welche Einträge ausgefüllt werden können, um eine Rang-Eins-Matrix zu erstellen.

  • 00:15:00 In diesem Abschnitt bespricht der Professor das Vervollständigen einer Rang-Eins-Matrix und geht insbesondere darauf ein, ob es immer möglich ist, sie zu vervollständigen, wenn keine 2x2s im Weg sind. Er demonstriert mit Beispielen, dass zwei mal zwei nicht immer das Problem sind und dass es längere Zyklen geben könnte, die die Fertigstellung behindern würden. Der Schlüssel zum Mitnehmen ist, dass eine Matrix nur dann auf Rang eins vervollständigt werden kann, wenn es keine Zyklen gibt, die im entsprechenden bipartiten Diagramm identifiziert werden können.

  • 00:20:00 In diesem Abschnitt bespricht der Dozent das Vervollständigen eines Zyklus mit sechs Kanten und wie es mit der Idee von Zyklen in Matrizen zusammenhängt. Er wandelt ein gezeichnetes Bild eines Zyklus in eine Matrix um und erklärt, wie Zyklen in Matrizen zeigen, dass bestimmte Anforderungen von Werten ungleich Null erfüllt werden müssen. Er stellt eine Frage zum Vervollständigen einer Rang-2-Matrix und diskutiert die Bedeutung von Faltungen beim maschinellen Lernen.

  • 00:25:00 In diesem Abschnitt stellt der Dozent das Konzept der Zirkulantenmatrizen vor, bei denen es sich um eine spezielle Art von Faltungsmatrizen handelt, die konstante Diagonalen haben, die umkreisen, um vervollständigt zu werden. Kreismatrizen sind ein wesentlicher Bestandteil der Signalverarbeitung, und ihre algebraischen Eigenschaften machen sie zu einer effizienten Möglichkeit, eine Reihe von Gewichten zu verbinden. Denn die Schlüsselmatrix dabei ist die zyklische Verschiebungsmatrix, die hilft, die zirkulante Matrix aus P und P² zu erzeugen. Durch die Angabe der ersten Spalte einer umlaufenden Matrix kann MATLAB beispielsweise alle anderen Spalten zyklisch verschieben lassen, was bedeutet, dass wir nur vier Zahlen benötigen, um eine vier mal vier umlaufende Matrix zu definieren.

  • 00:30:00 In diesem Abschnitt der Vorlesung wird das Konzept der zirkulierenden Matrizen eingeführt. Es wird gezeigt, dass jede zirkulierende Matrix ein Polynom in P ist, wobei P eine einzelne Verschiebung darstellt. Es ist auch bewiesen, dass, wenn zwei Matrizen zirkulant sind, ihre Multiplikation zu einer anderen zirkulanten Matrix führt. Außerdem ist die Identitätsmatrix zirkulant, und wenn eine zirkulante Matrix quadriert wird, ist die resultierende Matrix ebenfalls zirkulant. Das Ziel bei der Multiplikation zirkulanter Matrizen ist sicherzustellen, dass der Polynomgrad die gewünschte Anzahl von Gliedern nicht überschreitet.

  • 00:35:00 In diesem Abschnitt behandelt der Dozent Rang-Eins-Matrizen und Zirkulanten. Beim Multiplizieren einer 4x4-Kreisverschiebungsmatrix mit Grad drei stellt sich die Frage, warum das Produkt nicht Grad sechs ist. Der Schlüssel ist, dass das P zum vierten Term wirklich ein P zum 0-Term ist, also ist das Produkt eine zyklische Faltung. Anschließend erklärt der Dozent den Unterschied zwischen Faltung und zyklischer Faltung am Beispiel einer Faltungsrechnung zwischen zwei Vektoren. Er erinnert die Zuschauer auch daran, dass die nicht-zyklische Faltung kein Kreissymbol verwendet, während die zyklische Faltung dies tut.

  • 00:40:00 In diesem Abschnitt diskutiert der Dozent die zyklische Faltung und wie sie verwendet werden kann, um Polynome zyklisch zu multiplizieren, was der Multiplikation zirkulanter Matrizen entspricht. Die Summe der Ziffern eines Faktors multipliziert die Summe der Ziffern des anderen Faktors, um die Summe der Ziffern in der Faltung zu erhalten. Der Dozent geht auch kurz auf die Eigenwerte und Eigenvektoren dieser Matrizen ein. Der Vektor aller Einsen ist ein Eigenvektor mit einem Eigenwert, und dieser hat eine Polynomsumme von Potenzen von P. Die Vorlesung schließt mit einer Diskussion fortgeschrittenerer Themen auf dem Gebiet.

  • 00:45:00 In diesem Abschnitt der Vorlesung erklärt der Referent, dass die Eigenvektoren der Matrix C die gleichen sind wie die Eigenvektoren der Matrix P. Die Eigenvektoren der Matrix P sind 1 und -1 sowie i und -i. Die Kreislaufwelt hat mehrere Eigenwerte und Eigenvektoren für jeden Kreislauf, und dies sind wichtige Regeln in der Signalverarbeitung.
 

Vorlesung 31. Eigenvektoren zirkulanter Matrizen: Fourier-Matrix



31. Eigenvektoren zirkulanter Matrizen: Fourier-Matrix

In diesem Video zu Eigenvektoren zirkulanter Matrizen diskutiert der Referent, wie zirkulante Matrizen mit Bildverarbeitung und maschinellem Lernen zusammenhängen, sowie deren Verbindung zur Fourier-Matrix. Der Referent betont die Bedeutung des Verständnisses von Faltung und zirkulierenden Matrizen in Bezug auf die diskrete Fourier-Transformation (DFT) und Fourier-Transformationen. Der Referent erörtert die Eigenvektoren zirkulanter Matrizen, insbesondere der Fourier-Matrix, und wie sie alle aus demselben Satz von acht Zahlen aufgebaut sind, die auch die Eigenwerte sind. Der Referent spricht auch über die Eigenschaften der Fourier-Matrix, darunter, wie die Spalten orthogonal, aber nicht orthonormal sind, und wie sich ihre Eigenvektoren aufgrund der Symmetrie der Zirkulantenmatrix zu Null addieren und sie orthogonal zueinander machen. Abschließend demonstriert der Referent anhand von Beispielen das Konzept des Argan-Vektors als Eigenvektor der Fourier-Matrix.

  • 00:00:00 In diesem Abschnitt führt der Professor in das Thema zirkulierende Matrizen ein und informiert über Projekttermine und Benotung. Er erwähnt auch die Verbindung von zirkulierenden Matrizen mit der diskreten Fourier-Transformation, die ein wichtiger Algorithmus in den Ingenieurwissenschaften und der Mathematik ist. Die spezielle Form von zirkulierenden Matrizen, bei denen nur n Einträge benötigt werden, um eine Matrix der Größe n mal n zu definieren, ist in vielen Anwendungen nützlich, einschließlich maschinellem Lernen für Bilder.

  • 00:05:00 In diesem Abschnitt erklärt der Referent, dass Bilder typischerweise durch ihre Pixel beschrieben werden und Merkmalsvektoren mit Millionen von Komponenten haben können, was es unmöglich machen würde, die für Deep Learning mit Gradientenabstieg erforderlichen Gewichtungen zu berechnen. Beim Deep Learning verwendete Matrizen sind jedoch speziell und hängen nicht von der Anzahl der Merkmale ab, ähnlich wie zirkulierende Matrizen mit zyklischen Merkmalen. Diese Matrizen werden linear verschiebungsinvariant oder linear zeitinvariant, Faltungsmatrizen, Triplettmatrizen oder konstante Diagonalmatrizen genannt und werden beim maschinellen Lernen und in der Bildverarbeitung verwendet. Im Wesentlichen helfen sie dabei, Deep Learning zu optimieren, indem sie die Größe der Gewichtungsberechnung reduzieren, die für jede Schicht im Deep Network erforderlich ist.

  • 00:10:00 In diesem Abschnitt erörtert der Referent die Verwendung zirkulanter Matrizen in der Bildverarbeitung und im maschinellen Lernen. Er erklärt, dass wir, um mit einem großen Bild mit zahlreichen Pixeln zu arbeiten, Max-Pooling verwenden können, um die Größe des Systems zu reduzieren. Für Faltungsoperationen müssen wir jedoch Gewichtungen auswählen, um wichtige Punkte hervorzuheben. Daher verwenden wir Filter, um das Bild zu vereinfachen, z. B. einen Tiefpassfilter. Der Referent merkt an, dass beim maschinellen Lernen breitere neuronale Netze verwendet werden, wenn es um Bildproben geht, da eine konstante Diagonalmatrix natürlicher und effizienter zu verwenden ist.

  • 00:15:00 In diesem Abschnitt spricht der Moderator über Eigenwerte und Eigenvektoren zirkulanter Matrizen, insbesondere der Permutationsmatrix, die einen zyklischen Verschiebungseffekt hat. Die singulären Werte einer Permutationsmatrix sind alle eins, und die Eigenwerte können gefunden werden, indem man P minus Lambda I nimmt und die Determinante auf Null setzt, was zu Lambda in der vierten Potenz führt. Der Moderator betont auch die Bedeutung des Verständnisses von Faltung und zirkulierenden Matrizen in Bezug auf die DFT- und Fourier-Transformationen.

  • 00:20:00 In diesem Abschnitt diskutiert der Referent die Eigenvektoren zirkulanter Matrizen, wobei er sich speziell auf die Fourier-Matrix konzentriert. Die Eigenwerte für die Fourier-Matrix werden gefunden, indem die Determinante auf Null gesetzt wird, was die vierten Wurzeln von Eins ergibt. Diskutiert wurden auch die Eigenwerte für eine 8x8 zirkulante Matrix, das sind die acht Lösungen der Gleichung Lambda hoch 8 gleich eins. Diese Lösungen kommen in Form der Zahlen eins, minus eins und der vierten und achten Einheitswurzel vor und sind wichtig, weil sie als Eigenvektoren ins Spiel kommen. Die Eigenvektoren orthogonaler Matrizen wurden auch als Familie von Matrizen mit orthogonalen Eigenvektoren eingeführt.

  • 00:25:00 In diesem Abschnitt diskutiert der Sprecher verschiedene Matrizenfamilien mit orthogonalen Eigenvektoren. Symmetrische Matrizen haben orthogonale Eigenvektoren und reelle Eigenwerte, während diagonale Matrizen Eigenvektoren haben, die in die Identitätsmatrix eingehen. Orthogonale Matrizen haben Eigenwerte mit einer Größe von 1, und Eigenvektoren von Permutationsmatrizen sind orthogonal. Antisymmetrische Matrizen haben Eigenwerte, die nur komplex sein können, wodurch sie keine reellen Eigenwerte haben können.

  • 00:30:00 In diesem Abschnitt spricht der Referent über Matrizen mit orthogonalen Eigenvektoren und deren Beziehung zu normalen Matrizen. Matrizen mit orthogonalen Eigenvektoren haben komplexe Eigenwerte und der Sprecher schreibt eine Diagonalmatrix, die einen beliebigen Eigenwert enthält. Dann stellt er eine Matrixgleichung auf, die zeigt, wie man normale Matrizen erkennt, die eigentlich recht selten sind. Um sie zu erkennen, muss man testen, ob eine Matrix gleich ihrer konjugierten Transponierten ist.

  • 00:35:00 In diesem Abschnitt diskutiert der Referent Eigenvektoren zirkulanter Matrizen, insbesondere der Fourier-Matrix. Die Permutation P ist orthogonal, also sind ihre Eigenvektoren orthogonal, aber diese zirkulierenden Matrizen pendeln auch und machen sie zu normalen Matrizen. Das bedeutet, sobald wir die Eigenvektoren von P gefunden haben, haben wir die Eigenvektoren jeder zirkulierenden Matrix gefunden, und sie sind alle speziell, weil sie mit Fourier verbunden sind. Die Eigenvektoren werden für verschiedene Eigenwerte gefunden, einschließlich Lambda, das 1, –1, i und –i ist.

  • 00:40:00 In diesem Abschnitt diskutiert der Sprecher die Eigenvektoren zirkulanter Matrizen und betont, dass alle Eigenvektoren aus demselben Satz von acht Zahlen konstruiert sind, die auch die Eigenwerte sind. Die Eigenvektormatrix für alle zirkulierenden Matrizen der Größe n ist die Fourier-Matrix, die eine wichtige komplexe Matrix ist, die die schnelle Fourier-Transformation ermöglicht. Alle Einträge in der Matrix sind Potenzen einer komplexen Zahl W auf dem Einheitskreis an einem seiner acht Punkte. Der erste Eigenvektor besteht ausschließlich aus Einsen, während der Rest Potenzen von W sind, sodass die Matrix eine Größe von 8 x 8 hat. Insgesamt haben Zirkulantenmatrizen dank ihrer gemeinsamen Eigenvektormatrix ähnliche Eigenschaften.

  • 00:45:00 In diesem Abschnitt des Videos erklärt der Sprecher die Eigenschaften der Fourier-Matrix, einer zirkulierenden Matrix, die aus Eigenvektoren besteht, die Potenzen der achten Wurzel von Eins sind. Die Spalten der Matrix sind orthogonal, aber nicht orthonormal, was bedeutet, dass sie durch die Quadratwurzel aus acht geteilt werden müssen, um sie orthonormal zu machen. Die Matrix ist eine normale Matrix, und ihre Eigenvektoren addieren sich aufgrund der Symmetrie der Zirkulantenmatrix zu Null, wodurch sie orthogonal zueinander sind. Der Sprecher demonstriert diese Eigenschaft anhand einer Drei-mal-drei-Matrix, bei der sich die Summe der Eigenvektoren zu Null addiert, wodurch sie orthogonal werden.

  • 00:50:00 In diesem Abschnitt erörtert der Sprecher, inwiefern der Argan-Vektor ein Eigenvektor der Fourier-Matrix ist. Er demonstriert, wie wenn das Punktprodukt der Komponenten des Argan-Vektors addiert wird, das Ergebnis 1 ist. Er zeigt dann, wie sich die Komponenten der resultierenden Vektoren summieren, wenn der Argan-Vektor mit e hoch (2π/3) multipliziert wird 0. Diese Demonstrationen veranschaulichen das Konzept, dass die Eigenvektoren einer Zirkulantenmatrix orthogonal sind. Der Referent schließt mit der Bemerkung, dass er das Thema Fourier-Matrix in der nächsten Vorlesung weiter diskutieren wird und dass 1806 nur noch anderthalb Wochen Unterricht bleiben.
 

Vorlesung 32: ImageNet ist ein Convolutional Neural Network (CNN), Die Faltungsregel



Vorlesung 32: ImageNet ist ein Convolutional Neural Network (CNN), Die Faltungsregel

In Vorlesung 32 eines Deep-Learning-Kurses wird die Leistungsfähigkeit von Convolutional Neural Networks (CNNs) bei der Bildklassifizierung am Beispiel des ImageNet-Wettbewerbs diskutiert, der von einem großen Deep-CNN mit Convolution Layers, Normal Layers und Max Pooling Layers gewonnen wurde. Weitere Schwerpunkte der Vorlesung sind die Faltungsregel, die Multiplikation und Faltung verbindet, mit Beispielen zweidimensionaler Faltungen, die Verwendung des Kronecker-Produkts für eine zweidimensionale Fourier-Transformation und in der Signalverarbeitung sowie der Unterschied zwischen periodisch und nicht periodisch Fälle in Bezug auf Faltung. Der Dozent geht auch auf Eigenvektoren und Eigenwerte einer Zirkulantenmatrix und die Kronecker-Summenoperation ein.

  • 00:00:00 In diesem Abschnitt des Videos wird die Bedeutung von Convolutional Neural Networks (CNN) in Bezug auf Deep Learning und Bildklassifizierung diskutiert. Es wird ein Artikel von Hinton und Skipper erwähnt, der ein großes tiefes CNN darauf trainierte, 1,2 Millionen hochauflösende Bilder in ImageNet zu klassifizieren. Der Wettbewerb wurde mit einer Top-5-Testfehlerquote von 15 % gewonnen, verglichen mit 26 % für das zweitplatzierte Team. Das CNN hatte Convolution Layers, Normal Layers und Max Pooling Layers, wobei die Hälfte der Samples auf eine GPU und die andere Hälfte auf eine andere gingen. Drop-out wurde auch in vollständig verbundenen Schichten verwendet, um eine Überanpassung zu reduzieren. Dies demonstriert die Leistungsfähigkeit von CNNs bei der Bewältigung des enormen Rechenproblems der Klassifizierung von Bildern.

  • 00:05:00 In diesem Abschnitt des Videos erörtert der Sprecher die Faltungsregel, die ein wesentlicher Aspekt von Convolutional Neural Networks (CNNs) ist. Er erklärt, dass die Faltung aus der Multiplikation von Polynomen entsteht und wie die Formel für die Koeffizienten im Inhalt C*D in der Faltung anders geschrieben werden kann, um zu sehen, wie die Faltung funktioniert. Anschließend gibt er ein Beispiel für die Faltung zweier Funktionen und erklärt, dass sich dieses Konzept auf die Faltung zweier Vektoren in einem CNN bezieht. Das Verständnis der Faltung ist entscheidend, um das Innenleben eines CNN zu verstehen, das eine Art neuronales Netzwerk mit 60 Millionen Parametern ist und für Bilderkennungsaufgaben verwendet wird.

  • 00:10:00 In diesem Abschnitt erklärt der Dozent die Faltungsregel für Funktionen und wie sie mit der Fourier-Transformation der beiden Funktionen zusammenhängt. Er erwähnt, dass, wenn F 2 pi periodisch und G 2 pi periodisch ist, man vielleicht eine periodische Faltung durchführen und eine Antwort erhalten möchte, die auch eine Periode von 2 pi hat. Er spricht darüber, wie sich die zyklische Faltung auf die Multiplikation auswirkt und dass W anstelle von X für zyklisches X verwendet wird.

  • 00:15:00 In diesem Abschnitt des Videos diskutiert der Dozent den Unterschied zwischen periodischen und nicht periodischen Fällen in Bezug auf Faltung. Im periodischen Fall ist der Faktor W so definiert, dass er die Eigenschaft hat, dass W hoch N 1 ist, und Vektoren größer als n können auf einen Vektor der Länge n zurückgefaltet werden. Der zyklische Fall berücksichtigt nur, dass K von 0 bis n-1 geht, und die Summen gehen nur von 0 bis n-1. Im nicht periodischen Fall hat die Faltung P plus Q minus 1 Komponenten, und diese Zahl wird im ersten Labor berechnet.

  • 00:20:00 In diesem Abschnitt behandelt der Dozent die Eigenvektoren und Eigenwerte einer Zirkulantenmatrix, insbesondere der Permutationsmatrix. Die Eigenvektoren sind die Spalten der Eigenvektormatrix, die als "F" bezeichnet wird, und es gibt vier Eigenwerte, die aus der Multiplikation von F und C abgeleitet werden. Der Dozent demonstriert diese Formel und erklärt, dass, wenn C eine Kombination von P ist, dann die Dieselbe Kombination von Eigenvektoren ergibt die Eigenwerte der Matrix C.

  • 00:25:00 In diesem Abschnitt geht der Dozent auf die Faltungsregel ein, die eine Verbindung zwischen Multiplikation und Faltung darstellt. Die Faltungsregel verbindet die Multiplikation von Matrizen mit der Faltung der Matrizen. Durch die zyklische Faltung erhält der Dozent, wenn er die Matrix C mit der Matrix D multipliziert, eine weitere zirkulierende Matrix. Die Koeffizienten des gefalteten C und D repräsentieren die diagonalen Koeffizienten der C-mal-D-Matrix. Der Dozent kommt zu dem Schluss, dass die Eigenwerte von CD gleich den Eigenwerten von C mal den Eigenwerten von D sind, weil C und D kommutieren und die gleichen Eigenvektoren haben. Die Eigenwerte werden komponentenweise multipliziert, was die Beziehung für die Faltungsregel ergibt.

  • 00:30:00 In diesem Abschnitt des Videos diskutiert der Dozent die Faltungsregel, die besagt, dass man ein Bild falten und eine Fourier-Transformation (FT) darauf anwenden oder eine FT auf getrennte Bilder anwenden und diese dann multiplizieren kann -weise. Diese Regel ist nützlich, da sie die schnelle Fourier-Transformation (FFT) ermöglicht, die sehr effizient ist. Der Dozent betrachtet dann die Kosten der einzelnen Methoden – die Faltungsmethode erfordert N^2 Schritte, während die separate Transformationsmethode nur 2NlogN Schritte erfordert.

  • 00:35:00 In diesem Abschnitt erörtert der Sprecher zweidimensionale Faltungen und die Operation, die durchgeführt werden muss, um zwei Funktionen in zwei Dimensionen zu falten. Sie diskutieren, wie in MATLAB der für diese Operation erforderliche Befehl „cron“ lautet und wie er verwendet werden kann, um eine zweidimensionale Matrix mit N quadratischen Pixeln zu erstellen, indem zwei eindimensionale Matrizen A und B multipliziert werden. Der Referent geht auch darauf ein die Idee, dass, wenn man zwei lange ganze Zahlen in der Kryptographie multiplizieren möchte, die Verwendung der Faltungsregel eine schnellere und effizientere Methode sein kann.

  • 00:40:00 In diesem Abschnitt wird die Verwendung des Kronecker-Produkts zur Erzeugung einer großen Matrix für eine zweidimensionale Fourier-Transformation diskutiert. Das Kronecker-Produkt ist eine Operation, die eindimensionale N-mal-n-Matrizen nimmt und eine N-Quadrat-mal-N-Quadrat-Matrix erzeugt. Durch geeignete Multiplikation der beiden Matrizen mit dem Kronecker-Produkt kann eine große Matrix für eine zweidimensionale Fourier-Transformation erstellt werden. Der Laplace-Operator, der üblicherweise in Differentialgleichungen verwendet wird, wird ebenfalls diskutiert, wobei die zweidimensionale Matrix, die ein Fünf-Punkte-Schema mit fünf Gewichtungen für jeden Punkt verwendet, unter Verwendung des Kronecker-Produkts erzeugt werden kann.

  • 00:45:00 In diesem Abschnitt geht der Referent auf das Kronecker-Produkt und seinen Einsatz in der Signalverarbeitung ein. Er erklärt, dass er das Kronecker-Produkt verwenden möchte, um den Daten einen zweidimensionalen Effekt hinzuzufügen, und dann die vertikale Ableitung hinzufügen möchte. Zusammen wird dies als Kronecker-Summe bezeichnet, die eine wichtige Operation in der Signalverarbeitung ist. Er ermutigt die Schüler auch, ihm eine E-Mail zu senden, wenn sie sich freiwillig für ein Projekt melden möchten, in dem sie diskutieren können, was sie gelernt haben, und Feedback vom Publikum erhalten.
 

Vorlesung 33. Neuronale Netze und die Lernfunktion



33. Neuronale Netze und die Lernfunktion

In diesem Video diskutiert der Referent die Konstruktion der Lernfunktion f für neuronale Netze, die durch Gradientenabstieg oder stochastischen Gradientenabstieg optimiert und auf Trainingsdaten angewendet wird, um den Verlust zu minimieren. Er erklärt die Verwendung eines handgezeichneten Bildes zur Veranschaulichung des Konzepts neuronaler Netze und der Lernfunktion sowie verschiedener Verlustfunktionen, die beim maschinellen Lernen verwendet werden, einschließlich Kreuzentropieverlust. Der Referent spricht auch über das Problem, die Position von Punkten anhand ihrer Entfernungen zu finden, was ein klassisches Problem bei verschiedenen Anwendungen ist, beispielsweise bei der Bestimmung der Form von Molekülen mittels Kernspinresonanz. Er schließt mit einer Diskussion über die Konstruktion von X, dem letzten Schritt bei der Erlangung der Struktur eines neuronalen Netzes, und erwähnt einen Aufruf für Freiwillige, um am Freitag ein Projekt zu diskutieren.

  • 00:00:00 In diesem Abschnitt diskutiert der Referent die Konstruktion der Lernfunktion f für neuronale Netze, die durch Gradientenabstieg oder stochastischen Gradientenabstieg optimiert und auf Trainingsdaten angewendet wird, um den Verlust zu minimieren. Die Lernfunktion ist eine Funktion von zwei Sätzen von Variablen, X und V, wobei X die Gewichte und V die Merkmalsvektoren aus den Trainingsdaten sind. Die Struktur des neuronalen Netzes umfasst das Nehmen von f aus einem Satz von Gewichten und Abtastvektoren, das Erzeugen nichtlinearer Schritte und das Wiederholen des Prozesses, bis die gewünschte Ausgabe erreicht ist. Der lineare Schritt beinhaltet, die Eingabe V0 zu nehmen, sie mit Matrizen AK zu multiplizieren und Vorspannungsvektoren BK hinzuzufügen, um den Ursprung zu verschieben.

  • 00:05:00 In diesem Abschnitt erläutert der Referent, wie neuronale Netze funktionieren, indem sie eine Reihe von Eingaben nehmen, Gewichtungen anwenden (die in Kapitel 6 unter Verwendung des Gradientenabstiegs ausgewählt werden) und einen nichtlinearen Schritt unternehmen, um eine neue Ausgabe zu erzeugen. Dieser Vorgang wird über viele Schichten hinweg wiederholt, bis die endgültige Ausgabe vorliegt, die die Vorhersage des neuronalen Netzwerks für die Eingabe ist. Die Anzahl der Gewichtungen kann die Anzahl der Features in der Eingabe oft erheblich überschreiten, wodurch eine unterbestimmte Situation entsteht.

  • 00:10:00 In diesem Abschnitt erläutert der Referent die Verwendung eines handgezeichneten Bildes zur Veranschaulichung des Konzepts der neuronalen Netze und der Lernfunktion. Er zeichnet ein Bild, in dem es eine mit v1 multiplizierte Trainingsbeispielkomponente gibt, die die erste in der Schicht ist, die eine unterschiedliche Anzahl von Neuronen in der ersten Schicht haben kann, und jede kommt aus dem eze by. Die Verlustfunktion ist die Funktion, die wir minimieren möchten, indem wir x2 wählen, was alle As und Bs sind. Die Verlustfunktion ist oft eine endliche Summe über alle F, die für alle I berechnet werden kann, aber stattdessen wird ein stochastischer Gradient verwendet, um nur einen oder eine kleine Anzahl davon auszuwählen. Die Verlustfunktion wäre minus dem wahren Ergebnis von Probe I, das quadriert werden kann, um die Summe der quadrierten Fehlerquadrate über alle Proben zu erhalten.

  • 00:15:00 In diesem Abschnitt diskutiert der Referent verschiedene Verlustfunktionen, die beim maschinellen Lernen verwendet werden, insbesondere in neuronalen Netzen. Die Verlustfunktion ist ein Maß dafür, wie gut die Vorhersage des neuronalen Netzes mit dem wahren Wert übereinstimmt. Der Lautsprecher bietet vier beliebte Verlustfunktionen, einschließlich Quadratverlust, L1-Verlust, Gelenkverlust und Kreuzentropieverlust. Kreuzentropieverlust ist das wichtigste für neuronale Netze und die am häufigsten verwendete Verlustfunktion. Der Referent geht auch kurz auf Entfernungsmatrizen und den Prozess der Bestimmung der Position von Punkten im Raum anhand gemessener Entfernungen zwischen ihnen ein.

  • 00:20:00 In diesem Abschnitt stellt der Sprecher eine mathematische Frage vor, bei der es darum geht, Positionen im Raum bei gegebenen Abständen zwischen Punkten zu finden. Die Frage ist einfach und hat Anwendungen in verschiedenen Bereichen. Der Abschnitt nimmt nur zwei Seiten im Buch ein, aber die Lösung ist detailliert und vollständig. Der Referent ermutigt die Schüler auch, Fragen zu ihren Projekten zu stellen, und schlägt vor, ihm direkt eine E-Mail zu senden. Er erwähnt auch eine Frage darüber, welche Kurse nach diesem besucht werden sollen, und fragt die Studenten, ob sie planen, weitere Kurse in diesem Bereich zu belegen. Der Referent räumt ein, dass es Kurse in anderen Fachbereichen gibt, aber er hat nur eine Liste für Kurs sechs gefunden.

  • 00:25:00 In diesem Abschnitt spricht der Referent über das MIT Operations Research Center und seine Kursangebote, darunter Optimierung, Datenanalyse, Statistik und Operations Research. Der Referent verweist auch auf einen Vortrag von Sir Tim Berners-Lee, dem Schöpfer des World Wide Web, und seiner Verantwortung für die übermäßigen Buchstaben in URLs. Dann diskutiert der Referent Entfernungsmatrizen und das Problem, aus den gegebenen Entfernungen die Positionsmatrix zu finden. Der Referent nennt mehrere Anwendungen, darunter drahtlose Sensornetzwerke, in denen Entfernungen zwischen Sensoren gemessen werden können, und GPS-Systeme, die nach einem ähnlichen Prinzip den Standort berechnen können.

  • 00:30:00 In diesem Abschnitt diskutiert der Sprecher das Problem, die Positionen von Punkten in Anbetracht ihrer Entfernungen zu finden, was ein klassisches Problem mit einer sauberen Lösung ist. Die Positionen sind nicht eindeutig, da sie Translationen und Rotationen unterliegen können, aber der Sprecher schlägt vor, Translationen zu entfernen, indem der Schwerpunkt am Ursprung zentriert wird. Das Problem des Auffindens der Positionen ist in verschiedenen Situationen anwendbar, beispielsweise bei der Bestimmung der Form von Molekülen unter Verwendung von kernmagnetischer Resonanz. Maschinelles Lernen kann auch als Finden einer niedrigdimensionalen Oberfläche in einem hochdimensionalen Raum beschrieben werden, was mathematisch dem Finden einer gekrümmten Mannigfaltigkeit entspricht, die am besten zu den gegebenen Punkten passt. Dieser Prozess beinhaltet die Entdeckung der Dimensionalität des Problems und dessen Linearisierung, wodurch die Dimensionalität vom ursprünglichen hochdimensionalen Raum auf die wahre Dimensionalität des Problems reduziert wird.

  • 00:35:00 In diesem Abschnitt erklärt der Sprecher, wie man eine Matrix X bei gegebener Skalarproduktmatrix G findet. Sie beginnen mit der Analyse von zwei Rang-Eins-Matrizen, von denen eine nur von Zeilen und die andere nur von Spalten abhängt, und erklären es dass diese Matrizen den größten Teil des signifikanten Teils der Skalarproduktmatrix erzeugen. Dann führen sie eine Diagonalmatrix mit den inneren Produkten von XI mit sich selbst auf der Diagonale ein und stellen fest, dass diese Matrix mit der gegebenen D-Matrix verwandt ist. Von dort zeigen sie, wie man die Gleichung für die Skalarproduktmatrix herleitet, und erklären, dass sie X finden können, sobald sie G haben. X ist jedoch nicht eindeutig, da es gedreht werden kann, ohne das Skalarprodukt zu ändern, also ist ihr nächster Schritt um herauszufinden, wie man die Drehung ausrechnen kann.

  • 00:40:00 In diesem Abschnitt diskutiert der Sprecher eine Gleichung in Bezug auf die Punktproduktmatrix, die verwendet werden kann, um das Kreuzprodukt der Identitätsmatrix und der X-Transponierungsmatrix in neuronalen Netzen zu finden. Die Skalarproduktmatrix ist eine Kombination aus der diagonalen D-Matrix, einer konstanten Matrix, bei der alle Zeilen gleich sind, und einer konstanten Matrix, bei der alle Spalten gleich sind. Der Sprecher geht die Gleichung Schritt für Schritt durch und zerlegt jede Komponente, um zu zeigen, dass die X-transponierte X-Matrix aus diesen Rang-1-Stellen und diesen Kreuzprodukten stammt. Sie untersuchen dann die Bedeutung der Hälfte in der Gleichung, kommen aber letztendlich zu dem Schluss, dass es notwendig ist, das richtige Ergebnis zu erhalten.

  • 00:45:00 In diesem Abschnitt erörtert der Sprecher, wie man eine gegebene Gleichung in Matrixsprache schreibt und wie man schließlich die Matrix X findet, wenn X transponiert wird. Sie verwenden lineare Algebra, um die Lösung zu finden, und stellen fest, dass X gefunden werden kann zu einer orthogonalen Transformation. Die beiden wichtigsten diskutierten Methoden sind die Verwendung von Eigenwerten oder die Verwendung von Elimination auf X transponieren X. Der Referent betont die Bedeutung dieser Methoden im Bereich der neuronalen Netze und des maschinellen Lernens.

  • 00:50:00 In diesem Abschnitt diskutiert der Sprecher die Konstruktion von X, das symmetrisch und positiv semidefinit ist, und zwei Möglichkeiten, es zu finden. Der erste Ansatz ist die Eigenwertkonstruktion, bei der die Eigenwerte und Eigenvektoren von X transponiert X berechnet werden und dann die Eigenvektoren beibehalten werden, während die Quadratwurzeln der Eigenwerte gezogen werden. Der zweite Ansatz ist die Cholesky-Faktorisierung, bei der eine Eliminierung an der symmetrischen positiv bestimmten Matrix durchgeführt wird und dann die resultierende untere Dreiecksmatrix L und die Diagonalmatrix D verwendet werden, um X als das Produkt von L Quadratwurzel DL-Transponierten zu berechnen. Die Cholesky-Faktorisierung ist schneller als die Eigenwertkonstruktion und einfacher zu berechnen, was sie zu einer praktischeren Option macht.

  • 00:55:00 In diesem Abschnitt schließt der Redner die Diskussion über Abstandsmatrizen ab, die der letzte Schritt waren, um die Struktur eines neuronalen Netzwerks zu erhalten, indem die Abtastvektoren von den Gewichtungen getrennt wurden. Der Referent erwähnt auch die beiden Teile der linearen Algebra: Dinge finden, um sie auf Dreiecksform zu reduzieren oder sie mit symmetrischen Matrizen zu verbinden. Abschließend erwähnt der Sprecher einen Aufruf für Freiwillige, um am Freitag ein Projekt zu besprechen.
 

Vorlesung 34. Distanzmatrizen, Procrustes-Problem



34. Distanzmatrizen, Procrustes-Problem

Der Referent diskutiert das Procrustes-Problem, bei dem es darum geht, die beste orthogonale Transformation zu finden, die einen Satz von Vektoren so nah wie möglich an einen anderen Satz von Vektoren heranführt. Sie erläutern verschiedene Ausdrücke zur Berechnung der Frobenius-Norm einer Distanzmatrix und deren Zusammenhang mit dem Procrustes-Problem. Der Referent führt auch in das Konzept der Spur von Matrizen ein und findet das richtige Q im Procrustes-Problem. Darüber hinaus gehen sie der Frage nach, ob Deep Learning tatsächlich funktioniert, und stellen die Lösung eines Matrixproblems vor, bei dem es darum geht, die beste orthogonale Matrix zu finden, bei der die SVD des Skalarprodukts zweier Matrizen berechnet und die orthogonalen Matrizen aus der SVD verwendet werden.

  • 00:00:00 In diesem Abschnitt geht der Sprecher auf eine Frage ein, die in einer früheren Diskussion über das Finden von Punkten aufgeworfen wurde, die eine gegebene Distanzmatrix erfüllen, und wie das Versagen der Dreiecksungleichung behoben werden kann. Der Referent erklärt, dass die Skala der Skalarprodukte, die direkt aus der Distanzmatrix kommt, positiv semidefinit ist, aber wenn die Dreiecksungleichung fehlschlägt, wird die Matrix der Skalarprodukte nicht positiv definit sein. Dieses Problem kann nicht durch Ändern der Dimensionen gelöst werden, da die Dreiecksungleichung immer noch unabhängig von der Dimensionalität gilt.

  • 00:05:00 In diesem Abschnitt spricht der Dozent über das Procrustes-Problem, bei dem es darum geht, etwas an etwas anderes anzupassen. Das Problem ist nach einem griechischen Mythos über Procrustes benannt, der ein Bett mit einer bestimmten Länge hatte und die Länge des Besuchers an das Bett anpasste. Das Problem besteht darin, einen Weg zu finden, zwei Datensätze zusammenzufügen, und der Dozent erklärt, dass, wenn die Dreiecksungleichung durch die Zahlen in der Distanzmatrix erfüllt wird, die Matrix, die sich aus der Gleichung ergibt, positiv semidefinit ist. Wenn jedoch die Dreiecksungleichung verletzt wird, ist die Matrix nicht positiv semidefinit und hat negative Eigenwerte, und es ist unmöglich, den Punkt zu finden. Der Dozent deutet auch eine große Frage an, ob Deep Learning tatsächlich funktioniert, auf die er später eingehen wird.

  • 00:10:00 In diesem Abschnitt wird das Procrustes-Problem diskutiert, bei dem es darum geht, die beste orthogonale Transformation zu finden, die einen Satz von Vektoren so nah wie möglich an einen anderen Satz von Vektoren heranführt. Wenn die beiden Sätze von Vektoren beide orthogonale Basen wären, wäre es einfach, einen mit einer orthogonalen Matrix Q ineinander zu bringen, aber das ist nicht immer der Fall. Daher besteht das Problem darin, über alle orthogonalen Matrizen Q im Quadrat der Frobenius-Norm zu minimieren und die Matrix wie einen langen Vektor zu behandeln. Eine Möglichkeit, dies zu tun, besteht darin, eine Transponierte a zu betrachten, ihre Spur zu nehmen und dann die Summe aller Quadrate zu finden, um die Frobenius-Norm einer Matrix zu erhalten.

  • 00:15:00 In diesem Abschnitt diskutiert der Dozent verschiedene Ausdrücke zur Berechnung der Frobenius-Norm einer Distanzmatrix. Sie zeigen, dass das Quadrat der Frobenius-Norm als Summe der Quadrate aller singulären Werte, als Spur des Produkts der Matrix und ihrer Transponierten oder als Spur des Produkts der Transponierten der Matrix und der Matrix selbst ausgedrückt werden kann . Sie erklären dann, wie diese Ausdrücke miteinander verbunden sind, und erwähnen, dass die Lösung dieses Problems verschiedene wichtige Fakten erfordert, wie z. B. die Tatsache, dass die Multiplikation jeder Spalte einer Matrix mit Q die Frobenius-Norm nicht ändert und die Multiplikation der Matrix mit Q nicht. t die singulären Werte beeinflussen.

  • 00:20:00 In diesem Abschnitt diskutiert der Referent Eigenschaften der Frobenius-Norm, einschließlich der Tatsache, dass sie unverändert bleibt, wenn sie mit einem orthogonalen Faktor multipliziert wird oder wenn sie auf der anderen Seite mit demselben oder einem anderen Faktor multipliziert wird. Der Referent stellt auch das Konzept der Spur von Matrizen vor und betont die Tatsache, dass sich die Spur nicht ändert, wenn die Reihenfolge der Matrizen umgekehrt wird. Der Sprecher erklärt dann die Schritte, um das richtige Q im Procrustes-Problem zu erhalten.

  • 00:25:00 In diesem Abschnitt diskutiert der Referent die Frage, ob Deep Learning tatsächlich funktioniert, und schlägt vor, dass es eine wichtige Frage ist, die es zu beantworten gilt. Sie erwähnen, dass es zwar viel Publicity und Hype um Deep Learning und neuronale Netze gegeben hat, es aber nicht automatisch ist, dass die Struktur des Netzwerks erfolgreich sein wird, selbst mit mehreren Schichten. Der Sprecher stellt dann die Lösung für ein Matrixproblem vor, bei dem es darum geht, die beste orthogonale Matrix zu finden, was die Berechnung der SVD des Skalarprodukts zweier Matrizen und die Verwendung der orthogonalen Matrizen aus der SVD beinhaltet.
 

Vorlesung 35. Finden von Clustern in Graphen



35. Finden von Clustern in Graphen

In diesem Video wird das Clustering in Diagrammen und das Finden von Clustern mit verschiedenen Algorithmen wie K-Means und Spectral Clustering erläutert. Die Laplace-Matrix wird beim spektralen Clustering verwendet und kann durch ihre Eigenvektoren Informationen über Cluster im Diagramm liefern. Wichtig für das Clustering ist der Fiedler-Eigenvektor, also der Eigenvektor zum kleinsten positiven Eigenwert. Der Sprecher betont auch die Bedeutung von Eigenvektoren, die orthogonal sind, um unterschiedliche Cluster zu identifizieren. Außerdem gibt es eine kurze Vorschau auf die nächste Vorlesung, in der es um die Rückwärtsausbreitung mit Julia in der linearen Algebra geht. Studenten werden ermutigt, ihre Projekte online oder außerhalb des Büros des Dozenten einzureichen.

  • 00:00:00 In diesem Abschnitt erörtert der Referent das Clustering in Diagrammen, bei dem ein großes Diagramm in kleinere, leichter zu handhabende Cluster unterteilt wird. Das Problem besteht darin, zwei Cluster zu finden, die in etwa gleich groß sind, und dazu muss ein Algorithmus verwendet werden, um die Position der Mittelpunkte X und Y zu bestimmen. Das Ziel besteht darin, die Summe der Abstände zwischen den Mittelpunkten und dem zu minimieren Knoten im Diagramm, während sichergestellt wird, dass die Anzahl der Knoten in jedem Cluster einigermaßen nahe beieinander liegt. Es gibt mehrere Algorithmen, die verwendet werden können, um dies zu erreichen, einschließlich einiger, die Matrizen verwenden, die dem Graphen zugeordnet sind.

  • 00:05:00 In diesem Abschnitt erörtert der Sprecher den K-Means-Clustering-Algorithmus zum Aufteilen einer Menge von Punkten, von denen einige mit A und andere mit B bezeichnet sind, in Cluster oder Gruppen. Der Algorithmus beginnt mit der Identifizierung der Zentroide, die die Mittelpunkte der A- und B-Gruppen sind, und versucht dann, die besten Cluster basierend auf diesen Zentroiden zu bilden. Dieser Vorgang wird wiederholt, bis der Algorithmus die bestmöglichen Cluster für die Daten konvergiert. Der Sprecher führt auch das Konzept des Schwerpunkts ein, der der Punkt ist, der die Summe der Abstände zwischen allen Punkten in der Gruppe und dem Schwerpunkt minimiert.

  • 00:10:00 In diesem Abschnitt erläutert der Kursleiter zwei Methoden zur Lösung des Problems, Cluster in Graphen zu finden. Die erste Methode heißt K-Means, bei der der nächste Cluster-Schwerpunkt für jeden Punkt gefunden wird, Punkte ihren jeweiligen Clustern neu zugewiesen werden und der Vorgang bis zur Konvergenz wiederholt wird. Die zweite Methode wird spektrales Clustering genannt und beinhaltet die Verwendung der Eigenwerte einer Matrix, um ähnliche Punkte zu gruppieren. Der Begriff "spektral" bezieht sich auf die Eigenwerte der Matrix und den Spektralsatz in der linearen Algebra. Der Dozent betont, dass der Spektralsatz für symmetrische Matrizen gilt und besagt, dass die Eigenwerte reell und die Eigenvektoren orthogonal sind.

  • 00:15:00 In diesem Abschnitt erörtert der Referent die Graphen-Laplace-Matrix, die die Schlüsselverbindung zwischen linearer Algebra und Graphentheorie darstellt. Sie beschreiben diese Matrix als eine symmetrische positive semidefinite Matrix, und jedem Graphen sind vier Matrizen zugeordnet: die Inzidenzmatrix, die Gradmatrix, die Adjazenzmatrix und die Laplace-Matrix. Der Sprecher führt ein Beispiel mit einem einfachen Diagramm durch, um jede dieser Matrizen zu erklären. Die Laplace-Matrix wird beim Spektral-Clustering verwendet und kann orthogonale Eigenvektoren haben, die mit einer Multiplizität für Eigenwerte einhergehen, was als Spektraltheorem bekannt ist.

  • 00:20:00 In diesem Abschnitt erläutert der Referent das Konzept der Graphen-Clusterbildung, indem Cluster in einem gegebenen Graphen mithilfe der Laplace-Matrix gefunden werden. Die Laplace-Matrix wird durch Subtrahieren der Inzidenzmatrix von der Gradmatrix erhalten. Die resultierende Matrix ist positiv semidefinit und ihre Eigenvektoren liefern Informationen über die Cluster im Diagramm. Der erste Eigenwert ist immer Null, und der nächste Eigenwert ist wichtig für das Clustering. Der Referent betont die Bedeutung des Fiedler-Vektors, des Eigenvektors für den kleinsten positiven Eigenwert, und erläutert dessen Bedeutung beim Graph-Clustering.

  • 00:25:00 In diesem Abschnitt erklärt der Referent, warum die Laplace-Matrix als solche bezeichnet wird, wenn Cluster in einem Graphen gefunden werden. Die Laplace-Matrix hat eine Diagonale vom Grad 4 und ermöglicht das Auffinden von Clustern durch ihre Eigenvektoren. Insbesondere kann der Fiedler-Eigenvektor die positiven und negativen Komponenten bestimmen, die den Graphen in zwei Cluster aufteilen. Dieser Ansatz bietet ein Verfahren zur Entscheidung, welche Knoten zu welchem Cluster gehören, unter Verwendung des Graphen Laplace.

  • 00:30:00 In diesem Abschnitt erörtert der Referent das Clustering in Graphen und wie Cluster mithilfe verschiedener Algorithmen wie k-Means und Spectral Clustering gefunden werden. Er erklärt, dass Eigenvektoren einer symmetrischen Matrix orthogonal sind, was bedeutet, dass sie sich zu Null addieren, was verwendet werden kann, um verschiedene Cluster zu identifizieren. Er erwähnt auch, dass es andere Algorithmen gibt, die für das gleiche Problem vorgeschlagen wurden, und gibt einen kurzen Ausblick auf die nächste Vorlesung, in der es um die Rückwärtsausbreitung mit Julia in der linearen Algebra geht. Der Referent ermutigt die Studierenden, ihre Projekte online oder außerhalb seines Büros einzureichen.
 

Vortrag 36: Alan Edelman und Julia Language



Vortrag 36: Alan Edelman und Julia Language

In diesem Video diskutiert Alan Edelman die Leistungsfähigkeit von Programmiersprachen für maschinelles Lernen und ihre Bedeutung in der Mathematik. Er hebt die jüngste Entwicklung der Julia-Sprache hervor, die von Google für ihre technischen Vorzüge und ihre Verwendbarkeit beim maschinellen Lernen anerkannt wurde. Edelman erklärt, wie die automatische Differenzierung in Julia funktioniert, und gibt ein Beispiel für die Berechnung der Quadratwurzel von x ohne Verwendung numerischer endlicher Differenzen durch den babylonischen Algorithmus. Er erörtert auch die Verwendung von Typen in Julia für eine effiziente Berechnung und die Vereinfachung des Backpropagation-Prozesses mit Blockmatrizen. Insgesamt betont Edelman die Bedeutung der linearen Algebra für mathematische Berechnungen und ihre Rolle beim Verständnis komplexer Phänomene.

  • 00:00:00 In diesem Abschnitt diskutiert Alan Edelman eine Demonstration von Professor Strang zum Thema Zeilenrang gleich Spaltenrang und wie dieses Konzept auf die Nullmatrix angewendet wird. Anschließend spricht er über die jüngsten Entwicklungen in Julia, einer Programmiersprache, die beim maschinellen Lernen an Bedeutung gewonnen hat, und wie Google seine Stärke in diesem Bereich erkannt hat. Google hat kürzlich einen Blogbeitrag veröffentlicht, in dem es heißt, dass es nur zwei Sprachen gibt, die leistungsfähig genug für maschinelles Lernen sind, und Julia ist eine davon. Edelman liefert Beispiele, um diesen Punkt zu veranschaulichen, und ermutigt die Schüler, den Blogbeitrag für weitere Informationen zu lesen.

  • 00:05:00 In diesem Abschnitt erörtert Alan Edelman die Bedeutung von Programmiersprachen im mathematischen Sinne und ihre Fähigkeit, mehr als nur Algorithmen zu implementieren. Er erklärt, dass Julia, Swift, C++ und Rust die vier Programmiersprachen sind, die aufgrund ihrer technischen Vorzüge und ihrer Benutzerfreundlichkeit für maschinelles Lernen geeignet sind. Edelman betont die Bedeutung der linearen Algebra als Grundlage für alle Kurse in Ingenieurwissenschaften und ihre unglückliche Verzögerung in der Geschichte. Anschließend vertieft er sich in die automatische Differenzierung und ihre Beziehung zur Analysis, seine anfängliche Skepsis gegenüber ihr und die technischen Details, die er in seinem Notizbuch zur automatischen Differenzierung im Vorwärtsmodus untersucht hat.

  • 00:10:00 In diesem Abschnitt erläutert Alan Edelman seine anfänglichen Gedanken zur automatischen Differenzierung und wie er dachte, dass es genau wie die Analysis sei, die er in der Schule gelernt habe, aber mit einem Computer. Er erkannte jedoch bald, dass es eine dritte Methode gab, die weder endliche Differenzen noch die Kettenregel waren, die ihn faszinierte. Anschließend teilt er ein Beispiel mit, wie er die Quadratwurzel von x mit dem babylonischen Algorithmus in Julia berechnet hat und wie er die Ableitung der Quadratwurzel erhalten konnte, ohne die Ableitungsformel explizit einzugeben, dank Julias automatischer Differenzierungsfunktion.

  • 00:15:00 In diesem Abschnitt beschreibt der Sprecher die Verwendung des Julia-Codes zur Berechnung der Quadratwurzel einer Zahl ohne Verwendung von Finite-Differenzen-Berechnungen. Der Code erstellt einen Variablentyp namens "Dualzahl", bei dem es sich um ein Paar von Gleitkommazahlen handelt, die eine numerische Funktion und ihre Ableitung darstellen. Der Sprecher überlädt dann Plus- und Divisionsoperationen, um die Quotientenregel zu implementieren, was die Berechnung der Quadratwurzel unter Verwendung des babylonischen Algorithmus ermöglicht. Der Code funktioniert ohne die Verwendung numerischer endlicher Differenzen, und die Sprecherin merkt an, dass Julia die Wiederverwendung von vorhandenem Code in neuen Kontexten zulässt, um „magisch“ zu wirken.

  • 00:20:00 In diesem Abschnitt erklärt Alan Edelman, wie die Programmiersprache Julia die Ableitung mithilfe des babylonischen Algorithmus einer dualen Zahl im Assembler-Code effizient berechnen kann. Er demonstriert, wie derselbe Code, der in Pythons symbolischem Berechnungspaket ausgeführt wird, eine symbolische Berechnung mit großen Koeffizienten ergibt, was sehr ineffizient ist. Dann enthüllt er den SVD, einen weiteren Algorithmus, der ihn davon überzeugt hat, wie der babylonische Algorithmus funktioniert. Indem die Ableitung jeder Zeile des Codes genommen wird, kann der Algorithmus zur Quadratwurzel und Ableitung der Quadratwurzeln konvergieren. Die resultierende Ableitung ist nicht symbolisch oder numerisch, sondern verwendet die Quotientenregel und die Additionsregel in jedem Schritt, um die Antwort zu erhalten.

  • 00:25:00 In diesem Abschnitt erläutert Alan Edelman, der Schöpfer der Julia-Sprache, wie die automatische Differenzierung in der Sprache funktioniert. Anstatt jede Zeile manuell abzuleiten, schlägt Edelman vor, dass die Software dies automatisch tun kann, indem sie den JIT-Compiler damit umgehen lässt. Dadurch entfällt die Notwendigkeit, einen Übersetzer oder eine Handschrift zu schreiben, wodurch die Codierung viel rationalisierter wird. Edelman merkt an, dass maschinelles Lernen stark auf Optimierungsproblemen beruht, bei denen es darum geht, Ableitungen zu nehmen, wodurch die automatische Differenzierung zu einem wesentlichen Bestandteil des Prozesses wird. Abschließend erklärt er, wie die Verwendung von Typen das Erstellen strukturierter Matrizen zum Speichern von Daten vereinfachen kann.

  • 00:30:00 In diesem Abschnitt erörtert Alan Edelman die Verwendung von Typen in Julia, um effizient nur das zu speichern, was bei der Durchführung von Berechnungen benötigt wird, was es von Sprachen wie Python und MATLAB unterscheidet, die mehr Overhead haben. Anschließend geht er kurz auf die Idee der Immersed-Mode-Differenzierung in neuronalen Netzen ein, beginnend mit einem skalaren Beispiel und verallgemeinernd auf Matrizen und Vektoren. Er schreibt die an diesem Prozess beteiligte lineare Algebra auf, aber es läuft ihm die Zeit davon, bevor er sie vollständig erklären kann.

  • 00:35:00 In diesem Abschnitt erklärt Edelman, wie Blockmatrizen in Julia verwendet werden, um Backpropagation durchzuführen, ohne die Ableitungen manuell berechnen zu müssen. Er zeigt, wie die Verwendung einer Diagonalmatrix und einer unteren Dreiecksmatrix den Backpropagation-Prozess vereinfachen und die eingebauten Funktionen von Julia nutzen kann. Anhand von linearer Algebra demonstriert er, wie ein umgekehrter Schrägstrich die untere Dreiecksmatrix lösen kann, was die Aufgabe der Berechnung von Ableitungen erheblich vereinfacht. Edelman betont, dass lineare Algebra für viele mathematische Berechnungen unerlässlich und das Geheimnis zum Verständnis vieler komplexer Phänomene ist.
 

MIT 6.172 Performance Engineering of Software Systems, Herbst 2018 - 1. Einführung und Matrixmultiplikation



1. Einführung und Matrixmultiplikation

In diesem YouTube-Video mit dem Titel "1. Introduction and Matrix Multiplication" diskutiert der Dozent die Bedeutung von Performance Engineering und wie es sich im Laufe der Zeit entwickelt hat. Am Beispiel der Matrizenmultiplikation zeigt der Referent, wie sich Codiertechniken und Maschinenspezifikationen stark auf die Performance auswirken können. Die Diskussion behandelt Themen wie Schleifenreihenfolge, Cache-Nutzung und parallele Programmierung. Der Referent untersucht auch Möglichkeiten, Code für verschiedene Prozessoren und arithmetische Berechnungen zu optimieren. Insgesamt bietet das Video wertvolle Einblicke in die Welt der Leistungstechnik und ihre praktischen Anwendungen in modernen Computersystemen.

  • 00:00:00 In diesem Abschnitt erläutert der Dozent die Bedeutung von Performance Engineering und warum es studiert wird. Leistung steht bei der Softwareentwicklung nicht immer an erster Stelle. Es ist jedoch die Währung des Rechnens und wird verwendet, um andere gewünschte Eigenschaften wie einfache Programmierung, Sicherheit und Korrektheit zu kaufen. Leistungsabfall kann zu unbrauchbarer Software führen, und die Hauptbeschwerde der Leute über Computersysteme ist, dass sie zu langsam sind. Obwohl Leistung möglicherweise keinen inneren Wert hat, trägt sie zu den Dingen bei, die den Entwicklern wichtig sind.

  • 00:05:00 In diesem Abschnitt erörtert der Redner die Geschichte der Leistungstechnik in der Datenverarbeitung und den Übergang von den Anfängen intensiver Leistungstechnik aufgrund begrenzter Maschinenressourcen zur Ära des Mooreschen Gesetzes, in der sich die Chipdichte alle zwei Jahre verdoppelte und wartete Das Aufholen der Hardware war vorteilhafter als die Optimierung der Software. Der Redner stellt jedoch fest, dass die Dennard-Skalierung, die es ermöglichte, die Taktraten durch Reduzierung der Leistung zu erhöhen, 2004 zu Ende ging und daher die Notwendigkeit von Performance Engineering wichtiger ist als je zuvor. Der Redner enthält Zitate der Informatiker Donald Knuth, Bill Wolfe und Michael Jackson über die Bedeutung von lesbarem Code und warnt vor vorzeitiger Optimierung.

  • 00:10:00 In diesem Abschnitt erörtert der Referent die Grenzen der Taktraten, die in den frühen 2000er Jahren aufgrund der Leistungsdichte erreicht wurden, was zur Entwicklung von Mehrkernprozessoren führte, um die Leistung zu skalieren. Allerdings bedeutete dies, dass die Leistung nicht mehr kostenlos war und eine parallele Programmierung erforderlich war, was die Industrie zuvor nicht getan hatte. Von diesem Zeitpunkt an musste sich die Software an die neuen Hardwarekonfigurationen anpassen, um effektiv zu sein, und als Folge davon lag der Fokus auf der Leistung in Jobs in der Softwareentwicklung verstärkt.

  • 00:15:00 In diesem Abschnitt erklärt der Referent zunächst die praktische und theoretische Bedeutung des Lernens, wie man Software schreibt, die moderne Hardware effizient nutzt. Anschließend liefern sie ein Beispiel für Performance Engineering unter Verwendung des gut untersuchten Problems der Matrixmultiplikation, diskutieren die Maschine, die sie verwenden werden, einschließlich ihrer Spezifikationen und Fähigkeiten wie Parallelverarbeitung, Cache-Größe und Speicherkapazität, und schließen mit einer Erläuterung ab der grundlegende Code für Python für die Matrixmultiplikation. Der Redner betont die Kraft der Maschine und das Potenzial für unterhaltsame Projekte, die ihre Fähigkeiten nutzen.

  • 00:20:00 In diesem Abschnitt diskutiert der Dozent die Leistungsfähigkeit von Python, Java und C++ im Zusammenhang mit der Matrixmultiplikation. Der Vortrag zeigt, dass Python mit einer Laufzeit von etwa 21.000 Sekunden zu langsam für große Matrixmultiplikationen ist, Java schneller ist und eine fast neunfache Beschleunigung gegenüber Python erzeugt und C++ mit einer Laufzeit von etwa 1.100 Sekunden am schnellsten ist , das doppelt so schnell wie Java und 18-mal schneller als Python ist.

  • 00:25:00 In diesem Abschnitt erörtert der Referent die Leistungsunterschiede zwischen interpretierten Sprachen wie Python, kompilierten Sprachen wie C und Sprachen wie Java, die zu Bytecode kompiliert und dann interpretiert werden. Interpreter wie Python sind vielseitig, aber langsam, während Compiler wie C Hardware- und Maschinenanweisungen nutzen, um die Leistung zu optimieren. JIT-Compiler, wie sie in Java verwendet werden, gewinnen etwas Leistung zurück, indem sie nur die am häufigsten ausgeführten Codeteile kompilieren. Der Referent merkt an, dass das Performance-Modell von Python schwer zu verstehen ist, weshalb er im Kurs C für Performance-Vergleiche verwenden wird. Es wird jedoch einen Gastvortrag geben, in dem sie Performance Engineering in verwalteten Sprachen wie Python diskutieren werden.

  • 00:30:00 In diesem Abschnitt wird die Bedeutung der Schleifenreihenfolge für die Leistung bei der Matrixmultiplikation diskutiert. Die Reihenfolge der Schleifen beeinflusst die Cache-Lokalität, was sich auf die Laufzeit auswirkt. Die Matrizen sind im Speicher in C in Zeilenhauptordnung und in Fortran in Spaltenhauptordnung angeordnet. Das Zugriffsmuster für die Reihenfolge ijk hat eine gute räumliche Lokalität für C, aber eine schlechte räumliche Lokalität für B. Das Tool "cachegrind" ist nützlich, um die Fehlerraten für Code zu bestimmen, und einfache Änderungen wie das Anpassen von Compiler-Flags können auch die Leistung verbessern.

  • 00:35:00 In diesem Abschnitt erläutert der Redner, wie Code optimiert werden kann, um eine bessere Leistung einer Maschine zu erzielen. Es ist wichtig, ein gutes Optimierungs-Flag zu wählen, wie z. B. -O2 oder -O3, aber manchmal kann ein niedrigeres Optimierungs-Flag je nach Code tatsächlich besser optimieren. Darüber hinaus können Mehrkernprozessoren mit parallelen Schleifen unter Verwendung der Silk-Infrastruktur verwendet werden, was zu einer fast 18-fachen Beschleunigung auf 18 Kernen führt. Der Referent betont, dass die Parallelisierung äußerer Schleifen effektiver ist als die Parallelisierung innerer Schleifen, die das Programm sogar verlangsamen können. Es gibt jedoch immer noch Möglichkeiten zur Optimierung, wie z. B. Cache-Fehlschläge und die nicht effektive Verwendung vektorisierter Anweisungen.

  • 00:40:00 In diesem Abschnitt erörtert der Redner, wie Cache-Misses besser verwaltet werden können, indem die Berechnung so umstrukturiert wird, dass Daten im Cache so oft wie möglich wiederverwendet werden. Durch die Verwendung eines Kachelschemas werden die Matrizen in kleinere Untermatrizen zerlegt und in Blöcken multipliziert, um die Anzahl der erforderlichen Speicherzugriffe zu reduzieren. Der Sprecher erklärt, dass ein Abstimmungsparameter notwendig ist, um die Größe der Teilmatrizen zu bestimmen, und schlägt vor, dass Experimentieren der beste Weg ist, um den optimalen Wert zu finden. Durch diesen Ansatz demonstriert der Referent, dass es möglich ist, die Anzahl der Speicherzugriffe, die zum Berechnen des Fußabdrucks derselben Größe erforderlich sind, erheblich zu reduzieren, wodurch die Berechnung effizienter wird.

  • 00:45:00 In diesem Abschnitt erörtert der Referent die Vorteile der Verwendung von Blockierung oder Kacheln bei der Durchführung von Matrixmultiplikationen, z. B. verbesserte Cache-Nutzung und schnellere Laufzeit. Sie erklären die verschiedenen Cache-Ebenen, die Chips haben, und wie Programmierer Tuning-Parameter verwenden können, um ihren Code für jede Cache-Ebene zu optimieren. Der Optimierungsprozess wird jedoch mit jeder Cache-Ebene komplexer, und der Code kann schwer lesbar und verständlich werden. Der Redner schlägt einen Teile-und-Herrsche-Ansatz vor, der parallele Programmierung verwendet, um kleinere Teilprobleme rekursiv zu lösen. Obwohl diese Methode die Cache-Nutzung verbessert, verlangsamt der Overhead von Funktionsaufrufen die Berechnung, was die Notwendigkeit eines cleveren Performance-Engineering unterstreicht.

  • 00:50:00 In diesem Abschnitt erörtert der Sprecher die Optimierung der Matrixmultiplikation unter Verwendung der Teile-und-Herrsche-Technik und die Anpassung des Schwellenwerts für die Verwendung des Algorithmus. Ein Basisfall wird festgelegt, wenn der Schwellenwert unter einer bestimmten Zahl liegt, und der Algorithmus verwendet eine gewöhnliche Matrixmultiplikation. Der beste Wert für den Basisfall war 32, was zu einer Laufzeit von 1,3 Sekunden und 12 % der Spitzenleistung führte. Darüber hinaus stellt der Referent das Konzept der Vektorisierung unter Verwendung der Vektorhardware vor, die Daten in einem Einzelbefehls-Mehrfachdatenformat verarbeitet. Der Referent skizziert verschiedene Möglichkeiten zur Optimierung der Vektorisierung, einschließlich der Verwendung von Vektorisierungsberichten, Flags für bestimmte Architekturen und des Fast-Math-Flags, das es dem Compiler ermöglicht, Assoziationen neu zu ordnen. Die Verwendung von architekturnativer und schneller Mathematik führt zu einer doppelten Leistung bei Verwendung eines beliebigen Compiler-Vektorisierers.

  • 00:55:00 In diesem Abschnitt des Videos erläutert der Sprecher die verschiedenen Bitgrößen, die für arithmetische Berechnungen verwendet werden, wobei 64-Bit für Berechnungen mit linearer Algebra am gebräuchlichsten ist. Sie erwähnen auch, dass Arithmetik mit geringerer Genauigkeit für KI-Anwendungen verwendet werden kann, um die Leistung zu verbessern. Der Redner spricht weiter über die Verwendung von Vektorbefehlen und die AVX-Intrinsics, die bis zu 41 % Spitzenleistung und eine Beschleunigung von etwa 50.000 bieten. Sie weisen darauf hin, dass ähnliche Leistungsverbesserungen wie bei der Matrixmultiplikation möglicherweise nicht in anderen Bereichen zu sehen sind, aber dieser Kurs wird den Schülern beibringen, wie sie selbst erhebliche Leistungsverbesserungen erzielen können. Darüber hinaus konzentriert sich der Kurs eher auf Multi-Core-Computing als auf GPUs oder andere Bereiche.