Dies ist eine terminologische Frage. Manchmal sehe ich Menschen, die tiefe neuronale Netze als "vielschichtige Perzeptrone" bezeichnen. Warum ist das so? Mir wurde beigebracht, dass ein Perzeptron ein einschichtiger Klassifikator (oder Regressor) mit einem binären Schwellenwert ist, der eine bestimmte Art des Trainings der Gewichte verwendet (kein Back-Prop). Wenn die Ausgabe des Perzeptrons nicht mit der Zielausgabe übereinstimmt, addieren oder subtrahieren wir den Eingabevektor zu den Gewichten (abhängig davon, ob das Perzeptron falsch positiv oder falsch negativ war). Es ist ein recht primitiver Algorithmus für maschinelles Lernen. Das Trainingsverfahren scheint sich nicht auf einen mehrschichtigen Fall zu verallgemeinern (zumindest nicht ohne Änderung). Ein tiefes neuronales Netzwerk wird über Backprop trainiert, wobei die Kettenregel verwendet wird, um Gradienten der Kostenfunktion über alle Gewichte des Netzwerks hinweg weiterzugeben.
Die Frage ist also. Ist ein "mehrschichtiges Perzeptron" dasselbe wie ein "tiefes neuronales Netzwerk"? Wenn ja, warum wird diese Terminologie verwendet? Es scheint unnötig verwirrend zu sein. Darüber hinaus habe ich unter der Annahme, dass die Terminologie einigermaßen austauschbar ist, die Terminologie "mehrschichtiges Perzeptron" nur für ein Feed-Forward-Netzwerk gesehen, das aus vollständig verbundenen Schichten besteht (keine Faltungsschichten oder wiederkehrende Verbindungen). Wie weit ist diese Terminologie? Würde man den Begriff "mehrschichtiges Perzeptron" verwenden, wenn man sich zum Beispiel auf Inception net bezieht? Wie wäre es mit einem wiederkehrenden Netzwerk mit LSTM-Modulen, die in NLP verwendet werden?
quelle
Antworten:
Man kann Multi-Layer-Perceptron (MLP) als Teilmenge von tiefen neuronalen Netzen (DNN) betrachten, die jedoch in der Literatur häufig synonym verwendet werden.
Die Annahme, dass Perceptrons aufgrund ihrer Lernregel benannt werden, ist falsch. Die klassische "Perceptron-Aktualisierungsregel" ist eine der Möglichkeiten, um sie zu trainieren. Die frühzeitige Ablehnung neuronaler Netze erfolgte aus genau diesem Grund, da die Perceptron-Aktualisierungsregel dazu neigte, Farbverläufe zu verschwinden und zu explodieren, was es unmöglich machte, Netze mit mehr als einer Schicht zu trainieren.
Die Verwendung von Backpropagation in Trainingsnetzwerken führte zur Verwendung alternativer Squash-Aktivierungsfunktionen wie Tanh und Sigmoid .
Also, um die Fragen zu beantworten,
MLP ist eine Teilmenge von DNN. Während DNN Schleifen haben kann und MLP immer vorwärts gerichtet sind, dh
Ein Multi Layer Perceptron (MLP) ist ein endlicher azyklischer Graph
Viele der in der Wissenschaftsliteratur verwendeten Terminologien haben mit den Trends der Zeit zu tun und haben sich durchgesetzt.
Ja, Inception, Convolutional Network, Resnet usw. sind alle MLP, da es keinen Zyklus zwischen den Verbindungen gibt. Selbst wenn Verknüpfungen vorhanden sind, bei denen Ebenen übersprungen werden, kann dies als mehrschichtiges Perzeptron bezeichnet werden. LSTMs, Vanilla-RNNs usw. haben jedoch zyklische Verbindungen und können daher nicht als MLPs bezeichnet werden, sondern sind eine Teilmenge von DNN.
Das ist mein Verständnis der Dinge. Bitte korrigieren Sie mich, wenn ich falsch liege.
Referenz-Links:
/cs/53521/what-is-differenz-zwischen-mehrschichtigem-Perceptron-und-mehrschichtigem-Netzwerk
https://en.wikipedia.org/wiki/Multilayer_perceptron
https://en.wikipedia.org/wiki/Perceptron
http://ml.informatik.uni-freiburg.de/former/_media/teaching/ss10/05_mlps.printer.pdf
quelle
Gute Frage: Beachten Sie, dass im Bereich des Tiefenlernens die Dinge nicht immer so gut und klar definiert sind wie im Bereich des statistischen Lernens (auch weil es viel Hype gibt). Erwarten Sie also nicht, Definitionen zu finden, die so streng sind wie in der Mathematik. Das mehrschichtige Perzeptron ist auf jeden Fall eine spezielle vorwärtsgerichtete neuronale Netzwerkarchitektur, bei der mehrere vollständig verbundene Schichten (also überhaupt keine Faltungsschichten) gestapelt werden und bei der die Aktivierungsfunktionen der verborgenen Einheiten häufig Sigmoid oder Tanh sind. Die Knoten der Ausgabeschicht haben normalerweise Softmax-Aktivierungsfunktionen (zur Klassifizierung) oder lineare Aktivierungsfunktionen (zur Regression). Die typischen MLP-Architekturen sind nicht "tief", dh wir haben nicht viele versteckte Schichten. Normalerweise haben Sie beispielsweise 1 bis 5 ausgeblendete Ebenen. Diese neuronalen Netze waren in den 80er Jahren weit verbreitet.
Nun, mit Deep Neural Network meinen wir ein Netzwerk, das viele Schichten hat (19, 22, 152, ... sogar > 1200 , obwohl das zugegebenermaßen sehr extrem ist). Beachten Sie, dass
Und dies war ein kleines Netzwerk - die tiefen Faltungs-Neuronalen Netze mit dem Namen AlexNet hatten 5 Schichten, aber 60 Millionen Gewichte, und sie werden nach heutigen Maßstäben als klein angesehen! Wenn Sie so viele Gewichte haben, ist jeder Datensatz "klein" - sogar ImageNet, ein Bilddatensatz, der zur Klassifizierung verwendet wird, hat "nur" ungefähr 1 Million Bilder, daher ist das Risiko einer Überanpassung viel größer als bei einem flachen Netzwerk.
Deep Learning kann somit als eine Reihe von Werkzeugen verstanden werden, die in der Praxis verwendet werden, um neuronale Netze mit einer großen Anzahl von Schichten und Gewichten zu trainieren und so einen geringen Generalisierungsfehler zu erzielen. Diese Aufgabe ist anspruchsvoller als bei kleineren Netzwerken. Sie können definitiv ein Deep Multilayer Perceptron bauen und trainieren - aber (abgesehen von der Tatsache, dass es nicht die optimale Architektur für viele Aufgaben ist, bei denen Deep Learning heutzutage verwendet wird), werden Sie wahrscheinlich Werkzeuge verwenden, die sich von denen unterscheiden, die früher in Netzwerken verwendet wurden "flach". Beispielsweise ziehen Sie ReLU-Aktivierungseinheiten möglicherweise Sigmoid oder Tanh vor, da sie das Problem des verschwinden- den Gradienten mildern.
quelle
a "multi-layer perceptron" the same thing as a "deep neural network"
: Diese Frage wurde sowohl in meiner als auch in der Antwort von m1cro1ce ausführlich beantwortet. Jetzt stellen Sie die Frage "Sind CNNs eine Untergruppe von MLP?" - Die Stack Exchange-Sites haben eine Richtlinie mit einer Frage zum Posten .Ich möchte hinzufügen, was ich aus vielen Posts gelesen habe:
Es gibt viele verschiedene DNN-Architekturen wie MLPs (Multi-Layer Perceptron) und CNNs (Convolutional Neural Networks).
MLPs ist ein klassischer Typ von NN, der verwendet wird für:
MLPs sind sehr nützlich und können im Allgemeinen verwendet werden, um das Mapping von den Eingaben auf die Ausgaben zu vereinfachen.
Sie können jedoch auch ein anderes Format wie Bilddaten als Vergleichspunkt für die Basislinie verwenden, um zu bestätigen, dass andere Modelle besser geeignet sind.
CNNs zur Abbildung von Bilddaten auf eine Ausgabevariable. es wird verwendet für:
Es funktioniert gut mit Daten, die haben räumliche Beziehungen haben .
Es wird traditionell für 2D-Daten verwendet, kann jedoch auch für 1D-Daten verwendet werden. CNNs erreichen bei einigen 1D-PBS den neuesten Stand der Technik.
Sie müssen zuerst "klar definieren" was Sie als Problem lösen möchten (welche Art von Daten bearbeitet werden sollen, Klassifizierungs- / Regressionsprobleme usw.), um zu wissen, welche Art von Architektur verwendet werden soll.
Sie können auf die Links verweisen, die mir so nützlich waren, um mehr über diese Konzepte zu erfahren :).
Hoffe, dieses Add wird nützlich sein: p.
quelle