[PYTHON] Bilan du premier défi du machine learning avec Keras

J'ai joué avec le back-end et le front-end, mais je n'ai pas encore essayé l'apprentissage automatique. C'est ma première tentative, donc je l'enregistrerai comme un mémorial. J'utilise python, numpy, tf.keras.

Mes spécifications

Pour étudier collectivement la théorie de l'apprentissage automatique, "Deep Learning from scratch - the théorie and implementation of deep learning appris with Python J'ai lu "dp / 4873117585 /)". C'était un très bon livre.

L'environnement de développement est PyCharm Community 2019.3. J'utilise PyCharm en chargeant les bibliothèques nécessaires sans utiliser Anaconda.

1. Paramètre de tâche d'apprentissage automatique

Nous visons à apprendre automatiquement la logique correcte suivante.

2. Code

J'ai créé un code typique pour le problème de classification binaire en regardant certains articles Web. J'ai trouvé que c'était assez compact et intuitif à écrire. Keras est incroyable.

#!/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

#Préparation du jeu de données
ds_features = np.random.rand(10000, 2)  #Données sur les fonctionnalités
NOISE_RATE = 0
ds_noise = (np.random.rand(10000) > NOISE_RATE).astype(np.int) * 2 - 1  #Pas de bruit: 1,Oui: -1
ds_labels = (np.sign(ds_features[:, 0] - ds_features[:, 1]) * ds_noise + 1) / 2  #Étiquette de réponse correcte

#Divisez l'ensemble de données pour la formation et la validation
SPLIT_RATE = 0.8   #Rapport de division
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)])

#Préparation du modèle
INPUT_FEATURES = ds_features.shape[1]   #Dimension caractéristique
LAYER1_NEURONS = int(INPUT_FEATURES * 1.2 + 1)   #Un peu plus large que la dimension d'entrée
LAYER2_NEURONS = LAYER1_NEURONS
LAYER3_NEURONS = LAYER1_NEURONS  #3 couches cachées
OUTPUT_RESULTS = 1  #La sortie est unidimensionnelle
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   #Méthode d'optimisation typique
LEARNING_RATE = 0.03   #Valeurs initiales communes du coefficient d'apprentissage
model.compile(optimizer=OPTIMIZER(lr=LEARNING_RATE), loss=LOSS, metrics=[binary_accuracy])

#Apprentissage
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)

#afficher
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. Résultat

C'est le résultat de l'apprentissage. Il a rapidement atteint une précision d'environ 99%, et il semble qu'il n'ait pas surappris.

Figure_1.png

4. Examen

4.1. Comportement en cas d’ajout de bruit

J'ai essayé de définir NOISE_RATE = 0,2. La précision est réduite par la quantité de bruit, mais le résultat est approprié.

Figure_1.png

4.2. Comportement lorsque des fonctionnalités factices non pertinentes sont ajoutées

Retournons le bruit et augmentons la quantité de fonctionnalités à 5 types. Trouvez l'étiquette correcte avec la même logique en utilisant seulement 2 types sur 5. En d'autres termes, les 3 types restants de quantités d'entités sont des mannequins qui n'ont rien à voir avec la bonne réponse.

Le résultat est là, et bien que la largeur du flou soit légèrement plus grande, on peut dire que vous pouvez apprendre sans être trompé par le mannequin.

Figure_1.png

4.3. Comportement lorsque la normalisation de la quantité d'entités est interrompue

Je vais renvoyer le montant de la fonctionnalité à 2 types, mais j'ai essayé de multiplier la valeur aléatoire de 0 ou plus et de moins de 1 par 1000. Les résultats ne semblent pas converger uniformément et sont moins précis à l'approche de l'époque finale.

Figure_1.png

J'ai augmenté l'époque et vérifié. Après tout, l'apprentissage ne semble pas stable.

Figure_1.png

D'un autre côté, j'ai décalé la moyenne des quantités de caractéristiques et essayé d'augmenter la valeur aléatoire de 0 ou plus et de moins de 1 de +1000. Les résultats montrent que la précision est de presque 0,5, c'est-à-dire qu'elle n'est pas du tout formée en tant que classification binaire.

Figure_1.png

Dans l'ensemble, nous pouvons voir que la normalisation des quantités de caractéristiques est importante.

Recommended Posts

Bilan du premier défi du machine learning avec Keras
Prédire le sexe des utilisateurs de Twitter grâce à l'apprentissage automatique
Résumé du flux de base de l'apprentissage automatique avec Python
La première étape de l'apprentissage automatique ~ Pour ceux qui veulent essayer l'implémentation avec python ~
Une histoire coincée avec l'installation de la bibliothèque de machine learning JAX
Enregistrez les étapes pour comprendre l'apprentissage automatique
J'ai fait GAN avec Keras, donc j'ai fait une vidéo du processus d'apprentissage.
L'histoire de l'apprentissage profond avec TPU
Défiez la tour de Hanoi avec recurs + stack
À propos du contenu de développement de l'apprentissage automatique (exemple)
Défi de lapin d'apprentissage automatique
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
Points clés de «Machine learning avec Azure ML Studio»
Impressions d'avoir obtenu le nano-diplôme Udacity Machine Learning Engineer
Prédire le temps objectif d'un marathon complet avec l'apprentissage automatique-③: j'ai essayé de visualiser les données avec Python-
Bases de l'apprentissage automatique (mémoire)
Apprentissage automatique avec Python! Préparation
Démineur d'apprentissage automatique avec PyTorch
Importance des ensembles de données d'apprentissage automatique
Commencer avec l'apprentissage automatique Python
Essayez le machine learning à la légère avec Kaggle
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de régression
Apprentissage par renforcement dans les plus brefs délais avec Keras avec OpenAI Gym
Enquête sur l'utilisation du machine learning dans les services réels
Prédire la présence ou l'absence d'infidélité par l'apprentissage automatique
Votre URL n'a pas répondu avec la valeur du paramètre de défi.
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de classification
Réécrivez le nœud d'ajout d'enregistrement de SPSS Modeler avec Python.
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
J'ai créé une API avec Docker qui renvoie la valeur prédite du modèle d'apprentissage automatique
Recommandation de manga par machine learning Partie 1 Commençons par diviser sans penser à rien
La première intelligence artificielle. Testez la sortie Web avec python. ~ Introduction du flacon
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
First Python 3 ~ Le début de la répétition ~
J'ai essayé de créer Othello AI avec tensorflow sans comprendre la théorie de l'apprentissage automatique ~ Introduction ~
J'ai essayé l'apprentissage automatique avec liblinear
Apprentissage automatique par python (1) Classification générale
Apprentissage automatique ③ Résumé de l'arbre de décision
Obtenez le premier élément du jeu de requêtes
SVM essayant l'apprentissage automatique avec scikit-learn
Défiez la classification des images avec TensorFlow2 + Keras 9-Apprentissage, sauvegarde et chargement de modèles-
Prédiction de l'onde de péché avec keras
Comment utiliser l'apprentissage automatique pour le travail? 01_ Comprendre l'objectif de l'apprentissage automatique
[Introduction au style GAN] Apprentissage unique de l'animation avec votre propre machine ♬
[Note de lecture] Apprentissage automatique pratique avec Scikit-Learn, Keras et TensorFlow Chapitre 1
Gestion des modèles d'apprentissage automatique pour éviter de se quereller avec le côté commercial
Machine learning d'inspiration quantique avec des réseaux de tenseurs
Validez le modèle d'entraînement avec Pylearn2
Démarrez avec l'apprentissage automatique avec SageMaker
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Pour vous qui regardez soudainement le journal tout en apprenant avec l'apprentissage automatique ~ Entraînement musculaire avec LightGBM ~
J'ai essayé de créer Othello AI avec tensorflow sans comprendre la théorie de l'apprentissage automatique ~ Implémentation ~
4/22 prédiction de l'onde de péché avec keras
Ingénierie des fonctionnalités pour l'apprentissage automatique à partir de la partie 1 Google Colaboratory - Validation et discrimination des données de comptage
J'ai essayé de créer Othello AI avec tensorflow sans comprendre la théorie de l'apprentissage automatique ~ Battle Edition ~
Défiez la classification des images avec TensorFlow2 + Keras CNN 1 ~ Bougez pour le moment ~
J'ai essayé d'appeler l'API de prédiction du modèle d'apprentissage automatique de WordPress
[Introduction à l'apprentissage automatique] Jusqu'à ce que vous exécutiez l'exemple de code avec chainer
Code source pour la séparation des sources sonores (série de pratiques d'apprentissage automatique) appris avec Python