Dieses Mal möchte ich *** Deep Learning vorstellen, das implementiert wurde, ohne die *** Bibliothek zum Lernen zu verwenden. Die Sprache ist Python.
Es gibt jedoch Bücher, auf die ich mich bezog. In diesem Eintrag werde ich das Buch vorstellen und den in Python neu implementierten Code basierend auf dem im Buch beschriebenen Java-Code erläutern.
Ich denke nicht, dass die Tatsache, dass tiefes Lernen als Funke für den jüngsten KI-Boom Aufmerksamkeit erregt, nicht so viel ist, wie ich hier erwähnen werde. Angesichts der Tatsache, dass in letzter Zeit eine große Anzahl solcher Bücher veröffentlicht wurde, ist leicht zu erkennen, wie viel Aufmerksamkeit sie erhalten haben.
Allerdings ist nicht jeder auf der Welt auf KI spezialisiert, und vielmehr sind solche Leute wirklich auf einige Gruppen beschränkt. Viele Leute
Ich arbeite momentan nicht direkt am Deep Learning, aber ich kann es nicht ignorieren, wenn man bedenkt, dass AI in naher Zukunft als Infrastruktur eingeführt wird.
Ich denke du hast das Gefühl. Deshalb denken viele Leute, dass sie vorerst lernen sollten, und ich bin einer von ihnen.
Als ich das Buch aufnahm, hatte ich das Gefühl, dass es tendenziell in die folgenden Typen polarisiert ist (es ist eine Tendenz und es ist mehr als genug, dass ich ein gutes Buch vermisse). ..
Ich zögerte unnötig, die Bibliothek zu benutzen, ohne den Inhalt überhaupt zu kennen, und fragte mich, ob es ein Buch geben würde, das etwas weiter ging - ich schaute es mir eine Weile an (um es nicht selbst zu implementieren). Vernachlässige orz Nein, ich bin nicht auf tiefes Lernen für mich selbst spezialisiert ^^;).
Dann kam ein Buch mit genau dem richtigen Gefühl heraus, also sprang ich hinein und las alles auf einmal. Dies war ein großer Erfolg.
[](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+ BWGDT & a8ejpredirect = https% 3A% 2F% 2Fwww.amazon.co.jp% 2Fdp% 2F4844381288% 2F% 3Ftag% 3Da8-affi-271202-22)
Das Konzept, es mit einem einfachen, aber supereinfachen Modell zu implementieren, passt zu meiner Vorstellung, dass dies für das Verständnis am nützlichsten ist! Beweisen Sie analytisch und beenden Sie hoch! Stattdessen halte ich es für erwähnenswert, dass die Erklärung so ist, dass die Unterschiede in den Eigenschaften zwischen den Methoden sinnlich erfasst werden können.
Nachdem ich dies gelesen hatte, wollte ich wissen, wo es einen Sprung in der mathematischen Erweiterung und einen etwas tieferen Teil gibt. Als ich die folgenden Standardbücher las, bekam ich einen erfrischenden Kopf.
[](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+ BWGDT & a8ejpredirect = https% 3A% 2F% 2Fwww.amazon.co.jp% 2Fdp% 2F4061529021% 2F% 3Ftag% 3Da8-affi-271202-22)
[](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+ BWGDT & a8ejpredirect = https% 3A% 2F% 2Fwww.amazon.co.jp% 2Fdp% 2F476490487X% 2F% 3Ftag% 3Da8-affi-271202-22)
Also, [Nest, Deep Learning Java-Programmiertheorie und Implementierung von Deep Learning, Impress, 2016. ](Https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+BWGDT&a8ejpredirect=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2F484438128F2% affi-271202-22) reicht nicht aus, um nur die Bibliothek zu benutzen, aber ich denke, dass es ein Buch ist, das für Anfänger geeignet ist, um es für diejenigen zu lesen, die eine hohe Hürde haben, plötzlich in ein Fachbuch einzusteigen.
Wenn Sie sich auf Convolutional Neural Networks (CNN) spezialisiert haben, sind die folgenden Bücher bei weitem die besten. Obwohl es auf CNN spezialisiert ist, trägt es definitiv zum Verständnis dieser Implementierung bei.
[](https://px.a8.net/svt/ejp?a8mat=2NZCQW + 6MQUCY + 249K + BWGDT & a8ejpredirect = https% 3A% 2F% 2Fwww.amazon.co.jp% 2Fdp% 2F4873117585% 2F% 3Ftag% 3Da8-affi-271202-22)
[Deep Learning Java-Programmiertheorie und Implementierung von Deep Learning](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+BWGDT&a8ejpredirect=https%3A%2F%2Fwww.amazon.co.jp % 2Fdp% 2F4844381288% 2F% 3Ftag% 3Da8-affi-271202-22) befasst sich auch mit CNN, so dass Sie es natürlich auch hier erheblich verstehen können. Ich denke, dieses Buch ist insofern ausgezeichnet, als es typische Methoden aus der Vogelperspektive in kurzer Zeit vergleicht.
Deep Learning von Grund auf neu erklärte genau die Grundlagen der Grundlagen neuronaler Netze und war in der Zwischenzeit mit CNN verbunden! Der Eindruck ist, dass es wie eine Geschichte aufgebaut ist.
[Java-Programmiertheorie für tiefes Lernen und Implementierung von tiefem Lernen](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+BWGDT&a8ejpredirect=https%3A%2F%2Fwww.amazon.co.jp Ich konnte den in% 2Fdp% 2F4844381288% 2F% 3Ftag% 3Da8-affi-271202-22) beschriebenen Java-Beispielcode ausführen, aber ich dachte, es wäre langweilig, ihn nur auszuführen. Also habe ich mich dieses Mal entschlossen, selbst zu Python zu wechseln.
Ziele sind *** Deep Belief Nets (DBN) *** und *** Stacked Denoising Autoencoder (SDA) ***,
Das Tolle ist der Autor, Mr. Negago, und ich fahre nur kostenlos. Ich dachte jedoch, dass es eine ziemlich verrückte Handlung wäre, sich nur ohne nachzudenken zu bewegen, also machte ich die folgenden Regeln.
Ich habe nur gesagt, dass es eine etwas strenge Kopie des Sutra ist.
Der Code wird unten veröffentlicht.
Die Ausführungsmethode für jeden Algorithmus ist wie folgt.
cd <cloned path>/DeepLearningWithPython/DeepNeuralNetworks
python DeepBeliefNets.py
cd <cloned path>/DeepLearningWithPython/DeepNeuralNetworks
python StackedDenoisingAutoencoders.py
Für die Softwarekonfiguration [Deep Learning Java-Programmiertheorie und Implementierung von Deep Learning](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+BWGDT&a8ejpredirect=https%3A%2F%2Fwww. Amazon.co.jp% 2Fdp% 2F4844381288% 2F% 3Ftag% 3Da8-affi-271202-22), beziehen Sie sich daher bitte darauf.
Die folgenden drei Arten von Ergebnissen werden ausgegeben.
-------------------------------
DBN(or SDA) Regression model evaluation
-------------------------------
Accuracy: 100.0 %
Precision:
class 1: 100.0 %
class 2: 100.0 %
class 3: 100.0 %
Recall:
class 1: 100.0 %
class 2: 100.0 %
class 3: 100.0 %
Die Bedeutung jedes Ergebnisses ist wie folgt.
Es wird durch eine mathematische Formel wie folgt ausgedrückt.
Accuracy = \frac{TP + TN}{TP + TN + FP + FN} \\
Precision = \frac{TP}{TP + FP} \\
Recall = \frac{TP}{TP + FN}
Die Aufteilung von TP, TN, FP und FN ist in der folgenden Tabelle dargestellt.
Positiv und vorhergesagt | Negativ und vorhergesagt | |
---|---|---|
Richtig ist richtig | True Positive (TP) | False Negative (FN) |
Negativ ist richtig | False Positive (FP) | True Negative (TN) |
Das verwendete Netzwerkmodell ist für beide DBN / SDA gleich.
Für beide DBN / SDA lernen Sie Folgendes.
--Vortraining
--Feintuning
Beide Methoden verwenden genau das gleiche Modell, und die auf die gleiche Weise erstellten Testdaten können ordnungsgemäß gelernt werden. Was ist der Unterschied, wenn Sie mit verschiedenen Methoden fast die gleichen Ergebnisse erzielen? Ich mache mir darüber Sorgen.
Es kann gesagt werden, dass der gemeinsame Punkt beider Verfahren darin besteht, Parameter zu erhalten, die mit den Eingabe- / Ausgabedaten des zweischichtigen Netzwerks übereinstimmen. Im Fall von DBN werden aufgrund der Eigenschaften des Boltzmann-Maschinennetzwerks *** Eingabedaten *** und *** Zustand *** verglichen, aber wenn Sie Ihre Augen vor den Details schließen, sind sie im Wesentlichen gleich. Ich mache das.
Durch die Verwendung von Daten mit verschiedenen Geräuschen, die in der Lernphase hinzugefügt wurden, ist es außerdem üblich, dass sie bei der Identifizierung in der Produktion gegen Rauschen beständig sind. Es kann interpretiert werden, dass es einen Unterschied in der Art und Weise gibt, wie das Rauschen gegeben wird.
Im Fall von DBN wird wahrscheinlich bestimmt, ob das Neuron aktiviert ist oder nicht. Obwohl sie sich im selben Zustand befinden, können sie aktiviert sein oder nicht. Diese Eigenschaft entspricht dem automatischen Hinzufügen von Rauschen zu den trainierten Parametern. Der Algorithmus fügt ohne Erlaubnis Rauschen hinzu.
Andererseits wird im Fall von SDA etwas Rauschen zu den Trainingsdaten hinzugefügt und dann in das Lerngerät eingegeben. Dies liegt daran, dass der Algorithmus nicht die Eigenschaft hat, sich selbst Rauschen hinzuzufügen, da er deterministisch abläuft.
Unter diesen Gesichtspunkten kann verstanden werden, dass es die folgenden Unterschiede in den Merkmalen gibt.
Es scheint immer noch verschiedene Ansichten zu der Frage zu geben, wie sich diese Merkmale auf das Lernen auswirken und warum die Initialisierung auf diese Weise für tiefes Netzwerklernen funktioniert. Mein Verstand ist noch nicht organisiert, also werde ich es hier nicht sagen lol ^^;
Selbst wenn es ein Beispielprogramm gab, das als Referenz verwendet werden konnte, indem ich meine eigenen Hände bewegte und es implementierte, bekam ich ein wenig Verständnis für Deep Learning. Wenn die hier veröffentlichten Informationen für irgendjemanden von Nutzen sind, würde ich mich sehr freuen. Ich habe noch keine Aussetzer oder CNN-Implementierung durchgeführt, aber ich plane, sie erneut zu implementieren, wenn ich Lust dazu habe ^^ Referenzen- [Verschachtelung, Deep Learning Java-Programmiertheorie und Implementierung von Deep Learning, Impress, 2016. ](Https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+BWGDT&a8ejpredirect=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2F484438128F2% affi-271202-22) - [Okaya, Deep Learning, Kodansha, 2015. ](Https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+BWGDT&a8ejpredirect=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2F406152902%2%F affi-271202-22)
Recommended Posts