Comment créer des modèles de réseaux de neurones Perceptron multicouches avec Keras

Actualités de de l'Intelligence Artificielle - Machine Learning - Objets connectés

Comment créer des modèles de réseaux de neurones Perceptron multicouches avec Keras


Dernière mise à jour le 23 juin 2022

La bibliothèque Keras Python pour l’apprentissage en profondeur se concentre sur la création de modèles sous la forme d’une séquence de couches.

Dans cet article, vous découvrirez les composants simples que vous pouvez utiliser pour créer des réseaux de neurones et des modèles simples d’apprentissage en profondeur à l’aide de Keras de TensorFlow.

Lancez votre projet avec mon nouveau livre Deep Learning With Python, y compris tutoriels pas à pas et le Code source Python fichiers pour tous les exemples.

Commençons.

  • Mai 2016: Première version
  • Mise à jour mars/2017: exemple mis à jour pour Keras 2.0.2, TensorFlow 1.0.1 et Theano 0.9.0.
  • Mise à jour juin/2022: Code mis à jour vers TensorFlow 2.x. Mettre à jour les liens externes.
Comment créer des modèles de réseaux de neurones Perceptron multicouches avec Keras

Comment créer des modèles de réseaux de neurones Perceptron multicouches avec Keras
Photo de George Rex, certains droits réservés.

Modèles de réseaux de neurones dans Keras

La bibliothèque Keras se concentre sur un modèle.

Le modèle le plus simple est défini dans la classe Sequential qui est une pile linéaire de Layers.

Vous pouvez créer un modèle séquentiel et définir toutes les couches dans le constructeur, par exemple :

Un idiome plus utile consiste à créer un modèle séquentiel et à ajouter vos couches dans l’ordre du calcul que vous souhaitez effectuer, par exemple :

Entrées du modèle

La première couche de votre modèle doit spécifier la forme de l’entrée.

Il s’agit du nombre d’attributs d’entrée et est défini par l’argument input_dim. Cet argument attend un entier.

Par exemple, vous pouvez définir l’entrée en termes de 8 entrées pour une couche de type Dense comme suit :

Couches de modèle

Les couches de différents types ont quelques propriétés en commun, en particulier leur méthode d’initialisation des poids et leurs fonctions d’activation.

Initialisation du poids

Le type d’initialisation utilisé pour une couche est spécifié dans l’argument init.

Certains types courants d’initialisation de couche incluent :

  • « uniforme“ : Les poids sont initialisés à de petites valeurs uniformément aléatoires comprises entre 0 et 0,05.
  • « Ordinaire« :Les pondérations sont initialisées à de petites valeurs aléatoires gaussiennes (moyenne nulle et écart type de 0,05).
  • « zéro“ : Tous les poids sont définis sur des valeurs nulles.

Vous pouvez voir une liste complète des techniques d’initialisation prises en charge sur la page Utilisation des initialisations.

Fonction d’activation

Keras prend en charge une gamme de fonctions d’activation neuronale standard, telles que : softmax, linéaire rectifié, tanh et sigmoïde.

Vous spécifiez généralement le type de fonction d’activation utilisée par une couche dans l’argument d’activation, qui prend une valeur de chaîne.

Vous pouvez voir une liste complète des fonctions d’activation prises en charge par Keras sur la page Utilisation des activations.

Fait intéressant, vous pouvez également créer un objet Activation et l’ajouter directement à votre modèle après votre couche pour appliquer cette activation à la sortie de la couche.

Types de couches

Il existe un grand nombre de types de couches centrales pour les réseaux de neurones standard.

Certains types de calques courants et utiles parmi lesquels vous pouvez choisir sont :

  • Dense: Couche entièrement connectée et le type de couche le plus couramment utilisé sur les modèles de perceptron multicouches.
  • Abandonner: appliquez l’abandon au modèle, en définissant une fraction d’entrées sur zéro dans le but de réduire le surajustement.
  • Enchaîner: combinez les sorties de plusieurs couches en tant qu’entrées d’une seule couche.

Vous pouvez en savoir plus sur la liste complète des couches principales de Keras sur la page Couches principales

Compilation de modèles

Une fois que vous avez défini votre modèle, il doit être compilé.

Cela crée les structures efficaces utilisées par TensorFlow afin d’exécuter efficacement votre modèle pendant la formation. Plus précisément, TensorFlow convertit votre modèle en graphique afin que la formation puisse être effectuée efficacement.

Vous compilez votre modèle à l’aide de la fonction compile() et il accepte trois attributs importants :

  1. Optimiseur de modèle.
  2. Fonction de perte.
  3. Métrique.

1. Optimiseurs de modèles

L’optimiseur est la technique de recherche utilisée pour mettre à jour les pondérations dans votre modèle.

Vous pouvez créer un objet optimiseur et le transmettre à la fonction de compilation via l’argument optimiseur. Cela vous permet de configurer la procédure d’optimisation avec ses propres arguments, tels que le taux d’apprentissage. Par exemple:

Vous pouvez également utiliser les paramètres par défaut de l’optimiseur en spécifiant le nom de l’optimiseur dans l’argument de l’optimiseur. Par exemple:

Certains optimiseurs de descente de gradient populaires parmi lesquels vous pourriez choisir incluent :

  • CAD: descente de gradient stochastique, avec prise en charge de la quantité de mouvement.
  • RMSprop: méthode d’optimisation adaptative du taux d’apprentissage proposée par Geoff Hinton.
  • Adam: Adaptive Moment Estimation (Adam) qui utilise également des taux d’apprentissage adaptatifs.

Vous pouvez en savoir plus sur tous les optimiseurs pris en charge par Keras sur la page Utilisation des optimiseurs.

Vous pouvez en savoir plus sur les différentes méthodes de descente de gradient dans la section Algorithmes d’optimisation de descente de gradient de l’article de Sebastian Ruder Un aperçu des algorithmes d’optimisation de descente de gradient.

2. Fonctions de perte de modèle

La fonction de perte, également appelée fonction objectif, est l’évaluation du modèle utilisé par l’optimiseur pour naviguer dans l’espace de pondération.

Vous pouvez spécifier le nom de la fonction de perte à utiliser pour la fonction de compilation par l’argument de perte. Voici quelques exemples courants :

  • mse‘ : pour l’erreur quadratique moyenne.
  • binar_crossentropy‘ : pour la perte logarithmique binaire (logloss).
  • categorical_crossentropy‘ : pour la perte logarithmique multi-classes (logloss).

Vous pouvez en savoir plus sur les fonctions de perte prises en charge par Keras sur la page Pertes.

3. Métriques du modèle

Les métriques sont évaluées par le modèle pendant la formation.

Une seule métrique est prise en charge pour le moment et c’est la précision.

Formation de modèle

Le modèle est entraîné sur des tableaux NumPy à l’aide de la fonction fit(), par exemple

L’entraînement spécifie à la fois le nombre d’époques sur lesquelles s’entraîner et la taille du lot.

  • Epochs (nb_epoch) est le nombre de fois que le modèle est exposé à l’ensemble de données d’apprentissage.
  • La taille du lot (batch_size) est le nombre d’instances d’entraînement présentées au modèle avant qu’une mise à jour du poids ne soit effectuée.

La fonction d’ajustement permet également une évaluation de base du modèle pendant la formation. Vous pouvez définir la valeur validation_split pour retenir une fraction de l’ensemble de données d’apprentissage pour que la validation soit évaluée à chaque époque, ou fournir un tuple validation_data de (X, y) de données à évaluer.

L’ajustement du modèle renvoie un objet d’historique avec des détails et des métriques calculés pour le modèle à chaque époque. Cela peut être utilisé pour représenter graphiquement les performances du modèle.

Prédiction du modèle

Une fois que vous avez formé votre modèle, vous pouvez l’utiliser pour faire des prédictions sur des données de test ou de nouvelles données.

Il existe un certain nombre de types de sortie différents que vous pouvez calculer à partir de votre modèle formé, chacun étant calculé à l’aide d’un appel de fonction différent sur votre objet de modèle. Par exemple:

  • modèle.évaluer(): Pour calculer les valeurs de perte pour les données d’entrée.
  • modèle.prédire(): Pour générer une sortie réseau pour les données d’entrée.
  • modèle.predict_classes(): Pour générer des sorties de classe pour les données d’entrée.
  • model.predict_proba(): Pour générer des probabilités de classe pour les données d’entrée.

Par exemple, sur un problème de classification, vous utiliserez la fonction predict_classes() pour faire des prédictions pour des données de test ou de nouvelles instances de données.


Besoin d’aide avec Deep Learning en Python ?

Suivez mon cours gratuit de 2 semaines par e-mail et découvrez les MLP, CNN et LSTM (avec code).

Cliquez pour vous inscrire maintenant et obtenez également une version PDF gratuite du cours.


Résumer le modèle

Une fois que vous êtes satisfait de votre modèle, vous pouvez le finaliser.

Vous souhaiterez peut-être produire un résumé de votre modèle. Par exemple, vous pouvez afficher un résumé d’un modèle en appelant la fonction summary, par exemple :

Vous pouvez également récupérer un résumé de la configuration du modèle à l’aide de la fonction get_config(), par exemple :

Enfin, vous pouvez créer directement une image de la structure de votre modèle. Par exemple:

Ressources

Vous pouvez en savoir plus sur la création de réseaux de neurones simples et de modèles d’apprentissage en profondeur dans Keras à l’aide des ressources suivantes :

Sommaire

Dans cet article, vous avez découvert l’API Keras que vous pouvez utiliser pour créer des réseaux de neurones artificiels et des modèles d’apprentissage en profondeur.

Plus précisément, vous avez découvert le cycle de vie d’un modèle Keras, notamment :

  • Construire un modèle.
  • Création et ajout de calques, y compris l’initialisation et l’activation du poids.
  • Compilation de modèles comprenant la méthode d’optimisation, la fonction de perte et les métriques.
  • Modèles d’ajustement, y compris les époques et la taille des lots
  • Prédictions du modèle.
  • Résumé du modèle.

Si vous avez des questions sur Keras for Deep Learning ou sur cet article, posez-les dans les commentaires et je ferai de mon mieux pour y répondre.

Développez des projets d’apprentissage en profondeur avec Python !

Apprentissage en profondeur avec Python

Et si vous pouviez développer un réseau en quelques minutes

…avec seulement quelques lignes de Python

Découvrez comment dans mon nouvel Ebook :
Apprentissage en profondeur avec Python

Cela couvre des projets de bout en bout sur des sujets comme :

Perceptrons multicouches, Réseaux convolutifs et Réseaux neuronaux récurrentset plus…

Apportez enfin l’apprentissage en profondeur à
Vos propres projets

Passer les universitaires. Juste des résultats.

Voir ce qu’il y a à l’intérieur