Aidemy 2020/10/30
Einführung
Hallo, es ist ja! Obwohl es ein knuspriges literarisches System ist, interessierte ich mich für die Möglichkeiten der KI, also ging ich zur KI-Fachschule "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 dritte Beitrag der negativ-positiven Analyse. Freut mich, dich kennenzulernen.
- Dieser Artikel ist eine Zusammenfassung dessen, was Sie in "Aidemy" "in Ihren eigenen Worten" gelernt haben. Es kann Fehler und Missverständnisse enthalten. Bitte beachten Sie.
Was diesmal zu lernen
・ Implementierung des LSTM-Modells
・ Negative / Positive Analyse mit dem konstruierten Modell
Lernen Sie mit LSTM
LSTM
・ (Review) LSTM ist eine Art RNN und kann die zu Beginn eingegebenen Daten speichern. Das heißt, es ist ein RNN-Modell, das zum Langzeitgedächtnis fähig ist.
Trainingsdatensatz erstellen
- Verwenden Sie die in __Kapitel2 erstellten Daten als Trainingsdatensatz __. Die Trainingsdaten X werden aus __wörtern quantifiziert __ (Merkmale) erstellt, und das Lehrerlabel y wird aus __negativ / positiv quantifiziert __ (Etikett) erstellt.
- Durch Multiplizieren der Länge von Features mit 0.8, __set die Referenzlänge für Division __. Auf dieser Grundlage werden die Trainingsdaten mit dem Teil "~ 0.8" der Features als __ "train_X" __ und dem Rest als __ "val_X" __ erstellt. Erstellen Sie auf ähnliche Weise eine Lehrerbezeichnung mit __ "~ 0,8" __ Teil der Bezeichnungen als __ "train_y" __ und den Rest als __ "val_y" __.
- Außerdem ist __half __ von val_X und val_y __ "test_X" und "test_y" __ für die Genauigkeitsbewertung. (Die andere Hälfte wird als Validierungsdaten verwendet)
-Die von LSTM zu trainierenden Daten müssen in __ (Anzahl der Proben, Sequenzlänge, Anzahl der Dimensionen) __ umgewandelt werden. __Sequenzlänge __ bezieht sich auf die Anzahl der Daten __, die das Modell in jedem Schritt lernt. Dieses Mal wird ein Satz in einem Schritt gelernt, sodass er zu __ "1" __ wird.
-Für Trainingsdaten X wird die Formkonvertierung mit __ "np.reshape ()" __ durchgeführt. Die Transformationsdaten selbst werden an das erste Argument übergeben, und der Inhalt der Transformation, dh das oben Enthaltene (Anzahl der Abtastwerte, Sequenzlänge, Anzahl der Dimensionen), wird an das zweite Argument übergeben.
- Da die Form von __Daten X (Anzahl der Proben, Anzahl der Dimensionen) __ ist, kann die Anzahl der Proben mit __ "Form [0]" __ erhalten werden, und die Anzahl der Dimensionen ist __ "Form [1]". Sie können es mit __ bekommen.
-Für das Lehrerlabel y wird einer der numerischen Werte von "0, 1, 2" gespeichert, sodass diese Werte bei der __-Analyse gleich behandelt werden. Zu __. (Wenn nicht konvertiert, wird die Analyse so durchgeführt, dass "1" "zwischen 0 und 2" liegt.)
- Die Konvertierung in einen One-Hot-Vektor erfolgt durch __ "to_categorical (Daten, Anzahl der Vektoren)" __. Die Anzahl der Vektoren beträgt diesmal __3 __ von "0,1,2".
・ Code![Screenshot 2020-10-28 16.55.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/771f56a0-2c27-6b77- 730a-11b1474a0fcf.png)
・ Die Form der einzelnen Daten![Screenshot 2020-10-28 16.56.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/fc589dba-327a -91cb-0868-70397bbfe331.png)
Implementieren Sie LSTM mit Keras
Definition der LSTM-Schicht
- Da wir dieses Mal das Keras __Sequential-Modell __ verwenden, können wir im Gegensatz zur funktionalen API die LSTM-Ebene einfach mit __ "add" __ hinzufügen.
- Da die erste Ebene die Eingabeebene ist, muss __, "Form der Eingabedaten" __ angegeben werden. Bei zweidimensionalen Daten muss nur die Anzahl der Dimensionen durch input_dim angegeben werden. Bei dreidimensionalen Daten wie dieser Zeit muss die Sequenzlänge auch durch input_length angegeben werden.
-Auch __input_shape = (Sequenzlänge, Anzahl der Dimensionen) __ kann eingestellt werden.
・ Code![Screenshot 2020-10-28 18.33.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/6870e342-6542-c0c7- 79fa-b2754121c393.png)
- Fügen Sie die LSTM-Schicht zur zweiten Schicht und die vollständig verbundene Schicht (Ausgangsschicht) zur dritten Schicht hinzu. Beim Definieren der LSTM-Ebene muss True für return_sequences angegeben werden, wenn die nächste Ebene ebenfalls LSTM ist, und False, wenn es sich nicht um die LSTM-Ebene handelt.
・ Code![Screenshot 2020-10-28 18.39.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/7733ae98-2a75-ef61- ca33-17ea96ea3357.png)
Kompilieren, lernen, bewerten
- Nach dem Hinzufügen der Ebene _ kompilieren und legen Sie den Trainingsprozess des __- Modells fest. Kompilieren Sie mit __ "model.compile ()" __ und geben Sie die Verlustfunktion loss und die Aktivierungsfunktion optimizer als Argumente an. Da dies ein Klassifizierungsmodell ist, wird für die Verlustfunktion "__cross entropy error __" verwendet. Verwenden Sie __ 'rmsprop' __ für die Aktivierungsfunktion und geben Sie __ ['Genauigkeit'] __ für metrics an, einen Index für die Modellbewertung.
-Modelltraining wird mit "__model.fit () __" durchgeführt. Bestimmen Sie die Anzahl der Daten, die gleichzeitig in das Modell eingegeben werden sollen. Batch_size ist 32 und die Häufigkeit, mit der das Modell trainiert wird. Epochs ist 2.
・ Bewerten Sie abschließend das Modell. Dies geschieht mit "__model.evaluate () __". Sie können die Testdaten an diese übergeben.
・ Code![Screenshot 2020-10-28 18.57.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/f529fc7b-6c87-9c53- cbfc-4d705ec18ac7.png)
・ Ergebnis![Screenshot 2020-10-28 18.58.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/27ca0b26-900e-43c4- 8d86-25999751c5dd.png)
Versuchen Sie, das Modell für verschiedene Daten zu verwenden
Verarbeitung von Eingabedaten
・ Von hier aus werden __ neue Daten an das erstellte Modell übergeben, um eine negative / positive Diagnose zu stellen __.
-Speichern Sie englischen Text in "Text" als Eingabedaten und verarbeiten Sie ihn. Übergeben Sie zuerst Text an die in Kapitel 2 erstellte morphologische Analysefunktion __ "tweet_to_words ()" __ und teilen Sie ihn dann mit __split () __ in Wörter auf.
-Nächste, __ Konvertiere die geteilten Wörter in Zahlen __. Lesen Sie die in Kapitel 2 erstellte Datenbank __ "vocab_to_ints" __ und speichern Sie den numerischen Wert, falls er in der Datenbank vorhanden ist, oder 0 in der leeren Liste words_int.
-Finally, wie wir es in Kapitel 2 getan haben, haben wir die Länge der __ Liste __ vereinheitlicht und vervollständigt.
·Code
・ Ergebnis![Screenshot 2020-10-28 20.32.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/1eb9d879-8cde-b7c7- abef-f86233abaecd.png)
- Wenden Sie danach das trainierte Modell __ "lstm_model" __ auf diese Funktionen an und prognostizieren Sie mit predict. Geben Sie als Antwort das Modell mit dem höchsten vorhergesagten Wert unter den drei Kategorien aus.
-Der mit dem höchsten vorhergesagten Wert kann mit __ "np.argmax ()" __ erhalten werden, das die Indexnummer des Maximalwerts zurückgibt.
-Code (Ergebnisse werden als "negativ" zurückgegeben)
Zusammenfassung
- Verwenden Sie bei der Implementierung des Modells die in __Kapitel2 erstellten Daten als Trainingsdatensatz __. Die Trainingsdaten X werden aus __wörtern quantifiziert __ (Merkmale) erstellt, und das Lehrerlabel y wird aus __negativ / positiv quantifiziert __ (Etikett) erstellt.
-Die von LSTM zu trainierenden Daten müssen __3 Dimensionen __ (Anzahl der Proben, Sequenzlänge, Anzahl der Dimensionen) __ sein. Von diesen bezieht sich sequence length auf die Anzahl der Daten, die das Modell in jedem Schritt lernt.
-Das Modell wird von Sequential model implementiert. __ Fügen Sie eine Ebene mit "add" __ hinzu, kompilieren Sie mit __ "compile" __, lernen Sie mit __ "fit" __ und fertig. Das fertige Modell wird mit __ "evaluieren" __ bewertet.
- Wenn Sie weitere Textdaten an das erstellte Modell übergeben, formatieren Sie die __- Daten mithilfe der Funktion im vorherigen Abschnitt und übergeben Sie sie dann an das __- Modell. Negative und positive Vorhersagen werden mit __ "Vorhersagen" __ gemacht.
Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.