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.
Diese Folie ist sehr gut organisiert.
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).
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.
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.
Das größte Merkmal von Deep Learning ist, dass es die Merkmale selbst extrahieren kann. Wie wird das gemacht?
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.
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).
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.)
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.
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.
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.
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.
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.
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.
Wenn Sie es jedoch in Ihrer Anwendung verwenden möchten, müssen Sie die Daten häufig selbst vorbereiten, was zu einer stetigen und schlammigen Arbeit führt.
MNIST
Dies sind Beispieldaten von handgeschriebenen Zeichen.
CIFAR-10
Eine Sammlung von Bildern in 10 Klassen (Flugzeug, Auto usw.). Es gibt auch ein detaillierteres Etikett namens CIFAR-100.
The Oxford-IIIT Pet Dataset
Wie CIFAR-10 beschriftete Daten. Wie der Name schon sagt, handelt es sich um ein Tiersystem.
kaggle
Website für Datenanalyse-Wettbewerbe. Sie können um die Modellgenauigkeit konkurrieren und es werden auch Daten bereitgestellt. Sie können jetzt Daten unter Kaggle Datasets suchen und veröffentlichen.
Microsoft Azure Marketplace
Verschiedene Daten wie NFL-Spielergebnisse und demografische Daten werden bereitgestellt (einige werden bezahlt, aber viele sind kostenlos).
UC Irvine Machine Learning Repository
Eine Site, die Datensätze für maschinelles Lernen sammelt.
Harvard Dataverse
Ein von der Harvard University veröffentlichter Datensatz. Es wird mit der Software Dataverse veröffentlicht, und Sie können sehen, dass diese Site auch Daten mit dieser Software veröffentlicht.
COCO
Datensatz wie Bilderkennung und Bildunterschriften für von Microsoft veröffentlichte Bilder (dies wird in Neuraltalk2 verwendet, der Bildunterschriften hinzufügt)
nico-opendata
Wir stellen Forschern Daten wie Kommentare zu lächelnden Standbildern und Videos zur Verfügung.
DATA GO JP
Eine offene Datenkatalogseite, die von der japanischen Regierung veröffentlicht wurde. Hier sammelt auch die von jeder lokalen Regierung veröffentlichten Daten.
Data.gov
Original amerikanische Open-Data-Katalog-Site
ShapeNet
3D-Modelldatensatz. Es gibt verschiedene Arten von Modellen, von Möbeln bis zu Flugzeugen.
DCASE
Daten zum Lernen und Auswerten sind für Aufgaben, die natürliche Geräusche klassifizieren (Parkgeräusche, Bürogeräusche usw.), öffentlich zugänglich.
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)).
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).
grbm
steht für RBM mit Gaußschen Einheiten
. In RBM ist der Wert, den ein Knoten normalerweise annehmen kann, ein Binärwert von 0 oder 1, der jedoch nicht aussagekräftig ist. Daher handelt es sich um ein Modell, das auf eine lineare Funktion (Gaußsche Einheit) mit einer unabhängigen Varianz erweitert wurde. Weitere Informationen finden Sie hier (Ein praktischer Leitfaden für das Training eingeschränkter Boltzmann-Maschinen, Abschnitt 13.2). Dieses Dokument enthält auch eine gute Zusammenfassung anderer Techniken für die Arbeit mit RBM.smd
bedeutet Denoising Score Matching
. Hierbei handelt es sich um eine Methode zum absichtlichen Fehlen (Hinzufügen von Rauschen) von Eingabedaten und zum Verwenden der Wiederherstellungsdaten als Index (= Zielfunktion) des Modells. (Denoising Autoencoder). Indem Sie diese Rollenebenen in Deep Learning integrieren, können Sie Ihre Reaktionsfähigkeit verbessern, beispielsweise wenn handgeschriebene Zeichen in der Mitte schwach sind.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.
Lass es uns tatsächlich versuchen. Die Prozedur ist in README geschrieben, sodass Sie sie nachverfolgen können.
pylearn2/scripts/datasets/download_cifar10.sh
pylearn2 / scripts / tutorials / grbm_smd
und führen Sie das Datenerstellungsskript aus (vergessen Sie nicht, die virtuelle Umgebung zu aktivieren).
python make_dataset.py
../../train.py cifar_grbm_smd.yaml
../../show_weights.py cifar_grbm_smd.pkl
../../plot_monitor.py cifar_grbm_smd.pkl
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.
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