Table des matières[Cacher][Montrer]
Ces dernières années, les réseaux de neurones ont gagné en popularité car ils se sont révélés extrêmement performants dans un large éventail de tâches.
Ils se sont avérés être un excellent choix pour la reconnaissance d'images et audio, le traitement du langage naturel et même pour jouer à des jeux compliqués comme le go et les échecs.
Dans cet article, je vais vous guider tout au long du processus de formation d'un réseau de neurones. Je vais mentionner et expliquer toutes les étapes pour former un réseau de neurones.
Bien que je passe en revue les étapes, je voudrais ajouter un exemple simple pour m'assurer qu'il existe également un exemple pratique.
Alors, venez et apprenons à traiter les réseaux de neurones
Commençons simplement et demandons quels sont les réseaux de neurones en premier lieu.
Que sont exactement les réseaux de neurones ?
Les réseaux de neurones sont des logiciels informatiques qui simulent le fonctionnement du cerveau humain. Ils peuvent apprendre à partir de vastes volumes de données et repérer des modèles que les gens peuvent trouver difficiles à détecter.
Les réseaux de neurones ont gagné en popularité ces dernières années en raison de leur polyvalence dans des tâches telles que la reconnaissance d'images et d'audio, le traitement du langage naturel et la modélisation prédictive.
Dans l'ensemble, les réseaux de neurones sont un outil puissant pour un large éventail d'applications et ont une chance de transformer la façon dont nous abordons un large éventail d'emplois.
Pourquoi devrions-nous les connaître ?
Comprendre les réseaux de neurones est essentiel car ils ont conduit à des découvertes dans divers domaines, notamment la vision par ordinateur, la reconnaissance vocale et le traitement du langage naturel.
Les réseaux de neurones, par exemple, sont au cœur des développements récents des voitures autonomes, des services de traduction automatique ou encore des diagnostics médicaux.
Comprendre comment fonctionnent les réseaux de neurones et comment les concevoir nous aide à créer des applications nouvelles et inventives. Et, peut-être, cela pourrait conduire à des découvertes encore plus importantes à l'avenir.
Remarque sur le didacticiel
Comme je l'ai dit plus haut, je voudrais expliquer les étapes de la formation d'un réseau de neurones en donnant un exemple. Pour ce faire, nous devrions parler du jeu de données MNIST. C'est un choix populaire pour les débutants qui souhaitent se lancer dans les réseaux de neurones.
MNIST est un acronyme qui signifie Modified National Institute of Standards and Technology. Il s'agit d'un ensemble de données manuscrites couramment utilisé pour la formation et le test de modèles d'apprentissage automatique, notamment les réseaux de neurones.
La collection contient 70,000 0 photos en niveaux de gris de chiffres manuscrits allant de 9 à XNUMX.
L'ensemble de données MNIST est une référence populaire pour classification d'image Tâches. Il est fréquemment utilisé pour l'enseignement et l'apprentissage car il est compact et facile à gérer tout en posant un défi difficile à relever pour les algorithmes d'apprentissage automatique.
L'ensemble de données MNIST est pris en charge par plusieurs frameworks et bibliothèques d'apprentissage automatique, notamment TensorFlow, Keras et PyTorch.
Maintenant que nous connaissons l'ensemble de données MNIST, commençons par nos étapes de formation d'un réseau de neurones.
Étapes de base pour former un réseau de neurones
Importer les bibliothèques nécessaires
Lorsque vous commencez à former un réseau de neurones, il est essentiel de disposer des outils nécessaires pour concevoir et former le modèle. La première étape de la création d'un réseau de neurones consiste à importer les bibliothèques requises telles que TensorFlow, Keras et NumPy.
Ces bibliothèques servent de blocs de construction pour le développement du réseau neuronal et fournissent des fonctionnalités cruciales. La combinaison de ces bibliothèques permet la création de conceptions de réseaux neuronaux sophistiqués et une formation rapide.
Pour commencer notre exemple; nous importerons les bibliothèques requises, notamment TensorFlow, Keras et NumPy. TensorFlow est un framework d'apprentissage automatique open source, Keras est une API de réseau neuronal de haut niveau et NumPy est une bibliothèque Python de calcul numérique.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Charger le jeu de données
Le jeu de données doit maintenant être chargé. Le jeu de données est l'ensemble de données sur lequel le réseau de neurones sera formé. Il peut s'agir de n'importe quel type de données, y compris des photos, de l'audio et du texte.
Il est essentiel de diviser l'ensemble de données en deux parties : une pour la formation du réseau de neurones et une autre pour évaluer l'exactitude du modèle formé. Plusieurs bibliothèques, notamment TensorFlow, Keras et PyTorch, peuvent être utilisées pour importer l'ensemble de données.
Pour notre exemple, nous utilisons également Keras pour charger le jeu de données MNIST. Il y a 60,000 10,000 photos d'entraînement et XNUMX XNUMX images de test dans l'ensemble de données.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Prétraiter les données
Le prétraitement des données est une étape importante dans l'apprentissage d'un réseau de neurones. Cela implique de préparer et de nettoyer les données avant qu'elles ne soient introduites dans le réseau de neurones.
La mise à l'échelle des valeurs de pixel, la normalisation des données et la conversion des étiquettes en codage à chaud sont des exemples de procédures de prétraitement. Ces processus aident le réseau neuronal à apprendre plus efficacement et plus précisément.
Le prétraitement des données peut également aider à minimiser le surajustement et à améliorer les performances du réseau neuronal.
Vous devez prétraiter les données avant de former le réseau de neurones. Cela inclut le changement des étiquettes en un codage à chaud et la mise à l'échelle des valeurs de pixel entre 0 et 1.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Définir le modèle
Le processus de définition du modèle de réseau neuronal consiste à établir son architecture, comme le nombre de couches, le nombre de neurones par couche, les fonctions d'activation et le type de réseau (feedforward, récurrent ou convolutif).
La conception du réseau neuronal que vous utilisez est déterminée par le type de problème que vous essayez de résoudre. Une conception de réseau neuronal bien définie peut faciliter l'apprentissage du réseau neuronal en le rendant plus efficace et plus précis.
Il est temps de décrire le modèle de réseau neuronal à ce stade. Utilisez un modèle simple avec deux couches cachées, chacune avec 128 neurones, et une couche de sortie softmax, qui a 10 neurones, pour cet exemple.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Compiler le modèle
La fonction de perte, l'optimiseur et les métriques doivent être spécifiés lors de la compilation du modèle de réseau neuronal. La capacité du réseau neuronal à prévoir correctement la sortie est mesurée par la fonction de perte.
Pour augmenter la précision du réseau de neurones pendant l'entraînement, l'optimiseur modifie ses pondérations. L'efficacité du réseau de neurones pendant l'entraînement est évaluée à l'aide de métriques. Le modèle doit être créé avant que le réseau de neurones puisse être formé.
Dans notre exemple, nous devons dès à présent construire le modèle.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Former le modèle
Passer l'ensemble de données préparé à travers le réseau neuronal tout en modifiant les poids du réseau pour minimiser la fonction de perte est connu sous le nom de formation du réseau neuronal.
L'ensemble de données de validation est utilisé pour tester le réseau de neurones pendant la formation afin de suivre son efficacité et d'éviter le surajustement. Le processus de formation peut prendre un certain temps, il est donc important de s'assurer que le réseau neuronal est correctement formé pour éviter le sous-ajustement.
En utilisant les données de formation, nous pouvons maintenant former le modèle. Pour ce faire, nous devons définir la taille du lot (le nombre d'échantillons traités avant la mise à jour du modèle) et le nombre d'époques (le nombre de répétitions sur l'ensemble de données complet).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Évaluation du modèle
Tester les performances du réseau de neurones sur l'ensemble de données de test est le processus d'évaluation. À ce stade, le réseau de neurones formé est utilisé pour traiter l'ensemble de données de test et la précision est évaluée.
L'efficacité avec laquelle un réseau de neurones peut prévoir le bon résultat à partir de données inédites et non testées est une mesure de sa précision. L'analyse du modèle peut aider à déterminer le bon fonctionnement du réseau de neurones et également suggérer des moyens de l'améliorer encore.
Nous pouvons enfin évaluer les performances du modèle en utilisant les données de test après l'entraînement.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
C'est tout! Nous avons formé un réseau de neurones pour détecter les chiffres dans l'ensemble de données MNIST.
De la préparation des données à l'évaluation de l'efficacité du modèle formé, la formation d'un réseau de neurones implique plusieurs processus. Ces instructions aident les novices à construire et former efficacement des réseaux de neurones.
Les débutants qui souhaitent utiliser les réseaux de neurones pour résoudre divers problèmes peuvent le faire en suivant ces instructions.
Visualiser l'exemple
Essayons de visualiser ce que nous avons fait avec cet exemple pour mieux comprendre.
Le package Matplotlib est utilisé dans cet extrait de code pour tracer une sélection aléatoire de photos à partir de l'ensemble de données d'entraînement. Tout d'abord, nous importons le module "pyplot" de Matplotlib et l'aliasons "plt". Ensuite, avec une dimension totale de 10 par 10 pouces, nous faisons une figure avec 5 lignes et 5 colonnes de sous-parcelles.
Ensuite, nous utilisons une boucle for pour parcourir les sous-parcelles, en affichant une image de l'ensemble de données d'apprentissage sur chacune d'elles. Pour afficher l'image, la fonction « imshow » est utilisée, avec l'option « cmap » réglée sur « gray » pour afficher les photos en niveaux de gris. Le titre de chaque sous-parcelle est également défini sur l'étiquette de l'image associée dans la collection.
Enfin, nous utilisons la fonction "show" pour afficher les images tracées dans la figure. Cette fonction nous permet d'évaluer visuellement un échantillon de photos de l'ensemble de données, ce qui peut nous aider à comprendre les données et à identifier tout problème éventuel.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Modèles de réseaux neuronaux importants
- Réseaux de neurones à anticipation (FFNN) : Un type simple de réseau de neurones dans lequel les informations ne circulent que dans un sens, de la couche d'entrée à la couche de sortie via une ou plusieurs couches cachées.
- Réseaux de neurones convolutifs (CNN) : Un réseau de neurones couramment utilisé dans la détection et le traitement d'images. Les CNN sont destinés à reconnaître et extraire automatiquement les caractéristiques des images.
- Réseaux de neurones récurrents (RNN) : Un réseau de neurones couramment utilisé dans la détection et le traitement d'images. Les CNN sont destinés à reconnaître et extraire automatiquement les caractéristiques des images.
- Réseaux de mémoire longue à court terme (LSTM) : Une forme de RNN créée pour surmonter le problème de la disparition des gradients dans les RNN standard. Les dépendances à long terme dans les données séquentielles peuvent être mieux capturées avec les LSTM.
- Auto-encodeurs : Réseau de neurones à apprentissage non supervisé dans lequel le réseau apprend à reproduire ses données d'entrée au niveau de sa couche de sortie. La compression des données, la détection des anomalies et le débruitage des images peuvent tous être réalisés avec des auto-encodeurs.
- Réseaux antagonistes génératifs (GAN) : Un réseau neuronal génératif est une forme de réseau neuronal qui apprend à produire de nouvelles données comparables à un ensemble de données de formation. Les GAN sont constitués de deux réseaux : un réseau générateur qui crée de nouvelles données et un réseau discriminateur qui évalue la qualité des données créées.
Conclusion, quelles devraient être vos prochaines étapes ?
Explorez plusieurs ressources et cours en ligne pour en savoir plus sur la formation d'un réseau de neurones. Travailler sur des projets ou des exemples est une méthode pour mieux appréhender les réseaux de neurones.
Commencez par des exemples simples comme des problèmes de classification binaire ou des tâches de classification d'images, puis passez à des tâches plus difficiles comme le traitement du langage naturel ou apprentissage par renforcement.
Travailler sur des projets vous aide à acquérir une expérience réelle et à améliorer vos compétences en formation de réseaux de neurones.
Vous pouvez également rejoindre des groupes et des forums d'apprentissage automatique et de réseau neuronal en ligne pour interagir avec d'autres apprenants et professionnels, partager votre travail et recevoir des commentaires et de l'aide.
LSRS MONRAD-KROHN
⁶ĵJ'aurais aimé voir le programme python pour la minimisation des erreurs. Nœuds de sélection spéciaux pour les changements de poids vers la couche suivante