[PYTHON] Starten Sie Deep Learning

Ja, lass uns Deep Learning machen. Dies ist ein Kommentarartikel, den Sie erhalten. Während ich das sage, schreibe ich, während ich mich selbst studiere, so dass es Fehler und Missverständnisse geben kann. Wenn Sie eine finden, kontaktieren Sie uns bitte.

Was ist Deep Learning?

Diese Folie ist sehr gut organisiert.

Deep learning

Schließlich denke ich, dass das Merkmal von Deep Learning darin besteht, dass es sogar die Merkmale extrahiert. Wenn Sie beispielsweise ein Modell zur Beurteilung des Sumo-Wrestlings erstellen möchten, definieren Sie normalerweise Merkmale wie "Taillengröße", "Anwesenheit oder Abwesenheit von Magiern" und "ob Sie japanische Kleidung tragen oder nicht" und erstellen darauf basierend ein Modell. Es ist so, als würde man das Argument einer Funktion entscheiden.

Beim Deep Learning wird diese Merkmalsextraktion jedoch auch vom Modell durchgeführt. Oder besser gesagt, deshalb ist es vielschichtig oder tief. Lassen Sie uns insbesondere die Eigenschaften um den Kopf, die Eigenschaften um die Taille und die Eigenschaften des Oberkörpers, die sie usw. usw. parallel und in mehreren Schichten kombinieren, lernen und damit ein Urteil fällen. Das ist die Grundidee (Bild unten).

deeplerning.PNG

Wie in der Abbildung gezeigt, kann Deep Learning die technischen Elemente, aus denen es besteht, wie folgt aufteilen.

Im Folgenden werden die einzelnen Elemente erläutert.

Datenaufteilung

Die zu analysierenden Daten wie Daten und Audio enthalten verschiedene Merkmale. Am besten ist es, in Form von 1 Daten und 1 Merkmal zu teilen, aber es ist schwierig, dies zu tun, ohne zu wissen, was das Merkmal überhaupt ist. Daher ist es wichtig, die Daten zu teilen, um das Merkmal nicht so weit wie möglich zu verlieren. Werden.

Wenn zum Beispiel der wichtigste Faktor bei der Bestimmung des Sumo-Wrestlings das Vorhandensein oder Fehlen eines "Magiers" ist, ist es sehr wichtig, dass dieser "Magier" in das geteilte Bild passt. Dies liegt daran, dass es nicht möglich ist, zu beurteilen, wenn sich der Magier am Rand des geteilten Bildes befindet.

Ein üblicher Ansatz hierfür besteht darin, die Daten zu einem gewissen Grad abzudecken (zu überlappen), anstatt sie einfach aufzuteilen. Die Einheit, die ein Bild teilt, wird als Fenster bezeichnet, und das Bild ist, dass dieses Fenster allmählich verschoben wird. Wenn die Daten in Bezug auf Zeichenketten ABCDE, die Fenstergröße 3 und die Bewegungsbreite 1 sind, werden die Daten als "ABC", "BCD" und "CDE" verwendet.

Extraktion von Merkmalen

Das größte Merkmal von Deep Learning ist, dass es die Merkmale selbst extrahieren kann. Wie wird das gemacht?

Modell für die Merkmalsextraktion

Die Grundidee ist ein Autoencoder. Das Folgende ist eine leicht verständliche Erklärung zu Autoencoder. Es ist ein Bild, das ein Modell mit derselben Eingabe und Ausgabe erstellt und es so trainiert, dass die Eingabe mit begrenzten Funktionen reproduziert werden kann.

Hello Autoencoder

Daneben wird häufig die Restricted Boltzmann Machine eingesetzt. Grob gesagt ist dies ein Wahrscheinlichkeitsmodell, das die Wahrscheinlichkeitsverteilung schätzt, die das Auftreten der Eingabedaten verursacht. Die Erklärung ist hier leicht zu verstehen.

2012-12-12 Yurufuwa Restricted Boltzmann Machine

Beide sind im Wesentlichen insofern gleich, als sie "nach Parametern suchen, die die angegebenen Daten gut erklären können" (Referenz 1). -Maschine-anders-von-einem-Autoencoder-Arent-beide-lernen-High-Level-Features-in-einer-unbeaufsichtigten-Art-ähnlich-wie-ist-ein-Deep-Belief-Network-anders -von-einem-Netzwerk-von-gestapelten-Autoencodern), Referenz 2) ..

Im Deep Learning werden diese individuell trainiert (Pre-Training) und kombiniert. Die erste Schicht ist für jede Person und die zweite Schicht dient zum Lernen, nachdem die Parameter für die erste Schicht festgelegt wurden. Das Bild ähnelt einem Unit-Test mit Stubs. Dieses Vorlernen überwindet die Schwäche von mehrschichtigen neuronalen Netzen, bei denen die Fehlerausbreitung nicht gut funktioniert, wenn die Schichten tiefer werden (sie breitet sich von den oberen Schichten aus, was es schwierig macht, die unteren Schichten zu erreichen).

Ausbreitungsmethode extrahierter Merkmale

Die nächste Frage ist, wie man die nächste Schicht erreicht. Wie oben erwähnt, gibt es hier einen Kompromiss zwischen Informationsausbreitung und Fehlerausbreitung. (Im Folgenden wird jedes Lernmodell als Knoten bezeichnet.)

perception.PNG

Ausgabewert (Aktivierungsfunktion)

Bestimmen Sie zunächst, wie der Wert berechnet werden soll, der an die nächste Ebene (Knoten) weitergegeben werden soll. Ähnlich wie bei allgemeinen neuronalen Netzen werden häufig Sigmoidfunktionen verwendet, aber es scheint, dass heutzutage auch gleichgerichtete lineare Einheiten verwendet werden. Darüber hinaus werden auch Maxout und Lp Pooling verwendet. Diese bestimmen den Wert durch Kombinieren mehrerer Ausgaben, maxout ist der maximale Wert, wie der Name schon sagt, Lp Pooling ist ... Es gibt einen schönen Wert aus, der nicht in einem Wort gesagt werden kann. Weitere Informationen hierzu finden Sie unter Lp-Pooling. Dünne Bildränder haben weniger Knoten, die sie erkennen können, was die Ausbreitung von Informationen erschwert. Dies sind jedoch Techniken, um zu verhindern, dass solche winzigen Informationen (grob gesagt) verloren gehen.

Vermehrungsmethode

Das Festlegen des Ausbreitungsziels ist ebenfalls eine Überlegung. Der einfachste Weg ist, es wie ein neuronales Netzwerk an alle Knoten in der nächsten Schicht weiterzugeben. Wenn dies jedoch der Fall ist, tritt natürlich eine Fehlerausbreitung auf und es kann zu einem Überlernen kommen. Als eine Methode, um damit umzugehen, wurden Methoden wie ein lokales Empfangsfeld entwickelt, das Verbindungsknoten begrenzt, und ein Dropout, das Knoten bestimmt, die sich nicht zufällig ausbreiten.

Indem Sie diese entscheiden und jeden Knoten verbinden, wird das "vorgelernte Merkmalsextraktionsmodell" (Knoten) schließlich in Schichten zusammengesetzt. Die endgültige Beurteilung erfolgt anhand der dadurch extrahierten Merkmale.

Beurteilung

Das endgültige Urteil wird gefällt, und das Training für dieses endgültige Urteil wird als Feines Training bezeichnet. Dies ist natürlich eine betreute Studie. Sie können es bis zum Ende mit einem neuronalen Netzwerk erstellen und durch die Fehlerausbreitungsmethode anpassen oder SVM oben anbringen und trainieren.

Das Obige ist die Erklärung des Mechanismus des tiefen Lernens.

Verwenden Sie Deep Learning

Wie einige von Ihnen vielleicht bemerkt haben, ist Deep Learning keine wirklich neue Technologie, sondern eine gute Kombination bestehender neuronaler Netze. Wenn Sie es implementieren möchten, können Sie es daher selbst tun ... aber es ist wirklich schwierig, daher denke ich, dass es besser ist, eine Bibliothek zu haben.

Bibliothek

Die Umsetzung ist hier sehr gut organisiert. Implementierung Deep Learning

Typische Bibliotheken sind wie folgt.

Google hat TensorFlow angekündigt, und ich bin der Meinung, dass es sich darauf konzentrieren wird. Keras unterstützt TensorFlow, und ein Wrapper, der wie scikit-learn (skflow) verwendet werden kann, ist erschienen, und die Peripherieentwicklung ist ebenfalls aktiv. Auf dem Bild war Caffe die vorherige Weisheit, aber in Chainer wird ein Modell veröffentlicht, das mit Caffes Modell (Model Zoo) trainiert wurde. Der Vorteil in diesem Bereich kann verschwinden, z. B. Importfunktion ist implementiert. Caffe ist möglicherweise nicht einfach zu installieren (viele Probleme hängen mit der Installation zusammen) und periphere Bedingungen wie die Unterstützung von Nicht-Python 3, sodass die Migration fortgesetzt werden kann, wenn die Modellimportfunktion und die Verteilung trainierter Modelle in anderen Bibliotheken fortschreiten. Ich denke, der Sex ist hoch.

Darüber hinaus ist die Python3-Unterstützung, an der Sie interessiert sind, wie folgt.

Ich habe nicht in die anderen geschaut, aber viele Bibliotheken tun es. Da das Problem, das in TensorFlow die Führung übernahm, mit Python3 kompatibel war, glaube ich nicht, dass sich Python2 in Zukunft nur noch verbreiten wird.

Wenn Sie es selbst anstelle einer Bibliothek implementieren möchten, basieren viele Bibliotheken auf Theano und [Restricted Boltzmann-Maschinen]. Ich denke, Scikit-Learn mit (http://scikit-learn.org/stable/modules/neural_networks.html) wird helfen. yusugomori / DeepLearning ist ein Repository, das Deep Learning in verschiedenen Sprachen implementiert, und ich denke, dieser Quellcode wird auch hilfreich sein.

Trainingsdaten

Wohin die Trainingsdaten gebracht werden sollen, ist auch eines der Probleme beim maschinellen Lernen. Es ist schwierig, Zehntausende von Daten selbst zu erhalten, und es ist entmutigend, sie für überwachtes Lernen zu kennzeichnen. Aus diesem Grund gibt es Websites, die Lerndaten bereitstellen. Wir danken Ihnen, dass Sie diese verwenden.

Darüber hinaus werden verschiedene Daten in Dataset der Deeplearning-Informationsseite eingeführt. Das Bildsystem ist in Ressourcen - Liste interessanter sehr großer Bilddatensätze gut zusammengefasst.

Natürliche Sprachsysteme verwenden häufig Scraping, berücksichtigen jedoch ethische Aspekte (Vorsichtsmaßnahmen beim Web-Scraping. c5e827e1827e7cb29011)).

Trainieren

Dieses Mal werde ich pylearn2 verwenden, das ein wichtiges ist. Für Windows ist die Installation wie üblich ein Höllen-Tor. Weitere Informationen finden Sie unter hier (ich dachte für einen Moment, dass ich diesmal nicht aus dieser Hölle herauskommen könnte).

Nachdem pylearn2 fertig ist, verschieben wir das Tutorial ohne Gier. In Schnellstart befindet sich ein Modell namens grbm_smd, eine eingeschränkte Boltzmann-Maschine, aus der Deep Learning besteht. Es entspricht Maschine).

Unten sehen Sie ein Diagramm des tatsächlichen Modells. In pylearn2 wird das normale Modell in einer Datei im YAML-Format festgelegt (in diesem Lernprogramm [cifar_grbm_smd.yaml]) (https://github.com/lisa-lab/pylearn2/blob/master/pylearn2/scripts/tutorials/grbm_smd/). cifar_grbm_smd.yaml)), bitte schauen Sie auch dort nach.

pylearn_quick.PNG

Lass es uns tatsächlich versuchen. Die Prozedur ist in README geschrieben, sodass Sie sie nachverfolgen können.

  1. Laden Sie die CIFAR-10-Daten herunter Legen Sie die Umgebungsvariable "PYLEARN2_DATA_PATH" fest, die das Verzeichnis darstellt, in dem die von pylearn2 verwendeten Daten im Voraus und dann in der Git-Shell gespeichert werden. pylearn2/scripts/datasets/download_cifar10.sh
    Ausführen.
  2. Führen Sie make_dataset.py aus Wechseln Sie in den Ordner pylearn2 / scripts / tutorials / grbm_smd und führen Sie das Datenerstellungsskript aus (vergessen Sie nicht, die virtuelle Umgebung zu aktivieren). python make_dataset.py
  3. Führen Sie train.py aus Jetzt, da die Daten fertig sind, werden wir mit dem Lernen beginnen (tatsächlich fügen wir pylearn2 / scripts in den Pfad ein, aber es ist problematisch, also führen wir es mit einem relativen Pfad aus). ../../train.py cifar_grbm_smd.yaml
  4. Bestätigung des Ausführungsergebnisses Nachdem Sie ein geschultes Modell haben, werfen wir einen Blick auf dessen Inhalt. matplotlib wird verwendet, aber es hat nicht funktioniert, es sei denn, ich habe es mit conda installiert (z. B. Tcl / Tck-GUI-Anzeige und um PIL herum). ../../show_weights.py cifar_grbm_smd.pkl
    learning1.PNG
    Es ist ein Rätsel, was dies sein sollte, aber es spiegelt zumindest die Größe des Gewichts wider, und wenn man bedenkt, dass die Fehler zufällig eingegeben werden, sind die gezeigten Farben und die Dunkelheit schwer wiederherzustellen. Bedeutet das, dass es ein Ort ist? (Weil Gewichte nicht benötigt werden sollten, es sei denn, die Fertigstellung ist erforderlich). Darüber hinaus können Sie mit dem folgenden Befehl leicht die Situation überprüfen, in der die Fehlerrate aufgrund des Lernens abnimmt (geben Sie "b, L, M" als Plotziel an). ../../plot_monitor.py cifar_grbm_smd.pkl
    learning2.PNG

Das ist alles für den Schnellstart. Es enthielt einige schwierige Inhalte, aber ich denke, dass zumindest das Konzept des Modells und der Ausführungsumgebung inzwischen erhalten wurden. Deep Learning ist buchstäblich eine tiefe Welt, aber ich hoffe, dieser Artikel wird Ihnen helfen, es zu verstehen.

Referenzmaterial

Deep learning Hello Autoencoder 2012-12-12 Yurufuwa Restricted Boltzmann Machine Lp pooling Neural Net Counterattack Deep Learning Technology Now Implementierung Deep Learning Katzen- und Bildverarbeitung Teil 3 - Identifizierung von Katzenrassen mit Deep Learning Convolutional Neural Network Convolution Neural Network for speech recognition Building High-level Features Using Large Scale Unsupervised Learning

Recommended Posts

Starten Sie Deep Learning
Tiefes Lernen
Deep Learning Memorandum
Tiefes Lernen, um ohne GPU zu beginnen
Python Deep Learning
Deep Learning × Python
Erstes tiefes Lernen ~ Kampf ~
Python: Deep Learning-Praxis
Deep Learning / Aktivierungsfunktionen
Deep Learning von Grund auf neu
Deep Learning 1 Übung des Deep Learning
Deep Learning / Cross Entropy
Erstes tiefes Lernen ~ Vorbereitung ~
Erstes tiefes Lernen ~ Lösung ~
[AI] Deep Metric Learning
Ich habe versucht, tief zu lernen
Python: Deep Learning Tuning
Deep Learning Großtechnologie
Deep Learning / Softmax-Funktion
Deep Learning von Grund auf 1-3 Kapitel
Versuchen Sie es mit TensorFlow
Deep Learning Gaiden ~ GPU-Programmierung ~
Deep Learning Bilderkennung 1 Theorie
Deep Running 2 Tuning von Deep Learning
Deep Learning / LSTM Scratch Code
<Kurs> Tiefes Lernen: Tag 1 NN
Deep Kernel Learning mit Pyro
Versuchen Sie Deep Learning mit FPGA
Deep Learning für die Bildung von Verbindungen?
Einführung in Udacity Deep Learning Nanodegree
Themen> Deep Learning: Tag 3 RNN
Einführung in Deep Learning ~ Lernregeln ~
Tiefe Stärkung des Lernens 1 Einführung in die Stärkung des Lernens
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
Generiere Pokemon mit Deep Learning
Einführung in Deep Learning ~ Backpropagation ~
Deep Learning Model Lightening Library Distiller
Deep Learning / Deep Learning von Grund auf neu 2 Kapitel 4 Memo
Probieren Sie Deep Learning mit FPGA-Select-Gurken aus
Identifikation der Katzenrasse mit Deep Learning
Deep Learning / Deep Learning von Grund auf neu Kapitel 3 Memo
Machen Sie ASCII-Kunst mit tiefem Lernen
Deep Learning / Deep Learning von Null 2 Kapitel 5 Memo
Implementieren Sie Deep Learning / VAE (Variational Autoencoder)
Einführung in das tiefe Lernen ~ Funktionsnäherung ~
Tiefes Lernen von Grund auf neu (Kostenberechnung)
Über das Projektmanagement von Deep Learning (DNN)
Einführung in Deep Learning ~ Codierungsvorbereitung ~
Organisation von Plattformen für maschinelles Lernen und tiefes Lernen
Deep Learning durch Implementierung 1 gelernt (Return Edition)
Deep Learning / Deep Learning von Null 2 Kapitel 7 Memo
Deep Learning / Deep Learning von Null 2 Kapitel 8 Memo
Microsoft Deep Learning Library "CNTK" Tutorial
Deep Learning / Deep Learning von Grund auf neu Kapitel 5 Memo
Überprüfen Sie die Kniebeugenform mit tiefem Lernen
Deep Learning / Deep Learning von Grund auf neu Kapitel 4 Memo
Deep Strengthing Learning 3 Praktische Ausgabe: Block Breaking
Deep Learning Bilderkennung 2 Modellimplementierung