Maschinelles Lernen und neuronale Netze - Seite 35

 

Tensorflow für die Deep-Learning-Forschung - Vorlesung 2



Tensorflow für die Deep-Learning-Forschung - Vorlesung 2

Die Vorlesung zu TensorFlow for Deep Learning Research deckt ein breites Themenspektrum ab, darunter grundlegende Operationen, Tensortypen, Platzhalter und Lazy Loading. Die Bedeutung der Verwendung von TensorBoard zur Visualisierung des ausgeführten Diagramms wird betont, und es werden verschiedene Funktionen der TensorFlow-API besprochen, darunter Random Shuffle, Random Crop, TF.dot Multinomial und die Random Gamma-Funktion. Das Video behandelt auch die Konzepte zum Definieren von 0-ness für verschiedene Datentypen, Initialisieren von Variablen, Zuweisen von Werten zu ihnen und die Vorteile der Verwendung einer interaktiven TensorFlow-Sitzung. Abschließend wird die Verwendung von Platzhaltern in TensorFlow ausführlich behandelt, und die potenziellen Probleme bei der Verwendung von Platzhaltern mit undefinierten Formen werden diskutiert.

Der Referent erörtert auch die Verwendung von Platzhaltern in TensorFlow, einschließlich der Einspeisung mehrerer Datenpunkte und der Verwendung freier Diktate. Die Vorlesung fährt dann mit Lazy Loading fort, bei dem die Berechnung bis zur Laufzeit verschoben wird, um ein Aufblähen des Diagramms zu vermeiden, das durch mehrere Knoten derselben Operation in Schleifen verursacht wird. Die Trennung der Definition von Operationsobjekten von Berechnungs- und Strukturierungscode für Variablendefinitionen und Berechnungsfunktionen hilft, Probleme beim Aufrufen von Funktionen in TensorFlow zu vermeiden. Der Referent behandelt auch, wie der Optimierer die Kreuzentropie minimiert und Gewichtungen und Verzerrungen aktualisiert, während er Eigenschaften verwendet, um TensorFlow-Code effizient zu strukturieren.

  • 00:00:00 In diesem Abschnitt der Vorlesung behandelt der Kursleiter grundlegende Operationen, Tensortypen, Platzhalter und verzögertes Laden. Sie demonstrieren, wie man das TF-Diagramm mit TensorBoard mit einem einfachen Grafikprogramm visualisiert, das mit TensorBoard visualisiert wird. Der Prozess umfasst das Hinzufügen eines Writers für eine TF-Tabellenzusammenfassungsdatei zum Sitzungskontext, das Bereitstellen eines Speicherorts zum Schreiben der Ereignisse, das Angeben, was geschrieben werden soll, und das Schließen des Writers, wenn er fertig ist. Sie zeigen auch, wie man das Diagramm besser lesbar macht, indem man Namensargumente hinzufügt.

  • 00:05:00 In diesem Abschnitt betont der Redner die Bedeutung der Verwendung von TensorBoard zur Visualisierung des ausgeführten Diagramms, einer automatischen Funktion in TensorFlow, die in anderen Frameworks nicht ohne Weiteres verfügbar ist. Die Vorlesung befasst sich dann mit der Signatur der Funktion TF.constant und wie ihr Wert, ihre Form und ihr Datentyp angegeben oder abgeleitet werden können. Außerdem erklärt der Referent, was passiert, wenn „verify_shape“ auf „true“ oder „false“ gesetzt wird, und wie TensorFlow mit eindeutigen Namen für Konstanten umgeht. Schließlich zeigt die Vorlesung, wie man einen Vektor und eine Matrix erstellt, sie addiert und TensorBoard verwendet, um den Graphen zu visualisieren.

  • 00:10:00 In diesem Abschnitt der Vorlesung wird in das Thema Broadcasting in TensorFlow eingeführt und die Ähnlichkeit zu NumPy demonstriert. Broadcasting wird anhand von Beispielen zum Addieren und Multiplizieren von Konstanten zu einer Matrix gezeigt. Das Konzept zum Erstellen von Tensoren, die mit bestimmten Werten vorab gefüllt sind, wird ebenfalls behandelt, sei es mit Nullen oder Einsen, und wie Tensoren erstellt werden, die mit einem benutzerdefinierten Wert mithilfe der TF.fill-Methode gefüllt werden. Es wird betont, wie wichtig es ist, den Datentyp für diese Tensoren richtig einzustellen. Insgesamt betont der Vortrag, wie wichtig es ist, die Ähnlichkeiten und Unterschiede zwischen TensorFlow und anderen numerisch basierten Bibliotheken wie NumPy zu verstehen.

  • 00:15:00 In diesem Abschnitt erörtert der Referent einige verschiedene Arten von Beschränkungen und Sequenzen, die in Tensorflow verwendet werden können. Ein Beispiel ist die Verwendung von linspace zum Erstellen einer Folge von äquidistanten Intervallen, wobei Start- und Stoppwerte Float 32 oder Float 64 sind. Ein weiteres Beispiel ist die zufällige Normalfunktion, die einen Tensor einer bestimmten Form durch Stichproben aus einer Normalverteilung generiert. Abgeschnitten normal ist ähnlich, aber Proben innerhalb von zwei Standardabweichungen vom Mittelwert. Schließlich wird zufälliges Mischen als eine Möglichkeit diskutiert, die Werte eines Tensors auf einer bestimmten Dimension zu mischen. Der Referent schlägt vor, diese Funktionen zu üben, um das Muskelgedächtnis zu entwickeln und sich nicht ständig auf Dokumentationen verlassen zu müssen.

  • 00:20:00 In diesem Abschnitt geht der Dozent auf verschiedene Funktionen der Tensorflow-API ein, beginnend mit der Random-Shuffle-Funktion, die Daten standardmäßig in der vierten Dimension mischt und damit für Bilddatensätze nützlich macht. Die Random-Crop-Funktion schneidet zusammenhängende Datenblöcke einer bestimmten Form aus einem Tensor. Die Multinomialfunktion TF.dot entnimmt Stichproben aus einer Multinomialverteilung mit einem gegebenen Logit-Tensor und einer bestimmten Anzahl von Stichproben. Abschließend wird die zufällige Gammafunktion diskutiert, eine weitere Verteilung in der Statistik, die zwei Parameter hat: Form und Beta.

  • 00:25:00 In diesem Abschnitt erörtert der Referent die Verwendung von TensorFlow-Funktionen zur Generierung zufällig generierter Konstanten und Sequenzen für die Deep-Learning-Forschung. Die set_random_seed-Funktion wird eingeführt, die es Benutzern ermöglicht, einen zufälligen Feed für das gesamte Diagramm einzurichten, wodurch die Ergebnisse deterministischer zufällig werden und es Benutzern ermöglicht wird, Experimente konsistent zu wiederholen. Der Referent erklärt auch verschiedene TensorFlow-Funktionen für grundlegende Operationen, wie z. B. elementweise Addition, Matrixmultiplikation und Modulo-Operationen. Darüber hinaus betont der Referent, dass einige der nativen Python-Typen wie Boolean und String mit TensorFlow verwendet werden können.

  • 00:30:00 In diesem Abschnitt des Vortrags erörtert der Referent die Konzepte zum Definieren von 0-ness für verschiedene Datentypen wie Vektoren, Matrizen und Zeichenfolgen in TensorFlow und die erwartete Ausgabe für jeden Typ. Sie behandeln auch TensorFlow-Datentypen, die langsame 32 64 in 8 16 32 64 enthalten, und wie sie austauschbar mit NumPy verwendet werden können. Außerdem warnt der Referent davor, Konstanten in TensorFlow zu verwenden, da diese in der Graph-Definition gespeichert werden, was später zu Problemen führen kann.

  • 00:35:00 In diesem Abschnitt erörtert der Referent die Verwendung von TensorFlow-Variablen und erklärt, dass Benutzer eine Variable mithilfe von TFDOTvariable zusammen mit einem Wert und einem optionalen Namen definieren können. Größen werden aus dem eingegebenen Wert abgeleitet, und Benutzer können ihre Variablen mit der Funktion TF.global_variables_initializer() initialisieren. Der Sprecher warnt davor, dass nicht initialisierte Variablen zu Fehlern führen, Benutzer aber bei Bedarf nur eine Teilmenge der Variablen initialisieren können. Darüber hinaus erklärt der Referent, dass sich Konstanten von Variablen unterscheiden, da eine Konstante ein Operator ist, während eine Variable eine Klasse mit mehreren Funktionen und Methoden ist, die Benutzer aufrufen können.

  • 00:40:00 In diesem Abschnitt erklärt das Video die verschiedenen Möglichkeiten zum Initialisieren von Variablen in TensorFlow, von denen eine darin besteht, die Operation „assign“ mit einem bestimmten Wert für sie aufzurufen. Dieser Ansatz kann beim Trainieren eines Modells mithilfe von Transfer Learning nützlich sein, bei dem einigen Schichten Werte aus einem vorab trainierten Modell zugewiesen werden, während andere zufällig initialisiert werden. Das Video erläutert auch, wie eine einzelne Variable initialisiert wird und wie der Wert einer Variablen mit der Methode „eval“ abgerufen wird. Darüber hinaus erklärt das Video, dass es beim Zuweisen eines Werts zu einer Variablen in Ordnung ist, wenn die Variable zuvor nicht initialisiert wurde, und die Operation „assign“ die Variable initialisieren kann, bevor der Wert zugewiesen wird.

  • 00:45:00 In diesem Abschnitt behandelt das Video das Initialisieren von Variablen und das Zuweisen von Werten zu ihnen. Der Initialisierer op weist der Variablen selbst den Anfangswert einer Variablen zu. Darüber hinaus addiert, subtrahiert oder multipliziert die Assign-Operation den aktuellen Wert einer Variablen mit einem neuen Wert, während die Assign-Sub-Operation den neuen Wert vom aktuellen Wert subtrahiert. Mehrere Sitzungen behalten ihre eigenen Kopien von Variablen und Initialisierungen bei, und es ist wichtig, den Ausführungspfad sorgfältig zu verwalten und zu befolgen, wenn Sie mit mehreren Sitzungen arbeiten, um unerwartete Ergebnisse zu vermeiden. Schließlich wirken sich nicht initialisierte Variablen nicht auf Zuweisungen oder Operationen aus, und alle Sitzungen sollten geschlossen werden, um Ressourcen freizugeben.

  • 00:50:00 In diesem Abschnitt geht der Referent auf die Initialisierung von Variablen in der TensorFlow-Bibliothek ein. Beim Ausführen von TensorFlow müssen alle im Code verwendeten Variablen initialisiert werden. Dies kann riskant sein, wenn mehrere Variablen verwendet werden, da sie voneinander abhängen können. In solchen Fällen sollte man den Variablen-Initialisierungswert verwenden, um sicherzustellen, dass der Wert der Variablen sicher ist, bevor man ihn zum Initialisieren einer anderen Variablen verwendet. Anschließend erläutert der Referent die Vorteile der Verwendung einer interaktiven TensorFlow-Sitzung und wie die Sitzung zur Bewertung einer Reihe von Vorgängen innerhalb des Codes verwendet werden kann. Abschließend erörtert der Sprecher die Steuerungsabhängigkeit, ein Verfahren zum Sicherstellen, dass alle relevanten Operationen ausgeführt werden, bevor die letzte Operation aufgerufen wird. Dies kann in komplexen maschinellen Lernmodellen nützlich sein, die viele Operationen enthalten.

  • 00:55:00 In diesem Abschnitt behandelt das Video Platzhalter in TensorFlow, die die Zusammenstellung eines Diagramms ermöglichen, ohne die Werte der Daten zu kennen, die bei der Berechnung verwendet werden. Platzhalter fungieren als Platzhalter für tatsächliche Werte, die später berechnet werden, und sie werden mithilfe des TF.placeholder-Operators mit einem definierten Typ und einer definierten Form definiert. Wenn Operationen mit Platzhaltern ausgeführt werden, muss ein Wörterbuch mit den Platzhaltern und ihren Werten erstellt werden, und dieses Wörterbuch wird dann in den session.run()-Aufruf eingespeist. Es ist erwähnenswert, dass für Platzhalter zwar die Form auf „none“ gesetzt werden kann, einige Operationen jedoch erfordern, dass die Form definiert wird, was zu Fehlern führen kann.

  • 01:00:00 In diesem Abschnitt diskutiert das Video Platzhalter und wie sie gültige erstklassige Operationen auf ihrer eigenen Grundlage sind, die in TensorBoard visualisiert werden können. Der Abschnitt behandelt auch, wie Sie mehrere Datenpunkte eingeben und wie Sie Free Dict für alle Variablen oder Konstanten in Ihrem Diagramm verwenden. Das Video geht dann zum verzögerten Laden über, bei dem Objekte nur dann erstellt werden, wenn sie benötigt werden, und zum normalen Laden, bei dem ein Knoten innerhalb des Diagramms erstellt wird, bevor es ausgeführt wird. Das Konzept des verzögerten Ladens hilft bei der Speicherverwaltung, insbesondere bei der Arbeit mit großen Datensätzen.

  • 01:05:00 In diesem Abschnitt erläutert der Referent Lazy Loading und seine Auswirkungen auf TensorFlow. Lazy Loading ist eine Technik, bei der die Berechnung bis zur Laufzeit verschoben wird und nicht erst bei der Graphkonstruktion - dies kann zu mehreren Knoten derselben Operation im Berechnungsgraphen führen, insbesondere in Schleifen. Um ein Aufblähen des Graphen und andere damit verbundene Probleme zu vermeiden, empfiehlt der Referent, die Definition von Operationsobjekten von der Berechnung und Ausführung der Operationen zu trennen. Darüber hinaus betont der Redner die Wichtigkeit, Code so zu strukturieren, dass sich Variablendefinitionen an einer Stelle und Berechnungsfunktionen an einer anderen befinden.

  • 01:10:00 In diesem Abschnitt erklärt der Dozent, wie man Code strukturiert, um Probleme beim Aufrufen von Funktionen zu vermeiden, wenn TensorFlow für die Deep-Learning-Forschung verwendet wird. Anhand von Python-Properties demonstriert der Dozent, wie man interne Attribute wie „start_prediction“, „optimized“ und „error“ definiert. Der erste Teil des Codeblocks berechnet die Datengröße, die Zielgröße, das Gewicht und den Bias, bevor eine Operation hinzugefügt wird. Die resultierende Ausgabe dieser Operation wird dem Diagramm hinzugefügt. Die 'optimize'-Funktion folgt dem gleichen Muster, indem sie beim ersten Aufruf die Anfangsknoten erstellt und bei späteren Aufrufen Handles an diese Knoten zurückgibt.

  • 01:15:00 In diesem Abschnitt erläutert der Referent, wie der Optimierer die Kreuzentropie minimiert und Gewichtungen und Verzerrungen in TensorFlow aktualisiert. Wenn der Optimierer zum ersten Mal aufgerufen wird, führt TensorFlow die Backpropagation durch und aktualisiert die Variablen, die zum Verlust beitragen. Wenn der Optimierer anschließend aufgerufen wird, verfügt TensorFlow bereits über das Diagramm und berechnet die eingehenden Knoten, um die Gewichtungen zu minimieren und zu aktualisieren, ohne zusätzliche Knoten aufzurufen. Die Verwendung von Eigenschaften hilft, TensorFlow-Code effizienter zu strukturieren. Die nächste Vorlesung wird ein Beispiel geben, um diesen Prozess besser zu verstehen.
 

Tensorflow für die Deep-Learning-Forschung - Vorlesung 3



Tensorflow für die Deep-Learning-Forschung - Vorlesung 3

Die dritte Vorlesung zu TensorFlow für die Deep-Learning-Forschung behandelt lineare Regression und logistische Regression unter Verwendung des MNIST-Datensatzes. Der Dozent zeigt, wie man ein lineares Regressionsmodell in TensorFlow trainiert, indem man Platzhalter für Eingabedaten erstellt, trainierbare Variablen für Gewichte und Bias initialisiert, Vorhersagen erstellt, Verluste berechnet und den Optimierer als Gradientenabstieg mit einer bestimmten Lernrate definiert. Die Vorlesung erklärt auch den stochastischen Mini-Batch-Gradientenabstieg und die Wichtigkeit, sich die Form von Variablen zu merken. Die Genauigkeit des Modells wird berechnet, indem der Index des von der Funktion TF argmax erhaltenen Maximalwerts mit der Zielvariablen y verglichen wird, die Anzahl der korrekten Vorhersagen unter Verwendung von TF Reduce Sum und TF Float berechnet und durch die Gesamtzahl der Tests dividiert wird Beispiele. Abschließend stellt der Dozent fest, dass dieses Modell nicht als leistungsfähig gilt und es robustere Modelle wie Faltungsschichten gibt, die eine höhere Genauigkeit erzielen.

  • 00:00:00 In diesem Abschnitt beginnt der Referent mit der dritten Vorlesung zu TensorFlow für die Deep-Learning-Forschung und beginnt mit einer Wiederholung des Materials aus der vorherigen Vorlesung. Sie erklären, wie TensorFlow die Definition des Berechnungsgraphen von seiner Ausführung trennt und wie man einen Graphen zusammensetzt, indem man ihm verschiedene Operationen hinzufügt. Anschließend diskutieren sie TF-Konstanten, -Variablen und -Platzhalter und deren Funktionalitäten innerhalb eines Graphen. Der Redner betont, wie wichtig es ist, Lazy Loading zu vermeiden und stattdessen das Zusammenstellen des Graphen und dessen Ausführung für eine optimale Effizienz zu trennen. Anschließend stellen sie das erste Beispiel einer linearen Regression vor und erläutern, wie die abhängige Variable Y auf der Grundlage unabhängiger Variablen im Datensatz vorhergesagt werden kann. Der Referent empfiehlt den Zuhörern, den Beispielen zu folgen und die Aufgaben selbst zu lösen.

  • 00:05:00 In diesem Abschnitt erklärt der Dozent die Grundlagen der linearen Regression und demonstriert, wie man ein lineares Regressionsmodell in TensorFlow trainiert. Es wird ein einfaches lineares Modell verwendet, bei dem der vorhergesagte Wert von y W multipliziert mit X ist, addiert zu B. Der Verlust wird als Differenz zwischen dem vorhergesagten Wert und dem tatsächlichen Wert von Y berechnet, und das Training erfolgt durch Minimieren des Verlusts durch Optimieren von trainierbare Variablen von W und B. Der Dozent teilt dann den Code für ein lineares Regressionsbeispiel mit Eingangsdaten, die die Anzahl der Brände sind, und der Ausgangszielvariablen, die die Anzahl der Tests in einer bestimmten Stichprobe ist. Der Code zeigt, wie Platzhalter für die Eingabedaten erstellt, die trainierbaren Variablen von W und B initialisiert, Vorhersagen erstellt, Verluste berechnet und der Optimierer als Gradientenabstieg mit einer bestimmten Lernrate definiert werden.

  • 00:10:00 In diesem Abschnitt beschreibt der Dozent den Prozess des Trainierens eines Modells in TensorFlow für Deep-Learning-Forschung. Nach dem Erstellen des Modells und dem Entwerfen der Verlustfunktion besteht der nächste Schritt darin, eine Sitzung zu initiieren und das Modell für eine definierte Anzahl von Epochen auszuführen. Jede Epoche beinhaltet das wiederholte Durchlaufen der Trainingsdaten durch die Sitzung und das Aktualisieren der Variablen, um den Verlust zu minimieren. Der Prozess wird durch TensorBoard visualisiert und das resultierende Modell kann verwendet werden, um die Ausgabe für jeden gegebenen Eingabewert vorherzusagen. Der Dozent bemerkt auch das Vorhandensein eines Ausreißers in den Daten, der die Vorhersage des Modells beeinflusst.

  • 00:15:00 In diesem Abschnitt erklärt der Dozent die Rolle von Optimierern beim Trainieren von Modellen in TensorFlow und listet mehrere Optimierer auf, darunter Gradientenabstieg, Grad-Impuls, Adam, RMSprop, proximaler Gradient und proximal a grad. Der Dozent betont, wie wichtig es ist, die Leistung des Modells anhand von Daten zu testen, die er zuvor noch nicht gesehen hat, um sicherzustellen, dass das Modell verallgemeinerbar ist. Um die Empfindlichkeit der quadratischen Fehlerverlustfunktion gegenüber Ausreißern zu thematisieren, stellt der Dozent die Huber-Verlustfunktion vor und erklärt ihre Funktionsweise. Der Dozent gibt auch Anleitungen zur Codierung der Huber-Loss-Funktion in TensorFlow.

  • 00:20:00 In diesem Abschnitt erläutert der Dozent die Implementierung des Huber-Verlusts, einer im Deep Learning häufig verwendeten Verlustfunktion. Der Huber-Verlust wird für Regressionsprobleme verwendet und arbeitet, indem er das Residuum zwischen Vorhersagen und Bezeichnungen findet. Wenn das Residuum kleiner als der Delta-Wert ist, wird eine Funktion namens Small Res zurückgegeben. Wenn es jedoch größer als Delta ist, wird Large Res zurückgegeben. Der Dozent geht dann auf die Erörterung der logistischen Regression unter Verwendung des MNIST-Datensatzes ein. Die logistische Regression wird für Klassifizierungsprobleme verwendet und funktioniert, indem der Logit als X in W plus B berechnet wird. Das Ergebnis davon wird dann durch eine Softmax-Funktion geleitet, wodurch eine Wahrscheinlichkeitsverteilung erzeugt wird. Die in diesem Fall verwendete Verlustfunktion ist der Kreuzentropieverlust, der den Abstand zwischen zwei Wahrscheinlichkeitsverteilungen misst.

  • 00:25:00 In diesem Abschnitt erläutert der Kursleiter das Konzept des stochastischen Mini-Batch-Gradientenabstiegs und die Verwendung von Batches beim Trainieren von Modellen für Deep Learning. Auf diese Weise hilft es, den GPU-Speicher optimal zu nutzen, und ist effizient, wenn wir nicht den gesamten Trainingssatz verwenden können. Das Lernprogramm enthält Schritte zum Erstellen eines Platzhalters für das Modell, zum Initialisieren der Werte für Gewichtung und Bias für die Eingabe- und Ausgabefeatures und zum Erstellen eines Modells mit Tensorflow unter Verwendung der Funktion tf.random.normal für die Initialisierung. Es wurde auch betont, wie wichtig es ist, sich die Form dieser Variablen beim Erstellen zu merken, insbesondere bei der letzten Eingabe-Feature-Dimension und der Anzahl der Klassen.

  • 00:30:00 In diesem Abschnitt wird das einfache DF-Modell mit einer Dimensionalität bis zur Chargengröße von 10 besprochen, wobei die Cross-Entropie-Verlustfunktion zur Berechnung des Verlusts verwendet wird. Ein Optimierer wird definiert, und sobald das Modell trainiert ist, wird es getestet, um die Gesamtzahl korrekter Vorhersagen zu finden. Die korrekten Vorhersagen werden mithilfe des Logits-Stapels und der Softmax-Funktion berechnet, wobei Wahrscheinlichkeitswerte in das Modell eingespeist und mit den tatsächlichen Labels verglichen werden, um korrekte Vorhersagewerte zu berechnen. Es wird empfohlen, den Optimierer nicht auf dem Testset auszuführen, um eine Überanpassung zu vermeiden.

  • 00:35:00 In diesem Abschnitt erklärt der Moderator, wie die Genauigkeit des Modells berechnet wird. Die Funktion TF argmax wird verwendet, um den Maximalwert in der Zeile zu erhalten, und gibt den Index der Ziffer mit der höchsten Wahrscheinlichkeit zurück. Diesen Index vergleichen wir mit der Zielvariablen y. Dann berechnen wir die Anzahl der richtigen Vorhersagen mit TF Reduce Sum und TF Float. Schließlich dividieren wir die Anzahl der korrekten Vorhersagen durch die Gesamtzahl der Testbeispiele, um die Genauigkeit zu erhalten, die für dieses spezifische lineare Modell 90 % beträgt. Der Moderator weist auch darauf hin, dass dieses Modell nicht als leistungsfähig gilt und es robustere Modelle wie Faltungsschichten gibt, die eine höhere Genauigkeit erzielen.
 

Tensorflow für die Deep-Learning-Forschung - Vorlesung 4



Tensorflow für die Deep-Learning-Forschung - Vorlesung 4

In Lecture 4 der Reihe TensorFlow for Deep Learning Research geht der Referent auf Worteinbettungen in der Verarbeitung natürlicher Sprache auf Basis von Deep Learning ein. Die Vorlesung erläutert das Konzept des Lernens von Wörterinbettungen für NLP-Probleme und beschreibt den Prozess der Repräsentation von Wörtern als numerische Vektoren in neuronalen Netzen. Der Vortrag diskutiert verschiedene Methoden zur Generierung von Wortvektoren mit KI-basiertem CBOW und Skip-Grammen und befasst sich mit dem Problem der Rechenkomplexität in Softmax unter Verwendung von negativem Sampling und NCE. Darüber hinaus beleuchtet der Dozent den Prozess der Einbettung von Variablen in TensorFlow und die Verwendung von t-SNE zur Visualisierung hochdimensionaler Wortvektoren in reduzierten Dimensionen. Schließlich schließt die Vorlesung mit einer Zusammenfassung der behandelten Konzepte und einem kurzen Überblick über die nächste Vorlesung, die sich auf das Erstellen von Wortmodellen konzentrieren wird.

  • 00:00:00 In diesem Abschnitt diskutiert der Dozent das Konzept der Worteinbettungen im NLP basierend auf Deep Learning. Wörterinbettungen sind eine Möglichkeit, Wörter als Zahlen in einem neuronalen Netzwerk darzustellen, das semantische Beziehungen zwischen Wörtern erfasst. Ziel ist es, ein Modell zu bauen, das ähnliche Konzepte wie Länder zusammenfassen kann, wenn man sie auf einen zweidimensionalen Raum projiziert. Der Dozent erklärt auch den Prozess des Lernens von Wörterinbettungen durch Zählen und stellt den neueren Ansatz vor, Backpropagation mit neuronalen Netzen zu verwenden.

  • 00:05:00 In diesem Abschnitt erörtert der Sprecher Möglichkeiten, Wörter mithilfe der Co-Occurrence-Matrix als Vektoren darzustellen. Die Co-Occurrence-Matrix ist jedoch sehr groß und spärlich, was es schwierig macht, damit zu arbeiten. Um dies anzugehen, schlägt der Redner vor, abgeschnittene SVD zu verwenden, um eine Annäherung mit niedrigem Rang der Matrix zu finden. Dies beinhaltet das Zerlegen der Matrix in drei Matrizen und das Auswählen nur der ersten K der richtigen singulären Vektoren zur Verwendung als Darstellungen. SVD ist jedoch eine rechenintensive Operation, insbesondere für große Vokabulare, was die Skalierung schwierig macht. Darüber hinaus würde das Hinzufügen eines neuen Wortes zum Vokabular erfordern, dass die gesamte Berechnung erneut durchgeführt wird.

  • 00:10:00 In diesem Abschnitt behandelt das Video zwei Methoden zur Generierung von Wortvektoren mit KI-basierten Methoden: Continuous Bag of Words (CBOW) und Skip Gram. CBOW verwendet den Kontext um das Zielwort herum, um das mittlere Wort vorherzusagen, während Skipgram das mittlere Wort verwendet, um die Kontextwörter vorherzusagen. One-Hot-Vektoren werden verwendet, um jedes Wort darzustellen, und eine Gewichtungsmatrix wird durch ein einfaches neuronales Netzwerk erstellt, um die Wortvektoren zu lernen. Trainingsproben werden ausgewählt, indem eine Fenstergröße ausgewählt und das Fenster über den Text bewegt wird. Das neuronale Netzwerk wird darauf trainiert, die Wahrscheinlichkeit jedes anderen Wortes im Kontext zu finden, wenn ein bestimmtes Wort in der Mitte des Satzes gegeben ist.

  • 00:15:00 In diesem Abschnitt des Vortrags erklärt der Referent die Word-Embedding-Technik, bei der Wörter als Vektoren dargestellt werden, um sie für das neuronale Netzwerk interpretierbar zu machen. Die Technik beinhaltet die zufällige Auswahl eines Wortes aus einem Kontext und die Verwendung einer Gewichtsmatrix zum Lernen der Wortvektoren, die dann mit einer Ausgabematrix gepaart werden, um eine Wahrscheinlichkeitsverteilung von Wörtern im Vokabular zu erstellen. Die Softmax-Funktion wird verwendet, um die skalare Ausgabeverteilung zu normalisieren, sodass Wörtern mit ähnlichem Kontext ähnliche Wahrscheinlichkeiten zugewiesen werden. Durch die Verwendung dieses Ansatzes zeigte ein Beispiel in der Vorlesung, wie die Wörter intelligent und smart in ähnlichen Kontexten auftreten würden und somit die Wortvektoren für diese beiden Wörter sehr ähnlich wären.

  • 00:20:00 In diesem Abschnitt erörtert der Dozent mögliche Lösungen für das Problem der Rechenkomplexität, das bei Softmax auftritt. Die zwei Verfahren, die üblicherweise verwendet werden, um dieses Problem anzugehen, sind Negativabtastung und Rauschkontrastschätzung (NCE). Obwohl NCE Softmax mit einer theoretischen Garantie annähern kann, liefern beide Methoden für praktische Zwecke ähnliche Ergebnisse. Anschließend geht die Vorlesung auf die Definitionen von empirischen und Wissensverteilungen ein, wobei das Ziel darin besteht, die empirische Verteilung mit Hilfe der Modellparameter zu approximieren. Abschließend stellt der Dozent NCE als Methode zur Reduzierung des Sprachmodellschätzungsproblems vor.

  • 00:25:00 In diesem Abschnitt erklärt der Sprecher, wie er Daten für das Zwei-Klassen-Trainingsproblem unter Verwendung von Proxy-Binärklassifikation generiert. Sie sampeln ein mittleres Wort von der P Tilde C und nehmen dann eine echte Probe von PT wenig P Tilde W Komma C. Sie werden K Rauschproben mit QW erzeugen und ihnen das Label D zuweisen, das gleich 0 ist, um dies anzuzeigen Datenpunkte sind Rauschen. Anschließend berechnen sie die gemeinsame Wahrscheinlichkeit von D, Komma W in den Zwei-Klassen-Daten, indem sie eine Mischung aus zwei Verteilungen erstellen. Unter Verwendung der Definition der bedingten Wahrscheinlichkeit können sie dies in die bedingte Wahrscheinlichkeit von D umwandeln, wenn W und C für die beiden Fälle gegeben sind, in denen D 0 und 1 ist.

  • 00:30:00 In diesem Abschnitt geht der Referent auf das Problem der aufwändigen Berechnung der Zustandssumme und deren Lösung mittels Noise Contrastive Estimation (NCE) ein. NCE schlägt vor, die Partitionsfunktion als Parameter für jedes empirische Kontextwort hinzuzufügen und durch Backpropagation zu lernen. Durch Festlegen des Vc-Parameters auf eins und Ersetzen der P-Tilde W Komma C durch u Theta W Komma C dividiert durch die Partitionsfunktion durch Vc, wird ein binäres Klassifikationsproblem erhalten. Das Ziel besteht darin, die bedingte Wahrscheinlichkeit von D in Bezug auf die K negativen Stichproben zu maximieren, was als logarithmische Wahrscheinlichkeit geschrieben werden kann. Der Referent erklärt, wie NCE die Erwartung durch eine Monte-Carlo-Näherung ersetzt, wodurch der Prozess weniger rechenintensiv wird.

  • 00:35:00 In diesem Abschnitt wird die Verwendung von Noise Contrastive Estimation (NCE) anstelle von Negative Sampling (NS) besprochen. NCE ist in der Lage, das Sprachmodellierungsziel auf ein binäres Klassifikationsproblem zu reduzieren, und es wird gezeigt, dass das Ziel an der gleichen Stelle für die Modellparameter realisiert wird. Die TensorFlow-API für den NCE-Verlust wird ebenso vorgestellt wie die Verwendung des Namensbereichs, der es ermöglicht, Knoten zur besseren Visualisierung in TensorBoard zu gruppieren. Der Gültigkeitsbereich von Variablennamen wird auch im Zusammenhang mit der Namensbereichsfunktion erläutert.

  • 00:40:00 In diesem Abschnitt erläutert der Dozent den Prozess der Einbettung von Variablen in TensorFlow für die Deep-Learning-Forschung. Durch das Einbetten von Variablen in einen bestimmten Bereich werden sie Teil einer schön gruppierten Visualisierung im TensorFlow Board. Der Dozent erklärt auch, wie man Wortvektoren mit einer Technik namens t-SNE visualisiert und stellt ein Rezept zum Plotten des TC für die Visualisierung bereit. Indem die aus der Einbettungsmatrix gelernten hochdimensionalen Vektoren verwendet werden, wird t-SNE verwendet, um die Dimensionen in 2D oder 3D zu reduzieren, wodurch die Beziehungen zwischen Wörtern mit dem nächsten Nachbarn angezeigt werden. Abschließend gibt der Dozent einen Überblick über den Code, der für das Word-to-Work-Modell verwendet wird.

  • 00:45:00 In diesem Abschnitt erläutert der Dozent den Prozess der Definition von Platzhaltern für Eingabe und Ausgabe, die Konstruktion einer Variablen für den NCE-Verlust und die Definition von Einbettungen und der Einbettungsmatrix. Unter Verwendung einer Vokabulargröße von 50.000 und einer Stapelgröße von 128 definiert die Vorlesung eine Einbettungsmatrix, die einen 128-dimensionalen Wortvektor für jedes Wort lernt. Der Prozess der Inferenz in Skip-Gram wird ebenfalls erklärt, wobei sich der Vortrag zur einfacheren Erklärung auf jeweils ein Wort konzentriert. Die Verlustfunktion wird dann mit der TensorFlow-API definiert, wobei der Vortrag eine Aufschlüsselung der Schlüsselvariablen wie die Negativproben und die Anzahl der Trainingsschritte liefert.

  • 00:50:00 In diesem Abschnitt erörtert der Redner, wie NCE (Noise Contrastive Estimate) verwendet wird, um ein binäres Klassifizierungsproblem zu erstellen, das hilft, die Komplexität von Softmax zu lösen. Jedes von 64 negativen und einem positiven Beispiel, das für die Proxy-Klassifizierung erstellt wurde, entspricht einem Wortvektor. Die automatische TensorFlow-Differenzierung wird verwendet, um die Gewichtungen eines binären Klassifikators zu aktualisieren, um das eine positive Beispiel von den 64 negativen Beispielen zu trennen. Die Vorlesung endet mit einer Zusammenfassung der bisher behandelten Konzepte, einschließlich Wortvektoren, NCE, Einbettungsmatrizen und Hauptkomponentenanalyse (PCA). Die nächste Vorlesung konzentriert sich auf die Verwaltung verschiedener Programme und Experimente beim Erstellen von Wortmodellen.
 

Tensorflow für die Deep-Learning-Forschung - Vorlesung 5_1



Tensorflow für die Deep-Learning-Forschung - Vorlesung 5_1

Der fünfte Vortrag in der Reihe TensorFlow for Deep Learning Research behandelt mehrere Themen, darunter die effektive Verwaltung von Deep-Learning-Experimenten, die Bedeutung der automatischen Differenzierung in TensorFlow und den Prozess des Trainierens von Modellen und Speichern von Variablen. Der Referent erklärt, dass in Deep-Learning-Frameworks wie TensorFlow eine automatische Differenzierung bereitgestellt wird, die es Benutzern erleichtert, ihre Modelle zu codieren, ohne sich mit Gradienten befassen zu müssen. Es ist zwar nicht unbedingt erforderlich, Gradienten manuell zu berechnen, aber es ist dennoch hilfreich, sie für einfache Funktionen und Netzwerke zu berechnen. Die Erstellung eines benannten Entitätserkennungsmodells mit Unterklassen und den erforderlichen Platzhaltern und Feed-Techniken wird ebenfalls behandelt, ebenso wie das Speichern und Wiederherstellen von Variablen in TensorFlow und der Prozess des Speicherns von Modellen über verschiedene Sitzungen und Maschinen hinweg.

  • 00:00:00 In diesem Abschnitt erläutert der Referent, wie Deep-Learning-Experimente verwaltet werden und wie wichtig die automatische Differenzierung in TensorFlow ist. Sie erklären, dass Sie beim Schreiben eines Modells verschiedene Dinge ausprobieren und das Training beginnen und neu starten werden, sodass eine ordnungsgemäße Verwaltung unerlässlich ist. In Deep-Learning-Frameworks wie TensorFlow wird eine automatische Differenzierung bereitgestellt, die es Benutzern erleichtert, ihre Modelle zu codieren, ohne sich mit den tatsächlichen Gradienten befassen zu müssen. Der Sprecher liefert ein Beispiel, bei dem die „Gradients“-Operation von TensorFlow es ermöglicht, die Gradienten von Y in Bezug auf jeden Tensor in einer Liste zu finden, die als zweites Argument bereitgestellt wird. Sie erwähnen auch, dass alles in TensorFlow und Deep Learning auf numerischer Differenzierung basiert.

  • 00:05:00 In diesem Abschnitt spricht der Redner darüber, ob es notwendig ist, zu lernen, wie man Gradienten von Hand berechnet, wenn TensorFlow bereits über eine Punktgradientenfunktion verfügt. Er schlägt vor, dass es zwar nicht unbedingt erforderlich, aber dennoch hilfreich ist, Farbverläufe für einfache Funktionen oder Netzwerke zu erarbeiten, insbesondere beim Schreiben benutzerdefinierter Ebenen oder beim Umgang mit Farbverlaufsproblemen wie Explosion oder verschwindenden Farbverläufen. Er schlägt auch vor, das Modell objektorientierter zu strukturieren, um es einfacher zu verwenden und das Modell vollständig aus der Funktion zu entfernen. Als Beispiel für die Kapselung von Komponenten eines Deep-Learning-Modells nennt der Referent die Zuordnungsstruktur CS 244 D.

  • 00:10:00 In diesem Abschnitt erörtert der Referent den Modellaspekt beim Erstellen eines Deep-Learning-Modells. Sie erklären, dass das Modell der Ort ist, an dem die vollständige Inferenz geschrieben wird, indem eine Eingabe genommen und ein Vorwärtsdurchgang durchgeführt wird, um die Ausgabe zu erhalten, und dann die Verlustoperation hinzugefügt wird, die einen Verlustskalar erzeugt, der die vorhergesagte Ausgabe mit den wahren Ausgabebezeichnungen der Platzhalter vergleicht. Der Sprecher schlägt vor, alles als eine Basisklasse zu abstrahieren und Unterklassen für bestimmte Arten von Modellen zu erstellen, z. B. ein Sprachmodell. Abschließend erläutern sie, wie ein Modell zur Erkennung benannter Entitäten mit Unterklassen und den erforderlichen APIs wie Platzhaltern und Feed-Technologie erstellt wird.

  • 00:15:00 In diesem Abschnitt lernen wir den Prozess des Trainierens von Deep-Learning-Modellen mit TensorFlow und das effektive Verwalten von Experimenten kennen. Der Prozess umfasst das Erstellen variabler Matrizen und das Abrufen von Einbettungen für Trainingsdaten, bevor eine Epoche von Trainingsdaten in einer Schleife ausgeführt wird, die die Einbettungsmatrizen trainiert. Um den Fortschritt zu speichern, speichert der TF to train.saver die Variablen im Diagramm in Binärdateien, die bei zukünftigen Läufen aufgerufen werden können, um dort weiterzumachen, wo man aufgehört hat. Das Codebeispiel zeigt, wie das Saver-Objekt instanziiert und der Trainingsschritt durchlaufen wird, um den Optimierer auszuführen, wobei die Sitzung und einige Verzeichnisnamen gespeichert werden.

  • 00:20:00 In diesem Abschnitt geht der Referent auf die Details der Save-Klasse von TensorFlow und der damit verbundenen Variablen ein. Die globale Schrittvariable, die als nicht trainierbare Codevariable definiert ist, die bei 0 beginnt, kann jedes Mal inkrementiert werden, wenn die Trainingsoperation aufgerufen wird, indem sie in der "Minimierungs"-Funktion bereitgestellt wird. Darüber hinaus begrenzt die Variable „maximal zu behalten“ die Anzahl der gespeicherten Checkpoints auf die neuesten, und die Variable „keep checkpoint every“ steuert, wie oft ein Prüfpunkt gespeichert wird, was sie für lange Trainingszyklen nützlich macht.

  • 00:25:00 In diesem Abschnitt erläutert der Kursleiter, wie Variablen in TensorFlow gespeichert und wiederhergestellt werden. Er erklärt, dass Benutzer eine Liste von Variablen oder ein Wörterbuch angeben können, um bestimmte Variablen zu speichern, anstatt alles zu speichern. Dies hat den Vorteil, dass Platz gespart und der Durchsatz erhöht wird, insbesondere beim Transferlernen. Um Variablen wiederherzustellen, können Benutzer die Funktion tf.latest_checkpoint aufrufen, die nach dem neuesten Prüfpunkt in einem bestimmten Verzeichnis sucht und von dort mithilfe der Funktion session.restore() wiederherstellt. Der Kursleiter erwähnt auch, dass Benutzer das Diagramm ab TensorFlow 0.11 speichern können, indem sie Sammlungen mit Schlüsseln und Werten erstellen, die den Variablen entsprechen, und dann das Saver-Objekt mit allen Standardwerten instanziieren.

  • 00:30:00 In diesem Abschnitt der Vorlesung erklärt der Kursleiter, wie TensorFlow-Modelle in verschiedenen Sitzungen und sogar auf verschiedenen Computern gespeichert und wiederhergestellt werden. Die Schritte umfassen das Ausführen des Initialisierers für globale Variablen, das Speichern der Sitzung und das Verwenden der Methode „Metadiagramm exportieren“, um eine gespeicherte Diagrammdatei zu erstellen. Dieses gespeicherte Diagramm kann wiederhergestellt und die Variablen in einem völlig anderen Prozess oder einer anderen Maschine neu initialisiert werden, wenn das ursprüngliche Diagramm nicht verfügbar ist. Der Kursleiter erwähnt auch TF.summary, das im nächsten Video behandelt wird.
 

Tensorflow für die Deep-Learning-Forschung - Vorlesung 5_2



Tensorflow für die Deep-Learning-Forschung - Vorlesung 5_2

Das Video-Tutorial behandelt die Implementierung von TF-Zusammenfassungsoperationen, die eine Visualisierung von Daten in TensorBoard ermöglichen. Das Tutorial behandelt drei Arten von Zusammenfassungsoperationen – TF.summary.scalar, TF.summary.histogram und TF.summary.image – und erklärt, wie man sie zu einer zusammenführt und sie mit der FileWriter-Klasse in eine Ereignisdatei schreibt. Der Dozent demonstriert, wie Namensbereiche verwendet werden, um den Graphen in TensorBoard zu visualisieren, und definiert einen Testschreiber und einen geschulten Schreiber, um Zusammenfassungen in separate Dateien zu schreiben. Sie betonen die Nutzung der Visualisierungsfunktionen von TensorBoard, um die Leistung des eigenen Modells besser zu verstehen. Insgesamt ist TensorBoard ein entscheidendes Tool zur Verfolgung des Trainingsfortschritts, und die API zum Hinzufügen und Zusammenführen von Operationen ist unkompliziert.

  • 00:00:00 In diesem Abschnitt erläutert das Video-Tutorial die Verwendung von TF-Zusammenfassungsoperationen, bei denen es sich um Funktionen handelt, die Informationen an Knoten im Berechnungsdiagramm anhängen, um zusammenfassende Daten für die Visualisierung in TensorBoard zu generieren. Das Tutorial behandelt drei Arten von Zusammenfassungsoperationen: TF.summary.scalar, zum Anhängen an Skalarwertknoten im Diagramm, wie z. B. Verlust, Kreuzentropie und Lernraten; TF.summary.histogram zum Visualisieren der Verteilung eines Tensors, beispielsweise der Gewichte einer bestimmten Schicht; und TF.summary.image zum Visualisieren von Bildern, Eingaben oder sogar einiger Zwischenschichten. Das Tutorial erklärt, wie Sie alle zusammenfassenden Operationen zu einer zusammenführen und sie mithilfe der FileWriter-Klasse in eine Ereignisdatei schreiben.

  • 00:05:00 In diesem Abschnitt erklärt der Referent, wie man einen Dateischreiber und eine Zusammenfassung in TensorFlow einrichtet, um Daten auf TensorBoard zu visualisieren. Sie empfehlen, den Writer so einzurichten, dass er in bestimmten Intervallen ausgeführt wird, da die Ausführung bei jedem Schritt zu viele Daten erzeugen könnte. Indem dem Dateischreiber das Graph-Objekt zur Verfügung gestellt wird, kann der Berechnungsgraph als Graph-Def gespeichert und auf TensorBoard visualisiert werden. Der Referent demonstriert, wie Skalare und Histogramme auf TensorBoard visualisiert werden, indem bestimmte Schritte auf der x-Achse ausgewählt werden, um die entsprechenden Werte auf der y-Achse anzuzeigen. Sie ermutigen Benutzer, die Visualisierungsfunktionen von TensorBoard zu nutzen, um die Leistung ihres Modells besser zu verstehen.

  • 00:10:00 In diesem Abschnitt erörtert der Dozent die Definition einer Funktion namens variable_summary, die einen Tensor nimmt und einen Zusammenfassungsknoten hinzufügt. Die Funktion umfasst Mittelwert, Standardabweichung, Max, Min und Histogramm; Jede Variable wird aus einer Benennungsperspektive heraus begrenzt. Sie diskutieren auch die Idee der Unordnung in den Verteilungen, bei denen die Verluste am höchsten sind, wenn das Modell nicht ausreichend trainiert wird, und wenn die Schrittgröße zunimmt, nehmen die Verluste ab. Für verschiedene Experimente können verschiedene Dateischreiber verwendet und im Protokollgerät gespeichert werden. Die dichte Aufenthaltsoption ermöglicht das Auswählen und Umschalten zwischen verschiedenen Optionen.

  • 00:15:00 In diesem Abschnitt konzentriert sich das Video auf die Implementierung von Zusammenfassungsoperationen und die Verwendung von Namensbereichen in TensorFlow zur Visualisierung. Der Code definiert Namensbereiche für Kreuzentropie und Genauigkeit, um bei der Visualisierung des Diagramms in TensorBoard zu helfen. Die zusammengeführte Operation wird durch Aufrufen von TF.summary.merge_all abgerufen, und diese Operation wird beim Ausführen der Sitzung verwendet. Der Code definiert auch einen Testschreiber und einen geschulten Schreiber zum Schreiben der resultierenden Zusammenfassungen in separate Dateien. Für jeden Schritt trainiert der Code das Modell und schreibt die Zusammenfassungen. Wenn die Anzahl der Schritte mod 10 gleich Null ist, wird die Zusammenfassung an den Testschreiber geschrieben, und für alle anderen Schritte wird sie an den geschulten Schreiber geschrieben.

  • 00:20:00 In diesem Abschnitt erläutert der Referent die Methode zum Ausführen von TensorBoard zum gleichzeitigen Visualisieren von Ereignissen sowohl im Testschreiber als auch im Trainingsschreiber. Der Befehl "s about - - clock there is equal to the path" hilft, alles zu visualisieren, und der aktuelle Host ist localhost Doppelpunkt sechs null null sechs, der über den Browser navigiert werden kann. Darüber hinaus hat das TF-Punktzusammenfassungs-Punktbild standardmäßig einen Namenstensor max. Ausgaben und interpretiert einen vierdimensionalen Tensor mit der Form Pfadgröße Höhe Breite und Kanälen. Das Argument „Max Outputs“ bestimmt, wie viele versetzte Rückbilder gerendert und auf TensorBoard angezeigt werden. Insgesamt ist TensorBoard ein entscheidendes Tool, um den Trainingsfortschritt zu verfolgen, und die API zum Hinzufügen verschiedener Operationen und deren Zusammenführung ist unkompliziert.
 

Intuition hinter Backpropagation als Computergraph



Intuition hinter Backpropagation als Computergraph

Die Intuition hinter Backpropagation als Rechengraph wird in diesem Video erklärt. Der Redner erörtert, wie eine Ersatzfunktion verwendet wird, um die empirische Funktion zu schätzen, die Eingänge auf Ausgänge abbildet, und dass das Ziel darin besteht, die Parameter zu finden, die die Verlustfunktion minimieren. Backpropagation ermöglicht die Berechnung des Gradienten der Verlustfunktion in Bezug auf jeden Parameter durch einen Rückwärtsdurchlauf des Graphen. Die lokalen Gradienten für jedes Gate im Diagramm werden berechnet und können verwendet werden, um den Gradienten der endgültigen Ausgabe in Bezug auf jede Eingabe zu berechnen. Der Referent erklärt auch, wie man mit Gradienten für Verzweigungs- und vektorisierte Operationen umgeht und wie man sicherstellt, dass die Dimensionalität bei der Berechnung von Ableitungen funktioniert.

  • 00:00:00 In diesem Abschnitt ermöglicht Backpropagation das schnelle Konvergieren neuronaler Netze zu trainieren, und ein tiefes Verständnis kann für Forscher von Vorteil sein. Der Vortrag beginnt mit der Erklärung, dass das Ziel eines neuronalen Netzes darin besteht, die Funktion zu finden, die Eingaben auf Ausgaben abbildet, die mit F(x) bezeichnet werden, was eine empirische Funktion ist, die möglicherweise nicht entdeckt werden kann. Die Vorlesung skizziert, dass eine Ersatzfunktion G(x,θ) verwendet wird, um F zu schätzen, wobei θ die neuronalen Netzwerkparameter bezeichnet, und das Ziel darin besteht, die Parameter zu finden, die eine Verlustfunktion J minimieren. Die Vorlesung diskutiert dann, wie die Backpropagation-Technik funktioniert ermöglicht es dem Netzwerk, die optimalen Parameter zu finden, indem der Gradient der Verlustfunktion in Bezug auf jeden Parameter durch einen Rückwärtsdurchgang des Graphen berechnet wird.

  • 00:05:00 In diesem Abschnitt diskutiert der Sprecher das Finden der Ableitung von G in Bezug auf Theta, was beim Trainieren eines neuronalen Netzwerks entscheidend ist. Das verwendete Beispiel ist eine einfache Funktion von X, Y und Z, wobei die partielle Ableitung von F in Bezug auf X, Y und Z berechnet werden muss. Das Konzept der lokalen Gradienten wird eingeführt, die die Ableitungen der Ausgabe in Bezug auf die Eingabe für eine gegebene Operation sind. Die Kettenregel wird jedoch benötigt, um die endgültige Ausgabe in Bezug auf die entfernte Variable zu berechnen, die in diesem Fall X, Y und Z sind.

  • 00:10:00 In diesem Abschnitt sehen wir, wie man die Gradienten im Berechnungsgraphen findet, indem man den Rückwärtsfluss des Gradienten verwendet. Der Gradient des Ausgangsknotens ist trivialerweise 1, und um den Gradienten an jedem Knoten zu berechnen, multiplizieren wir den lokalen Gradienten mit dem vom vorherigen Knoten empfangenen Gradienten. Das Programm kann dann die endgültigen Gradienten von del F durch Del X, del F durch Del Y und del F durch Del V berechnen. Es ist wichtig, daran zu denken, dass wir den Gradienten immer in Bezug auf die endgültige Verlustfunktion berechnen, die im Fall eines neuronalen Netzwerks ist dies die J-Verlustfunktion. Schließlich lernen wir, wie ein Neuron in einem neuronalen Netz beim Forward Pass eine einfache Funktion ausführt und wie wir beim Backpropagation die Gradienten lokal berechnen und nutzen können.

  • 00:15:00 In diesem Abschnitt erläutert der Referent die Intuition hinter Backpropagation als Rechengraph für ein Neuron. Der lokale Gradient wird durch Multiplizieren der Rückwärtsfunktion mit den Werten del Z mit Del X und del Z mit Del Y erhalten. Der Rückwärtsfluss geht in Richtung des Ausgangs des Neurons, wo andere Neuronen, die Daten an ihn senden, Del J durch Del X erhalten. Die Computational Graph-Technik wird auch für komplexere Funktionen wie die Sigmoidfunktion verwendet, bei der der Rückwärtsgradient wird numerisch berechnet. Der lokale Gradient für jeden Knoten wird berechnet, indem die Ableitung der Funktion genommen und dann mit dem Gradientenfluss multipliziert wird.

  • 00:20:00 In diesem Abschnitt erklärt der Sprecher, wie die lokalen Gradienten jedes Gatters in einem Berechnungsdiagramm berechnet werden und wie sie verwendet werden können, um den Gradienten der endgültigen Ausgabe in Bezug auf jede Eingabe zu erhalten. Das im Video verwendete Beispiel beinhaltet einen kleinen Rechengraphen, der aus mehreren Gattern besteht, z. B. Additions- und Multiplikationsgatter, und der Sprecher erklärt die Intuition hinter dem Backpropagation-Algorithmus anhand dieses Beispiels. Der Sprecher erläutert, wie die lokalen Gradienten für jedes Gatter in der Grafik berechnet werden, und zeigt, wie sie kombiniert werden können, um den Gradienten der endgültigen Ausgabe in Bezug auf jede Eingabe zu berechnen.

  • 00:25:00 In diesem Abschnitt erörtert der Sprecher die Intuition hinter Backpropagation als Rechengraph. Sie erklären, wie Gradienten für verschiedene Arten von Gattern berechnet werden, wie z. B. Additionsgatter und multiplikative Gatter, und das Muster, das bei der Berechnung des Rückwärtsflusses entsteht. Der Referent erklärt auch, wie Vorwärts- und Rückwärtsfunktionen für jedes Gatter definiert werden, und sobald diese Funktionen definiert sind, können sie für jeden Rechengraphen verwendet werden, wodurch der Prozess effizienter wird.

  • 00:30:00 In diesem Abschnitt wird das Konzept von Vorwärts- und Rückwärtsdurchläufen bei Backpropagation als Berechnungsgraph diskutiert. Der Vorwärtsdurchlauf berechnet die Ausgabe, die zur Eingabe für den nächsten Knoten wird, bis der Verlust erreicht ist. Beim Rückwärtsdurchlauf wird DZ anfänglich auf Eins gesetzt und es werden Berechnungen in umgekehrter Richtung durchgeführt. Beim Umgang mit Vektoren wird der lokale Gradient unter Verwendung von Jacobi-Matrizen genommen und die Linksmultiplikation wird in der Kettenregel verwendet. Del L by Del X oder Del L by Del Y wird unter Verwendung der beiden Jacobi-Matrizen berechnet, del Z by Del X oder del Z by Del Y und del L by Del V.

  • 00:35:00 In diesem Abschnitt erläutert der Referent, wie der Vorwärtsdurchlauf und die Rückwärtsausbreitung einer gegebenen Funktion unter Verwendung des Berechnungsgraphen berechnet werden. Anhand einer Beispielfunktion geht der Sprecher durch den Prozess der Erstellung von Zwischenvariablen und der Berechnung des Vorwärtsdurchlaufs. Dann zeigt der Sprecher, wie der Rückwärtsdurchlauf berechnet wird, indem die Gradienten in Bezug auf den Eingang und Ausgang jedes Gates berechnet werden. Der Sprecher betont die Nützlichkeit, die Ableitungen der Sigmoidfunktion im Auge zu behalten.

  • 00:40:00 In diesem Abschnitt erläutert der Referent, wie die Gradienten für Verzweigungs- und vektorisierte Operationen bei Backpropagation behandelt werden. Wenn eine Verzweigung auftritt, werden Gradienten hinzugefügt, und beim Berechnen der Gradienten für Funktionen können vorherige Zwischengradienten wiederverwendet werden. Vektorisierte Operationen, wie z. B. Matrixmultiplikation, können ähnlich gehandhabt werden, indem die Gradienten in Bezug auf jedes Element separat berechnet werden und Matrixoperationen verwendet werden, um sie zu kombinieren. Die Dimensionalität der Gradienten wird durch die Dimensionalität der Ausgabe der durchgeführten Operation bestimmt.

  • 00:45:00 In diesem Abschnitt erklärt der Referent am Beispiel der Matrixmultiplikation in TensorFlow, wie man sicherstellt, dass die Dimensionalität bei der Berechnung von del D/del W und del D/del X in einer Funktion aufgeht. Die Dimensionen von W und DD sind bekannt, und da die Multiplikation nur mit W Punkt Punkt Punkt X funktioniert, ist es eine gute Idee, sich diese Formel zu merken. Der Redner erinnert die Zuschauer daran, dass es wichtig ist, die Berechnungsgraphenoperationen in TensorFlow zu verstehen, selbst wenn Frameworks wie TensorFlow eine solche Komplexität abstrahieren. Dieses Wissen wird sich beim Umgang mit benutzerdefinierten Ebenen als nützlich erweisen, bei denen der Benutzer seine Vorwärts- und Rückwärtspässe schreiben muss.
 

Produktionsfähiges Deep Learning für Computer Vision



Produktionsfähiges Deep Learning für Computer Vision

Der CTO und Chief Scientist bei Jumio, Lavash Patel, erläutert, wie sein Unternehmen eine Mischung aus KI- und ID-Experten einsetzt, um online Vertrauen aufzubauen und die Echtheit von ID-Dokumenten zu überprüfen. Der Prozess der Identitätsprüfung ist aufgrund der Vielzahl von IDs und Subtypen sowie der Notwendigkeit der Berichtigung und Zurückweisung nicht lesbarer Bilder eine Herausforderung. Um die Genauigkeit aufrechtzuerhalten, wird ein Human-in-the-Loop-Ansatz verfolgt, bei dem KI-Modelle Probleme erkennen und ein Mensch eine Plausibilitätsprüfung der Ergebnisse durchführt. Patel erörtert auch, wie Jumio Deep Learning mithilfe eines hybriden aktiven Lernalgorithmus produktiv macht, der sich an neue Subtypen anpasst und sich durch Umschulung verbessert. Darüber hinaus betont er die Bedeutung sauberer Daten bei der Gesichtserkennung und der Aufrechterhaltung der PCI-Konformität beim Umgang mit sensiblen Daten für Zwecke des maschinellen Lernens.

  • 00:00:00 In diesem Abschnitt beschreibt Lavash Patel, CTO und Chief Scientist bei Jumio, die Geschäftstätigkeit des Unternehmens, online durch die Mischung aus KI- und ID-Experten Vertrauen aufzubauen, um die Echtheit eines ID-Dokuments zu überprüfen. Das Problem bei dieser Art von Verifizierungsprozess wird durch die Tatsache erschwert, dass sie Verkehr von allen Arten von Kanälen akzeptieren, einschließlich Mobiltelefonen, Webcams und einfachen API-Aufrufen. Um diese Probleme anzugehen, verwendet Jumio eine Mischung aus Klassifizierungs- und Facemash-Modellen, um die Echtheit eines Ausweises und die Identität der Person vor der Kamera zu überprüfen.

  • 00:05:00 In diesem Abschnitt erörtert der Referent die Herausforderungen bei der Verwendung von KI zur Identitätsprüfung angesichts der Vielfalt der existierenden IDs und Subtypen. Die Bedeutung der Korrektur oder Ausrichtung von Bildern wird betont, ebenso wie die Notwendigkeit, nicht lesbare Bilder aufgrund von Unschärfe oder Blendung zurückzuweisen. Das Genehmigen von ID-Bildern ist ein strengerer Prozess als das Zurückweisen, da jede Komponente bestehen muss, um als gültig zu gelten. Um eine strenge Genauigkeit und Ablehnung betrügerischer Benutzer zu gewährleisten, wird ein Human-in-the-Loop-Ansatz verfolgt, bei dem KI-Modelle verwendet werden, um Probleme zu erkennen, und ein Mensch verwendet wird, um eine Plausibilitätsprüfung der Ergebnisse durchzuführen. Dieser Ansatz ermöglicht eine branchenführende Genauigkeit in Bezug auf Konvertierung und Betrugserkennung.

  • 00:10:00 In diesem Abschnitt erörtert der Referent den Klassifizierungsaspekt der Produktionsalisierung von Deep Learning für Computer Vision. Während die Bildklassifizierung in den letzten Jahren mit einem vortrainierten Netzwerk wie Inception Version 4 oder Viji 16 gelöst wurde, ist das Problem aufgrund der aggregierten Tags anstelle von granularen Tags etwas anders. Mit über 100 Millionen markierten Bildern ist das Entdecken der verschiedenen Klassen zu einem veränderten Klassenfindungsproblem geworden, das durch aktives Lernen gelöst werden kann. Hybrides aktives Lernen beinhaltet einen Schritt des nicht überwachten Lernens oder integrierten Clustering, beginnend mit den beliebtesten Klassen mit beschrifteten Beispielen, um eine Handvoll Klassen zu erhalten.

  • 00:15:00 In diesem Abschnitt erklärt der Referent, wie man Deep Learning für Computer Vision mithilfe eines hybriden aktiven Lernalgorithmus produktiv macht. Der Algorithmus sammelt eine große Anzahl von Proben pro Klasse und trainiert einen Klassifikator, um Bilder sicher in 50 Klassen mit Ausgabe-Konfidenzniveaus zu klassifizieren. Der Algorithmus gruppiert dann automatisch die Bilder, denen der Klassifikator nicht vertraut, und ein menschlicher Agent überprüft sie, um bei Bedarf neue Klassen hinzuzufügen. Sobald das Modell erstellt ist, wird es als API bereitgestellt, und wenn es Compliance-Vorschriften gibt, können Protokollierung, Überwachung und Integritätsprüfungen hinzugefügt werden. Darüber hinaus stellt der Sprecher fest, dass sich der Algorithmus an neue Subtypen anpasst und sich weiter verbessert, indem er sich selbst neu trainiert, wie dies der Fall war, als eine neue ID mit falscher Schreibweise erkannt wurde und der menschliche Agent sie zurückwies.

  • 00:20:00 In diesem Abschnitt erläutert der Redner, wie sie neue Modelle produzieren, indem sie immer ein Champion-Modell einsetzen und neue Modelle auf der Grundlage ihrer Leistung im Vergleich zum Champion bewerten. Diese Methode ermöglicht auch eine kontinuierliche Verbesserung mithilfe einer hybriden Infrastruktur für aktives Lernen, die kontinuierlich Datensätze sammelt und bereinigt. Die Produktionspipeline reagiert empfindlich auf die Sauberkeit der Datensätze, wobei eine Zielfehlerquote für das Training nicht mehr als 20 % beträgt. Der gesamte Prozess muss zudem PCI- und GDP-konform sein, d. h. alles muss verschlüsselt und zu den Daten gebracht werden, statt Daten zum Training. Der Referent stellt dann eine zweite Fallstudie zum Face-Matching vor, bei der sie Datenverzerrungen in Bezug auf Alter, Geschlecht und ethnische Zugehörigkeit zu ihrem Vorteil nutzen, um Selfies mit IDs abzugleichen.

  • 00:25:00 In diesem Abschnitt diskutiert der Referent einen möglichen Ansatz, um das Problem der Erkennung betrügerischer Benutzer durch die Verwendung von Gesichtseinbettungen und der Triplet-Loss-Funktion in einem Deep-Convolution-Netzwerk anzugehen. Der Prozess umfasst das Ausschneiden von Gesichtern mit einem Gesichtsdetektor und die Verwendung öffentlicher Datensätze zum Trainieren des Modells, gefolgt von der Feinabstimmung der Produktionsdaten. Das Modell wird durch den Prozess des aktiven Lernens verfeinert, bei dem eine überwachte Infrastruktur verwendet wird, um informative Stichproben zu sammeln und die Daten kontinuierlich zu erweitern. Der Referent betont die Wirksamkeit des aktiven Lernens in einer Vielzahl von Anwendungsfällen.

  • 00:30:00 In diesem Abschnitt betont der Referent die Bedeutung sauberer Daten in der Computer Vision, insbesondere in der Gesichtserkennung. Er betont, dass die Produktion von Deep Learning viel mehr als nur die Modellierung beinhaltet und selbst einfache Probleme wie die Klassifizierung in der Produktionsphase zu zahlreichen Komplexitäten führen können. Collaborative Intelligence oder Human-in-the-Loop-Workflows können auch bei der Verbesserung von Algorithmen hilfreich sein und sind besonders wichtig bei der Gesichtserkennung, da sie saubere Datensätze erfordern. Der Redner erwähnte auch, dass sein Unternehmen für seine F&E-Teams mit Sitz in Wien und Montreal einstellt.

  • 00:35:00 In diesem Abschnitt erörtert der Referent die Herausforderungen bei der Aufrechterhaltung der PCI-Konformität beim Umgang mit sensiblen Daten für maschinelles Lernen und KI-Zwecke. Der Referent erklärt, dass die Daten nur für den vorgesehenen Zweck verwendet werden dürfen und dass hochsichere Orte und Verfahren vorhanden sein müssen, um jeden unbefugten Zugriff zu verhindern. Der Redner erklärt auch, dass die Daten in Amazon S3-Buckets innerhalb der PCI DMZ abgelegt werden und dass verschleierte Bilder für maschinelles Lernen erstellt werden, die dann fernüberwacht werden, um sicherzustellen, dass keine personenbezogenen Daten verloren gehen.
 

Gail Weiss: Denken wie Transformer



Gail Weiss: Denken wie Transformer

Gail Weiss diskutiert in diesem Video das Konzept von Transformer-Encodern und erklärt ihre Fähigkeit, Sequenzen zu verarbeiten und sie in Vektoren zu codieren. Weiss hebt mehrere Studien hervor, die die Stärken und Grenzen von Transformator-Encodern untersuchen, und stellt eine Programmiersprache namens Restricted Access Sequence Processing Language (RASP) vor, um die Fähigkeiten von Transformator-Encodern darzustellen. Sie erörtert auch die mehrköpfige Aufmerksamkeit, Auswahlmuster und die Herausforderungen von Softmax unter bestimmten Bedingungen, bevor sie sich mit der Verwendung von Sequenzoperatoren und Bibliotheksfunktionen zur Berechnung des Inversen und des Flip-Selektors befasst. Weiss bietet Einblicke in die Erstellung eines optimalen Programms für einen Transformator und die Erkenntnisse aus den universellen und Sandwich-Transformatoren und diskutiert schließlich das ausgewählte Prädikat und die binären vs. Ordnung drei Beziehungen.

Er spricht auch über die potenziellen Vor- und Nachteile der Verwendung von Aufmerksamkeit höherer Ordnung in Transformatormodellen sowie über die Bedeutung von Restverbindungen für die Aufrechterhaltung von Informationen in den Schichten. Sie diskutiert auch mögliche Probleme mit sehr tiefen Transformatoren, die vom RASP-Modell abweichen, und schlägt die Verwendung längerer Einbettungen vor, um Unschärfe in Informationen zu überwinden.

  • 00:00:00 In diesem Abschnitt des Videos stellt Gail Weiss das Konzept der Transformer-Encoder vor, die Teil eines neuronalen Netzwerks sind, das zur Verarbeitung von Sequenzen entwickelt wurde. Sie erklärt, dass der Transformer-Encoder eine bestimmte Sequenz nimmt und sie in einen Satz von Vektoren codiert, mit einigen beliebten Beispielen, darunter BERT. Weiss hebt dann mehrere Studien hervor, die die Stärken und Grenzen von Transformator-Encodern untersucht haben, einschließlich ihrer Fähigkeit, formale Sprachen zu erkennen und Berechnungen durchzuführen. Während diese Studien Einblicke in die Fähigkeiten von Transformator-Encodern geben, stellt Weiss fest, dass sie keine klare Intuition darüber bieten, wie die Transformatoren Aufgaben tatsächlich verarbeiten.

  • 00:05:00 In diesem Abschnitt erklärt Gail Weiss, dass rekurrente neuronale Netze (RNNs) einer endlichen Zustandsmaschine ähneln, die Übergänge zwischen Zuständen basierend auf Eingabevektoren definiert, während sie eine endgültige Klassifizierung entsprechend dem erreichten Zustand ausgibt. Durch die Analyse ihrer Ausdruckskraft unter Verwendung unseres Verständnisses deterministischer endlicher Automaten gewinnen sie einen Einblick, was mit RNNs zu tun ist, und ermöglichen die Umwandlung eines RNN in einen gewichteten endlichen Automaten, einen deterministischen endlichen Automaten oder einen gewichteten deterministischen endlichen Automaten. Diese Intuition existiert jedoch nicht für Transformers, und es besteht die Notwendigkeit, ein Modell zu entwickeln, das einem ähnlichen Zweck für den Transformer-Encoder dient. Im Gegensatz zu RNNs nehmen Transformer-Encoder ihre gesamte Eingabe auf einmal und verarbeiten alle Eingabe-Token parallel über ein tiefes Netzwerk, das die Verarbeitung eine festgelegte Anzahl von Malen anwendet. Obwohl es in Transformers keine Zustände gibt, gibt es ein Gefühl der Verarbeitung und Weitergabe von Informationen durch eine Reihe von Operationen.

  • 00:10:00 In diesem Abschnitt erklärt Gail Weiss, wie ein Transformator-Encoder als Programmiersprache namens Restricted Access Sequence Processing Language (RASP) dargestellt werden kann, die die Erstellung von Sequence Operators (S-ops) beschreibt. Die S-ops stellen die Schichten des Transformer-Encoders dar, die Operationen auf die Sequenz anwenden und mehr verarbeitete Informationen erzeugen. RASP bietet zwei Konstanten, Token und Indizes, die aus jeder Eingabesequenz neue Sequenzen von Zeichen und Indizes erstellen und dann ein elementweises Feed-Forward-Netzwerk auf jeden der Vektoren anwenden, die in die Eingabe der Transformer-Encoder-Schicht gelangen. Der Programmierer ist für die logische oder vernünftige Berechnung der angewandten Operationen verantwortlich, da es sich um beliebige elementweise Operationen handeln kann.

  • 00:15:00 In diesem Abschnitt des Videos stellt Gail Weiss das Konzept der mehrköpfigen Aufmerksamkeit vor, die ein Teil der Transformer-Encoder-Schicht ist, die nicht elementweise ist. Sie beginnt damit, die Einzelkopfaufmerksamkeit und ihre Funktionsweise zu erklären, indem sie zwei lineare Transformationen auf die Folge von Vektoren anwendet und eine Reihe von Abfragen und eine Reihe von Schlüsseln erstellt. Der Schlüssel beschreibt die Informationen, die er zu bieten hat, und die Abfrage beschreibt die Informationen, die an jeder Position gewünscht werden. Durch das Skalarprodukt der Abfrage mit jedem der Schlüssel werden die Gewichtungen normalisiert und die Ausgabe an jeder Position wird erhalten. Weiss klärt auch eine Frage bezüglich der Zwischentransformation der Schlüssel und Werte, die es dem Modell ermöglichen, mehr Parameter zu haben.

  • 00:20:00 In diesem Abschnitt erörtert der Redner die mehrköpfige Selbstaufmerksamkeit und wie sie verwendet werden kann, um mehrere Operationen in einer einzigen Schicht zu komprimieren. Der Prozess umfasst das Aufteilen der Eingangsvektoren in Vektoren gleicher Länge und das Weiterleiten jedes Blocks an unterschiedliche Köpfe. Sobald die mehreren Köpfe angewendet wurden, werden sie verkettet, um die Ausgabe der mehrköpfigen Selbstaufmerksamkeit zu bilden. Obwohl es keine Abhängigkeit zwischen den verschiedenen Köpfen gibt, kann eine einzelne Schicht mehrere Operationen ausführen, da sie mehrere verschiedene Köpfe hat. Dieser Prozess ermöglicht es dem Programmierer, sich um Aufmerksamkeitsköpfe zu kümmern, anstatt um mehrköpfige Selbstaufmerksamkeit, die ein Problem für den Compiler darstellt.

  • 00:25:00 In diesem Abschnitt liefert Gail Weiss Beispiele dafür, wie bestimmte Auswahlmuster für einen Transformator codiert werden. Am Beispiel der Auswahl von Positionen basierend darauf, ob sie sich selbst mit einer Null, Eins oder Zwei beschreiben, zeigt Weiss, dass die erste Position die letzten beiden Positionen auswählt, die zweite Position nichts auswählt und die dritte Position nur die erste auswählt. Weiss erklärt auch, dass verschiedene Arten von Vergleichen ausgewählt werden können, wie z. B. größer oder gleich, kleiner oder gleich oder ungleich, und dass Selektoren zusammengesetzt werden können. Weiss merkt jedoch an, dass die Abstraktion von Auswahlmustern zu Transformatoren von der Angemessenheit der durchgeführten Operation abhängt, und dies sicherzustellen ist Aufgabe des Programmierers.

  • 00:30:00 In diesem Abschnitt diskutiert der Referent die Herausforderungen bei der Verwendung von Softmax unter bestimmten Bedingungen, nämlich dass es einen leichten Fokus auf verbleibende Positionen gibt, die die Auswahlkriterien nicht erfüllen. Um dieses Problem anzugehen, schlägt der Redner vor, dass Softmax bei einer Erhöhung der Größe dieser Einbettungen beginnen wird, eine harte Auswahl von „weniger als oder gleich“ und „über“ Positionen zu approximieren. Die Präsentation geht dann weiter zur Idee der Aggregation und wie Token ausgewählt und mit einem Durchschnitt gewichtet werden können. Der Sprecher liefert ein Beispiel für die Umkehrung von Token und wie sie einen Umkehrselektor erstellt und die Token aggregiert haben, um die umgekehrte Eingabesequenz zu erhalten, wobei das Beispiel des Wortes „Hallo“ verwendet wird, um „olleh“ auszugeben.

  • 00:35:00 In diesem Abschnitt erläutert der Redner, wie der Längenoperator in Transformatoren verwendet werden kann, obwohl er nicht Teil der Eingabe ist, und wie die Auswahlentscheidungen paarweise erfolgen, um willkürlich starke Auswahloperationen zu verhindern, die willkürliche Leistung verbergen könnten. Der Referent spricht auch über andere Transformatorkomponenten wie die Sprung- oder Restverbindung, die den Wert der Einbettungen zurückaddiert, und Schichtnormen, die im RASP-Modell nicht vorhanden sind. Darüber hinaus erwähnt der Sprecher die Verwendung von Funktionen und das Zusammenstellen von Selektoren zur Vereinfachung, um das Wiederholen von Code zu vermeiden.

  • 00:40:00 In diesem Abschnitt erörtert der Sprecher die Verwendung von Sequenzoperatoren wie val, min und max, um zu prüfen, welche Indizes innerhalb eines bestimmten Bereichs liegen. Sie erwähnen auch die Nützlichkeit von Bibliotheksfunktionen wie der Selektorbreite bei der Implementierung von Funktionen wie In-Place-Histogrammen und dem Zählen von Tokens in Eingabesequenzen. Darüber hinaus beschreibt der Referent, wie sie die Länge einer Sequenz mithilfe eines Selektors und einer Indikatorfunktion berechnet haben, und weist darauf hin, dass die Ebenennormalisierung solche Berechnungen erschweren könnte. Schließlich schlagen sie eine alternative Lösung vor, die ein Rückkopplungsnetzwerk zur Berechnung des Inversen beinhaltet, erkennen jedoch an, dass es immer noch von der Schichtnormalisierung beeinflusst werden kann.

  • 00:45:00 In diesem Abschnitt erläutert Gail Weiss, wie Transformatoren lernen können, Inverse und den Flip-Selektor zu berechnen, selbst wenn es um relativ kurze Sequenzen geht. Sie erklärt weiter, dass die Ras-Programmanalyse verwendet werden kann, um zu bestimmen, wann die Berechnung umgekehrt und wann der Flip-Selektor angewendet werden soll, während sichergestellt wird, dass die Auswahl- und Aggregat-Paare nur Aufmerksamkeitsköpfe sind. Abschließend untersucht sie, wie ein tatsächlicher Transformer die umgekehrte Berechnung in zwei Schichten durchführen könnte, was durch die Erkenntnisse gestützt wurde, dass der Transformer eine Genauigkeit von 99,6 Prozent erreichen konnte, wenn er Eingangssequenzen mit einer Länge von bis zu 100 nach 20 Epochen umkehrte.

  • 00:50:00 In diesem Abschnitt erörtert Gail Weiss die Erstellung eines optimalen Programms für einen Transformator, der zwei Ebenen erfordert, um die Aufgabe effektiv auszuführen. Selbst wenn das Programm auf eine Ebene reduziert wird und doppelte Parameter hinzugefügt werden oder zwei Köpfe verwendet werden, wird es keine hohe Genauigkeit erreichen, weil es nicht weiß, wie es mit der sich ändernden Sequenzlänge umgehen soll. Außerdem sind die Aufmerksamkeitsmuster in beiden Schichten gleich, wobei die erste Schicht einheitliche Aufmerksamkeit verwendet, um die Sequenzlänge zu berechnen, und die zweite Schicht dasselbe umgekehrte Aufmerksamkeitsmuster verwendet. Weiter demonstriert Weiss ein In-Place-Histogramm, das die Auswahl von Token und die Ausgabe der Häufigkeit beinhaltet, mit der dieser Token in der Eingabesequenz erscheint. Indem sie jedes Token auf das gleiche Token wie sich selbst oder auf die erste Position am Anfang des Sequenztokens fokussieren, verwenden sie nur einen Aufmerksamkeitskopf, um einen Transformator zu trainieren, wodurch es viel einfacher wird, die Umkehrung und andere Elemente zu berechnen.

  • 00:55:00 In diesem Abschnitt spricht Gail Weiss über die Erkenntnisse aus dem Universal Transformer und dem Sandwich Transformer, die beide die Art und Weise beeinflussen, wie man über das Transformatormodell nachdenkt und es verwendet. Sie erklärt, dass jeder Sequenzoperator in RASP das Ergebnis einer endlichen Anzahl von Operationen ist, die Sprache also nicht unendlich leistungsfähig ist, sondern eine endliche Anzahl von O(n^2)-Berechnungen. Sie geht auch auf die Rechenkosten eines Aufmerksamkeitskopfes im Transformator-Encoder ein und wie es sich möglicherweise nicht lohnt, die n ^ 2-Berechnungen zu verwenden. Die Konversation verschiebt sich dann zu einer Diskussion über das ausgewählte Prädikat und die Beziehungen binär vs. Ordnung drei.

  • 01:00:00 In diesem Abschnitt diskutiert Gail Weiss die potenzielle Leistungssteigerung eines Transformatormodells mit Aufmerksamkeit höherer Ordnung, wie z. B. einer dritten Ordnung anstelle einer zweiten Ordnung. Sie erklärt, dass ein solches Modell möglicherweise Funktionen mit mehr als O(n^2) Operationen berechnen könnte, was seine Leistungsfähigkeit erhöht. Allerdings wäre dies auch rechnerisch aufwendiger. Weiss betont auch die Bedeutung von Restverbindungen im Transformatormodell als Möglichkeit, Informationen in allen Schichten beizubehalten und wiederzuverwenden, und weist darauf hin, dass ihre Entfernung die Leistung drastisch verringern kann, auch wenn sie möglicherweise nicht als eigenständige Operation erscheinen.

  • 01:05:00 In diesem Abschnitt des Videos erörtert Gail Weiss die potenziellen Probleme, die bei sehr tiefen Transformatoren auftreten können, und wie sie vom RASP-Modell abweichen können. Sie erwähnt einen Artikel, den sie in ICML gelesen hat, in dem es um die Bedeutung des Entfernens bestimmter Informationen aus einem Transformator geht, was dazu führen kann, dass Informationen schnell verloren gehen. Sie weist jedoch auch darauf hin, dass Informationen aufbewahrt werden können, wenn sie als wichtig erkannt werden. Weiss diskutiert auch die Idee, eine sehr lange Einbettung zu haben, um Probleme der Unschärfe in den Informationen zu überwinden, wenn der Transformator tiefer geht.
 

Visualisierung und Verständnis tiefer neuronaler Netze von Matt Zeiler



Visualisierung und Verständnis tiefer neuronaler Netze von Matt Zeiler

Matt Zeiler diskutiert die Visualisierung und das Verständnis von Convolutional Neural Networks (CNNs) für die Objekterkennung in Bildern und Videos. Er beschreibt, wie tiefe neuronale Netze im Vergleich zu Menschen und Primaten bei der Erkennung von Objekten abschneiden, und zeigt, wie CNNs lernen, Objekte zu identifizieren, indem sie die Schichten durchlaufen. Zeiler erläutert den Prozess zur Verbesserung der CNN-Architektur und erörtert die Einschränkungen beim Training mit begrenzten Daten. Schließlich beantwortet er Fragen zur Verwendung niedrigerer Schichten in höheren Schichten und zur Anwendung von Faltungen in neuronalen Netzen.

  • 00:00:00 In diesem Abschnitt beschreibt Matt Zeiler eine Technik zur Visualisierung von Faltungsnetzwerken, die zur Erkennung von Objekten in Bildern und Videos verwendet werden, wodurch sie verstehen können, was jede Ebene lernt, und Erkenntnisse zur Leistungsverbesserung gewinnen. Convolutional Neural Networks gibt es seit Ende der 80er Jahre, wobei neue Ansätze im Wesentlichen dieselbe Architektur wie zuvor verwenden. Der Durchbruch auf diesem Gebiet gelang dem Team von Geoff Hinton, als ihr neuronales Netzwerk die Fehlerraten beim gemeinsamen Benchmark ImageNet um zehn Prozent statt der üblichen sechsundzwanzig Prozent reduzierte, was zu einer besseren Leistung bei Erkennungsaufgaben führte.

  • 00:05:00 In diesem Abschnitt diskutiert Matt Zeiler aktuelle Studien, die die Leistung tiefer neuronaler Netze mit der von Primaten und Menschen bei der Erkennung von Objekten vergleichen. Eine Studie umfasste die Aufzeichnung des Zündens der Elektroden im Gehirn eines Affen, wenn ihm Bilder präsentiert wurden, und den Vergleich seiner Erkennungsgenauigkeit mit der von tiefen neuronalen Netzwerken und Menschen. Die Ergebnisse zeigten, dass Menschen, tiefe neuronale Netze und der IT-Kortex des Affen fast die gleiche Leistung erbrachten, wenn Bilder weniger als 100 Millisekunden lang präsentiert wurden. Darüber hinaus erörtert Zeiler D-Faltungsnetzwerke, bei denen es sich um nicht überwachte Lernmodelle handelt, die zum Rekonstruieren von Bildern verwendet werden, während die Funktionen der obersten Ebene spärlich sind, mit dem Ziel, zu lernen, was ein Faltungsnetzwerk tatsächlich lernt.

  • 00:10:00 In diesem Abschnitt erklärt Matt Zeiler, wie wichtig es ist, die Operationen in Faltungsnetzwerken umkehrbar zu machen, um gute Rekonstruktionen zu erzielen, insbesondere wenn es um mehrere Informationsebenen geht. Er demonstriert, wie die höchste Schicht im Netzwerk visualisiert wird (unter Verwendung eines Validierungssatzes von 50.000 Bildern), indem er die einzelne Feature-Karte mit der jeweils stärksten Aktivierung auswählt und sie als Eingabe an die Spitze des Faltungsnetzwerks verwendet, um die Visualisierungen daraus zu rekonstruieren unten nach oben. Die Visualisierung der Feature-Maps der ersten Ebene zeigt Filter, die aus orientierten Kanten und Farbkanten mit unterschiedlichen Ausrichtungen und Frequenzen bestehen, was die Forscher zuvor erwartet hatten. Die Visualisierung höherer Schichten bietet jedoch neue Erkenntnisse darüber, wie das Netzwerk verschiedene Objekte lernt und klassifiziert, indem die stärksten Aktivierungen und Invarianten über mehrere Bilder hinweg angezeigt werden.

  • 00:15:00 In diesem Abschnitt erläutert Zeiler die Entwicklung der zweiten Schicht neuronaler Netze, die weitaus komplexere Muster aufweist als die erste. In der zweiten Schicht sind unter anderem Kombinationen aus Kanten, parallelen Linien, Kurven, Kreisen und bunten Blöcken vorhanden. Durch das Pooling hat es einen größeren Umfang dessen, was es aus dem Bild verarbeiten kann. Mit Blick auf die dritte Schicht zeigt Zeiler, wie sie Objektteile lernt, die für den Aufbau einer Repräsentation eines Objekts entscheidend sind, beispielsweise das Gesicht eines Hundes oder eines Menschen. Gruppierungsmerkmale bleiben in der dritten Schicht vorhanden, jedoch als eine semantisch relevantere Gruppierung von Gittern oder spezifischen Gesichtsstrukturen.

  • 00:20:00 In diesem Abschnitt wird erklärt, wie das neuronale Netzwerk lernt, bestimmte Objekte zu identifizieren, während es die Schichten durchläuft. In der vierten Schicht des Netzwerks werden die Verbindungen objektspezifischer und Kategorien, die nicht explizit in den Aufgaben enthalten sind, wie Gras, werden zu einem Merkmal. Das Modell lernt auch, mehrere Merkmale wie verschiedene Hunderassen oder verschiedene Arten von Tastaturen in verschiedenen Ausrichtungen zu erkennen. Die letzte Faltungsschicht wird aufgrund von Randeffekten auf die Faltungen größer, je näher sie der Klassifizierungsschicht kommt. Der Inhalt dieser letzten Schicht wird stark objektspezifisch, da das Modell eine Entscheidung darüber treffen muss, zu welcher Klasse das Bild gehört, und in dieser Schicht nur 256 Merkmale existieren.

  • 00:25:00 In diesem Abschnitt diskutiert Matt Zeiler ein Experiment, um zu bestätigen, dass die Visualisierungen auf relevante Teile des Bildes triggern. Sie schoben einen Block aus Nullen mit einem mittleren Pixel von 128 über das Bild und zeichneten die Aktivierungen oder Wahrscheinlichkeiten des Modells auf. Durch das Blockieren des Gesichts eines pommerschen Hundes stellten sie fest, dass die Wahrscheinlichkeit eines pommerschen Hundes erheblich sinkt, während die wahrscheinlichste Klasse ein Tennisball ist, wenn das Gesicht blockiert ist. Interessanterweise fanden sie heraus, dass die fünfte Schicht einen Textdetektor gelernt hat, da sie die Funktion erheblich verringert, wenn Text in einem Bild blockiert wird, was eine Vorstellung davon vermittelt, dass die Schicht Text mit anderen Klassen verknüpfen kann. Schließlich verwendeten sie das Modell der Toronto-Gruppe, das 2012 die ImageNet-Herausforderung gewann, und stellten eine große Diskrepanz bei der Normalisierung von Filtern in der ersten Schicht fest.

  • 00:30:00 In diesem Abschnitt des Videos erläutert Matt Zeiler den Prozess zur Verbesserung der Architektur tiefer neuronaler Netze. Er erklärt, dass nach der Behebung des Problems der Renormalisierung klar wurde, dass die Filter der ersten Schicht zu groß waren, was zu toten Filtern führte. Die zweite Schicht hatte auch viele blockierende Artefakte, was dazu führte, dass Informationen verloren gingen, was dazu führte, dass sie die Schritte in der Faltung kleiner machten und blockierende Artefakte entfernten und die Flexibilität in der zweiten Schicht erhöhten. Diese Modifikationen halfen ihnen, den ImageNet-Wettbewerb 2013 zu gewinnen, und diese Ansätze wurden in späteren Wettbewerben erneut verwendet, was zu guten Ergebnissen führte. Zeiler erörtert auch die Verallgemeinerungsfähigkeiten und Verwendungen für diese neuronalen Netze bei der Bestimmung der Hervorhebung.

  • 00:35:00 In diesem Abschnitt erörtert Zeiler die Einschränkungen von tiefen Modellen, wenn nur eine kleine Menge an Trainingsdaten verwendet wird, und erklärt, dass die Modelle Schwierigkeiten haben, die Funktionen richtig zu lernen. Er erklärt, dass diese Modelle in der Lage sind, allgemein für die Objekterkennung wichtige Merkmale zu erkennen, und dass sich dies anhand einiger Beispiele auf andere Aufgaben übertragen lässt, wie verschiedene Tabellen und Grafiken zeigen. Darüber hinaus untersucht Zeiler, wie wichtig es ist, ein tiefes Modell zu trainieren, indem er alle Zwischenschichten und verschiedene Arten von Klassifikatoren betrachtet. Schließlich schlägt Zeiler vor, dass die Verwendung eines trainierten Modells zur Bereinigung gesammelter Etikettendaten möglich ist und Trainingsmodelle möglicherweise verbessern könnte.

  • 00:40:00 In diesem Abschnitt antwortet Zeiler auf eine Frage, ob die unteren Schichten eines neuronalen Netzwerks, die eine anständige Leistung bei der Klassifizierung gezeigt haben, in höheren Schichten oder in der Nähe der Klassifizierungsausgänge verwendet werden können. Er erklärt, dass aufgrund der wiederholten Extraktion möglicherweise mehr Informationen in höheren Schichten vorhanden sind, aber auch verschiedene Arten von Informationen hilfreich sein könnten. Das Gespräch verlagert sich dann auf die Leistung verschiedener Schichten und Hardwareüberlegungen zum Trainieren großer neuronaler Netze. Zeiler diskutiert auch die Fähigkeit neuronaler Netze, weniger konkrete Klassen zu erkennen, etwa subtile Emotionen oder Gesten, und die Abbildung unterschiedlicher Schichtgrößen.

  • 00:45:00 In diesem Abschnitt erklärt der Referent, wie Faltungen auf ein Bild und andere Schichten in neuronalen Netzen angewendet werden. Die Anwendung von Faltungen hängt von zwei Parametern ab: der Größe des Filters und dem Schritt zwischen dem der Filter angewendet wird. In niedrigeren Schichten erklärt der Sprecher, dass Zweierschritte verwendet werden, weil es zu viele räumliche Inhalte gibt und die Berechnung an jedem Ort zu teuer ist. Dies kann jedoch zu einem Informationsverlust führen. Der Referent erwähnt auch, dass es in den ersten Schichten des neuronalen Netzes kein unüberwachtes Lernen gibt und dass beschreibende Wörter wie „aufgegeben“ bereits in den Wortschatz eingebrannt sind.
 

Wie ChatGPT trainiert wird



Wie ChatGPT trainiert wird

ChatGPT ist ein maschinelles Lernsystem, das darauf ausgelegt ist, menschliche Gespräche nachzuahmen. Es wird zunächst mit einem generativen Pre-Training-Ansatz trainiert, der sich auf riesige Mengen unstrukturierter Textdaten stützt, und dann mit Reinforcement Learning fein abgestimmt, um sich besser an die Präferenzen des Benutzers anzupassen.

  • 00:00:00 ChatGPT ist ein maschinelles Lernsystem, das entwickelt wurde, um menschliche Gespräche nachzuahmen. Es wird mit einem generativen Pre-Training-Ansatz trainiert, der sich auf riesige Mengen unstrukturierter Textdaten stützt.

  • 00:05:00 ChatGPT ist ein Chatbot, der darauf trainiert ist, auf Benutzeranfragen auf menschenähnliche Weise zu reagieren. Dazu konditioniert es zunächst das Modell anhand eines manuell konstruierten Beispiels, das das gewünschte Verhalten veranschaulicht, und verwendet dann Reinforcement Learning, um das Modell an die Präferenzen des Benutzers anzupassen.

  • 00:10:00 ChatGPT ist ein Chatbot, der mit einer Rangfolge über K-Ausgaben für eine bestimmte Eingabe trainiert wird. Das Belohnungsmodell weist jedem Mitglied eines Paares eine skalare Punktzahl zu, die Logits oder nicht normalisierte Log-Wahrscheinlichkeiten darstellt. Je höher die Punktzahl, desto größer ist die Wahrscheinlichkeit, dass das Modell auf dieser bevorzugten Antwort platziert wird. Standard-Kreuzentropie wird für den Verlust verwendet, wobei das Belohnungsmodell als ein binärer Klassifikator behandelt wird. Einmal trainiert, können die skalaren Ergebnisse als Belohnungen verwendet werden. Dies ermöglicht ein interaktiveres Training als das rein überwachte Setting. Während der Verstärkungslernphase wird unser Richtlinienmodell, der Chatbot, anhand des endgültigen überwachten Modells feinabgestimmt. Es sendet Aktionen mit seinen Folgen von Token aus, wenn es einem Menschen in einer Gesprächsumgebung antwortet. Bei einem bestimmten Zustand, der ein Konversationsverlauf und eine entsprechende Aktion ist, gibt das Belohnungsmodell die numerische Belohnung zurück. Die Entwickler entscheiden sich hier für die Verwendung der proximalen Richtlinienoptimierung oder PPO als Reinforcement-Learning-Algorithmus. Wir werden in diesem Video nicht auf die Details von PPO eingehen, aber dies war eine beliebte Wahl in verschiedenen Domänen. Nun, das Learned-Belohnungsmodell, gegen das wir hier optimieren, ist eine anständige Annäherung an das wahre Ziel, das uns wichtig ist. Es ist jedoch immer noch nur eine Annäherung an ein Proxy-Ziel.