[PYTHON] Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras

Ich habe mit dem Backend und dem Frontend herumgespielt, aber ich habe noch nicht versucht, maschinell zu lernen. Dies ist mein erster Versuch, daher werde ich ihn als Denkmal festhalten. Ich benutze Python, Numpy, Tf.keras.

Meine Spezifikation

Um die Theorie des maschinellen Lernens gemeinsam zu studieren: "Deep Learning von Grund auf - die Theorie und Implementierung des mit Python erlernten Deep Learning Ich habe "dp / 4873117585 /)" gelesen. Es war ein sehr gutes Buch.

Die Entwicklungsumgebung ist PyCharm Community 2019.3. Ich benutze PyCharm, indem ich die erforderlichen Bibliotheken lade, ohne Anaconda zu verwenden.

1. Einstellung der Aufgabe für maschinelles Lernen

Wir wollen die folgende korrekte Logik maschinell lernen.

2. Code

Ich habe beim Betrachten einiger Webartikel einen typischen Code für das Problem der binären Klassifizierung erstellt. Ich fand es ziemlich kompakt und intuitiv zu schreiben. Keras ist unglaublich.

#!/usr/bin/env python3

import tensorflow as tf
import numpy as np
from tensorflow_core.python.keras.metrics import binary_accuracy
import matplotlib.pyplot as plt

#Datensatzvorbereitung
ds_features = np.random.rand(10000, 2)  #Funktionsdaten
NOISE_RATE = 0
ds_noise = (np.random.rand(10000) > NOISE_RATE).astype(np.int) * 2 - 1  #Kein Geräusch: 1,Ja: -1
ds_labels = (np.sign(ds_features[:, 0] - ds_features[:, 1]) * ds_noise + 1) / 2  #Richtiges Antwortetikett

#Teilen Sie den Datensatz für Training und Validierung
SPLIT_RATE = 0.8   #Teilungsverhältnis
training_features, validation_features = np.split(ds_features, [int(len(ds_features) * SPLIT_RATE)])
training_labels, validation_labels = np.split(ds_labels, [int(len(ds_labels) * SPLIT_RATE)])

#Modellvorbereitung
INPUT_FEATURES = ds_features.shape[1]   #Feature-Dimension
LAYER1_NEURONS = int(INPUT_FEATURES * 1.2 + 1)   #Etwas breiter als die Eingangsdimension
LAYER2_NEURONS = LAYER1_NEURONS
LAYER3_NEURONS = LAYER1_NEURONS  #3 versteckte Schichten
OUTPUT_RESULTS = 1  #Die Ausgabe ist eindimensional
ACTIVATION = 'tanh'
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(input_shape=(INPUT_FEATURES,), units=LAYER1_NEURONS, activation=ACTIVATION),
    tf.keras.layers.Dense(units=LAYER2_NEURONS, activation=ACTIVATION),
    tf.keras.layers.Dense(units=LAYER3_NEURONS, activation=ACTIVATION),
    tf.keras.layers.Dense(units=OUTPUT_RESULTS, activation='sigmoid'),
])
LOSS = 'binary_crossentropy'
OPTIMIZER = tf.keras.optimizers.Adam   #Typische Optimierungsmethode
LEARNING_RATE = 0.03   #Gemeinsame Anfangswerte des Lernkoeffizienten
model.compile(optimizer=OPTIMIZER(lr=LEARNING_RATE), loss=LOSS, metrics=[binary_accuracy])

#Lernen
BATCH_SIZE = 30
EPOCHS = 100
result = model.fit(x=training_features, y=training_labels,
                   validation_data=(validation_features, validation_labels),
                   batch_size=BATCH_SIZE, epochs=EPOCHS, verbose=1)

#Anzeige
plt.plot(range(1, EPOCHS+1), result.history['binary_accuracy'], label="training")
plt.plot(range(1, EPOCHS+1), result.history['val_binary_accuracy'], label="validation")
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.ylim(0.5, 1)
plt.legend()
plt.show()

3. Ergebnis

Dies ist das Lernergebnis. Es erreichte schnell eine Genauigkeit von etwa 99% und es scheint, dass es nicht überlernt hat.

Figure_1.png

4. Überlegung

4.1. Verhalten beim Hinzufügen von Rauschen

Ich habe versucht, NOISE_RATE = 0.2 zu setzen. Die Genauigkeit wird durch die Menge des Rauschens verringert, aber das Ergebnis ist angemessen.

Figure_1.png

4.2. Verhalten beim Hinzufügen irrelevanter Dummy-Funktionen

Lassen Sie uns das Rauschen zurückgeben und den Funktionsumfang auf 5 Typen erhöhen. Finden Sie das richtige Etikett mit derselben Logik, indem Sie nur 2 von 5 Typen verwenden. Mit anderen Worten, die verbleibenden 3 Arten von Merkmalsgrößen sind Dummies, die nichts mit der richtigen Antwort zu tun haben.

Das Ergebnis ist hier, und obwohl die Unschärfebreite etwas größer ist, kann man sagen, dass Sie lernen können, ohne vom Dummy getäuscht zu werden.

Figure_1.png

4.3. Verhalten, wenn die Normalisierung der Merkmalsmenge unterbrochen ist

Ich werde den Funktionsbetrag auf 2 Typen zurückgeben, aber ich habe versucht, den Zufallswert von 0 oder mehr und weniger als 1 mit 1000 zu multiplizieren. Die Ergebnisse scheinen nicht gleichmäßig zu konvergieren und sind in der Nähe der letzten Epoche weniger genau.

Figure_1.png

Ich habe die Epoche verlängert und überprüft. Immerhin scheint das Lernen nicht stabil zu sein.

Figure_1.png

Andererseits habe ich den Durchschnitt der Merkmale verschoben und versucht, den Zufallswert von 0 oder mehr und weniger als 1 um +1000 zu erhöhen. Die Ergebnisse zeigen, dass die Genauigkeit fast 0,5 beträgt, das heißt, sie wird überhaupt nicht als binäre Klassifikation trainiert.

Figure_1.png

Insgesamt können wir sehen, dass die Normalisierung der Merkmalsmengen wichtig ist.

Recommended Posts

Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras
Prognostizieren Sie das Geschlecht von Twitter-Nutzern durch maschinelles Lernen
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Der erste Schritt des maschinellen Lernens ~ Für diejenigen, die versuchen möchten, mit Python zu implementieren ~
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt
Notieren Sie die Schritte zum Verständnis des maschinellen Lernens
Ich habe GAN mit Keras gemacht, also habe ich ein Video des Lernprozesses gemacht.
Die Geschichte des tiefen Lernens mit TPU
Fordern Sie den Turm von Hanoi mit Wiederholungen + Stapel heraus
Über die Entwicklungsinhalte des maschinellen Lernens (Beispiel)
Maschinelles Lernen Kaninchen Herausforderung
Richten Sie die Anzahl der Stichproben zwischen Datenklassen für maschinelles Lernen mit Python aus
Wichtige Punkte von "Maschinelles Lernen mit Azure ML Studio"
Eindrücke vom Udacity Machine Learning Engineer Nano-Abschluss
Vorhersage der Zielzeit eines vollständigen Marathons mit maschinellem Lernen - Visual: Visualisierung von Daten mit Python-
Grundlagen des maschinellen Lernens (Denkmal)
Maschinelles Lernen mit Python! Vorbereitung
Maschinelles Lernen Minesweeper mit PyTorch
Bedeutung von Datensätzen für maschinelles Lernen
Beginnend mit maschinellem Python-Lernen
Versuchen Sie es mit Kaggle leicht maschinell
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Regression zu bewerten
Verstärkungslernen in kürzester Zeit mit Keras mit OpenAI Gym
Umfrage zum Einsatz von maschinellem Lernen in realen Diensten
Vorhersage des Vorhandenseins oder Nichtvorhandenseins von Untreue durch maschinelles Lernen
Ihre URL hat nicht mit dem Wert des Challenge-Parameters geantwortet.
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
Schreiben Sie den Datensatzadditionsknoten von SPSS Modeler mit Python neu.
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Ich habe mit Docker eine API erstellt, die den vorhergesagten Wert des maschinellen Lernmodells zurückgibt
Empfehlung von Manga durch maschinelles Lernen Teil 1 Lassen Sie uns zunächst teilen, ohne über irgendetwas nachzudenken
Die erste künstliche Intelligenz. Fordern Sie die Webausgabe mit Python heraus. ~ Kolbeneinführung
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
Erster Python 3 ~ Der Beginn der Wiederholung ~
Ich habe versucht, Othello AI mit Tensorflow zu machen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Einführung ~
Ich habe maschinelles Lernen mit liblinear versucht
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Maschinelles Lernen ③ Zusammenfassung des Entscheidungsbaums
Holen Sie sich das erste Element von Queryset
SVM versucht maschinelles Lernen mit Scikit-Learn
Fordern Sie die Bildklassifizierung mit TensorFlow2 + Keras 9 heraus. Lernen, Speichern und Laden von Modellen
Vorhersage der Sinuswelle mit Keras
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
[Einführung in Style GAN] Einzigartiges Lernen von Animation mit Ihrer eigenen Maschine ♬
[Lesehinweis] Praktisches maschinelles Lernen mit Scikit-Learn, Keras und TensorFlow Kapitel 1
Management von Modellen für maschinelles Lernen, um Streitigkeiten mit der Unternehmensseite zu vermeiden
Quanteninspiriertes maschinelles Lernen mit Tensornetzwerken
Validieren Sie das Trainingsmodell mit Pylearn2
Beginnen Sie mit dem maschinellen Lernen mit SageMaker
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Für Sie, die beim Lernen mit maschinellem Lernen plötzlich auf das Protokoll schauen ~ Muskeltraining mit LightGBM ~
Ich habe versucht, Othello AI mit Tensorflow zu erstellen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Implementierung ~
4/22 Vorhersage der Sinuswelle mit Keras
Feature Engineering für maschinelles Lernen ab Teil 1 Google Colaboratory - Validierung und Diskriminierung von Zähldaten
Ich habe versucht, Othello AI mit Tensorflow zu erstellen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Battle Edition ~
Fordern Sie die Bildklassifizierung mit TensorFlow2 + Keras CNN 1 heraus ~ Bewegen Sie sich vorerst ~
Ich habe versucht, die Vorhersage-API des maschinellen Lernmodells von WordPress aus aufzurufen
[Einführung in das maschinelle Lernen] Bis Sie den Beispielcode mit Chainer ausführen
Quellcode für die Trennung von Tonquellen (Übungsreihe zum maschinellen Lernen), der mit Python gelernt wurde