Fonction d'activation linéaire. Comment fonctionne un réseau de neurones : algorithmes, fonctions d'entraînement, d'activation et de perte

) font partie de mon travail scientifiqueà l'université, qui ressemblait à ceci : « Progiciel détecter des visages dans un flux vidéo à l'aide de la convolution réseau neuronal" Le but du travail était d'améliorer les caractéristiques de vitesse dans le processus de détection de visages dans un flux vidéo. Une caméra de smartphone a été utilisée comme flux vidéo, un PS de bureau (langage Kotlin) a été écrit pour créer et entraîner un réseau neuronal convolutif, ainsi qu'une application mobile pour Android (langage Kotlin), qui a utilisé le réseau formé et « essayé » pour reconnaître les visages du flux vidéo de la caméra. Les résultats se sont avérés médiocres, utilisez une copie exacte de la topologie que j'ai proposée à vos risques et périls (je ne le recommanderais pas).

Problèmes théoriques

  • déterminer le problème à résoudre par un réseau de neurones (classification, prédiction, modification) ;
  • définir les données d'entrée (type : image, son, taille : 100x100, 30x30, format : RVB, niveaux de gris) et les données de sortie (nombre de classes) ;
  • déterminer la topologie du réseau convolutif (nombre de couches convolutives, sous-échantillonnées et entièrement connectées ; nombre de cartes de fonctionnalités, taille du noyau, fonctions d'activation).

Introduction

Les meilleurs résultats dans le domaine de la reconnaissance faciale ont été montrés par le réseau de neurones convolutifs ou réseau de neurones convolutifs (ci-après dénommé CNN), qui est un développement logique des idées d'architectures de réseaux de neurones telles que le cognitron et le néocognitron. Le succès est dû à la capacité à prendre en compte la topologie bidimensionnelle de l’image, contrairement au perceptron multicouche.

Les réseaux de neurones convolutifs offrent une résistance partielle aux changements d'échelle, aux déplacements, aux rotations, aux changements d'angle et à d'autres distorsions. Les réseaux de neurones convolutifs combinent trois idées architecturales pour assurer l'invariance à l'échelle, à la rotation, à la translation et à la distorsion spatiale :

  • champs récepteurs locaux (fournissent une connectivité bidimensionnelle locale des neurones) ;
  • coefficients synaptiques généraux (assurer la détection de certaines caractéristiques n'importe où dans l'image et réduire le nombre total de coefficients de pondération) ;
  • organisation hiérarchique avec sous-échantillons spatiaux.
À l'heure actuelle, le réseau neuronal convolutif et ses modifications sont considérés comme les meilleurs algorithmes pour rechercher des objets dans la scène en termes de précision et de rapidité. Depuis 2012, les réseaux de neurones occupent la première place du célèbre concours international de reconnaissance d'images ImageNet.

C'est pourquoi dans mon travail j'ai utilisé un réseau de neurones convolutifs basé sur les principes du néocognitron et complété par un entraînement utilisant un algorithme de rétropropagation.

Structure du réseau neuronal convolutif

Le SNA se compose de différents types couches : couches convolutives, couches de sous-échantillonnage et couches d’un réseau neuronal « régulier » – perceptron, conformément à la figure 1.


Figure 1 – Topologie du réseau neuronal convolutif

Les deux premiers types de couches (convolutionnelles, sous-échantillonnage), en alternance, forment le vecteur de caractéristiques d'entrée pour un perceptron multicouche.

Le réseau convolutif tire son nom du nom de l'opération - convolution, dont l'essence sera décrite plus loin.

Les réseaux convolutifs constituent un juste milieu entre les réseaux biologiquement plausibles et un perceptron multicouche conventionnel. Aujourd'hui, les meilleurs résultats en reconnaissance d'images sont obtenus grâce à leur aide. En moyenne, la précision de reconnaissance de ces réseaux dépasse de 10 à 15 % celle des ANN conventionnels. CNN est une technologie clé du Deep Learning.

La principale raison du succès du SCN était le concept de pondérations communes. Malgré grande taille, ces réseaux n'ont pas un grand nombre de paramètres personnalisables par rapport à leur ancêtre - neocognitron. Il existe des variantes du CNN (Tiled Convolutional Neural Network), similaires au néocognitron ; dans de tels réseaux, il y a un rejet partiel des poids associés, mais l'algorithme d'apprentissage reste le même et repose sur la rétropropagation de l'erreur. Les CNN peuvent s'exécuter rapidement sur une machine série et apprendre rapidement en parallélisant purement le processus de convolution sur chaque carte, ainsi qu'en déconvolution lorsque l'erreur se propage à travers le réseau.

La figure ci-dessous montre la visualisation de la convolution et du sous-échantillonnage :

Modèle de neurone


Topologie du réseau neuronal convolutif

La détermination de la topologie du réseau repose sur le problème à résoudre, les données d’articles scientifiques et sa propre expérience expérimentale.

On distingue les étapes suivantes qui influencent le choix de la topologie :

  • déterminer le problème à résoudre par un réseau de neurones (classification, prédiction, modification) ;
  • déterminer les limites du problème à résoudre (rapidité, précision de la réponse) ;
  • déterminer l'entrée (type : image, son, taille : 100x100, 30x30, format : RVB, niveaux de gris) et les données de sortie (nombre de classes).
La tâche que résout mon réseau neuronal est la classification des images, en particulier des visages. Les restrictions imposées au réseau sont la vitesse de réponse - pas plus de 1 seconde et la précision de la reconnaissance d'au moins 70 %. Topologie générale du réseau conformément à la figure 2.


Figure 2 - Topologie du réseau neuronal convolutif

Couche d'entrée

Les données d'entrée sont des images JPEG couleur, d'une taille de 48 x 48 pixels. Si la taille est trop grande, alors complexité informatique augmentera et, par conséquent, les restrictions sur la vitesse de réponse seront violées; la détermination de la taille dans ce problème est résolue par la méthode de sélection. Si vous choisissez une taille trop petite, le réseau ne pourra pas identifier les principales caractéristiques des visages. Chaque image est divisée en 3 canaux : rouge, bleu, vert. Cela produit 3 images de 48x48 pixels.

La couche d'entrée prend en compte la topologie bidimensionnelle des images et est constituée de plusieurs cartes (matrices), il peut y avoir une carte si l'image est présentée en niveaux de gris, sinon il y en a 3, où chaque carte correspond à une image avec un canal spécifique (rouge, bleu et vert) .

Les données d'entrée pour chaque valeur de pixel spécifique sont normalisées dans la plage de 0 à 1, à l'aide de la formule :

Couche convolutive

La couche convolutive est un ensemble de cartes (un autre nom est cartes de caractéristiques, dans la vie de tous les jours ce sont des matrices ordinaires), chaque carte a un noyau synaptique (dans différentes sources on l'appelle différemment : noyau de numérisation ou filtre).

Le nombre de cartes est déterminé par les exigences de la tâche : si vous prenez un grand nombre de cartes, la qualité de la reconnaissance augmentera, mais la complexité informatique augmentera. Sur la base de l'analyse d'articles scientifiques, il est proposé dans la plupart des cas de prendre un rapport de un à deux, c'est-à-dire que chaque carte de la couche précédente (par exemple, dans la première couche convolutive, la précédente est l'entrée) est associé à deux cartes de la couche convolutive, conformément à la figure 3. Nombre de cartes - 6.


Figure 3 - Organisation des connexions entre les cartes de la couche convolutive et la précédente

La taille de toutes les cartes de couches convolutives est la même et est calculée à l'aide de la formule 2 :

Le noyau est un filtre ou une fenêtre qui glisse sur toute la zone de la carte précédente et trouve certaines caractéristiques des objets. Par exemple, si le réseau était formé sur plusieurs faces, alors l'un des cœurs pourrait produire le plus grand signal au niveau des yeux, de la bouche, des sourcils ou du nez, un autre noyau peut détecter des signes différents. La taille du noyau est généralement comprise entre 3x3 et 7x7. Si la taille du noyau est petite, il ne pourra alors mettre en évidence aucune caractéristique ; s'il est trop grand, le nombre de connexions entre les neurones augmente. De plus, la taille du noyau est choisie de telle sorte que la taille des cartes de la couche convolutive soit paire, cela nous permet de ne pas perdre d'informations lors de la réduction de la dimension dans la couche de sous-échantillonnage décrite ci-dessous.

Le noyau est un système de poids ou synapses partagés, c'est l'une des principales caractéristiques d'un réseau neuronal convolutif. Dans un réseau multicouche conventionnel, il existe de nombreuses connexions entre neurones, c'est-à-dire des synapses, ce qui ralentit considérablement le processus de détection. Dans un réseau convolutif, au contraire, les poids partagés réduisent le nombre de connexions et permettent de retrouver la même caractéristique dans toute la zone de l'image.

Initialement, les valeurs de chaque carte de couche convolutive sont égales à 0. Les valeurs des poids du noyau sont définies de manière aléatoire dans la plage de -0,5 à 0,5. Le noyau glisse sur la carte précédente et effectue une opération de convolution, souvent utilisée pour le traitement d'image, la formule :

De manière informelle, cette opération peut être décrite ainsi : avec une fenêtre de taille de noyau g, on parcourt toute l'image f avec un pas donné (généralement 1), à chaque pas on multiplie le contenu de la fenêtre élément par élément par noyau g, le résultat est résumé et écrit dans la matrice de résultats, comme dans la figure 4.


Figure 4 - Opération de convolution et obtention des valeurs de la carte de convolution (valide)


Opération de convolution et obtention de valeurs de carte de convolution. Le noyau est décalé, la nouvelle map a la même taille que la précédente (idem)

Dans ce cas, selon la méthode de traitement des bords de la matrice originale, le résultat peut être plus petit que l'image originale (valide), de même taille (identique) ou plus grande taille(plein), conformément à la figure 5.


Figure 5 - Trois types de convolution de la matrice originale

Sous une forme simplifiée, cette couche peut être décrite par la formule :

Dans ce cas, en raison des effets de bord, la taille des matrices d'origine diminue, formule :

Couche de sous-échantillonnage

La couche de sous-échantillonnage, comme la couche convolutive, a des cartes, mais leur nombre coïncide avec la couche précédente (convolutionnelle), il y en a 6. Le but de la couche est de réduire la dimension des cartes de la couche précédente. Si certaines caractéristiques ont déjà été identifiées lors de l'opération de convolution précédente, une image aussi détaillée n'est plus nécessaire pour un traitement ultérieur et elle est compressée en une image moins détaillée. De plus, filtrer les détails inutiles permet d’éviter le surentraînement.
Lors du processus de numérisation de la carte de la couche précédente par le noyau de la couche de sous-échantillonnage (filtre), le noyau de numérisation ne se croise pas, contrairement à la couche convolutive. Typiquement, chaque carte a une taille de noyau de 2x2, ce qui permet de réduire d'un facteur 2 les cartes précédentes de la couche convolutive. L'ensemble de la carte des caractéristiques est divisé en cellules de 2x2 éléments, à partir desquelles les valeurs maximales sont sélectionnées.

Généralement, la fonction d'activation RelU est appliquée dans la couche de sous-échantillonnage. Opération de sous-échantillonnage (ou MaxPooling - sélection maximale) conformément à la figure 6.


Figure 6 - Formation nouvelle carte couche de sous-échantillonnage basée sur la carte de couche convolutive précédente. Opération de sous-échantillonnage (Max Pooling)

Formellement, la couche peut être décrite par la formule :

Couche entièrement connectée

Le dernier type de couche est la couche d'un perceptron multicouche classique. La couche a pour but la classification, elle modélise une fonction non linéaire complexe, dont l'optimisation améliore la qualité de la reconnaissance.

Les neurones de chaque carte de la couche sous-échantillonnée précédente sont connectés à un neurone de la couche cachée. Ainsi, le nombre de neurones dans la couche cachée est égal au nombre de cartes dans la couche de sous-échantillon, mais les connexions ne sont pas nécessairement les mêmes, par exemple, seule une partie des neurones de l'une des cartes de la couche de sous-échantillon peut être connecté au premier neurone de la couche cachée, et la partie restante au second, ou tous les neurones des premières cartes sont connectés aux neurones 1 et 2 de la couche cachée. Le calcul des valeurs des neurones peut être décrit par la formule :

Couche de sortie

La couche de sortie est connectée à tous les neurones de la couche précédente. Le nombre de neurones correspond au nombre de classes reconnues, soit 2 – visage et non-visage. Mais pour réduire le nombre de connexions et de calculs dans le cas binaire, vous pouvez utiliser un neurone et lors de l'utilisation d'une tangente hyperbolique comme fonction d'activation, la sortie d'un neurone avec une valeur de -1 signifie appartenir à la « non-personne » classe, au contraire, la sortie d'un neurone avec une valeur de 1 signifie appartenir aux personnes de la classe

Sélection d'une fonction d'activation

L'une des étapes du développement d'un réseau neuronal est la sélection de la fonction d'activation des neurones. Le type de fonction d'activation détermine en grande partie Fonctionnalité réseau de neurones et la méthode de formation de ce réseau. L'algorithme de rétropropagation classique fonctionne bien sur les réseaux neuronaux à deux et trois couches, mais avec une nouvelle augmentation en profondeur, il commence à rencontrer des problèmes. L'une des raisons est ce que l'on appelle l'atténuation des gradients. Au fur et à mesure que l'erreur se propage de la couche de sortie à la couche d'entrée, le résultat actuel est multiplié par la dérivée de la fonction d'activation au niveau de chaque couche. La dérivée de la fonction d'activation sigmoïde traditionnelle est inférieure à un sur l'ensemble du domaine de définition, donc après plusieurs couches, l'erreur deviendra proche de zéro. Si, en revanche, la fonction d'activation a une dérivée illimitée (comme une tangente hyperbolique), alors l'erreur peut exploser au fur et à mesure de sa propagation, rendant la procédure d'apprentissage instable.

Dans ce travail, la tangente hyperbolique est utilisée comme fonction d'activation dans les couches cachées et de sortie, et ReLU est utilisée dans les couches convolutives. Examinons les fonctions d'activation les plus couramment utilisées dans les réseaux de neurones.

Fonction d'activation sigmoïde

Cette fonction appartient à la classe fonctions continues et prend un nombre réel arbitraire en entrée, et donne en sortie un nombre réel compris entre 0 et 1. En particulier, les grands nombres négatifs (modulo) se transforment en zéro et les grands nombres positifs en un. Historiquement, le sigmoïde a été largement utilisé car son résultat est bien interprété comme le niveau d'activation du neurone, allant de l'absence d'activation (0) à une activation complètement saturée (1). La sigmoïde s'exprime par la formule :

Graphique de la fonction sigmoïde comme indiqué ci-dessous :

Une propriété extrêmement indésirable du sigmoïde est que lorsque la fonction sature d'un côté ou de l'autre (0 ou 1), le gradient dans ces zones devient proche de zéro.

Rappelons que dans le processus de rétropropagation, un gradient (local) donné est multiplié par le gradient global. Par conséquent, si le gradient local est très faible, il annule effectivement le gradient global. En conséquence, il n’y aura presque aucun signal passant par le neurone vers ses poids et de manière récursive vers ses données. De plus, il faut être très prudent lors de l’initialisation des poids des neurones sigmoïdes pour éviter la saturation. Par exemple, si les poids initiaux sont trop grandes valeurs, la plupart des neurones entreront dans un état de saturation, ce qui entraînera un mauvais apprentissage du réseau.

La fonction sigmoïde est :

  • continu;
  • augmentant de façon monotone;
  • différenciable.

Fonction d'activation tangente hyperbolique

Dans ce travail, comme fonction d'activation la tangente hyperbolique est utilisée pour les couches cachées et en sortie. Cela est dû aux raisons suivantes :
  • les fonctions d'activation symétriques, telles que la tangente hyperbolique, permettent une convergence plus rapide que la fonction logistique standard ;
  • la fonction a une dérivée première continue ;
  • une fonction a une dérivée simple qui peut être calculée en fonction de sa valeur, ce qui entraîne des économies de calcul.
Le graphique de la fonction tangente hyperbolique est présenté dans la figure :

Fonction d'activation ReLU

On sait que les réseaux de neurones sont capables d’approcher une fonction arbitrairement complexe s’ils comportent suffisamment de couches et que la fonction d’activation est non linéaire. Les fonctions d'activation comme sigmoïde ou tangentielle sont non linéaires, mais conduisent à des problèmes d'atténuation ou d'expansion des gradients. Cependant, vous pouvez utiliser une option beaucoup plus simple : une unité linéaire rectifiée (ReLU), qui s'exprime par la formule :

Graphique de la fonction ReLU comme indiqué ci-dessous :

Avantages de l'utilisation de ReLU :

  • sa dérivée est égale à un ou à zéro, et donc les gradients ne peuvent pas croître ou décroître, car en multipliant un par le delta d'erreur, nous obtenons le delta d'erreur, mais si nous utilisions une autre fonction, par exemple une tangente hyperbolique, alors le delta d'erreur pourrait soit diminuer, soit augmenter, soit rester le même, c'est-à-dire la dérivée de l'erreur hyperbolique tangente renvoie un nombre avec un signe et une ampleur différents, ce qui peut grandement influencer l'atténuation ou l'expansion du gradient. De plus, l'utilisation de cette fonction conduit à un amincissement des poids ;
  • le calcul de la tangente sigmoïde et hyperbolique nécessite des opérations de calcul intensives telles que l'exponentiation, tandis que ReLU peut être implémenté en utilisant une simple transformation de seuil de la matrice d'activation à zéro ;
  • coupe les parties inutiles dans le canal avec une sortie négative.
Parmi les inconvénients, on peut noter que ReLU n'est pas toujours assez fiable et peut échouer (« mourir ») pendant le processus de formation. Par exemple, un gradient important traversant un ReLU peut entraîner la mise à jour des poids de telle sorte que le neurone ne soit plus jamais déclenché. Si cela se produit, alors à partir de à ce moment là, le gradient passant par ce neurone sera toujours nul. En conséquence, ce neurone sera irréversiblement désactivé. Par exemple, si le taux d’apprentissage est trop élevé, il peut s’avérer que jusqu’à 40 % des ReLU soient « morts » (c’est-à-dire jamais activés). Ce problème est résolu en choisissant un taux d'apprentissage approprié.

Échantillons d'entraînement utilisés dans les expériences

L'échantillon de formation se compose d'exemples positifs et négatifs. Dans ce cas, de personnes et de « non-personnes ». Le rapport entre les exemples positifs et négatifs est de 4 pour 1, 8 000 positifs et 2 000 négatifs.

La base de données LFW3D a été utilisée comme ensemble de formation positive. Il contient 13 000 images JPEG couleur de faces frontales, de taille 90 x 90 pixels. La base de données est fournie via FTP, l'accès se fait par mot de passe. Pour recevoir un mot de passe, vous devez remplir page d'accueil site forme simple, où saisir votre nom et e-mail. Un exemple d'individus de la base de données est présenté comme le montre la figure ci-dessous :

La base de données SUN397 a été utilisée comme exemple de formation négative ; elle contient un grand nombre de scènes de toutes sortes, divisées en catégories. Un total de 130 000 images, 908 scènes, 313 000 objets de scène. Le poids total de cette base de données est de 37 Go. Les catégories d'images sont très différentes et permettent de sélectionner un environnement plus spécifique dans lequel le PS final sera utilisé. Par exemple, si l'on sait a priori que le détecteur de visage est destiné uniquement à la reconnaissance en intérieur, alors cela ne sert à rien d'utiliser un échantillon d'entraînement de la nature, du ciel, des montagnes, etc. Pour cette raison, l'auteur de l'ouvrage a sélectionné les catégories d'images suivantes : salon, bureau, salle de classe, salle informatique. Des exemples d'images de l'ensemble de formation SUN397 sont présentés comme ci-dessous :

résultats

La propagation directe du signal à partir d'une image d'entrée mesurant 90 x 90 pixels prend 20 ms (sur PC), 3 000 ms sur application mobile. Lors de la détection d'un visage dans un flux vidéo à une résolution de 640 x 480 pixels, il est possible de détecter 50 zones non superposées de 90 x 90 pixels. Les résultats obtenus avec la topologie de réseau sélectionnée sont pires que ceux de l'algorithme Viola-Jones.

conclusions

Les réseaux de neurones convolutifs offrent une résistance partielle aux changements d'échelle, aux déplacements, aux rotations, aux changements d'angle et à d'autres distorsions.

Cœur- est un filtre qui glisse sur toute l'image et trouve les traits du visage n'importe où dans l'image (invariance de déplacement).

Couche de sous-échantillonnage donne :

  • augmenter la vitesse de calcul (au moins 2 fois), grâce à la réduction de la taille des cartes de la couche précédente ;
  • filtrage de détails déjà inutiles ;
  • je cherche des signes de plus haut niveau(pour la couche convolutive suivante).
Dernières couches– couches d'un perceptron multicouche classique. Deux entièrement connectés et une sortie. Cette couche est responsable de la classification ; d'un point de vue mathématique, elle modélise une fonction non linéaire complexe, optimisant ainsi la qualité de la reconnaissance. Le nombre de neurones dans la couche 6 est basé sur le nombre de cartes de caractéristiques de la couche sous-échantillonnée.

Améliorations possibles

  • considérez les réseaux de neurones Fast-RCNN, YOLO ;
  • parallélisation du processus d'apprentissage sur GPU ;
  • utiliser Android NDK (C++) pour améliorer les performances

La formation d'un réseau de neurones convolutifs est décrite dans

Les synapses communiquent entre les neurones et multiplient le signal d'entrée par un nombre caractérisant la force de la connexion – le poids de la synapse. L'additionneur effectue l'addition de signaux arrivant via des connexions synaptiques provenant d'autres neurones et de signaux d'entrée externes. Le convertisseur implémente la fonction d'un argument, la sortie de l'additionneur, dans une certaine valeur de sortie du neurone. Cette fonction est appelée fonction d’activation des neurones. Le neurone dans son ensemble implémente une fonction scalaire d'un argument vectoriel. En général, le signal d'entrée et les coefficients de pondération peuvent prendre de vraies valeurs. La sortie est déterminée par le type de fonction d'activation et peut être réelle ou entière. Les connexions synaptiques avec des poids positifs sont appelées excitatrices, et celles avec des poids négatifs sont appelées inhibitrices.

Ainsi, le neurone est complètement décrit par ses poids et sa fonction d'activation F. Ayant reçu un ensemble de nombres (vecteur) en entrée, le neurone produit un certain nombre en sortie.

La fonction d'activation peut être divers types. Les options les plus largement utilisées sont présentées dans le tableau (tableau 2.1).

Certaines des fonctions les plus courantes sont :

  • 1. linéaire,
  • 2. non linéaire avec saturation - fonction logistique ou sigmoïde,
  • 3. tangente hyperbolique.

Fonction linéaire la meilleure façon correspond à l’essence de cette tâche. Son domaine de définition est la plage (-∞, ∞). Cela permet, en utilisant les caractéristiques de prix du produit en entrée, d'obtenir des valeurs caractéristiques de toute quantité en sortie égales à leur montant réel.

Il convient de noter que la fonction sigmoïde (2.12) est différentiable sur tout l’axe des x, ce qui est largement utilisé dans de nombreux algorithmes d’apprentissage.

Tableau 2.1

Liste des fonctions d'activation des neurones

Nom

Plage de valeurs

Seuil

Iconique

Sigmoïde

Semi-linéaire

Linéaire

Base radiale

Semi-linéaire avec

saturation

Linéaire avec

saturation

Tangente hyperbolique

Triangulaire

. (2.12)

Fig.2.12 Type de fonction sigmoïde

De plus, il a la propriété de renforcer signaux faibles mieux que les signaux forts et évite la saturation des signaux forts, car ils correspondent à des régions d'argumentation où le sigmoïde a une pente douce (Fig. 2.12). Ces caractéristiques sont importantes pour le problème de la modélisation de la concurrence parfaite. Un marché de concurrence parfaite se caractérise par l'homogénéité, qui consiste dans le fait que tous les producteurs produisent des biens identiques en nombre, en propriétés et en caractéristiques hors prix. La seule différence entre des produits similaires différents fabricants- ce sont ses paramètres de prix. Dans une économie de marché, les différences dans les paramètres de prix sont assez typiques des marchés de biens et de services. Mais le plus souvent, ils ne sont pas significatifs. Par conséquent, la différence entre le même type de paramètres de prix de différents biens fournis à l'entrée du réseau neuronal sera faible, ce qui impose des exigences supplémentaires sur la sensibilité de la fonction. Les neurones doivent « reconnaître » des signaux d’entrée légèrement différents. Cela rend (2.12) le plus applicable.

Dans un environnement concurrentiel, les acteurs du marché produisent ou consomment des biens à des prix très élevés ou trop élevés. bas prix, par conséquent, ne déterminent pas la situation sur le marché. Principaux participants concours sont des entreprises opérant dans le domaine des prix les plus compétitifs. Cette circonstance est tout à fait cohérente avec la forme de la fonction (2.12).

Une autre fonction d’activation largement utilisée est la tangente hyperbolique. Contrairement à la fonction logistique, la tangente hyperbolique prend des valeurs de signes différents, ce qui s'avère bénéfique pour un certain nombre de réseaux.

Il est important de noter qu'il est proposé que le choix du type de fonction d'activation soit effectué symétriquement dans les segments de production et de consommation au niveau des sous-systèmes. Cela se justifie par le fait que la production et la consommation de biens sur le marché sont des processus « miroir » et doivent se dérouler selon les mêmes principes. Le type même de fonctions est déterminé en fonction des exigences de précision.

Lors de la résolution de problèmes utilisant des réseaux de neurones, il est nécessaire de collecter une quantité de données suffisante et représentative afin d’entraîner le réseau de neurones à résoudre de tels problèmes. Un ensemble de données d'entraînement est un ensemble d'observations contenant des attributs de l'objet étudié. Les réseaux de neurones fonctionnent avec des données numériques, généralement issues d'une certaine plage limitée. Dans ce problème, cet échantillon peut être construit sur la base d’informations statistiques collectées au cours de l’existence du marché. De plus, le nombre de fabricants et de fournisseurs sur un marché parfaitement concurrentiel est assez important et, en l'absence d'autres données, les performances actuelles du produit peuvent être considérées comme un échantillon d'apprentissage.

La question du nombre d’observations nécessaires pour former un réseau est souvent difficile. Il existe un certain nombre de connus règles heuristiques, qui établissent une relation entre le nombre d'observations requises et la taille du réseau. Le plus simple stipule que le nombre d'observations doit être 10 fois supérieur. plus de numéro connexions dans le réseau. En fait, ce nombre dépend de la complexité de l'affichage que le réseau de neurones doit reproduire. À mesure que le nombre de caractéristiques utilisées augmente, le nombre d'observations augmente de manière non linéaire, de sorte que même avec un nombre relativement petit de caractéristiques, disons 50, un grand nombre d'observations peut être nécessaire. Ce problème est appelé « la malédiction de la dimensionnalité ».

Ainsi, dans les conditions de la première couche du système neuronal, le nombre approximatif d'exemples d'entraînement peut être déterminé :

µ = w x je x m. (2.13)

Le processus de formation d'un réseau de neurones consiste à déterminer les valeurs des coefficients de pondération qui assurent une transformation sans ambiguïté des signaux d'entrée en signaux de sortie.

En analysant les données d'entrée et de sortie disponibles pour l'analyste, les pondérations du réseau sont automatiquement ajustées pour minimiser la différence entre le signal souhaité et la sortie obtenue à la suite de la simulation. Cette différence s’appelle l’erreur d’apprentissage.

L'erreur de formation pour une configuration spécifique d'un réseau neuronal est déterminée en exécutant toutes les observations disponibles à travers le réseau et en comparant les valeurs de sortie avec les valeurs cibles souhaitées. Ces différences permettent de former ce que l'on appelle la fonction d'erreur (un critère pour la qualité de la formation) Lors de la modélisation de réseaux de neurones avec des fonctions linéaires d'activation des neurones, il est possible de construire un algorithme qui garantit l'atteinte d'un minimum absolu d'erreurs d'apprentissage. Pour les réseaux de neurones dotés de fonctions d'activation non linéaires, en général, il ne peut pas être garanti que le minimum global de la fonction d'erreur sera atteint.

Avec cette approche de la procédure de formation, une analyse géométrique de la surface de la fonction d’erreur peut être utile. Nous définissons les poids et les biais comme paramètres libres du modèle et notons leur nombre total par N ; Chaque ensemble de ces paramètres sera associé à une mesure sous la forme d'une erreur de réseau. Ensuite, pour toutes les combinaisons possibles de poids, l’erreur de réseau correspondante peut être représentée par un point dans l’espace à N-1 dimensions, et tous ces points forment une certaine surface, appelée surface de la fonction d’erreur. Avec cette approche, le but de la formation d’un réseau de neurones est de trouver un minimum global sur cette surface multidimensionnelle.

Dans le cas d'un modèle de réseau linéaire et d'une fonction d'erreur sous la forme d'une somme de carrés, une telle surface sera un paraboloïde qui a un seul minimum, ce qui rend assez simple la recherche d'un tel minimum.

Dans le cas d'un modèle non linéaire, la surface d'erreur a une structure beaucoup plus complexe et présente un certain nombre de propriétés défavorables, en particulier elle peut avoir des minima locaux, des zones plates, des points de selle et des ravins longs et étroits.

Il est analytiquement impossible de déterminer le minimum global d'une fonction multidimensionnelle et, par conséquent, la formation d'un réseau neuronal est essentiellement une procédure permettant d'apprendre la surface de la fonction d'erreur. A partir d’un point choisi aléatoirement sur la surface de la fonction d’erreur, l’algorithme d’apprentissage trouve progressivement le minimum global. Généralement, cela se fait en calculant la pente (pente) de la fonction d'erreur en un point donné, puis en utilisant ces informations pour descendre la pente. En fin de compte, l'algorithme s'arrête à un certain minimum, qui peut s'avérer n'être qu'un minimum local, et si vous avez de la chance, alors un minimum global.

Après plusieurs présentations d'exemples, les pondérations du réseau se stabilisent, le réseau donnant des réponses correctes à tous (ou presque tous) les exemples de la base de données. Dans ce cas, ils disent que « le réseau est formé ». Dans les implémentations logicielles, vous pouvez constater qu'au cours du processus d'apprentissage, la fonction d'erreur (par exemple, la somme des carrés des erreurs sur toutes les sorties) diminue progressivement. Lorsque la fonction d'erreur atteint zéro ou un niveau bas acceptable, la formation est arrêtée et le réseau résultant est considéré comme formé et prêt à être utilisé sur de nouvelles données.

Il est important de noter que toutes les informations dont dispose le réseau sur le problème sont contenues dans l’ensemble des exemples. Par conséquent, la qualité de la formation en réseau dépend directement du nombre d'exemples dans l'ensemble de formation, ainsi que de la façon dont ces exemples décrivent complètement la tâche donnée.

Pour résoudre le problème d'apprentissage, les algorithmes (itératifs) suivants peuvent être utilisés :

  • 1. algorithmes d'optimisation locale avec calcul de dérivées partielles du premier ordre ;
  • 1. algorithmes d'optimisation locale avec calcul des dérivées partielles du premier et du deuxième ordre ;
  • 2. algorithmes d'optimisation stochastique ;
  • 3. algorithmes d'optimisation globale.

Le premier groupe comprend : l'algorithme de gradient (méthode de descente la plus rapide) ; méthodes avec optimisation unidimensionnelle et bidimensionnelle de la fonction objectif dans la direction antigradient ; méthode du gradient conjugué ; méthodes qui prennent en compte la direction de l'antigradient à plusieurs étapes de l'algorithme.

Le deuxième groupe comprend : la méthode de Newton, les méthodes d'optimisation avec des matrices hessiennes clairsemées, les méthodes quasi-Newton, la méthode de Gauss-Newton, la méthode de Levenberg-Marquardt et autres.

Les méthodes stochastiques sont : la recherche dans une direction aléatoire, le recuit simulé, la méthode de Monte Carlo (méthode de test statistique numérique).

Les problèmes d'optimisation globale sont résolus en énumérant les valeurs des variables sur lesquelles le fonction objectif(fonction d'erreur ).

Lors de l'utilisation de l'algorithme de rétropropagation, le réseau calcule l'erreur se produisant dans la couche de sortie et calcule le vecteur gradient en fonction des poids. Ce vecteur indique la direction de la descente la plus courte le long de la surface pour un point donné, donc se déplacer dans cette direction réduira l'erreur. Une séquence de telles étapes mènera éventuellement à un minimum d'un type ou d'un autre. Une certaine difficulté ici est causée par le choix de la taille du pas.

Avec une grande longueur de pas, la convergence sera plus rapide, mais il existe un risque de sauter par-dessus la solution ou d'aller dans la mauvaise direction. Au contraire, avec un petit pas, la bonne direction sera probablement choisie, mais cela nécessitera de nombreuses itérations. En pratique, la taille du pas est choisie proportionnellement à l'inclinaison de la pente (le gradient de la fonction d'erreur). Ce facteur de proportionnalité est appelé paramètre de vitesse de réglage. Le choix correct du paramètre de vitesse de réglage dépend de tâche spécifique et est généralement réalisée de manière empirique. Ce paramètre peut également dépendre du temps, diminuant au fur et à mesure de l'exécution de l'algorithme.

L'algorithme fonctionne de manière itérative et ses étapes sont généralement appelées époques ou cycles. À chaque cycle, toutes les observations d'entraînement sont transmises séquentiellement à l'entrée du réseau, les valeurs de sortie sont comparées aux valeurs cibles et la fonction d'erreur est calculée. . Les valeurs de la fonction d'erreur, ainsi que son gradient, sont utilisées pour ajuster les poids et les biais, après quoi toutes les actions sont répétées. Les valeurs initiales des poids et biais du réseau sont choisies aléatoirement, et le processus d'entraînement s'arrête soit lorsque le une certaine quantité de cycles, ou lorsque l'erreur atteint une certaine petite valeur ou cesse de diminuer.

Une autre approche de la procédure de formation du réseau peut être formulée si l'on la considère comme une procédure inverse de la modélisation. Dans ce cas, il est nécessaire de sélectionner de telles valeurs de poids qui assureraient la correspondance souhaitée entre les entrées et les valeurs de sortie souhaitées. Cette procédure de formation est appelée procédure d'adaptation et est largement utilisée pour configurer les paramètres des réseaux de neurones.

Chaque couche du segment de production résout son propre problème fonctionnel au sein du système neuronal de l’ensemble du marché. Pour cette raison, la procédure de formation peut être effectuée indépendamment pour chaque couche.

Le processus d'apprentissage nécessite un ensemble d'exemples de son comportement souhaité - entrées H et sorties cibles Ψ o pt . Au cours de ce processus, les poids sont ajustés pour minimiser certaines fonctionnalités d'erreur. Par défaut, l'erreur quadratique moyenne entre les vecteurs de sortie Ψ o pt et Ψ est prise comme telle fonctionnelle pour les réseaux à transmission directe de signaux.

Lors de la formation d'un réseau, certaines fonctionnalités sont calculées qui caractérisent la qualité de la formation :

, (2.14)

où J est la fonctionnelle ; Q - taille de l'échantillon ; M - nombre de couches réseau ; q - numéro d'échantillon ; S m - nombre de neurones dans la couche de sortie ; Ψ q - vecteur de signal à la sortie du réseau ; Ψ q opt est un vecteur de valeurs de signal souhaitées (cibles) à la sortie du réseau pour le numéro d'échantillon q.

Dans le cas de l'utilisation d'une fonction d'activation linéaire, les réseaux de neurones de la première couche sont monocouches. Dans ce cas, M = 1 et l'expression de la fonctionnelle prend la forme :

où est la fonction d'activation ; - signal à l'entrée de la fonction d'activation du j-ème neurone ; - vecteur signal d'entrée; w est le nombre d'éléments du vecteur d'entrée ; m est le nombre de neurones dans la couche ; - les coefficients de pondération du réseau.

Incluons le vecteur de déplacement dans la matrice de poids et complétons le vecteur d'entrée avec un élément égal à 1.

Application de la règle de différenciation fonction complexe, on calcule le gradient de la fonctionnelle d'erreur, sachant que la fonction d'activation est différentiable :

Introduisons la notation :

et transformer l'expression (2.16) comme suit :

. (2.18)

Les expressions résultantes sont simplifiées si le réseau est linéaire. Puisque pour un tel réseau la relation est satisfaite, la condition est valide. Dans ce cas, l’expression (2.16) prend la forme :

. (2.19)

L'expression (2.19) constitue la base de l'algorithme WH, utilisé pour la formation des réseaux de neurones linéaires.

Les réseaux linéaires peuvent être formés sans utiliser de méthodes itératives, mais en résolvant le système suivant équations linéaires:

. (2.20)

Si le nombre d'inconnues du système (2.20) est égal au nombre d'équations, alors un tel système peut être résolu, par exemple, par la méthode d'élimination de Gauss avec choix de l'élément principal. Si le nombre d’équations dépasse le nombre d’inconnues, alors la solution est recherchée par la méthode des moindres carrés.

Dans le cas d'une fonction d'activation non linéaire, il est proposé d'utiliser la méthode de rétropropagation pour entraîner les réseaux de neurones.

L'algorithme de rétropropagation est l'un des algorithmes d'apprentissage efficaces. Il s’agit essentiellement d’une méthode de descente de gradient de minimisation. Considérons l'algorithme de rétropropagation pour un réseau de neurones avec une couche cachée. Supposons qu'il existe A premiers exemples :

où est le vecteur des sorties réseau souhaitées correspondant au vecteur d'entrée.

Nous initialisons le vecteur de poids Ω de manière aléatoire.

Vous devez maintenant configurer les pondérations du réseau à l'aide du processus d'apprentissage. Pour le a-ème exemple, les sorties des neurones cachés seront déterminées par les expressions :

, (2.22)

et les sorties de l'ensemble du réseau neuronal sont des expressions :

(2.23)

Dans les expressions (2.22) et (2.23), F() est la fonction d'activation, par exemple la fonction sigmoïde.

L'erreur quadratique du réseau fonctionnelle pour une image d'entrée donnée a la forme :

(2.24)

Cette fonctionnalité doit être minimisée. La méthode classique d'optimisation de gradient consiste en un raffinement itératif de l'argument selon la formule :

, (2.25)

où h est le coefficient du taux d'apprentissage 0<η<1.

Le paramètre η a la signification du taux d'apprentissage et est choisi suffisamment petit pour la convergence de la méthode.

La fonction d'erreur ne contient pas explicitement de dépendance au poids, nous utiliserons donc les formules de différenciation implicite d'une fonction complexe :

(2.26)

La dérivée de la fonction sigmoïde s'exprime uniquement à travers la valeur de la fonction elle-même. Ainsi, toutes les grandeurs nécessaires à l'ajustement des poids de la couche de sortie ont été obtenues.

Les poids des calques masqués sont ajustés :

(2.27)

Les dérivées de la fonction d'erreur sont calculées :

(2.26)

Lors du calcul de d, le principe de rétropropagation de l'erreur a été appliqué ici : les dérivées partielles ne sont prises que par rapport aux variables de la couche suivante. En utilisant les formules obtenues, les poids des neurones de la couche cachée sont modifiés.

Les calculs (2.22) - (2.26) sont répétés pour tous les vecteurs d'entraînement. La formation se termine lorsqu'une petite erreur totale ou le nombre maximum d'itérations autorisé est atteint.

La convergence de la méthode de rétropropagation est très lente. Un faible taux de convergence est une caractéristique de toutes les méthodes de gradient, puisque la direction locale du gradient ne coïncide pas avec la direction vers le minimum. Les poids sont ajustés indépendamment pour chaque paire d'images de l'ensemble d'entraînement. Dans ce cas, une amélioration des performances sur une paire donnée peut entraîner une détérioration des performances sur les images précédentes.

Bien que l’algorithme de rétropropagation soit assez simple, il nécessite généralement des milliers d’itérations pour entraîner un réseau neuronal. S'il n'y a aucune exigence de précision, alors la première méthode (2.14)-(2.20) doit être utilisée.

Pour déterminer les poids des entrées des neurones de la deuxième couche, ainsi que de la troisième couche du segment de production du système neuronal, aucune formation n'est requise. Les valeurs des poids, en raison de l'équivalence de la position de tous les fabricants sur le marché, sont choisies égales. Aucun d’entre eux n’occupe une position privilégiée dans des conditions de concurrence parfaite. Les mêmes principes s'appliquent aux produits.

Par analogie, les poids du sous-système neuronal du segment de marché de consommation sont déterminés.

La principale étape d'application du système neuronal proposé est le processus de son fonctionnement direct. Le but de cette étape est de résoudre le problème principal : déterminer les caractéristiques du produit qui offrent à son fabricant des avantages concurrentiels et satisfont les besoins des consommateurs.

Fonction d'activation

Le signal reçu de l'additionneur est transmis à la fonction d'activation. Le résultat obtenu en calculant cette fonction est la sortie du neurone Y.

Ainsi, si l'on note la fonction d'activation F, la sortie Y du neurone dépend du vecteur de valeurs d'entrée et du vecteur de poids comme suit :

Y = F(X1*W1 + X2*W2 + … + Xn*Wn)

En pratique, différentes fonctions d'activation sont utilisées pour modifier le comportement d'un neurone, par exemple linéaire, à seuil, sigmoïde, etc. Considérons brièvement certaines de ces fonctions à titre d'exemple. Vous trouverez une description plus complète, par exemple dans

Fonction d'activation linéaire

Le graphique de la fonction d'activation linéaire est présenté sur la Fig. 4-3. Comme vous pouvez le voir, ce graphique est une ligne droite dont l'angle d'inclinaison dépend de la constante k, et l'ampleur du décalage le long de l'axe des coordonnées horizontales dépend de la constante t.

4.

5.

6. Pour que le réseau neuronal puisse accomplir la tâche, il doit être entraîné (voir Fig. 1). Il existe des algorithmes d’apprentissage supervisé et non supervisé.
Le processus d'apprentissage supervisé est la présentation d'un échantillon d'exemples de formation au réseau. Chaque échantillon est envoyé aux entrées du réseau, puis traité au sein de la structure NN, le signal de sortie du réseau est calculé, qui est comparé à la valeur correspondante du vecteur cible, qui représente la sortie du réseau requise. Ensuite, selon une certaine règle, l'erreur est calculée et les coefficients de pondération des connexions au sein du réseau changent en fonction de l'algorithme sélectionné. Les vecteurs de l'ensemble d'apprentissage sont présentés séquentiellement, les erreurs sont calculées et les poids sont ajustés pour chaque vecteur jusqu'à ce que l'erreur sur l'ensemble de l'ensemble d'apprentissage atteigne un niveau suffisamment faible.

Dans l'apprentissage non supervisé, l'ensemble d'apprentissage est constitué uniquement de vecteurs d'entrée. L'algorithme d'apprentissage ajuste les pondérations du réseau afin que des vecteurs de sortie cohérents soient obtenus, c'est-à-dire de sorte que la présentation de vecteurs d'entrée suffisamment proches donne des sorties identiques. Le processus d'apprentissage extrait donc les propriétés statistiques de l'ensemble d'apprentissage et regroupe les vecteurs similaires en classes. La présentation d'un vecteur d'une classe donnée en entrée produira un certain vecteur de sortie, mais avant l'entraînement, il est impossible de prédire quelle sortie sera produite par une classe donnée de vecteurs d'entrée. Par conséquent, les résultats d’un tel réseau doivent être transformés sous une forme compréhensible, déterminée par le processus d’apprentissage. Ce n'est pas un problème grave. Il n'est généralement pas difficile d'identifier la connexion entre l'entrée et la sortie établie par le réseau.
Pour entraîner les réseaux de neurones sans enseignant, les méthodes d'apprentissage des signaux Hebb et Oya sont utilisées.



Mathématiquement, le processus d'apprentissage peut être décrit comme suit. Pendant le fonctionnement, le réseau neuronal génère un signal de sortie Y, mettant en œuvre une certaine fonction Y = G(X). Si l'architecture du réseau est donnée, alors la forme de la fonction G est déterminée par les valeurs des poids synaptiques et du réseau biaisé.

Soit la solution à un problème la fonction Y = F(X), spécifiée par les paramètres des données d'entrée-sortie (X 1, Y 1), (X 2, Y 2), ..., (X N, Y N ), pour laquelle Y k = F( X k) (k = 1, 2, …, N).

L'entraînement consiste à rechercher (synthétiser) une fonction G proche de F au sens d'une certaine fonction d'erreur E. (voir Fig. 1.8).

Si un ensemble d'exemples de formation est choisi - des paires (X N, Y N) (où k = 1, 2, ..., N) et une méthode de calcul de la fonction d'erreur E, alors la formation d'un réseau neuronal se transforme en un problème d'optimisation multidimensionnelle avec une très grande dimension, et puisque la fonction E peut avoir une forme arbitraire ; l'entraînement dans le cas général est un problème d'optimisation multiextrémal non convexe.

Pour résoudre ce problème, les algorithmes (itératifs) suivants peuvent être utilisés :

1. algorithmes d'optimisation locale avec calcul de dérivées partielles du premier ordre :

algorithme de gradient (méthode de descente la plus raide),

· méthodes avec optimisation unidimensionnelle et bidimensionnelle de la fonction objectif dans la direction antigradient,

· méthode du gradient conjugué,

· des méthodes qui prennent en compte la direction de l'antigradient à plusieurs étapes de l'algorithme ;

2. algorithmes d'optimisation locale avec calcul des dérivées partielles du premier et du deuxième ordre :

La méthode de Newton

· méthodes d'optimisation avec des matrices hessiennes clairsemées,

· méthodes quasi-Newton,

· Méthode Gauss-Newton,

· Méthode Levenberg-Marquardt et autres ;

3. Algorithmes d'optimisation stochastique :

· chercher dans une direction aléatoire,

· recuit simulé,

· Méthode Monte Carlo (méthode de test statistique numérique) ;

4. algorithmes d'optimisation globale (les problèmes d'optimisation globale sont résolus en énumérant les valeurs des variables dont dépend la fonction objectif).

7. Réseau neuronal ou le système nerveux humain est un réseau complexe de structures humaines qui assure le comportement interconnecté de tous les systèmes du corps.

Un neurone biologique est une cellule spéciale constituée structurellement d'un noyau, d'un corps cellulaire et de processus. L'une des tâches clés d'un neurone est de transmettre une impulsion électrochimique à travers le réseau neuronal via des connexions accessibles avec d'autres neurones. De plus, chaque connexion est caractérisée par une certaine valeur appelée force de la connexion synaptique. Cette valeur détermine ce qui arrivera à l'impulsion électrochimique lorsqu'elle sera transmise à un autre neurone : soit elle se renforcera, soit elle s'affaiblira, soit elle restera inchangée.

Un réseau de neurones biologiques possède un haut degré de connectivité : un neurone peut avoir plusieurs milliers de connexions avec d’autres neurones. Mais il s'agit d'une valeur approximative et dans chaque cas spécifique elle est différente. La transmission d'impulsions d'un neurone à un autre génère une certaine excitation de l'ensemble du réseau neuronal. L'ampleur de cette excitation détermine la réponse du réseau neuronal à certains signaux d'entrée. Par exemple, la rencontre d’une personne avec une vieille connaissance peut conduire à une forte stimulation du réseau neuronal si des souvenirs de vie vifs et agréables sont associés à cette connaissance. À son tour, une forte stimulation du réseau neuronal peut entraîner une augmentation de la fréquence cardiaque, des clignements des yeux plus fréquents et d’autres réactions. Une rencontre avec un inconnu passera quasiment inaperçue pour le réseau de neurones, et ne provoquera donc pas de réactions fortes.

Le modèle hautement simplifié suivant d’un réseau de neurones biologiques peut être donné :

Chaque neurone est constitué d'un corps cellulaire contenant un noyau. De nombreuses fibres courtes appelées dendrites partent du corps cellulaire. Les longues dendrites sont appelées axones. Les axones s'étendent sur de longues distances, bien au-delà de ce qui est indiqué à l'échelle de cette figure. Généralement, les axones mesurent 1 cm de long (soit 100 fois le diamètre du corps cellulaire), mais peuvent atteindre 1 mètre.

Dans les années 60-80 du 20e siècle, l'orientation prioritaire de la recherche dans le domaine de l'intelligence artificielle était systèmes experts. Les systèmes experts ont fait leurs preuves, mais uniquement dans des domaines très spécialisés. Une approche différente était nécessaire pour créer des systèmes intelligents plus universels. Cela a peut-être amené les chercheurs en intelligence artificielle à porter leur attention sur les réseaux neuronaux biologiques qui sont à la base du cerveau humain.

Les réseaux de neurones en intelligence artificielle sont des modèles simplifiés de réseaux de neurones biologiques.

C’est là que s’arrêtent les similitudes. La structure du cerveau humain est beaucoup plus complexe que celle décrite ci-dessus et il n'est donc pas possible de la reproduire, même plus ou moins précisément.

Les réseaux de neurones possèdent de nombreuses propriétés importantes, mais la principale est la capacité d’apprendre. Entraîner un réseau de neurones consiste principalement à modifier la « force » des connexions synaptiques entre les neurones. L’exemple suivant le démontre clairement. Dans l'expérience classique de Pavlov, une cloche sonnait à chaque fois juste avant que le chien ne soit nourri. Le chien a rapidement appris à associer le tintement de la cloche au fait de manger. Cela était dû au fait que les connexions synaptiques entre les zones du cerveau responsables de l’audition et les glandes salivaires étaient renforcées. Et par la suite, la stimulation du réseau neuronal par le son de la cloche a commencé à conduire à une salivation plus forte chez le chien.

Aujourd’hui, les réseaux de neurones constituent l’un des domaines de recherche prioritaires dans le domaine de l’intelligence artificielle.

8. Perceptrons multicouches appelés réseaux de neurones feedforward. Le signal d’entrée dans de tels réseaux se propage vers l’avant, de couche en couche. Un perceptron multicouche dans sa représentation générale est constitué des éléments suivants :

· des ensembles de nœuds d'entrée qui forment la couche d'entrée ;

une ou plusieurs couches cachées de neurones informatiques ;

· une couche de sortie de neurones.

Le perceptron multicouche est une généralisation du perceptron monocouche de Rosenblatt. Un exemple de perceptron multicouche est le modèle de réseau neuronal suivant :

Le nombre d'éléments d'entrée et de sortie dans un perceptron multicouche est déterminé par les conditions du problème. Des doutes peuvent surgir quant aux valeurs d'entrée à utiliser et à celles qui ne le sont pas. La question du nombre de couches et d’éléments intermédiaires à utiliser n’est toujours pas claire. En première approximation, nous pouvons prendre une couche intermédiaire et définir le nombre d’éléments égal à la moitié de la somme du nombre d’éléments d’entrée et de sortie.

Les perceptrons multicouches sont utilisés avec succès pour résoudre une variété de problèmes complexes et présentent les trois caractéristiques distinctives suivantes.

Le type de fonction d'activation détermine en grande partie la fonctionnalité du réseau neuronal. Le tableau montre certains types de fonctions d'activation utilisées dans la conception de réseaux de neurones.

Non. Nom Formule Champ d'application
linéaire (-∞; +∞)
semi-linéaire (0; +∞)
logistique (sigmoïde) (0; 1)
tangente hyperbolique (-1; 1)
exponentiel (0; +∞)
seuil (-1; 1)
linéaire avec saturation (-1; 1)

Classification des réseaux de neurones

Classification des réseaux de neurones par type de topologie (par type de propagation du signal lors du fonctionnement du réseau de neurones) :

La topologie d'un réseau de neurones est une illustration graphique de la façon dont les neurones sont connectés les uns aux autres dans ce réseau.

NS monocouche (perceptron) NS multicouche
NS avec connexions directes
NS avec connexions croisées. AUCUN
NS avec feedback (récurrent).
NS avec connexions latérales (avec inhibition latérale) AUCUN

Dans les réseaux de neurones dotés de connexions croisées, chaque couche a une influence plus subtile sur la sortie du réseau. La structure est plus optimale (minimisée) par rapport à un réseau neuronal avec des connexions série, ce qui augmente la vitesse du réseau.

Les réseaux de neurones récurrents sont utilisés pour modéliser les processus dynamiques.

Classification des réseaux de neurones par type de connexion :

1. Réseaux de neurones entièrement connectés :

2. Réseaux de neurones avec connexions série :

3. Structures faiblement couplées :

a) rectangulaire b) hexagonale ???



Classification des réseaux de neurones selon la méthode de résolution du problème :

1. Réseaux générés : conçus pour des problèmes formalisés qui ont un algorithme clairement formulé pour résoudre un problème spécifique sur la base d'un réseau neuronal.

2. Réseaux avec une matrice de connexion générée : utilisés pour des tâches difficiles à formaliser. En règle générale, ils ont la même structure et ne diffèrent que par la matrice de connexion (réseau Hopfield). Avantage : visibilité au travail.

3. Réseaux d'apprentissage : utilisés pour résoudre des problèmes non formalisables. Au cours du processus de formation du réseau, ses paramètres tels que les coefficients de connexion synaptique et, dans certains cas, la topologie changent automatiquement. Inconvénient : long temps de formation du réseau.

4. Réseaux combinés (mixtes) : combinent les caractéristiques de deux voire trois types. En règle générale, les réseaux sont multicouches, dont chaque couche est représentée par une topologie différente et est entraînée à l'aide d'un algorithme spécifique. Ils sont les plus répandus car ils offrent de nombreuses opportunités au développeur.

L'une des fonctions d'activation les plus courantes est la fonction d'activation non linéaire avec saturation, dite fonction logistique ou sigmoïde (fonction en forme de S) :

En diminuant UN Le sigmoïde devient plus plat, dans la limite à UN= 0 dégénérant en une ligne horizontale au niveau de 0,5, avec une augmentation UN La sigmoïde se rapproche de la forme d'une fonction de saut unique avec un seuil T . D’après l’expression du sigmoïde, il est évident que la valeur de sortie du neurone se situe dans la plage (0, 1). L'une des propriétés précieuses de la fonction sigmoïde est une expression simple de sa dérivée :

Il convient de noter que sigmoïde la fonction est différentiable sur tout l'axe des x, qui est utilisé dans certains algorithmes d'apprentissage. De plus, il a la propriété de mieux amplifier les signaux faibles que les grands et d’éviter la saturation des signaux forts puisqu’ils correspondent à des régions d’argument où la sigmoïde a une faible pente.

Tableau 7.1 Fonctions d'activation des neurones

Nom Formule Plage de valeurs
Linéaire F(s) = ks (-∞, ∞)
Semi-linéaire (0, ∞)
Logistique (sigmoïde) (0, 1)
Tangente hyperbolique (sigmoïde) (-1, 1)
Exponentiel (0, ∞)
Sinusoïdal (-1, 1)
Sigmoïde (rationnel) (-1, 1)
Stepping (linéaire avec saturation) (-1, 1)
Seuil (0, 1)
Modulaire (0, ∞)
Signature (signature) (-1, 1)
Quadratique (0, ∞)

Riz. 7.2. Exemples de fonctions d'activation :

a est la fonction d'un seul saut ; b - seuil linéaire (hystérésis) ;

c - sigmoïde (fonction logistique) ;

z - sigmoïde (tangente hyperbolique)

Le type de fonction d'activation est sélectionné en tenant compte du problème spécifique résolu à l'aide des réseaux de neurones. Par exemple, dans les problèmes d'approximation et de classification, la préférence est donnée à la courbe logistique (sigmoïde).

Pour construire un ANN afin de résoudre un problème spécifique, vous devez sélectionner le type de connexion des neurones, déterminer le type de fonctions de transfert des éléments et sélectionner les coefficients de pondération des connexions interneurones.

Avec toute la variété des configurations ANN possibles, seules quelques-unes d'entre elles se sont répandues dans la pratique. Les modèles classiques de réseaux neuronaux sont discutés ci-dessous.

Classification des réseaux de neurones et de leurs propriétés

Un réseau de neurones est un ensemble d'éléments de type neurone connectés d'une certaine manière les uns aux autres et à l'environnement extérieur à l'aide de connexions déterminées par des coefficients de pondération. Selon les fonctions exercées par les neurones du réseau, on peut en distinguer trois types :



neurones d'entrée, auxquels est fourni un vecteur codant pour une influence d'entrée ou une image de l'environnement extérieur, ils n'effectuent généralement pas de procédures de calcul et les informations sont transférées de l'entrée à la sortie en modifiant leur activation ;

neurones de sortie, dont les valeurs de sortie représentent les sorties du réseau neuronal ; les transformations y sont effectuées selon les expressions (7.1). Ils ont pour fonction importante d'amener la valeur de sortie du réseau dans la plage requise (cela se fait à l'aide de la fonction d'activation) ;

interneurones, constituant la base des réseaux de neurones, dont les transformations sont également effectuées selon les expressions (7.1).

Dans la plupart des modèles neuronaux, le type de neurone est lié à son emplacement dans le réseau. Si un neurone n’a que des connexions de sortie, alors c’est un neurone d’entrée ; si au contraire, c’est un neurone de sortie. Cependant, il est possible que la sortie d’un neurone topologiquement interne soit considérée comme faisant partie de la sortie du réseau. Pendant le fonctionnement du réseau, le vecteur d'entrée est converti en vecteur de sortie et un certain traitement des informations est effectué. Le type spécifique de transformation de données effectué par le réseau est déterminé non seulement par les caractéristiques des éléments de type neurone, mais également par les caractéristiques de son architecture, à savoir la topologie des connexions interneurones, le choix de certains sous-ensembles d'éléments de type neurone pour entrée et sortie d'informations, méthodes d'entraînement du réseau, présence ou absence de compétition entre neurones, direction et méthodes contrôle et synchronisation du transfert d'informations entre neurones.

D'un point de vue topologique, trois grands types de réseaux de neurones peuvent être distingués :

Entièrement connecté (Fig. 7.3, a);

Multicouche ou en couches (Fig. 7.3, b) ;

Faiblement connecté (avec connexions locales) (Fig. 7.3, c).

Riz. 7.3. Architectures de réseaux de neurones :

a - réseau entièrement connecté, b - réseau multicouche avec séquence

connexions, dans - réseaux faiblement connectés

DANS réseaux de neurones entièrement connectés chaque neurone transmet son signal de sortie à d'autres neurones, y compris lui-même. Tous les signaux d'entrée sont transmis à tous les neurones. Les signaux de sortie du réseau peuvent être tout ou partie des signaux de sortie des neurones après plusieurs cycles de fonctionnement du réseau.

DANS réseaux de neurones multicouches les neurones sont combinés en couches. La couche contient une collection de neurones avec des signaux d'entrée communs. Le nombre de neurones dans une couche peut être quelconque et ne dépend pas du nombre de neurones dans les autres couches. En général, le réseau est constitué de Q couches numérotées de gauche à droite. Les signaux d'entrée externes sont envoyés aux entrées des neurones de la couche d'entrée (souvent numérotées zéro), et les sorties du réseau sont les signaux de sortie de la dernière couche. En plus des couches d'entrée et de sortie, un réseau neuronal multicouche possède une ou plusieurs couches cachées. Connexions des sorties des neurones d'une certaine couche q aux entrées des neurones de la couche suivante ( q+1) sont appelés séquentiels. Au sein d’une même couche, la même fonction d’activation est utilisée.