Was bedeutet Pretraining im Deep Learning? Wie funktioniert es?

Beste Antwort

Das Pre-Training im Deep Learning ist nichts anderes als

Beispiel:

  1. Sie möchten ein neuronales Netzwerk für die Ausführung einer Aufgabe trainieren und eine Klassifizierung für a vornehmen Datensatz von Bildern. Sie beginnen das Training, indem Sie die Gewichte zufällig initialisieren. Sobald Sie mit dem Training beginnen, werden die Gewichte geändert oder variiert, um die Aufgaben mit weniger Fehlern auszuführen (optimiert). Sobald Sie mit den Trainingsergebnissen zufrieden sind, speichern Sie die Gewichte Ihres Netzwerks, damit das trainierte neuronale Netzwerk die ähnliche Aufgabe beim nächsten Mal mit einer guten Optimierung und besseren Ergebnissen ausführen kann.
  2. Beginnen Sie das nächste Mal mit Beim Training mit zufällig initialisierten Gewichten können Sie die aus dem vorherigen Netzwerk gespeicherten Gewichte als anfängliche Gewichtswerte für Ihr neues Experiment verwenden. Das Initialisieren der Gewichte auf diese Weise wird als Verwendung eines vorab trainierten Netzwerks bezeichnet. ……………………….

Das erste Netzwerk ist Ihr vorab trainiertes Netzwerk. Das zweite ist das Netzwerk, das Sie optimieren.

Die Grundidee hinter dem Pre-Training ist, dass die zufällige Initialisierung von Eingaben gut ist. Zufällig haben die Werte der Gewichte nichts mit dem zu tun Aufgabe, die Sie zu lösen versuchen.

Die Werte des vorhergehenden Trainings müssen besser sein als das des vorherigen Trainings. Die Werte müssen für die Aufgabe richtig initialisiert werden. Wir können sie auch auf die optimalen Werte setzen.

Daher verschafft das Pre-Training dem Netzwerk einen Vorsprung. Als ob es die Daten schon einmal gesehen hätte.

Antwort

Zunächst gehe ich davon aus, dass wir uns auf dem Planeten Merkur befinden, wo eine Woche ungefähr 58 Wochen beträgt. Angenommen, Sie verbringen ungefähr 8 Stunden am Tag mit Lernen an 5 Tagen in der Woche. Sie haben 2320 Stunden, genug, um tiefes Lernen zu verstehen, um als Forschungsingenieur und Forscher auf Anfängerniveau auszugeben.

Tun Sie sich selbst zuerst einen Gefallen und greifen Sie auf das Buch Deep Learning von Goodfellow et al. Es ist ein extrem FESTES Buch über tiefes Lernen, das vor keiner Mathematik zurückschreckt, ohne übermäßig pedantisch zu sein. Zum Beispiel kann es auf großartige Weise erklären, was passiert, wenn Sie die KL-Divergenz auf die andere Weise optimieren, was L1- und L2-Verluste tatsächlich mit Ihren Gewichten tun (in Bezug auf Eigenvektoren der Verlustfunktion), die Intuition hinter LSTMs und so weiter. Beginnen Sie mit dem ersten Abschnitt des Buches. Es dauert ungefähr 2 Wochen, bis das Material (YMMV) vollständig verdaut ist. Wenn Sie diese Woche hinter sich haben, ohne sich von der mathematischen Komplexität zu langweilen oder zu verzögern, können Sie jetzt mit maschinellem Lernen beginnen.

An diesem Punkt müssen wir aufhören zu lesen und mit dem Codieren beginnen . Um die Dinge wirklich zu verstehen, laden Sie Tensorflow nicht herunter und beginnen Sie mit der Implementierung grundlegender Dinge (logistische Regression, SVMs, kNN, PCA, GMMs) in guter alter Python. Viele Leute beeilen sich einfach damit, Bibliotheken auf hoher Ebene zu verwenden, ohne zu verstehen, wie man grundlegende Blöcke von Grund auf neu codiert, und Sie werden viel lernen, wenn Sie dies tun. Wenn Sie beispielsweise lernen, dass Sie Ihre Daten standardisieren müssen, bevor Sie PCA anwenden, wie Sie Softmax numerisch stabil machen, warum Sie Ihre Softmax-Funktion nicht wiederverwenden sollten, um Log-Softmax zu implementieren, und so weiter. Um mit der Implementierung dieser zu beginnen, gehen Sie zu CS231n und beenden Sie die erste Zuweisung. Bauen Sie darauf auf, um SVMs und GMMs zu implementieren. Das Implementieren und Debuggen würde ungefähr 4 Wochen dauern (vorausgesetzt, Sie beginnen ohne Kenntnisse von Numpy oder Python). Jetzt wissen Sie, wie Sie grundlegende Algorithmen für maschinelles Lernen von Grund auf neu implementieren.

Sie können jetzt die hervorragenden Hinweise auf der CS231n-Website (bis Modul 1) lesen. Nehmen Sie sich Zeit, um die Feinheiten der Optimierung nicht konvexer Funktionen zu verstehen, und ja, IMPLEMENTIEREN Sie alles, was Sie lesen. Von impulsbasierten Methoden bis hin zu grundlegenden Backprops ist die Implementierung der Schlüssel, wenn Sie die Mechanik tatsächlich lernen möchten. Wenn Sie beispielsweise Backprop selbst implementieren, werden Sie feststellen, dass Sie eine Menge Daten für den Rückwärtsdurchlauf aufbewahren müssen. Dieses Wissen kann sehr hilfreich sein, wenn Sie zu einem bestimmten Zeitpunkt in Ihrem DL-Engineering auf Speicherfehler stoßen Werdegang. Dies wird weitere 4 Wochen dauern.

Es sind jetzt 10 Wochen verrückter DL vergangen. Sie verfügen nun über solide mathematische Grundkenntnisse und können Feed-Forward-Netze und grundlegende ML-Algorithmen in Raw Python implementieren. Herzlichen Glückwunsch dazu. Lassen Sie uns von nun an noch einen Schritt weiter gehen. Es wird nur schwieriger (und damit lustiger).

Zeit, unser Deep-Learning-Buch herauszunehmen und dort anzufangen, wo wir aufgehört haben. Lesen Sie die Kapitel 6, 7 und 8. Kapitel 6 ist einfach, und das haben wir bereits gemeistert. In Kapitel 7 wird es langsam schwierig – aber das Buch leistet hervorragende Arbeit darin, mathematische Konzepte in leicht verständlichen Text umzuwandeln.Sehen Sie sich zur Ergänzung Ihres Lernens diese erstaunliche Vorlesung an – Deep Learning Lecture 11: Lern-, Übertragungs- und Speichernetzwerke mit maximalem Spielraum .

Dies wird weitere 4 Wochen dauern, aber wenn dies erledigt ist, sind wir bereit, CNNs und RNNs zu absolvieren. Wir werden wieder der gleichen Philosophie folgen: Lesen Sie die Notizen von cs231n, implementieren und trainieren Sie das Datennetz und lesen Sie dann das Buch, um die Feinheiten zu verstehen. Diese Phase wird und sollte länger dauern, da die Implementierung von Backprop in CNNs (mit allen Schnickschnack wie Batch-Normalisierung) nicht so einfach ist. Gleiches gilt für LSTMs (beachten Sie die Norm dieses Verlaufs und schneiden Sie ihn ab, wenn er zu groß wird, oder kürzen Sie ihn auf kürzere Sequenzen, wenn er zu klein wird). Pro-Tipp – Für das Training von LSTMs empfehle ich, den PennTree Bank-Datensatz zu überprüfen und ein Sprachmodell zu trainieren, um eine Ratlosigkeit von etwa 110 zu erhalten das 90ish, herzlichen Glückwunsch, du machst es richtig. Um ein CNN zu trainieren, führen Sie einfach Aufgabe 2 von CS231n aus.

Puh. Diese letzte Phase des Trainings von CNNs / RNNs und des anschließenden Lesens des zugehörigen Materials aus dem Buch hat uns um etwa 6 Wochen zurückgeworfen, und wir haben jetzt nur noch 38 Wochen Zeit, um die Besten zu werden.

Endlich Zeit zu pip install tensorflow. Denken Sie nicht einmal an etwas anderes. Nein, wir machen kein Pytorch (es ist von Natur aus dynamisch, also nicht großartig, wenn Sie sich mit Autodiff-Software beschäftigen möchten, aber ansonsten großartig) oder Theano (nicht groß genug). Oder hochrangige Bibliotheken wie Keras (schön, aber alles sieht zu einfach aus). Gehen Sie zu den Dokumenten und lesen Sie das MNIST-Tutorial (für Experten, denn das sind wir jetzt). Zunächst wird alles sehr seltsam sein, die Idee eines Berechnungsdiagramms, Sitzungen und die Tatsache, dass es sogar innerhalb von Python selbst ein separates „Kompilieren“ und „Ausführen“ gibt. Sobald Sie jedoch einen Überblick haben, werden Sie feststellen, wie schön das Design ist und wie einfach es zu erweitern ist. Beispielsweise ist das Schreiben eines eigenen LSTM genauso einfach wie das Erweitern einer Basis-LSTM-Klasse. Lesen Sie als Aufwärmübung den Code in den Tutorials ( Tutorials | TensorFlow ) und gehen Sie jedes Tutorial sehr sorgfältig durch, um zu verstehen, was jede Zeile tut und warum. Sie lernen, wie Sie Ihren Tensorflow-Code organisieren. Pro-Tipp – Ich habe immer gerne separate Abstraktionen zum Trainieren, Testen und Vorhersagen. Und eine separate build() -Funktion, die das gesamte Berechnungsdiagramm erstellt, angefangen von Platzhaltern bis hin zur Definition der Verlustfunktion und des train\_op, der diese Verlustfunktion optimiert.

Schamloser Plug – Ich habe kürzlich ein Modell für das Maschinenverständnis programmiert (eine Aufgabe, die mir immer besser gefällt). Informationen zum Zusammenstellen Ihres Modellcodes finden Sie unter MurtyShikhar / Beantwortung von Fragen . Um Ihre Tensorflow-Fähigkeiten zu testen, übersetzen Sie Ihren CNN- und LSTM-Code in Tensorflow, um die gleiche (möglicherweise bessere) Genauigkeit / Verwirrung zu erzielen.

Das Erlernen von Tensorflow dauerte ungefähr 8 Wochen wahnsinniges Hacken, Lesen von Tutorials und Frustrieren über Dem Tensorflow-Kompilierungsfehler, aber ich hoffe, die Reise hat sich gelohnt. Sie haben jetzt die Macht des Autodiffs und ein wirklich cooles Arsenal an Funktionen, um buchstäblich JEDES Deep-Learning-Modell jemals zu verkabeln. Probieren Sie ein lustiges Projekt in Tensorflow aus, bevor wir uns einigen Forschungsarbeiten zuwenden. Nehmen Sie cooles Papier zu einem genau definierten Problem (maschinelle Übersetzung / Bildunterschrift / Verständnis / Beantwortung von Fragen / Beantwortung visueller Fragen / Stilübertragung) und implementieren Sie das hochmoderne Modell in Tensorflow. Probieren Sie GANs noch nicht aus, denn wir sind (noch) nicht so cool. Sie werden ungefähr 5 Wochen brauchen, um Ihr Projekt abzuschließen und wettbewerbsfähige Ergebnisse zu erzielen. Sie haben ungefähr 5 Wochen Zeit, um nur über aktuelle Forschungsergebnisse zu lesen.

Mir ist klar, dass 5 Wochen wirklich eine kurze Zeitspanne sind, um die Breite von DL abzudecken Forschung, warum also nicht unseren Anwendungsbereich einschränken? Nehmen Sie ein Problem oder eine Technik auf – sei es generative Modelle oder seq2seq-Modelle oder Verstärkungslernen. Ich weiß nichts über Verstärkungslernen (ich versuche jedoch zu lernen), daher werde ich mich auf die beiden anderen konzentrieren.

Beginnen Sie bei generativen Modellen mit diesem erstaunlichen Tutorial unseres Herrn und Retters – NIPS 2016 – Generative Adversarial Networks – Ian Goodfellow und folgen Sie langsam, halten Sie an und googeln Sie nach Bedarf. Diese mathematischen Fähigkeiten aus den ersten Wochen finden Sie hier SEHR nützlich. Ich fordere Sie dann dringend auf, das Original-GAN-Papier und Folgemaßnahmen wie DCGANs , SeqGANs und das neueste und coolste WGAN .

Sehen Sie sich für Seq2Seq diesen erstaunlichen Vortrag eines Google Brain-Wissenschaftlers an – Sequenz-zu-Sequenz-Deep-Learning (Quoc Le, Google) und überprüfen Sie ihn dann das ICML 2017-Tutorial von Oriol Vinyals – seq2seq icml-Tutorial .

Das ENDE.

Das hat einige Zeit gedauert und Anstrengung. Es ist das Ende der 58. Woche und Sie haben jetzt ein breites Verständnis für Deep Learning sowie einige solide mathematische und technische Fähigkeiten. Es ist an der Zeit, tiefer in die Deep-Learning-Forschung einzusteigen (oder das Wortspiel zu verstehen?) Oder vielleicht eine coole App zu erstellen. Ich überlasse diese Entscheidung Ihnen, Sie studieren DL-Ingenieur.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.