In Wikipedia und deeplearning4j heißt es, dass Deep-Learning-NN (DLNN) NN sind, die> 1 verborgene Schicht haben.
Diese Art von NN war für mich an der Universität Standard, während DLNN derzeit sehr hochgespielt sind. War schon da, hab das gemacht - was ist die große Sache?
Ich habe auch gehört, dass gestapelte NN als Deep-Learning gelten. Wie ist Deep Learning wirklich definiert?
Mein Hintergrund von NN ist hauptsächlich von der Universität, nicht von Jobs:
- studierte Anwendungen von NN in der Industrie
- hatte etwa 5 Kurse auf Artif. Intel. & mach. lernen. - obwohl vielleicht 2 von ihnen auf NN
- verwendetes NN für ein kleines, einfaches Projekt zur Bilderkennung - verwendetes 3-Schicht-Feed-Forward-NN
- habe nicht wirklich nachgeforscht (wie in der Doktorarbeit)
neural-network
deep-learning
Make42
quelle
quelle
Antworten:
Sie haben Recht damit, dass sich das Grundkonzept eines tiefen NN seit 2012 nicht geändert hat. Die Art und Weise, wie tiefe NN trainiert werden, wurde jedoch durch eine Reihe von Verbesserungen verbessert, die sie qualitativ leistungsfähiger gemacht haben. Es gibt heute auch eine größere Auswahl an Architekturen. Ich habe einige Entwicklungen seit 2012 aufgelistet, gruppiert nach Trainingsverbesserungen und Architekturverbesserungen:
Verbesserungen beim Training tiefer NNs
Hardware : Die offensichtlichste Änderung ist nur die unaufhaltsame Weiterentwicklung von Moores Gesetz. Heute steht mehr Rechenleistung zur Verfügung. Cloud Computing macht es Menschen auch einfach, große NNs zu trainieren, ohne ein riesiges Rig kaufen zu müssen.
Software : Die Open-Source-Software für Deep Learning wurde ab 2012 enorm verbessert. 2012 gab es Theano, vielleicht auch Caffe. Ich bin sicher, es gibt auch einige andere. Heute haben wir aber auch TensorFlow, Torch, Paddle und CNTK, die alle von großen Technologieunternehmen unterstützt werden. Dies hängt eng mit dem Aufzählungspunkt der Hardware zusammen, da viele dieser Plattformen das Trainieren auf GPUs vereinfachen, was die Trainingszeit drastisch verkürzt.
Aktivierungsfunktionen : Die Verwendung von ReLU-Aktivierungsfunktionen ist heutzutage wahrscheinlich weiter verbreitet, was das Training sehr tiefer Netzwerke erleichtert. Auf der Forschungsseite wird eine größere Vielfalt von Aktivierungsfunktionen untersucht, einschließlich undichter ReLU- , parametrischer ReLU- und Maxout-Einheiten .
Optimierungsalgorithmen : Es gibt heute mehr Optimierungsalgorithmen. Adagrad und Adadelta wurden erst 2011 bzw. 2012 eingeführt. Aber wir haben jetzt auch den Adam-Optimierer und er ist eine sehr beliebte Wahl geworden.
Dropout : In den letzten Jahren ist Dropout zu einem Standardwerkzeug für die Regularisierung beim Training neuronaler Netze geworden. Dropout ist eine rechnerisch kostengünstige Form des Ensemblings für NNs. Im Allgemeinen übertrifft eine Reihe von Modellen, die an zufälligen Stichproben des Datensatzes trainiert wurden, ein einzelnes Modell, das an dem gesamten Datensatz trainiert wurde. Dies ist für NNs explizit schwierig, da ihre Ausbildung so teuer ist. Ein ähnlicher Effekt kann jedoch nur durch zufälliges "Ausschalten" von Neuronen bei jedem Schritt angenähert werden. Verschiedene Untergraphen im NN werden am Ende auf verschiedenen Datensätzen trainiert und lernen dadurch verschiedene Dinge. Wie beim Ensemble macht dies das gesamte NN gegenüber Überanpassung robuster. Dropout ist eine einfache Technik, die in fast allen Fällen die Leistung zu verbessern scheint.
Chargennormalisierung : Es ist seit einiger Zeit bekannt, dass NNs am besten mit normalisierten Daten trainieren - dh es gibt einen Mittelwert von Null und eine Einheitsvarianz. In einem sehr tiefen Netzwerk werden die Eingaben beim Durchlaufen der Daten durch jede Schicht transformiert und driften im Allgemeinen zu einer Verteilung, der diese nette, normalisierte Eigenschaft fehlt. Dies erschwert das Lernen in diesen tieferen Schichten, da die Eingaben aus ihrer Sicht keinen Mittelwert von Null und keine Einheitsvarianz aufweisen. Der Mittelwert könnte sehr groß sein und die Varianz könnte sehr klein sein. Die Chargennormalisierung behebt dies, indem die Eingaben in eine Schicht umgewandelt werden, um einen Mittelwert von Null und eine Einheitsvarianz zu erhalten. Dies scheint beim Training sehr tiefer NNs enorm effektiv zu sein.
Theorie : Bis vor kurzem wurde angenommen, dass tiefe NNs schwer zu trainieren sind, weil die Optimierungsalgorithmen in lokalen Minima stecken bleiben und Probleme haben, globale Minima zu finden. In den letzten vier Jahren gab es eine Reihe von Studien, die darauf hinweisen, dass diese Intuition falsch war (z. B. Goodfellow et al. 2014)). Im sehr hochdimensionalen Parameterraum eines tiefen NN sind lokale Minima tendenziell nicht viel schlechter als globale Minima. Das Problem ist tatsächlich, dass sich der NN beim Training auf einem langen, breiten Plateau befinden kann. Darüber hinaus können diese Hochebenen abrupt in einer steilen Klippe enden. Wenn der NN kleine Schritte unternimmt, dauert das Lernen sehr lange. Wenn die Stufen jedoch zu groß sind, stößt es beim Aufprall auf die Klippe auf ein großes Gefälle, wodurch alle früheren Arbeiten rückgängig gemacht werden. (Dies kann durch Gradient Clipping, eine weitere Innovation nach 2012, vermieden werden.)
Neue Architekturen
Restnetzwerke : Forscher konnten unglaublich tiefe Netzwerke (mehr als 1000 Schichten!) Mit Restnetzwerken trainieren . Die Idee dabei ist, dass jede Ebene nicht nur die Ausgabe der vorherigen Ebene empfängt, sondern auch die ursprüngliche Eingabe. Bei ordnungsgemäßem Training wird jede Ebene dazu ermutigt, etwas anderes als die vorherigen Ebenen zu lernen, sodass jede zusätzliche Ebene Informationen hinzufügt.
Breite und tiefe Netzwerke : Breite, flache Netzwerke neigen dazu, sich die Zuordnung zwischen ihren Eingaben und ihren Ausgaben einfach zu merken. Tiefe Netzwerke verallgemeinern sich viel besser. Normalerweise möchten Sie eine gute Verallgemeinerung, aber es gibt Situationen wie Empfehlungssysteme, in denen auch einfaches Auswendiglernen ohne Verallgemeinerung wichtig ist. In diesen Fällen möchten Sie gute, inhaltliche Lösungen bereitstellen, wenn ein Benutzer eine allgemeine Abfrage durchführt, aber sehr genaue Lösungen, wenn der Benutzer eine sehr spezifische Abfrage stellt. Breite und tiefe Netzwerke können diese Aufgabe gut erfüllen.
Neuronale Turing-Maschine : Ein Nachteil traditioneller wiederkehrender NNs (ob es sich um Standard-RNNs oder etwas Anspruchsvolleres wie ein LSTM handelt) besteht darin, dass ihr Speicher etwas "intuitiv" ist. Sie können sich an vergangene Eingaben erinnern, indem sie die von ihnen erzeugten Aktivierungen für verborgene Ebenen in der Zukunft speichern. Manchmal ist es jedoch sinnvoller, einige Daten explizit zu speichern. (Dies könnte der Unterschied zwischen dem Aufschreiben einer Telefonnummer auf ein Blatt Papier und dem Erinnern daran sein, dass die Nummer etwa 7 Ziffern hatte und ein paar 3er darin waren und vielleicht irgendwo in der Mitte ein Strich.) Die neuronale Turing-Maschineist eine Möglichkeit, dieses Problem zu beheben. Die Idee ist, dass das Netzwerk lernen kann, bestimmte Fakten explizit in eine Speicherbank zu übertragen. Dies ist nicht einfach, da Backprop-Algorithmen differenzierbare Funktionen erfordern, das Festschreiben eines Datums an eine Speicheradresse jedoch eine inhärent diskrete Operation ist. Folglich umgehen neuronale Turing-Maschinen dies, indem sie ein wenig Daten in eine Verteilung verschiedener Speicheradressen übertragen. Diese Architekturen scheinen noch nicht besonders gut zu funktionieren, aber die Idee ist sehr wichtig. Einige Varianten davon werden wahrscheinlich in Zukunft weit verbreitet sein.
Generative gegnerische Netzwerke : GANs sind eine sehr aufregende Idee, die bereits viel praktischen Nutzen zu haben scheint. Hier geht es darum, zwei NNs gleichzeitig zu trainieren: einen, der versucht, Stichproben aus der zugrunde liegenden Wahrscheinlichkeitsverteilung (einem Generator) zu generieren, und einen, der versucht, zwischen realen Datenpunkten und den vom Generator (einem Diskriminator) erzeugten gefälschten Datenpunkten zu unterscheiden. Zum Beispiel, wenn Ihr Datensatz eine Sammlung von Bildern von Schlafzimmern istDer Generator versucht, eigene Bilder von Schlafzimmern zu erstellen, und der Diskriminator versucht herauszufinden, ob es sich um echte Bilder von Schlafzimmern oder um gefälschte Bilder von Schlafzimmern handelt. Am Ende haben Sie zwei sehr nützliche NNs: eine, die wirklich gut darin ist, Bilder als Schlafzimmer oder nicht als Schlafzimmer zu klassifizieren, und eine, die wirklich gut darin ist, realistische Bilder von Schlafzimmern zu erzeugen.
quelle
Deep Learning (und insbesondere tief verschlungene neuronale Netze) ist derzeit sehr beliebt, da sich die verschiedenen Herausforderungen bei der Bildverarbeitung / Objekterkennung in jüngster Zeit erheblich verbessert haben. Insbesondere Deep Conventes wurden verwendet, um ImageNet-Klassifizierungsfehler von 28% im Jahr 2010 auf 7% im Jahr 2014 zu reduzieren. Deep Learning ist sicherlich überzeichnet, aber das sollte nicht die Tatsache beeinträchtigen, dass es im Bereich der Bildverarbeitung bedeutende Verbesserungen gegeben hat.
quelle
Eine ähnliche Frage wurde im Lebenslauf gestellt: Unterschied zwischen neuronalen Netzen und tiefem Lernen :
Zu Ihrer Information : Wie wahr ist diese Folie zum Thema Deep Learning, in der behauptet wird, dass alle Verbesserungen ab den 1980er Jahren nur auf viel mehr Daten und viel schnellere Computer zurückzuführen sind?
quelle