Aidemy 2020/11/10
Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur AI-spezialisierten Schule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank! Dies ist der erste Beitrag von RNN_LSTM. Freut mich, dich kennenzulernen.
Was diesmal zu lernen ・ ・
(Für tiefes Lernen lernen Sie aus "Deep Learning Basics") -__ Deep Learning __ bezieht sich auf ein Modell __, in dem die __ Zwischenschicht (verborgene Schicht) des neuronalen Netzwerks tief gesetzt ist. ・ Das neuronale Netzwerk ist eines der maschinellen Lernprogramme, das den Mechanismus der Gehirnübertragung anwendet und aus __ "Eingabeschicht", "Zwischenschicht" und "Ausgabeschicht" __ besteht.
-Eine der Dinge, die beim Erstellen eines Modells für ein neuronales Netzwerk berücksichtigt werden müssen, ist __ "Anzahl der Schichten" __ und __ "Anzahl der Einheiten" __. Da es keine Formel gibt, um diese zu bestimmen, müssen Sondierungsentscheidungen getroffen werden. -Das offensichtlichste ist die Anzahl der Einheiten (Anzahl der Dimensionen) __ in der Ausgabeebene. Hierzu kann die Anzahl der zu klassifizierenden Kategorien (Anzahl der Klassen) unverändert festgelegt werden.
・ __ "DropOut ()" __ ist die erste Methode, um Überlernen zu verhindern, dh __ zu verallgemeinern. Dies ist eine Verallgemeinerungsmethode, bei der Knoten nicht mit einem festen Verhältnis gelernt werden. Stellen Sie im Allgemeinen das Verhältnis __50% __ ein. -Dropout kann mit __ "model.add (Dropout (ratio))" __ durchgeführt werden.
-Eine andere Methode zur Verallgemeinerung ist __ "Early Stopping" __. Dies ist eine Methode, um Überlernen zu verhindern, indem das Lernen gestoppt wird, wenn sich die Genauigkeit beim wiederholten Lernen nicht verbessert. ・ Man kann sagen, dass die Genauigkeit am besten ist, wenn der Fehler zwischen den Trainingsdaten und den Testdaten ungefähr gleich ist.
RNN/LSTM
(Erfahren Sie mehr über RNN mit "Zeitreihenanalyse") -__ RNN__ ist ein __neurales Netzwerk, das __Zeitreihendaten verarbeiten kann. Vergangene Informationen werden im Modell beibehalten, um das Konzept der Zeit in das neuronale Netzwerk zu integrieren. ・ Mit fortschreitender Zeitreihe kann der Gradient jedoch verschwinden oder der Rechenaufwand kann explosionsartig ansteigen __ "Gradientenexplosion" __, sodass er nicht für langfristiges Lernen geeignet ist __ Es gibt einen Punkt. -Für die Gradientenexplosion gibt es eine Lösung namens "Gradientenbeschneidung" __, die besagt: "Korrigieren Sie den Gradienten, wenn der Gradientenwert den Schwellenwert überschreitet".
-Die Lösung für das oben genannte RNN-Problem lautet __ "LSTM" __. Durch Ersetzen der mittleren Schicht von RNN durch einen LSTM-Block kann der Kontext für eine lange Zeit beibehalten werden.
・ Für diese Daten wird __ "Unichrome Stock Price Data" __ verwendet. Dieses Mal werden wir "Vorhersagen der Daten __ des nächsten Tages __ aus den Daten __ vor 15 Tagen" durchführen.
・ Code![Screenshot 2020-11-08 19.58.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/db6ea786-8bb8-0e75- ba35-7560071141e8.png)
-Implementieren Sie das Modell mit den vorhandenen Funktionen. Laden Sie die Daten mit __ "data_load () __", ermitteln Sie den Schlusskurs, teilen Sie die Daten mit __ "split_train_test ()" __ und skalieren Sie die Daten __, bevor Sie die Daten an das Modell __ übergeben. Dieses Mal werden wir Standardisierung durchführen. -Für die Standardisierung erstellen Sie eine Instanz mit __ "StandardScaler ()" __, berechnen Sie die durchschnittliche Verteilung der Daten mit __ "fit_transform ()" __ für Trainingsdaten und standardisieren Sie diese sowie für Test und Daten __ Nur mit "transform ()" standardisieren __ (da Testdaten bei der Definition der Standardisierung weniger genau sind).
・ Wenn Sie die durch Vorhersage dieser Zeit vorhergesagten Daten mit den Testdaten in einem Diagramm vergleichen möchten, können Sie die Daten mit __ "inverse_transform ()" __ wiederherstellen und dann __ "plt.plot ()" __ verwenden, um sie zu veranschaulichen. gut.
・ Code![Screenshot 2020-11-08 19.59.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/480715aa-ab35-a829- 9d3c-fd0f8d167ca7.png)
・ Ergebnis![Screenshot 2020-11-08 20.00.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/968fe309-e9e8-1b95- a559-fcc04896b00c.png)
・ Im vorherigen Abschnitt war der Schlusskurs, der vorhergesagt werden konnte, einen Tag wert. Wenn Sie diese Vorhersage jedoch um einen Tag verschieben und zehn Tage lang durchführen, kann ein Modell erstellt werden, das den Schlusskurs in 10 Tagen vorhersagt. ..
-Code (nur zusätzliche Punkte, start_point ist optional)![Screenshot 2020-11-08 20.00.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0 / 698700 / 06cccc3c-ee9b-b899-fc52-707d067f2bdb.png)
・ Ergebnis![Screenshot 2020-11-08 20.01.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/7c8466ff-487c-66b3- 6e70-7c101d483e7d.png)
Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.
Recommended Posts