Comment créer un réseau de neurones : architecture, paramètres et code

Publié: 2021-02-12

Les réseaux de neurones, comme leur nom l'indique, sont des circuits de neurones. Il existe différents types de réseaux de neurones. Les réseaux de neurones biologiques sont constitués de véritables neurones biologiques. Alors que les réseaux de neurones artificiels (ANN) sont un système basé sur le réseau de neurones biologique, comme présent dans le cerveau. Le nombre estimé de neurones dans le cerveau est d'environ 100 milliards, qui communiquent par des signaux électrochimiques.

L'ANN essaie de recréer la complexité de calcul présente dans les neurones biologiques, mais ce n'est pas aussi comparable à cela et ce sont des versions beaucoup plus simples et non complexes des réseaux de neurones biologiques. Dans cet article, nous allons comprendre la structure d'un ANN et apprendre à créer un réseau de neurones à l'aide de Python.

Table des matières

Architecture de réseau neuronal

Le réseau de neurones artificiels est constitué de neurones artificiels appelés aussi « Nodes ». Ces nœuds sont connectés les uns aux autres de manière à créer un réseau ou un maillage. La force de ces connexions les unes aux autres se voit attribuer une valeur. Cette valeur est comprise entre -1 et 1.

Si la valeur de la connexion est élevée, cela indique une connexion forte entre ces nœuds. Chaque nœud a une fonction caractéristique. La modification de cette fonction modifiera le comportement et la complexité du réseau neuronal. Il existe trois types de neurones dans un ANN, les nœuds d'entrée, les nœuds cachés et les nœuds de sortie, comme indiqué ci-dessous :

La source

Le nœud d'entrée est chargé de recevoir les informations qui se présentent généralement sous la forme de valeurs numériques ou d'expressions. Les informations sont présentées sous forme de valeurs d'activation, où chaque nœud reçoit un numéro, plus le numéro est élevé, plus l'activation est importante.
Les informations sont ensuite transmises sur le réseau. Sur la base des poids de connexion des nœuds et de la fonction d'activation relative à certains neurones de couches spécifiques, les informations sont transmises de neurone à neurone. Chacun des nœuds ajoute les valeurs d'activation à la réception, les valeurs sont modifiées en fonction de la fonction de transfert.
Les informations circulent à travers le réseau, à travers des couches cachées, jusqu'à ce qu'elles atteignent les nœuds de sortie. Les nœuds de sortie sont très importants car ils reflètent l'entrée de manière significative vers le monde extérieur. Ici, un aspect étonnant des réseaux de neurones peut être vu qui conduit à l'ajustement des poids pour chaque couche et nœuds.

La différence entre la valeur prédite et la valeur réelle (erreur) sera propagée vers l'arrière. Le réseau de neurones apprendra donc des erreurs commises et tentera d'ajuster les pondérations sur la base de l'approche du taux d'apprentissage désigné.

Ainsi, en ajustant les paramètres tels que le nombre de couches cachées, le nombre de neurones par couche, la stratégie de mise à jour du poids et la fonction d'activation, nous pouvons créer un réseau de neurones.

Définir les paramètres

Fonction d'activation

Il existe différentes fonctions d'activation parmi lesquelles choisir qui peuvent être utilisées dans le réseau de neurones sur la base du problème en cours.

Les fonctions d'activation sont des équations mathématiques que possède chaque neurone. Il détermine la sortie d'un réseau de neurones.
Cette fonction d'activation est attachée à chaque neurone du réseau et détermine si elle doit être activée ou non, en fonction du fait que l'activation de ce neurone particulier aide à dériver des prédictions pertinentes au niveau de la couche de sortie. Différentes couches peuvent avoir différentes fonctions d'activation qui leur sont attachées. Les fonctions d'activation aident également à normaliser la sortie de chaque neurone dans une plage comprise entre 1 et 0 ou entre -1 et 1.

Les réseaux de neurones modernes utilisent une technique importante appelée rétropropagation pour former le modèle en ajustant les poids, ce qui exerce une pression de calcul accrue sur la fonction d'activation et sa fonction dérivée.

Fonctionnement d'une fonction d'activation
Lien manquant

Il existe 3 types de fonctions d'activation :
Binaire- x<0 y=0 , x>0 y=1
Linéaire- x=y
Non linéaire – Différents types : Sigmoïde, TanH, Logistique, ReLU, Softmax etc.

Source : Blogue

Type : ReLU
Lien manquant

Algorithme

Il existe de nombreux types de réseaux de neurones, mais ils sont souvent divisés en réseaux de rétroaction et de rétroaction (rétropropagation).

1) Le réseau d'alimentation directe est un réseau non répétitif qui contient des entrées, des sorties et des couches cachées ; car les signaux ne peuvent se déplacer que dans une seule direction. Les données d'entrée sont transférées à la couche d'équipement de traitement où elle effectue les calculs. Chaque facteur de traitement effectue son calcul en fonction du poids de l'entrée. De nouvelles valeurs sont calculées puis de nouvelles valeurs d'entrée alimentent la couche suivante.

Ce processus se poursuit jusqu'à ce qu'il traverse toutes les couches et détermine le résultat. Une fonction de transfert de limite est parfois utilisée pour mesurer la sortie des neurones dans la couche de sortie. Les réseaux Feed Forward sont connus sous le nom et incluent les réseaux Perceptron (directs et indirects). Les réseaux feed-forward sont souvent utilisés pour l'exploration de données.

2) Le réseau de rétroaction (par exemple, un réseau neuronal récurrent ou RNN) a des mécanismes rétrospectifs, ce qui signifie qu'ils peuvent avoir des signaux se déplaçant dans les deux sens à l'aide de pièges/boucles. Toutes les communications possibles entre neurones sont permises.

Puisque les boucles sont présentes dans ce type de réseau, il devient un système non linéaire qui change constamment jusqu'à ce qu'il atteigne un état de stabilité. Les réseaux de rétroaction sont souvent utilisés pour les mémoires associées à des problèmes de performances lorsque le réseau recherche un bon ensemble d'objets connectés.

Formation

la passe prédictive signifie qu'une entrée est donnée et pondère la façon dont la sortie est calculée. Une fois l'entraînement terminé, nous n'exécutons que la passe avant pour former les prédictions.

Mais nous devons d'abord former notre modèle pour vraiment apprendre les poids, et donc la procédure de formation fonctionne comme suit :

  1. Sélectionnez et initialisez aléatoirement les poids pour tous les nœuds. Il existe des méthodes d'initialisation intelligentes intégrées à TensorFlow et Keras (Python).
  2. Pour chaque exemple de formation, effectuez une passe avant en utilisant les poids actuels et calculez la sortie de chaque nœud en allant de gauche à droite. La sortie ultime est la valeur du dernier nœud.
  3. Comparez la sortie finale avec la cible réelle dans les données de formation et mesurez l'erreur en utilisant une fonction de perte.
  4. Effectuez une passe en arrière de droite à gauche et propagez l'erreur calculée à la dernière étape à chaque nœud individuel en utilisant la rétropropagation.
  5. Calculez la contribution du poids de chaque neurone à l'erreur et ajustez les poids de la connexion en conséquence à l'aide de la descente de gradient. Propager les gradients d'erreur à partir de la dernière couche.

Code Python pour le réseau de neurones

Maintenant que nous comprenons comment le réseau de neurones est créé théoriquement, implémentons-le en utilisant Python.

Réseau de neurones en Python
Nous utiliserons l'API Keras avec les backends Tensorflow ou Theano pour créer notre réseau de neurones.

Installation de bibliothèques
Théano
>>> pip install –upgrade –no-deps git+git://github.com/Theano/Theano.git

Tensorflow et Keras
>>> pip3 installer tensorflow
>>> installation pip -mise à niveau de Keras

Importer les bibliothèques

importer des keras
depuis keras.models import séquentiel
de keras.layers importer Dense

Initialisation du réseau de neurones artificiels

modèle = Séquentiel()

Crée des calques d'entrée et cachés-

model.add(Dense(input_dim = 2, units = 10, activation='relu', kernel_initializer='uniform'))

Ce code ajoute la couche d'entrée et une couche cachée au réseau séquentiel
Dense() : permet de créer un réseau neuronal densément connecté
input_dim : forme ou nombre de nœuds dans la couche d'entrée
unités : le nombre de neurones ou de nœuds dans la couche actuelle (couche cachée)
activation : la fonction d'activation appliquée à chaque nœud. "relu" signifie Unité Linéaire Rectifiée
kernel_initializer : poids aléatoires initiaux de la couche

Deuxième couche cachée
model.add(Dense(units = 20, activation='relu', kernel_initializer='uniform'))

Le code crée et ajoute une autre couche cachée au modèle avec 20 nœuds et une fonction d'activation "Linéaire rectifiée". D'autres couches peuvent être ajoutées de manière similaire en fonction du problème et de la complexité.

Couche de sortie
model.add(Dense(units = 1, activation='sigmoid', kernel_initializer='uniform'))

Une seule couche de sortie avec Sigmoid ou softmax sont les fonctions d'activation couramment utilisées pour une couche de sortie.

Compilation ANN :
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

L'ANN est compilé avec une fonction d'optimisation et une fonction de perte avant d'être formé.

Optimiseur : une fonction d'optimisation pour le réseau, Il existe différents types d'optimiseurs et adam est le plus utilisé.
Perte : utilisé pour calculer les pertes et les erreurs. Il en existe différents types et le choix dépend de la nature du problème traité.
Métrique : la métrique utilisée pour mesurer les performances du modèle.

Ajustement du modèle avec les données d'entraînement :
model.fit(X_train,Y_train,batch_size=64, epochs=30)

Ce code créera le modèle

Conclusion

Nous pouvons maintenant créer un réseau de neurones artificiels (sur Python) à partir de zéro car nous avons compris les différents paramètres qui peuvent être modifiés en fonction du problème en cours.

Si vous souhaitez en savoir plus sur les techniques d'apprentissage en profondeur , l'apprentissage automatique, consultez le diplôme PG d'IIIT-B & upGrad en apprentissage automatique et IA qui est conçu pour les professionnels en activité et offre plus de 450 heures de formation rigoureuse, plus de 30 études de cas et affectations, statut IIIT-B Alumni, 5+ projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.

Apprenez le cours ML des meilleures universités du monde. Gagnez des programmes de maîtrise, Executive PGP ou Advanced Certificate pour accélérer votre carrière.

Menez la révolution technologique basée sur l'IA

Postuler pour un programme de certificat avancé en apprentissage automatique et PNL