Réseaux de neurones : application pratique

Dans ce chapitre, nous nous sommes familiarisés avec des concepts tels que l'intelligence artificielle, l'apprentissage automatique et les réseaux de neurones artificiels.

Dans ce chapitre, je décrirai en détail le modèle de neurone artificiel, parlerai des approches de formation du réseau et décrirai également certains types bien connus de réseaux de neurones artificiels que nous étudierons dans les chapitres suivants.

Simplification

Dans le dernier chapitre, j'ai constamment parlé de certaines simplifications sérieuses. La raison de ces simplifications est qu'aucun ordinateur moderne ne peut rapide simuler des systèmes complexes tels que notre cerveau. De plus, comme je l'ai déjà dit, notre cerveau regorge de divers mécanismes biologiques qui ne sont pas liés au traitement de l'information.

Nous avons besoin d'un modèle pour convertir le signal d'entrée en signal de sortie dont nous avons besoin. Tout le reste ne nous dérange pas. Commençons par simplifier.

Structure biologique → diagramme

Dans le chapitre précédent, vous avez réalisé à quel point les réseaux de neurones biologiques et les neurones biologiques sont complexes. Au lieu de dessiner les neurones comme des monstres tentaculés, dessinons simplement des diagrammes.

D'une manière générale, il existe plusieurs façons image graphique réseaux de neurones et neurones. Ici, nous allons représenter les neurones artificiels sous forme de cercles.

Au lieu d'un entrelacement complexe d'entrées et de sorties, nous utiliserons des flèches indiquant la direction du mouvement du signal.

Ainsi, un réseau de neurones artificiels peut être représenté comme un ensemble de cercles (neurones artificiels) reliés par des flèches.

Signaux électriques → nombres

Dans un véritable réseau neuronal biologique, un signal électrique est transmis des entrées du réseau aux sorties. Cela peut changer au fur et à mesure de son passage dans le réseau neuronal.

Un signal électrique sera toujours un signal électrique. Conceptuellement, rien ne change. Mais qu’est-ce qui change alors ? L'ampleur de ce signal électrique change (plus fort/plus faible). Et n'importe quelle valeur peut toujours être exprimée sous forme de nombre (plus/moins).

Dans notre modèle de réseau neuronal artificiel, nous n'avons pas du tout besoin d'implémenter le comportement du signal électrique, puisque de toute façon, rien ne dépendra de sa implémentation.

Nous fournirons quelques chiffres aux entrées du réseau, symbolisant l'ampleur du signal électrique s'il existait. Ces chiffres se déplaceront à travers le réseau et changeront d'une manière ou d'une autre. A la sortie du réseau, nous recevrons un nombre résultant, qui est la réponse du réseau.

Par commodité, nous appellerons toujours nos numéros circulant dans le réseau par signaux.

Synapses → poids de connexion

Rappelons l'image du premier chapitre, dans laquelle les connexions entre les neurones - les synapses - étaient représentées en couleur. Les synapses peuvent renforcer ou affaiblir le signal électrique qui les traverse.

Caractérisons chacune de ces connexions par un certain nombre, appelé le poids de cette connexion. Le signal est passé par cette connexion, est multiplié par le poids de la connexion correspondante.

C'est un point clé dans le concept de réseaux de neurones artificiels, je vais l'expliquer plus en détail. Regardez l'image ci-dessous. Maintenant, chaque flèche noire (connexion) dans cette image correspond à un certain nombre ​\(w_i \) ​ (le poids de la connexion). Et lorsque le signal passe par cette connexion, son ampleur est multipliée par le poids de cette connexion.

Dans la figure ci-dessus, toutes les connexions n’ont pas de poids simplement parce qu’il n’y a pas d’espace pour les étiquettes. En réalité, chaque ​\(i \) ​ième connexion a son propre ​\(w_i \) ​ième poids.

Neurone artificiel

Nous passons maintenant à la structure interne d'un neurone artificiel et à la manière dont il transforme le signal arrivant à ses entrées.

La figure ci-dessous montre modèle complet neurone artificiel.

Ne vous inquiétez pas, il n'y a rien de compliqué ici. Regardons tout en détail de gauche à droite.

Entrées, poids et additionneur

Chaque neurone, y compris les neurones artificiels, doit disposer de certaines entrées par lesquelles il reçoit un signal. Nous avons déjà introduit le concept de poids par lequel les signaux transitant par la communication sont multipliés. Dans l'image ci-dessus, les poids sont représentés par des cercles.

Les signaux reçus aux entrées sont multipliés par leurs poids. Le signal de la première entrée ​\(x_1 \) ​ est multiplié par le poids ​\(w_1 \) ​ correspondant à cette entrée. En conséquence, nous obtenons ​\(x_1w_1 \) ​. Et ainsi de suite jusqu’à la ​\(n\) ​ième entrée. En conséquence, à la dernière entrée, nous obtenons ​\(x_nw_n \) ​.

Désormais, tous les produits sont transférés vers l'additionneur. Rien qu’en vous basant sur son nom, vous pouvez comprendre ce qu’il fait. Ça résume tout signaux d'entrée, multiplié par les poids correspondants :

\[ x_1w_1+x_2w_2+\cdots+x_nw_n = \sum\limits^n_(i=1)x_iw_i \]

Aide mathématique

Sigma — Wikipédia

Lorsqu'il est nécessaire d'écrire brièvement une grande expression constituée d'une somme de termes répétitifs/du même type, le signe sigma est utilisé.

Considérons option la plus simple entrées :

\[ \somme\limites^5_(i=1)i=1+2+3+4+5 \]

Ainsi, en dessous du sigma, nous attribuons à la variable compteur ​\(i \) ​ une valeur de départ, qui augmentera jusqu'à atteindre la limite supérieure (dans l'exemple ci-dessus, elle est 5).

La limite supérieure peut également être variable. Laissez-moi vous donner un exemple d'un tel cas.

Ayons ​\(n \) magasins. Chaque magasin possède son propre numéro : de 1 à ​\(n\) ​. Chaque magasin fait du profit. Prenons (quoi qu'il arrive) ​\(i \) ​ème magasin. Le bénéfice qui en découle est égal à ​\(p_i \) ​.

\[ P = p_1+p_2+\cdots+p_i+\cdots+p_n \]

Comme vous pouvez le constater, tous les termes de cette somme sont du même type. Ils peuvent alors être brièvement écrits comme suit :

\[ P=\somme\limites^n_(i=1)p_i \]

En mots : « Résumez les bénéfices de tous les magasins, en commençant par le premier et en terminant par ​\(n\) ​-ième. » Sous forme de formule, c’est beaucoup plus simple, plus pratique et plus beau.

Le résultat de l’additionneur est un nombre appelé somme pondérée.

Somme pondérée(Somme pondérée) (​\(net \) ​) - la somme des signaux d'entrée multipliée par leurs poids correspondants.

\[ net=\somme\limites^n_(i=1)x_iw_i \]

Le rôle de l'additionneur est évident - il regroupe tous les signaux d'entrée (qui peuvent être nombreux) en un seul nombre - une somme pondérée qui caractérise le signal reçu par le neurone dans son ensemble. Une autre somme pondérée peut être représentée comme le degré d’excitation générale du neurone.

Exemple

Pour comprendre le rôle du dernier composant d'un neurone artificiel - la fonction d'activation - je vais donner une analogie.

Regardons un neurone artificiel. Sa tâche est de décider s'il faut partir en vacances en mer. Pour ce faire, nous fournissons diverses données à ses entrées. Laissez notre neurone avoir 4 entrées :

  1. Le coût du voyage
  2. Quel temps fait-il en mer ?
  3. Situation de travail actuelle
  4. Y aura-t-il un snack-bar sur la plage ?

Nous caractériserons tous ces paramètres par 0 ou 1. En conséquence, si le temps en mer est bon, alors nous appliquons à cette entrée la valeur 1. Et ainsi de suite pour tous les autres paramètres.

Si un neurone possède quatre entrées, il doit alors y avoir quatre poids. Dans notre exemple, les coefficients de pondération peuvent être considérés comme des indicateurs de l’importance de chaque entrée, influençant la décision globale du neurone. Nous répartissons les poids d'entrée comme suit :

Il est facile de voir que les facteurs de coût et de conditions météorologiques en mer (les deux premiers facteurs d’entrée) jouent un rôle très important. Ils joueront également un rôle déterminant lorsque le neurone prendra une décision.

Envoyons les signaux suivants aux entrées de notre neurone :

On multiplie les poids des entrées par les signaux des entrées correspondantes :

La somme pondérée pour un tel ensemble de signaux d'entrée est de 6 :

\[ net=\somme\limites^4_(i=1)x_iw_i = 5 + 0 + 0 + 1 =6 \]

C’est là qu’intervient la fonction d’activation.

Fonction d'activation

Il est tout à fait inutile de simplement soumettre un montant pondéré en résultat. Le neurone doit le traiter d’une manière ou d’une autre et générer un signal de sortie adéquat. C'est à ces fins que la fonction d'activation est utilisée.

Il convertit la somme pondérée en un certain nombre, qui est la sortie du neurone (nous désignons la sortie du neurone par la variable ​\(out \) ​).

Pour différents types les neurones artificiels sont les plus utilisés différentes fonctions Activation. En général, ils sont désignés par le symbole ​\(\phi(net) \) ​. Préciser le signal pondéré entre parenthèses signifie que la fonction d'activation prend la somme pondérée comme paramètre.

Fonction d'activation (Fonction d'activation)(​\(\phi(net) \) ​) est une fonction qui prend une somme pondérée comme argument. La valeur de cette fonction est la sortie du neurone (​\(out \) ​).

Fonction de saut unique

Le type de fonction d'activation le plus simple. La sortie d'un neurone ne peut être égale qu'à 0 ou 1. Si la somme pondérée est supérieure à un certain seuil ​\(b\) ​, alors la sortie du neurone est égale à 1. Si elle est inférieure, alors 0.

Comment peut-il être utilisé? Supposons que nous allions à la mer uniquement lorsque la somme pondérée est supérieure ou égale à 5. Cela signifie que notre seuil est de 5 :

Dans notre exemple, la somme pondérée était de 6, ce qui signifie que le signal de sortie de notre neurone est de 1. Nous allons donc à la mer.

Cependant, si la météo en mer était mauvaise et que le voyage était très cher, mais qu'il y avait un snack-bar et que l'environnement de travail était normal (entrées : 0011), alors la somme pondérée serait égale à 2, ce qui signifie que le résultat du le neurone serait égal à 0. Donc, nous n’allons nulle part.

Fondamentalement, un neurone regarde une somme pondérée et si elle est supérieure à son seuil, alors le neurone produit une sortie égale à 1.

Graphiquement, cette fonction d'activation peut être représentée comme suit.

L'axe horizontal contient les valeurs de la somme pondérée. Sur l'axe vertical se trouvent les valeurs du signal de sortie. Comme il est facile de le constater, seules deux valeurs du signal de sortie sont possibles : 0 ou 1. De plus, 0 sera toujours émis à partir de moins l'infini jusqu'à une certaine valeur de la somme pondérée, appelée seuil. Si la somme pondérée est égale ou supérieure au seuil, alors la fonction renvoie 1. Tout est extrêmement simple.

Écrivons maintenant mathématiquement cette fonction d’activation. Vous avez certainement rencontré le concept de fonction composée. C'est lorsque nous combinons plusieurs règles sous une seule fonction par laquelle sa valeur est calculée. Sous la forme d'une fonction composite, la fonction de saut unique ressemblera à ceci :

\[ out(net) = \begin(cases) 0, net< b \\ 1, net \geq b \end{cases} \]

Il n’y a rien de compliqué dans cet enregistrement. La sortie d'un neurone (​\(out \) ​) dépend de la somme pondérée (​\(net \) ​) comme suit : si ​\(net \) ​ (somme pondérée) est inférieur à un certain seuil (​ \(b \ ) ​), alors ​\(out \) ​ (sortie du neurone) est égal à 0. Et si ​\(net \) ​ est supérieur ou égal au seuil ​\(b \) ​, alors ​\(out \) ​ est égal à 1 .

Fonction sigmoïde

En fait, il existe toute une famille de fonctions sigmoïdes, dont certaines sont utilisées comme fonctions d’activation dans les neurones artificiels.

Toutes ces fonctions possèdent des propriétés très utiles, pour lesquelles elles sont utilisées dans les réseaux de neurones. Ces propriétés deviendront évidentes une fois que vous verrez les graphiques de ces fonctions.

Donc... le sigmoïde le plus couramment utilisé dans les réseaux de neurones est fonction logistique.

Le graphique de cette fonction semble assez simple. Si vous regardez bien, vous remarquerez une certaine ressemblance lettre anglaise​\(S \) ​, d’où vient le nom de la famille de ces fonctions.

Et voici comment cela s’écrit analytiquement :

\[ out(net)=\frac(1)(1+\exp(-a \cdot net)) \]

Quel est le paramètre ​\(a \) ​ ? Il s'agit d'un nombre qui caractérise le degré d'inclinaison de la fonction. Vous trouverez ci-dessous des fonctions logistiques avec différents paramètres ​\(a \) ​.

Souvenons-nous de notre neurone artificiel, qui détermine s'il faut aller à la mer. Dans le cas de la fonction Single Jump, tout était évident. Soit on va à la mer (1), soit on ne va pas (0).

Ici, le cas est plus proche de la réalité. Nous n'en sommes pas complètement sûrs (surtout si vous êtes paranoïaque) : est-ce que cela vaut la peine d'y aller ? Ensuite, en utilisant la fonction logistique comme fonction d'activation, vous obtiendrez un nombre compris entre 0 et 1. De plus, plus la somme pondérée est grande, plus la sortie sera proche de 1 (mais ne lui sera jamais exactement égale). À l’inverse, plus la somme pondérée est petite, plus la sortie du neurone sera proche de 0.

Par exemple, le rendement de notre neurone est de 0,8. Cela signifie qu'il estime qu'aller à la mer en vaut toujours la peine. Si son rendement était égal à 0,2, cela signifie qu'il est presque certainement contre la mer.

Quelles sont les propriétés remarquables de la fonction logistique ?

  • c'est une fonction « compressive », c'est-à-dire que quel que soit l'argument (somme pondérée), le signal de sortie sera toujours compris entre 0 et 1
  • elle est plus flexible que la fonction de saut unique - son résultat peut être non seulement 0 et 1, mais n'importe quel nombre intermédiaire
  • en tout point il a une dérivée, et cette dérivée peut être exprimée par la même fonction

C’est en raison de ces propriétés que la fonction logistique est le plus souvent utilisée comme fonction d’activation dans les neurones artificiels.

Tangente hyperbolique

Cependant, il existe une autre sigmoïde : la tangente hyperbolique. Il est utilisé comme fonction d’activation par les biologistes pour créer un modèle plus réaliste d’une cellule nerveuse.

Cette fonction permet d'obtenir des valeurs de sortie de différents signes (par exemple de -1 à 1), ce qui peut être utile pour un certain nombre de réseaux.

La fonction s'écrit comme suit :

\[ out(net) = \tanh\left(\frac(net)(a)\right) \]

Dans la formule ci-dessus, le paramètre ​\(a \) ​ détermine également le degré d'inclinaison du graphique de cette fonction.

Et voici à quoi ressemble le graphique de cette fonction.

Comme vous pouvez le voir, cela ressemble au graphique d’une fonction logistique. La tangente hyperbolique possède toutes les propriétés utiles de la fonction logistique.

Qu'avons-nous appris ?

Vous avez désormais une compréhension complète de la structure interne d’un neurone artificiel. Je vais encore une fois donner une brève description de son travail.

Un neurone a des entrées. Ils reçoivent des signaux sous forme de nombres. Chaque entrée a son propre poids (également un nombre). Les signaux d'entrée sont multipliés par les poids correspondants. Nous obtenons un ensemble de signaux d’entrée « pondérés ».

La somme pondérée est ensuite convertie fonction d'activation et nous obtenons sortie neuronale.

Formulons maintenant la description la plus courte du fonctionnement d'un neurone – son modèle mathématique :

Modèle mathématique d'un neurone artificiel avec ​\(n \) ​ entrées :


​\(\phi \) ​ – fonction d’activation
\(\somme\limites^n_(i=1)x_iw_i \)​ – somme pondérée, comme la somme des ​\(n\) ​ produits des signaux d'entrée par les poids correspondants.

Types d'ANN

Nous avons compris la structure d'un neurone artificiel. Les réseaux de neurones artificiels sont constitués d'un ensemble de neurones artificiels. Une question logique se pose : comment placer/connecter ces mêmes neurones artificiels entre eux ?

En règle générale, la plupart des réseaux de neurones ont ce qu'on appelle couche d'entrée, qui n'effectue qu'une seule tâche : distribuer les signaux d'entrée à d'autres neurones. Les neurones de cette couche n'effectuent aucun calcul.

Réseaux de neurones monocouches

Dans les réseaux de neurones monocouches, les signaux de la couche d’entrée sont immédiatement transmis à la couche de sortie. Il effectue les calculs nécessaires dont les résultats sont immédiatement envoyés aux sorties.

Un réseau de neurones monocouche ressemble à ceci :

Dans cette image, la couche d'entrée est indiquée par des cercles (elle n'est pas considérée comme une couche de réseau neuronal) et à droite se trouve une couche de neurones ordinaires.

Les neurones sont reliés entre eux par des flèches. Au-dessus des flèches se trouvent les poids des connexions correspondantes (coefficients de pondération).

Réseau neuronal monocouche (Réseau neuronal monocouche) - un réseau dans lequel les signaux de la couche d'entrée sont immédiatement transmis à la couche de sortie, qui convertit le signal et produit immédiatement une réponse.

Réseaux de neurones multicouches

De tels réseaux, en plus des couches d'entrée et de sortie des neurones, sont également caractérisés par une ou plusieurs couches cachées. Leur emplacement est facile à comprendre : ces couches sont situées entre les couches d'entrée et de sortie.

Cette structure de réseaux neuronaux copie la structure multicouche de certaines parties du cerveau.

Ce n'est pas un hasard si la couche cachée tire son nom. Le fait est que ce n’est que relativement récemment que des méthodes d’entraînement des neurones des couches cachées ont été développées. Avant cela, seuls les réseaux de neurones monocouches étaient utilisés.

Les réseaux neuronaux multicouches ont des capacités bien supérieures à celles à couche unique.

Le travail des couches cachées de neurones peut être comparé au travail d’une grande usine. Le produit (signal de sortie) à l'usine est assemblé par étapes. Après chaque machine, un résultat intermédiaire est obtenu. Les couches cachées transforment également les signaux d'entrée en résultats intermédiaires.

Réseau neuronal multicouche (Réseau neuronal multicouche) - un réseau de neurones constitué d'une entrée, d'une sortie et d'une (plusieurs) couches cachées de neurones situées entre elles.

Réseaux de distribution directe

Vous pouvez en remarquer un très détail intéressant dans les images des réseaux de neurones dans les exemples ci-dessus.

Dans tous les exemples, les flèches vont strictement de gauche à droite, c'est-à-dire que le signal dans de tels réseaux va strictement de la couche d'entrée à la couche de sortie.

Réseaux de distribution directe (Réseau neuronal à action directe) (réseaux feedforward) - réseaux de neurones artificiels dans lesquels le signal se propage strictement de la couche d'entrée à la couche de sortie. Le signal ne se propage pas en sens inverse.

De tels réseaux sont largement utilisés et résolvent avec succès une certaine classe de problèmes : prévision, regroupement et reconnaissance.

Cependant, personne n'interdit le signal pour aller à verso.

Réseaux de rétroaction

Dans les réseaux de ce type, le signal peut également aller en sens inverse. Quel est l'avantage ?

Le fait est que dans les réseaux à action directe, la sortie du réseau est déterminée par le signal d'entrée et les coefficients de pondération des neurones artificiels.

Et dans les réseaux avec rétroaction, les sorties des neurones peuvent revenir aux entrées. Cela signifie que la sortie d'un neurone est déterminée non seulement par ses poids et son signal d'entrée, mais également par les sorties précédentes (puisqu'elles sont revenues aux entrées).

La capacité des signaux à circuler dans un réseau ouvre de nouvelles possibilités étonnantes pour les réseaux de neurones. En utilisant de tels réseaux, vous pouvez créer des réseaux de neurones qui restaurent ou complètent les signaux. En d’autres termes, ces réseaux neuronaux ont les propriétés de la mémoire à court terme (comme celle d’une personne).

Réseaux de rétroaction (Réseau neuronal récurrent) - des réseaux de neurones artificiels dans lesquels la sortie d'un neurone peut être renvoyée vers son entrée. Plus généralement, cela signifie la capacité de propager un signal des sorties vers les entrées.

Formation aux réseaux de neurones

Examinons maintenant la question de la formation d'un réseau de neurones plus en détail. Ce que c'est? Et comment cela se produit-il ?

Qu'est-ce que la formation en réseau ?

Un réseau de neurones artificiels est un ensemble de neurones artificiels. Prenons maintenant, par exemple, 100 neurones et connectons-les les uns aux autres. Il est clair que lorsque nous appliquons un signal à l’entrée, nous obtiendrons quelque chose de dénué de sens à la sortie.

Cela signifie que nous devons modifier certains paramètres du réseau jusqu'à ce que le signal d'entrée soit converti en sortie dont nous avons besoin.

Que peut-on changer dans un réseau de neurones ?

Changer le nombre total de neurones artificiels n’a aucun sens pour deux raisons. Premièrement, l’augmentation du nombre d’éléments informatiques dans son ensemble ne fait que rendre le système plus lourd et plus redondant. Deuxièmement, si vous rassemblez 1 000 imbéciles au lieu de 100, ils ne seront toujours pas en mesure de répondre correctement à la question.

L'additionneur ne peut pas être modifié, car il en effectue un de manière rigide fonction donnée- pli. Si nous le remplaçons par quelque chose ou le supprimons complètement, ce ne sera plus du tout un neurone artificiel.

Si nous modifions la fonction d’activation de chaque neurone, nous obtiendrons un réseau neuronal trop hétérogène et incontrôlable. De plus, dans la plupart des cas, les neurones des réseaux neuronaux sont du même type. Autrement dit, ils ont tous la même fonction d’activation.

Il ne reste qu'une seule option - changer les poids de connexion.

Formation aux réseaux de neurones (Entraînement)- rechercher un tel ensemble de coefficients de pondération dans lequel le signal d'entrée, après avoir traversé le réseau, est converti en la sortie dont nous avons besoin.

Cette approche du terme « entraînement aux réseaux de neurones » correspond également aux réseaux de neurones biologiques. Notre cerveau est constitué d’un grand nombre de réseaux neuronaux connectés les uns aux autres. Chacun d'eux est constitué individuellement de neurones du même type (la fonction d'activation est la même). Nous apprenons en modifiant les synapses - des éléments qui renforcent/affaiblissent le signal d'entrée.

Cependant, il y a un autre point important. Si vous entraînez un réseau en utilisant un seul signal d’entrée, le réseau « se souviendra simplement de la bonne réponse ». De l'extérieur, il semblera qu'elle a « appris » très vite. Et dès que vous donnez un signal légèrement modifié, en espérant voir la bonne réponse, le réseau produira des bêtises.

En fait, pourquoi avons-nous besoin d’un réseau qui détecte un visage sur une seule photo ? Nous espérons que le réseau sera capable généraliser certains signes et reconnaître des visages sur d'autres photographies également.

C'est dans ce but qu'ils sont créés échantillons de formation.

Ensemble d'entraînement (Ensemble d'entraînement) - un ensemble fini de signaux d'entrée (parfois accompagnés des signaux de sortie corrects) à partir desquels le réseau est formé.

Une fois le réseau formé, c'est-à-dire lorsque le réseau produit des résultats corrects pour tous les signaux d'entrée de l'ensemble de formation, il peut être utilisé dans la pratique.

Cependant, avant de lancer au combat un réseau de neurones fraîchement créé, la qualité de son travail est souvent évaluée sur la base de ce qu'on appelle échantillon de test.

Échantillon de test (Ensemble de test) - un ensemble fini de signaux d'entrée (parfois accompagnés des signaux de sortie corrects) par lesquels la qualité du réseau est évaluée.

Nous avons compris ce qu’est « l’entraînement en réseau » : choisir le bon ensemble de poids. Maintenant, la question se pose : comment former un réseau ? Dans le cas le plus général, il existe deux approches qui conduisent à des résultats différents : l’apprentissage supervisé et l’apprentissage non supervisé.

Formation tutorée

L'essence cette approche est que vous donnez un signal en entrée, regardez la réponse du réseau, puis comparez-la avec une réponse correcte et toute faite.

Point important. Ne confondez pas les bonnes réponses avec l'algorithme de solution connu ! Vous pouvez tracer le visage sur la photo avec votre doigt (bonne réponse), mais vous ne saurez pas comment vous avez fait (algorithme bien connu). La situation est la même ici.

Ensuite, à l'aide d'algorithmes spéciaux, vous modifiez les poids des connexions du réseau neuronal et lui donnez à nouveau un signal d'entrée. Vous comparez sa réponse avec la bonne réponse et répétez ce processus jusqu'à ce que le réseau commence à répondre avec une précision acceptable (comme je l'ai dit au chapitre 1, le réseau ne peut pas donner de réponses précises et sans ambiguïté).

Formation tutorée (Enseignement supervisé) est un type de formation en réseau dans lequel ses pondérations sont modifiées de manière à ce que les réponses du réseau diffèrent le moins possible des réponses correctes déjà préparées.

Où puis-je obtenir les bonnes réponses ?

Si nous voulons que le réseau reconnaisse les visages, nous pouvons créer un ensemble d'entraînement de 1 000 photos (signaux d'entrée) et sélectionner indépendamment des visages (réponses correctes).

Si nous voulons que le réseau prévoie les augmentations/baisses de prix, alors l'échantillon de formation doit être créé sur la base de données passées. Comme signaux d'entrée, vous pouvez prendre certains jours, l'état général du marché et d'autres paramètres. Et les bonnes réponses sont la hausse et la baisse des prix à cette époque.

Il convient de noter que l’enseignant, bien entendu, n’est pas nécessairement une personne. Le fait est que parfois le réseau doit être entraîné pendant des heures et des jours, en effectuant des milliers et des dizaines de milliers de tentatives. Dans 99 % des cas, ce rôle est assuré par un ordinateur, ou plus précisément, par un programme informatique spécial.

Apprentissage non supervisé

L'apprentissage non supervisé est utilisé lorsque nous n'avons pas les bonnes réponses aux signaux d'entrée. Dans ce cas, l'ensemble de la formation est constitué d'un ensemble de signaux d'entrée.

Que se passe-t-il lorsque le réseau est formé de cette manière ? Il s'avère qu'avec une telle « formation », le réseau commence à distinguer les classes de signaux fournis à l'entrée. En bref, le réseau commence à se regrouper.

Par exemple, vous présentez des bonbons, des pâtisseries et des gâteaux au réseau. Vous ne réglez en aucune manière le fonctionnement du réseau. Vous alimentez simplement ses données d'entrée sur cet objet. Au fil du temps, le réseau commencera à produire des signaux de trois types différents, responsables des objets en entrée.

Apprentissage non supervisé (Apprentissage non supervisé) est un type de formation de réseau dans lequel le réseau classe indépendamment les signaux d'entrée. Les signaux de sortie (de référence) corrects ne sont pas affichés.

conclusions

Dans ce chapitre, vous avez tout appris sur la structure d’un neurone artificiel, ainsi qu’une compréhension approfondie de son fonctionnement (et de son modèle mathématique).

De plus, vous connaissez désormais différents types de réseaux de neurones artificiels : réseaux monocouches, multicouches, feedforward et feedback.

Vous avez également découvert l’apprentissage en réseau supervisé et non supervisé.

Vous connaissez déjà la théorie nécessaire. Les chapitres suivants incluent l'examen de types spécifiques de réseaux de neurones, d'algorithmes spécifiques pour leur formation et de pratiques de programmation.

Questions et tâches

Vous devez très bien connaître le contenu de ce chapitre, car il contient des informations théoriques de base sur les réseaux de neurones artificiels. Assurez-vous d'obtenir des réponses sûres et correctes à toutes les questions et tâches ci-dessous.

Décrire les simplifications des ANN par rapport aux réseaux de neurones biologiques.

1. La structure complexe et complexe des réseaux de neurones biologiques est simplifiée et représentée sous forme de diagrammes. Il ne reste que le modèle de traitement du signal.

2. La nature des signaux électriques dans les réseaux neuronaux est la même. La seule différence est leur taille. Nous supprimons les signaux électriques et utilisons à la place des nombres indiquant l'ampleur du signal transmis.

La fonction d'activation est souvent désignée par ​\(\phi(net) \) ​.

Écrivez un modèle mathématique d'un neurone artificiel.

Un neurone artificiel avec ​\(n \) ​ entrées convertit un signal d'entrée (nombre) en un signal de sortie (nombre) comme suit :

\[ out=\phi\left(\sum\limits^n_(i=1)x_iw_i\right) \]

Quelle est la différence entre les réseaux de neurones monocouches et multicouches ?

Les réseaux de neurones monocouches sont constitués d’une seule couche informatique de neurones. La couche d'entrée envoie des signaux directement à la couche de sortie, qui convertit le signal et produit immédiatement le résultat.

Les réseaux neuronaux multicouches, en plus des couches d'entrée et de sortie, comportent également des couches cachées. Ces couches cachées effectuent des transformations intermédiaires internes, similaires aux étapes de production des produits dans une usine.

Quelle est la différence entre les réseaux feedforward et les réseaux feedback ?

Les réseaux à réaction permettent au signal de passer dans une seule direction : des entrées aux sorties. Les réseaux avec rétroaction n'ont pas ces restrictions et les sorties des neurones peuvent être réinjectées dans les entrées.

Qu'est-ce qu'un ensemble de formation ? Quelle est sa signification ?

Avant d'utiliser le réseau dans la pratique (par exemple, pour résoudre des problèmes actuels pour lesquels vous n'avez pas de réponses), vous devez collecter un ensemble de problèmes avec des réponses toutes faites, sur lesquels former le réseau. Cette collection est appelée l’ensemble de formation.

Si vous collectez un ensemble trop petit de signaux d'entrée et de sortie, le réseau se souviendra simplement des réponses et l'objectif d'apprentissage ne sera pas atteint.

Qu’entend-on par formation en réseau ?

L'entraînement en réseau est le processus de modification des coefficients de pondération des neurones artificiels du réseau afin d'en sélectionner une combinaison qui convertit le signal d'entrée en la sortie correcte.

Qu’est-ce que l’apprentissage supervisé et non supervisé ?

Lors de la formation d'un réseau avec un enseignant, des signaux sont transmis à ses entrées, puis sa sortie est comparée à une sortie correcte connue précédemment. Ce processus est répété jusqu'à ce que l'exactitude requise des réponses soit atteinte.

Si les réseaux fournissent uniquement des signaux d'entrée, sans les comparer aux sorties prêtes, alors le réseau commence à classer indépendamment ces signaux d'entrée. En d’autres termes, il effectue un regroupement des signaux d’entrée. Ce type d’apprentissage est appelé apprentissage non supervisé.

LES RÉSEAUX DE NEURONES structures logiques artificielles et multicouches hautement parallèles (c'est-à-dire avec un grand nombre d'éléments fonctionnant indépendamment en parallèle) composées de neurones formels. Le début de la théorie des réseaux de neurones et neuroordinateursétabli par les travaux des neurophysiologistes américains W. McCulloch et W. Pitts, « A Logical Calculus of Ideas Relating to Nervous Activity » (1943), dans lequel ils proposent un modèle mathématique du neurone biologique. Parmi les travaux fondamentaux, il faut souligner le modèle de D. Hebb, qui proposa en 1949 une loi d'apprentissage, qui fut le point de départ de l'apprentissage des algorithmes pour les réseaux de neurones artificiels. Sur la poursuite du développement La théorie du réseau neuronal a été considérablement influencée par la monographie du neurophysiologiste américain F. Rosenblatt, « Principes de neurodynamique », dans laquelle il décrit en détail le circuit d'un perceptron (un dispositif qui modélise le processus de perception de l'information par l'être humain). cerveau). Ses idées ont été développées dans les travaux scientifiques de nombreux auteurs. En 1985-1986 la théorie des réseaux de neurones a reçu une « impulsion technologique » provoquée par la possibilité de modéliser les réseaux de neurones sur les technologies disponibles et performantes apparues à cette époque Ordinateur personnel. La théorie des réseaux de neurones continue de se développer assez activement au début du 21e siècle. Selon les experts, une croissance technologique significative dans le domaine de la conception de réseaux neuronaux et de neuroordinateurs est attendue dans un avenir proche. Ces dernières années, de nombreuses nouvelles possibilités des réseaux de neurones ont déjà été découvertes, et les travaux dans ce domaine apportent une contribution significative à l'industrie, à la science et à la technologie et revêtent une grande importance économique.

Principaux domaines d'application des réseaux de neurones

Les domaines d'application potentiels des réseaux de neurones artificiels sont ceux où l'intelligence humaine est inefficace et où les calculs traditionnels demandent beaucoup de main-d'œuvre ou sont physiquement inadéquats (c'est-à-dire qu'ils ne reflètent pas ou mal les processus et objets physiques réels). La pertinence de l'utilisation des réseaux de neurones (c'est-à-dire les neuroordinateurs) augmente à plusieurs reprises lorsqu'il est nécessaire de résoudre tâches mal formalisées h. Principaux domaines d'application des réseaux de neurones : automatisation du processus de classification, automatisation des prévisions, automatisation du processus de reconnaissance, automatisation du processus décisionnel ; gestion, codage et décodage d'informations; approximation des dépendances, etc.

Avec l'aide des réseaux de neurones, un problème important dans le domaine de télécommunications– conception et optimisation des réseaux de communication (trouver le chemin de trafic optimal entre les nœuds). En plus de contrôler le routage des flux, les réseaux de neurones sont utilisés pour obtenir des solutions efficaces dans le domaine de la conception de nouveaux réseaux de télécommunications.

Reconnaissance de la parole– l'un des domaines d'application les plus populaires des réseaux de neurones.

Un autre domaine - gestion des prix et de la production(les pertes dues à une planification de production sous-optimale sont souvent sous-estimées). Étant donné que la demande et les conditions de vente des produits dépendent du temps, de la saison, des taux de change et de nombreux autres facteurs, le volume de production doit varier de manière flexible afin de utilisation optimale ressources (le système de réseau neuronal détecte des dépendances complexes entre les coûts publicitaires, les volumes de ventes, le prix, les prix des concurrents, le jour de la semaine, la saison, etc.). Grâce à l'utilisation du système, la stratégie de production optimale est sélectionnée du point de vue de la maximisation du volume des ventes ou du profit.

À analyse du marché de consommation(marketing), lorsque les méthodes conventionnelles (classiques) pour prédire les réponses des consommateurs peuvent ne pas être suffisamment précises, un système de réseau neuronal prédictif avec une architecture de neurosimulateur adaptatif est utilisé.

Recherche sur la demande permet de maintenir l’activité de l’entreprise dans un environnement concurrentiel, c’est-à-dire de maintenir un contact constant avec les consommateurs grâce au « feedback ». Les grandes entreprises mènent des enquêtes auprès des consommateurs pour découvrir quels facteurs sont décisifs pour elles lors de l'achat d'un produit ou d'un service donné, pourquoi dans certains cas la préférence est donnée aux concurrents et quels produits le consommateur aimerait voir à l'avenir. Analyser les résultats d'une telle enquête est une tâche assez difficile, car il existe un grand nombre de paramètres corrélés. Le système de réseau neuronal vous permet d'identifier les dépendances complexes entre les facteurs de demande, de prédire le comportement des consommateurs lors de changements de politiques marketing, de trouver les facteurs les plus importants et les stratégies publicitaires optimales, et également de définir le segment de consommation le plus prometteur pour un produit donné.

DANS diagnostic médical les réseaux neuronaux sont utilisés, par exemple, pour diagnostiquer l’audition chez les nourrissons. Le système de diagnostic objectif traite les « potentiels évoqués » (réponses cérébrales) enregistrés, qui apparaissent sous forme de salves sur l'électroencéphalogramme, en réponse à un stimulus audio synthétisé lors de l'examen. En règle générale, pour diagnostiquer en toute confiance l’audition d’un enfant, un audiologiste expérimenté doit effectuer jusqu’à 2 000 tests, ce qui prend environ une heure. Un système basé sur un réseau neuronal est capable de déterminer le niveau d'audition avec la même fiabilité à partir de 200 observations en quelques minutes seulement et sans la participation de personnel qualifié.

Les réseaux de neurones sont également utilisés pour la prévision tendances à court et à long terme dans divers domaines (financier, économique, bancaire, etc.).

Structure des réseaux de neurones

Le système nerveux humain et le cerveau sont constitués de neurones reliés entre eux par des fibres nerveuses. Les fibres nerveuses sont capables de transmettre des impulsions électriques entre les neurones. Tous les processus de transmission des irritations de notre peau, de nos oreilles et de nos yeux au cerveau, les processus de pensée et de contrôle des actions - tout cela est mis en œuvre dans un organisme vivant sous la forme de la transmission d'impulsions électriques entre neurones.

Neurone biologique(Cellule) a un noyau (Nucleus), ainsi que des processus de fibres nerveuses de deux types (Fig. 1) - des dendrites (Dendrites), le long desquelles les impulsions sont reçues (Transporte les signaux) et un seul axone (Axone), le long duquel un neurone peut transmettre une impulsion (emporte les signaux). L'axone entre en contact avec les dendrites d'autres neurones à travers des formations spéciales - les synapses (Synapses), qui affectent la force de l'impulsion transmise. Une structure composée d'une collection grande quantité Ces neurones sont appelés réseaux neuronaux biologiques (ou naturels).

Apparence neurone formel en grande partie grâce à l’étude des neurones biologiques. Un neurone formel (ci-après dénommé neurone) constitue la base de tout réseau neuronal artificiel. Les neurones sont des éléments relativement simples et uniformes qui imitent le fonctionnement des neurones du cerveau. Chaque neurone est caractérisé par son état actuel par analogie avec les cellules nerveuses du cerveau, qui peuvent être excitées et inhibées. Un neurone artificiel, comme son prototype naturel, possède un groupe de synapses (entrées) qui sont connectées aux sorties d'autres neurones, ainsi qu'un axone - la connexion de sortie d'un neurone donné, d'où arrive le signal d'excitation ou d'inhibition. les synapses d'autres neurones.

Un neurone formel est un élément logique avec $N$ entrées, ($N+1$ ) coefficients de pondération, un additionneur et un convertisseur non linéaire. Le neurone formel le plus simple qui effectue une transformation logique $y = \text(signe)\sum_(i=0)^(N)a_ix_i$ les signaux d'entrée (qui, par exemple, sont les signaux de sortie d'autres neurones formels du N.S.) dans le signal de sortie sont présentés sur la Fig. 1.

Ici $y$ est la valeur de sortie du neurone formel ; $a_i$ – coefficients de pondération ; $x_i$ – valeurs d'entrée du neurone formel ($x_i∈\left \(0,1\right \),\; x_0=1$). Le processus de calcul de la valeur de sortie d'un neurone formel représente le mouvement d'un flux de données et sa transformation. Premièrement, les données arrivent au bloc d'entrée du neurone formel, où les données originales sont multipliées par les coefficients de pondération correspondants, ce qu'on appelle. poids synoptiques (en accord avec les synapses des neurones biologiques). Un facteur de pondération est une mesure qui détermine dans quelle mesure la valeur d'entrée correspondante affecte l'état d'un neurone formel. Les coefficients de pondération peuvent changer en fonction des exemples de formation, de l'architecture informatique, des règles d'apprentissage, etc. Les valeurs obtenues (par multiplication) sont converties dans l'additionneur en une valeur numérique $g$ (par sommation). Ensuite, pour déterminer la sortie du neurone formel dans le bloc de transformation non linéaire (implémentant la fonction de transfert), $g$ est comparé à un certain nombre (seuil). Si la somme est supérieure à la valeur seuil, le neurone formel génère un signal, sinon le signal sera nul ou inhibiteur. Ce neurone formel utilise une transformation non linéaire $$\text(sign)(g)= \begin(cases) 0,\; g< 0 \\ 1,\; g ⩾ 0 \end{cases},\quad \text{где}\,\,g = \sum_{i=0}^N a_i x_i.$$

Le choix de la structure du réseau neuronal s'effectue en fonction des caractéristiques et de la complexité de la tâche. Théoriquement, le nombre de couches et le nombre de neurones dans chaque couche d'un réseau neuronal peuvent être arbitraires, mais en réalité ils sont limités par les ressources d'un ordinateur ou d'une puce spécialisée sur laquelle le réseau neuronal est généralement implémenté. De plus, si une seule fonction de saut est utilisée comme fonction d'activation pour tous les neurones du réseau, le réseau de neurones est appelé perceptrono multicouche m.

En figue. La figure 3 montre le schéma général d'un réseau neuronal multicouche avec des connexions série. Un parallélisme de traitement élevé est obtenu en combinant un grand nombre de neurones formels en couches et en connectant différents neurones les uns aux autres d'une certaine manière.

De manière générale, des liens croisés et des liens de rétroaction avec des coefficients de pondération personnalisables peuvent être introduits dans cette structure (Fig. 4).

Les réseaux de neurones sont des systèmes non linéaires complexes dotés d’un grand nombre de degrés de liberté. Le principe selon lequel ils traitent l'information diffère du principe utilisé dans les ordinateurs basés sur des processeurs à architecture von Neumann - avec la base logique de AND, OR, NOT (voir J. von Neumann, Machine à calculer). Au lieu de la programmation classique (comme dans les systèmes informatiques) on utilise un entraînement au réseau de neurones, qui revient généralement à ajuster des coefficients de pondération afin d'optimiser un critère donné de qualité de fonctionnement du réseau de neurones.

Algorithmes de réseaux neuronaux

Un algorithme de réseau neuronal pour résoudre des problèmes est une procédure de calcul entièrement ou principalement mise en œuvre sous la forme d'un réseau neuronal d'une structure ou d'une autre (par exemple, un réseau neuronal multicouche avec des connexions séquentielles ou croisées entre des couches de neurones formels) avec un algorithme correspondant d'ajustement des coefficients de pondération. La base du développement d'un algorithme de réseau neuronal est une approche systémique dans laquelle le processus de résolution d'un problème est représenté comme le fonctionnement dans le temps d'un système dynamique. Pour le construire, il faut déterminer : un objet qui fait office de signal d'entrée au réseau neuronal ; un objet qui fait office de signal de sortie d'un réseau de neurones (par exemple, la solution elle-même ou certaines de ses caractéristiques) ; signal de sortie souhaité (obligatoire) du réseau neuronal ; structure du réseau de neurones (nombre de couches, connexions entre couches, objets servant de coefficients de pondération) ; fonction d'erreur système (caractérisant l'écart du signal de sortie souhaité du réseau neuronal par rapport au signal de sortie réel) ; critère de qualité du système et de sa fonctionnalité d'optimisation, en fonction de l'erreur ; la valeur des coefficients de pondération (par exemple, déterminée analytiquement directement à partir de l'énoncé du problème, en utilisant certaines méthodes numériques ou la procédure d'ajustement des coefficients de pondération d'un réseau de neurones).

Le nombre et le type de neurones formels dans les couches, ainsi que le nombre de couches de neurones, sont sélectionnés en fonction des spécificités des problèmes à résoudre et de la qualité requise de la solution. Un réseau de neurones, en train d'être configuré pour résoudre un problème spécifique, est considéré comme un système non linéaire multidimensionnel qui, en mode itératif, recherche délibérément l'optimum d'une fonctionnalité qui détermine quantitativement la qualité de la solution au problème. Pour les réseaux de neurones, en tant qu'objets de contrôle non linéaires multidimensionnels, des algorithmes sont formés pour ajuster divers coefficients de pondération. Les principales étapes de l'étude d'un réseau de neurones et de la construction d'algorithmes pour fixer (adapter) leurs coefficients de pondération comprennent : l'étude des caractéristiques du signal d'entrée pour différents modes de fonctionnement du réseau de neurones (le signal d'entrée du réseau de neurones est, en règle générale , les informations traitées d'entrée et l'indication du soi-disant « enseignant » du réseau neuronal ); sélection de critères d'optimisation (avec un modèle probabiliste monde extérieur ces critères peuvent être le minimum de la fonction de risque moyenne, le maximum de la probabilité a posteriori, notamment s'il existe des restrictions sur les composantes individuelles de la fonction de risque moyenne) ; développement d'un algorithme de recherche d'extrema de fonctionnelles d'optimisation (par exemple, pour mettre en œuvre des algorithmes de recherche d'extrema locaux et globaux) ; construction d'algorithmes d'adaptation des coefficients des réseaux de neurones ; analyse de la fiabilité et méthodes de diagnostic d'un réseau de neurones, etc.

Il convient de noter que l'introduction du feedback et, par conséquent, le développement d'algorithmes d'ajustement de leurs coefficients dans les années 1960-1980 avaient une signification purement théorique, puisqu'il n'existait pas de problèmes pratiques adaptés à de telles structures. Ce n’est qu’à la fin des années 1980 et au début des années 1990 que de tels problèmes et des structures simples dotées de boucles de rétroaction personnalisables pour les résoudre (les réseaux neuronaux dits récurrents) ont commencé à apparaître. Les développeurs dans le domaine des technologies de réseaux neuronaux étaient engagés non seulement dans la création d'algorithmes pour la configuration de réseaux neuronaux multicouches et d'algorithmes de réseaux neuronaux pour résoudre divers problèmes, mais également dans les émulateurs matériels les plus efficaces (à l'heure actuelle dans le développement de la technologie électronique). (programmes spéciaux conçus pour exécuter un système dans le shell d'un autre) algorithmes de réseau neuronal. Dans les années 1960, avant l'avènement du microprocesseur, les émulateurs de réseaux neuronaux les plus efficaces étaient des implémentations analogiques de réseaux neuronaux en boucle ouverte avec des algorithmes de réglage développés sur des ordinateurs centraux (parfois des systèmes basés sur des éléments adaptatifs avec mémoire analogique). Ce niveau de développement de l’électronique rendait urgent l’introduction de connexions croisées dans les structures des réseaux neuronaux. Cela a conduit à une réduction significative du nombre de neurones dans le réseau neuronal tout en maintenant la qualité de la solution au problème (par exemple, la capacité discriminante lors de la résolution de problèmes de reconnaissance de formes). Les recherches des années 60 et 70 dans le domaine de l'optimisation des structures des réseaux de neurones interconnectés seront certainement développées dans la mise en œuvre systèmes neuronaux memristor[memristor (memristor, de mémoire – mémoire, et résistance – résistance électrique), élément passif en microélectronique, capable de changer sa résistance en fonction de la charge qui le traverse], en tenant compte de leur spécificité en termes de traitement de l'information analogique-numérique et un montant très important de coefficients personnalisables. Les exigences spécifiques des problèmes appliqués ont déterminé certaines caractéristiques des structures des réseaux de neurones à l'aide d'algorithmes de réglage : un continuum (du latin continuum - continu, continu) du nombre de classes, lorsque l'indication du « professeur » du système est formée sous la forme d'une valeur de fonction continue dans une certaine plage de changement ; un continuum de solutions d'un réseau neuronal multicouche, formé par le choix de la fonction d'activation continue du neurone de la dernière couche ; continuum du nombre de caractéristiques, formé par la transition dans l'espace des caractéristiques de la représentation du signal de sortie sous la forme d'un vecteur $N$-dimensionnel de nombres réels à une fonction réelle dans une certaine plage de changements dans l'argument ; le continuum du nombre de fonctionnalités nécessite par conséquent une implémentation logicielle et matérielle spécifique d'un réseau neuronal ; une variante du continuum des fonctionnalités de l'espace d'entrée a été implémentée dans la tâche de reconnaissance signaux périodiques sans les convertir avec Convertisseur analogique-numérique(ADC) à l'entrée du système, et la mise en œuvre d'un réseau neuronal multicouche analogique-numérique ; continuum du nombre de neurones dans une couche ; La mise en œuvre de réseaux de neurones multicouches avec un continuum de classes et de solutions s'effectue en sélectionnant les types appropriés de fonctions d'activation des neurones de la dernière couche.

Le tableau présente un ensemble systématique d'options pour les algorithmes permettant de mettre en place des réseaux de neurones multicouches dans l'espace « Signal d'entrée – espace de solution ». De nombreuses options sont présentées pour les caractéristiques des signaux d'entrée et de sortie des réseaux de neurones, pour lesquelles les algorithmes d'ajustement des coefficients développés par l'école scientifique russe dans les années 1960-1970 sont valables. Le signal à l'entrée du réseau de neurones est décrit par le nombre de classes (gradations) d'images représentant les instructions du « professeur ». Le résultat du réseau neuronal est une description quantitative de l’espace de solutions. Le tableau fournit une classification des options pour le fonctionnement des réseaux de neurones pour divers types signal d'entrée (2 classes, classes $K$, continuum de classes) et diverses options pour une description quantitative de l'espace des solutions (2 solutions, solutions $K_p$, continuum de solutions). Les nombres 1, 7, 8 représentent des options spécifiques pour le fonctionnement des réseaux de neurones.

Tableau. Un ensemble d'options d'algorithme de configuration

Espace (nombre) de solutions

Signal d'entrée

2 coursCours $K$Continuité des cours
2 1 7 8
$K_p$$K_p=3$3a$K\lt K_p$9 10
$K = K_p$2
$K_p =\texte(const)$3b$K\gt K_p$4
Continuum5 6 11

Les principaux avantages des réseaux de neurones comme base logique pour les algorithmes de solution tâches complexes sont : l'invariance (constance, indépendance) des méthodes de synthèse des réseaux de neurones sur la dimension de l'espace des caractéristiques ; la capacité de sélectionner la structure des réseaux de neurones dans une large gamme de paramètres en fonction de la complexité et des spécificités du problème à résoudre afin d'obtenir la qualité de solution requise ; adéquation aux technologies microélectroniques actuelles et prometteuses ; tolérance aux pannes dans le sens d'un changement mineur, plutôt que catastrophique, de la qualité de la solution à un problème en fonction du nombre d'éléments défaillants.

Les réseaux de neurones sont un type particulier d'objet de contrôle dans un système adaptatif

Les réseaux de neurones ont été l'un des premiers exemples dans la théorie du contrôle de la transition du contrôle du système linéaire le plus simple. systèmes stationnairesà la gestion de systèmes complexes non linéaires, non stationnaires, multidimensionnels et multiconnectés. Dans la seconde moitié des années 1960 est née la méthode de synthèse des réseaux de neurones, qui s'est développée et a été appliquée avec succès au cours des cinquante années suivantes. La structure générale de cette technique est présentée dans la Fig. 5.

Signaux d'entrée des réseaux de neurones

Un modèle probabiliste du monde environnant constitue la base des technologies de réseaux neuronaux. Ce modèle est la base statistiques mathématiques. Les réseaux de neurones sont apparus juste au moment où les expérimentateurs utilisant des méthodes de statistiques mathématiques se posaient la question : « Pourquoi sommes-nous obligés de décrire les fonctions de distribution des signaux aléatoires d'entrée sous la forme d'expressions analytiques spécifiques (distribution normale, distribution de Poisson, etc.) ? Si cela est correct et qu’il y a une raison physique à cela, alors la tâche de traitement des signaux aléatoires devient assez simple. »

Les spécialistes des technologies de réseaux neuronaux ont déclaré : « Nous ne savons rien de la fonction de distribution des signaux d'entrée, nous refusons la nécessité d'une description formelle de la fonction de distribution des signaux d'entrée, même si nous réduisons la classe de problèmes à résoudre. Nous considérons les fonctions de distribution des signaux d'entrée comme complexes et inconnues, et nous résoudrons des problèmes spécifiques spécifiques dans de telles conditions. incertitude a priori(c'est-à-dire une description incomplète ; il n'y a aucune information sur les résultats possibles). C’est pourquoi les réseaux de neurones ont été utilisés efficacement pour résoudre les problèmes de reconnaissance de formes au début des années 1960. De plus, le problème de la reconnaissance de formes a été interprété comme un problème d’approximation d’une dimension multidimensionnelle. fonction aléatoire, en prenant les valeurs $K$, où $K$ est le nombre de classes d'images.

Vous trouverez ci-dessous quelques modes de fonctionnement des réseaux de neurones multicouches, déterminés par les caractéristiques des signaux d'entrée aléatoires, pour lesquels des algorithmes d'ajustement des coefficients ont été développés à la fin des années 1960.

Entraînement des réseaux de neurones

Il est évident que le fonctionnement du réseau neuronal, c'est-à-dire les actions qu'il est capable d'accomplir, dépend de l'ampleur des connexions synoptiques. Par conséquent, après avoir donné la structure d'un réseau de neurones répondant à une certaine tâche, le développeur doit trouver valeurs optimales pour tous les coefficients de pondération $w$ . Cette étape est appelée formation du réseau neuronal, et la capacité du réseau à résoudre les problèmes qui lui sont posés pendant le fonctionnement dépend de la qualité de son exécution. Les paramètres les plus importants la formation sont : la qualité de la sélection des coefficients de pondération et le temps à consacrer à la formation. En règle générale, ces deux paramètres sont inversement liés et doivent être choisis sur la base d'un compromis. Actuellement, tous les algorithmes de formation de réseaux neuronaux peuvent être divisés en deux grandes classes : « supervisé » et « non supervisé ».

Probabilités antérieures d'apparition en classe

Malgré l'insuffisance d'informations a priori sur les fonctions de distribution des signaux d'entrée, ignorer certaines informations utiles peut entraîner une perte de qualité dans la résolution du problème. Cela concerne principalement les probabilités a priori d’apparition de classes. Des algorithmes de mise en place de réseaux de neurones multicouches ont été développés en tenant compte des informations disponibles sur les probabilités a priori d'apparition de classes. Cela se produit dans des tâches telles que la reconnaissance de lettres dans un texte, lorsque pour une langue donnée la probabilité d'apparition de chaque lettre est connue et que ces informations doivent être utilisées lors de la construction d'un algorithme d'ajustement des coefficients d'un réseau neuronal multicouche.

Qualification d'enseignant

Le réseau neuronal reçoit les valeurs des paramètres d'entrée et de sortie et, selon un algorithme interne, ajuste les poids de ses connexions synaptiques. L'apprentissage supervisé suppose que pour chaque vecteur d'entrée, il existe un vecteur cible qui représente la sortie souhaitée. En général, les qualifications d'un « enseignant » peuvent être différentes pour différentes classes d'images. Ensemble, ils sont appelés représentant ou échantillon de formation y. Généralement, un réseau de neurones est formé sur un certain nombre de ces échantillons. Un vecteur de sortie est présenté, la sortie du réseau neuronal est calculée et comparée au vecteur cible correspondant, la différence (erreur) est renvoyée au réseau neuronal et les poids sont modifiés selon un algorithme qui cherche à minimiser l'erreur. . 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 les tâches de reconnaissance de formes, en règle générale, la qualification par défaut de « l'enseignant » est complète, c'est-à-dire la probabilité que le « professeur » attribue correctement les images à une classe ou à une autre est égale à un. En pratique, en présence de mesures indirectes, cela n'est souvent pas vrai, par exemple dans les tâches de diagnostic médical, lorsque lors de la vérification (vérification) d'une archive de données médicales destinées à la formation, la probabilité d'attribuer ces données à une maladie particulière est pas égal à un. L'introduction du concept de qualification « enseignant » a permis de développer des algorithmes unifiés d'ajustement des coefficients des réseaux de neurones multicouches pour les modes d'apprentissage, l'apprentissage « avec un enseignant » à qualifications finies et l'auto-apprentissage (clustering), lorsque, en en présence de $K$ ou de deux classes d'images, la qualification du « professeur » (la probabilité d'attribuer des images à une classe ou à une autre) est égale à $\frac (1) (K)$ soit 1 / 2 . L'introduction de la notion de qualification « enseignant » dans les systèmes de reconnaissance de formes a permis d'envisager de manière purement théorique les modes de « sabotage » du système lorsqu'il est informé d'une affectation volontairement fausse (avec plus ou moins de fausseté) d'images à un classe particulière. Ce mode d'ajustement des coefficients d'un réseau de neurones multicouches n'a pas encore trouvé d'application pratique.

Regroupement

Le clustering (auto-apprentissage, apprentissage non supervisé) est mode privé le fonctionnement de réseaux de neurones multicouches, lorsque le système n'est pas informé d'informations sur les échantillons appartenant à une classe particulière. Le réseau neuronal est présenté uniquement avec des signaux d'entrée et les sorties du réseau sont formées indépendamment, en tenant compte uniquement des signaux d'entrée et de leurs dérivées. Malgré de nombreuses avancées appliquées, l’apprentissage supervisé a été critiqué pour son invraisemblance biologique. Il est difficile d’imaginer un mécanisme d’apprentissage de l’intelligence humaine naturelle qui comparerait les valeurs de sortie souhaitées et réelles, en procédant à des ajustements grâce au feedback. Si nous supposons un mécanisme similaire dans le cerveau humain, d’où proviennent les résultats souhaités ? L’apprentissage non supervisé est un modèle d’apprentissage plus plausible dans un système biologique. Il ne nécessite pas de vecteur cible pour les résultats et ne nécessite donc pas de comparaison avec des réponses idéales prédéfinies. L'ensemble de formation se compose uniquement de vecteurs d'entrée. L'algorithme d'entraînement ajuste les poids du réseau neuronal de manière à obtenir des vecteurs de sortie cohérents, c'est-à-dire de sorte que la présentation de vecteurs d'entrée suffisamment proches produise 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. Présenter un vecteur d'une classe donnée en entrée donnera 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.

De nombreux travaux scientifiques sont consacrés au clustering. La tâche principale du clustering est de traiter un ensemble de vecteurs dans un espace de fonctionnalités multidimensionnel avec la sélection de sous-ensembles compacts (sous-ensembles proches les uns des autres), leur nombre et leurs propriétés. La méthode de clustering la plus courante est la méthode « $K$ -means », qui n'a pratiquement aucun rapport avec les méthodes de rétropropagation et n'est pas généralisable à des architectures telles que les réseaux de neurones multicouches.

L'introduction du concept de qualifications « d'enseignant » et d'une approche unifiée de l'enseignement et de l'auto-apprentissage dans les années 1960 a permis de créer réellement les bases de la mise en œuvre du mode clustering dans les réseaux de neurones multicouches d'une large classe de structures.

Images non stationnaires

Les développements existants dans le domaine des systèmes de reconnaissance de formes basés sur des réseaux de neurones multicouches concernent principalement les images stationnaires, c'est-à-dire à des signaux d'entrée aléatoires qui ont des fonctions de distribution complexes inconnues mais stationnaires dans le temps. Certains travaux ont tenté d'étendre la technique proposée pour régler les réseaux de neurones multicouches à des images non stationnaires, lorsque la fonction de distribution inconnue supposée du signal d'entrée dépend du temps ou que le signal aléatoire d'entrée est une superposition d'une composante régulière et d'une composante aléatoire avec une fonction de distribution complexe inconnue qui ne dépend pas du temps.

Sur les principaux critères d'optimisation dans les réseaux de neurones multicouches

Le modèle probabiliste du monde, pris comme base pour la construction d'algorithmes d'adaptation dans les réseaux de neurones multicouches, a permis de formuler un critère d'optimisation primaire dans les systèmes considérés sous forme d'exigences pour le minimum de la fonction de risque moyen et ses modifications : le maximum de la probabilité a posteriori (la probabilité conditionnelle d'un événement aléatoire, à condition que la probabilité a posteriori, c'est-à-dire les données basées sur l'expérience) ; minimum de la fonction de risque moyenne ; minimum de la fonction de risque moyenne, sous réserve de l'égalité des fonctions de risque conditionnelles pour les différentes classes ; minimum de la fonction de risque moyenne, sous réserve d'une valeur donnée de la fonction de risque conditionnelle pour l'une des classes ; d'autres critères d'optimisation primaires découlant des exigences d'un problème pratique spécifique. Les travaux de scientifiques russes ont présenté des modifications d'algorithmes permettant de créer des réseaux neuronaux multicouches pour les principaux critères d'optimisation ci-dessus. Notez que la grande majorité des travaux dans le domaine de la théorie des réseaux neuronaux et des algorithmes de rétropropagation considèrent le critère le plus simple - l'erreur quadratique moyenne minimale, sans aucune restriction sur les fonctions de risque conditionnelles.

En mode d'auto-apprentissage (clustering), une condition préalable à la formation du critère et de la fonctionnalité pour l'optimisation primaire des réseaux de neurones est la représentation de la fonction de distribution du signal d'entrée sous la forme d'une fonction multimodale dans un espace de fonctionnalités multidimensionnel , où chaque mode avec une certaine probabilité correspond à une classe. Les modifications de la fonction de risque moyen ont été utilisées comme critères d'optimisation primaire en mode d'auto-apprentissage.

Les modifications présentées des critères d'optimisation primaires ont été généralisées aux cas d'un continuum de classes et de solutions ; continuum d'attributs de l'espace d'entrée ; continuum du nombre de neurones dans une couche ; avec des qualifications arbitraires d’enseignant. Section importante la formation d'un critère et d'une fonctionnelle pour l'optimisation primaire dans les réseaux de neurones multicouches avec un modèle probabiliste du monde est le choix d'une matrice de perte, qui dans la théorie des décisions statistiques détermine le coefficient de perte $L_(12)$ en cas de erreur affectation des images de la 1ère classe à la 2ème et le coefficient de perte $L_ (21)$ lors de l'attribution des images de la 2ème classe à la 1ère. En règle générale, par défaut, la matrice $L$ de ces coefficients lors de la synthèse d'algorithmes de réglage des réseaux de neurones multicouches, y compris lors de l'utilisation de la méthode de rétropropagation, est supposée symétrique. En pratique, ce n'est pas vrai. Un exemple typique est un système de détection de mines utilisant un géolocalisateur. Dans ce cas, les pertes dues à la classification erronée d'une pierre comme mine équivalent à une petite perte de temps pour l'utilisateur du géolocalisateur. Les pertes associées à la classification erronée d'une mine comme pierre sont associées à la vie ou à une perte de santé importante pour les utilisateurs du géolocalisateur.

Analyse des réseaux de neurones en boucle ouverte

Cette étape la synthèse vise à déterminer sous une forme générale les caractéristiques statistiques des signaux de sortie et intermédiaires des réseaux de neurones en tant qu'objets de contrôle multidimensionnels et non linéaires dans le but de développer davantage le critère et la fonctionnalité de l'optimisation secondaire, c'est-à-dire la fonctionnalité réellement optimisée par l'algorithme d'adaptation dans un réseau neuronal spécifique. Dans la grande majorité des travaux, l'erreur quadratique moyenne est prise comme une telle fonctionnelle, ce qui dégrade la qualité de la solution ou ne correspond pas du tout au problème d'optimisation posé par le critère d'optimisation primaire.

Des procédés et des algorithmes permettant de générer une fonctionnelle d'optimisation secondaire correspondant à une fonctionnelle d'optimisation primaire donnée ont été développés.

Algorithmes pour trouver l'extremum des fonctionnelles d'optimisation secondaires

L'algorithme de recherche d'un extremum par rapport à une fonctionnalité d'optimisation secondaire spécifique détermine l'algorithme d'ajustement des coefficients d'un réseau neuronal multicouche. Au début du 21e siècle, des algorithmes similaires implémentés dans le système MatLab (abréviation du package anglais « Matrix Laboratory ») présentent le plus grand intérêt pratique. programmes d'application pour résoudre des problèmes de calculs techniques et du langage de programmation du même nom). Cependant, il convient de noter la particularité des algorithmes d'adaptation dans les réseaux de neurones multicouches utilisés dans les systèmes MatLab (Neural Network Toolbox - fournit des fonctions et des applications pour la modélisation de systèmes non linéaires complexes décrits par des équations ; prend en charge l'apprentissage supervisé et non supervisé, la propagation directe, l'apprentissage radial fonctions de base, etc.), et l'orientation de ces algorithmes non pas sur les spécificités des problèmes à résoudre, mais sur la « géométrie » imaginaire des fonctionnelles secondaires d'optimisation. Ces algorithmes ne prennent pas en compte de nombreux détails sur les spécificités de l'utilisation des réseaux neuronaux multicouches lors de la résolution de problèmes spécifiques et, naturellement, nécessitent un traitement radical, voire fondamental, lors du passage aux systèmes neuronaux memristors. Un détaillé analyse comparative méthode de rétropropagation et méthodes russes des années 1960-1970. La principale caractéristique de ces algorithmes est la nécessité de rechercher des extrema locaux et globaux d'une fonctionnelle multiextrémale dans l'espace multidimensionnel des coefficients accordables du réseau neuronal. Une augmentation de la taille du réseau neuronal entraîne une augmentation significative du nombre de coefficients ajustables, c'est-à-dire une augmentation de la dimension de l'espace de recherche. Dans les années 1960, des travaux proposaient des procédures de recherche et d'analyse pour calculer le gradient de la fonctionnelle d'optimisation secondaire, et dans la classe des procédures analytiques, l'utilisation non seulement de la dérivée première, mais aussi de la dérivée seconde de la fonctionnelle d'optimisation secondaire pour organiser le une recherche a été proposée et étudiée. La spécificité du caractère multi-extrémal de la fonctionnelle secondaire d'optimisation a conduit au cours des décennies suivantes à l'émergence de diverses modifications des méthodes de recherche (algorithmes génétiques, etc.). Des algorithmes de recherche d'extrema de fonctionnelles d'optimisation secondaires avec des restrictions sur la taille, la vitesse et d'autres paramètres des coefficients de pondération des réseaux de neurones ont été créés. Ce sont ces méthodes qui devraient servir de base aux travaux sur les méthodes de réglage des réseaux de neurones utilisant des memristors (coefficients de pondération) prenant en compte des caractéristiques aussi spécifiques que les fonctions de transfert.

Conditions initiales lors de la définition des coefficients

Le choix des conditions initiales pour la procédure itérative de recherche des extrema des fonctionnelles d'optimisation secondaires est une étape importante dans la synthèse d'algorithmes de réglage des réseaux de neurones multicouches. Le problème du choix des conditions initiales doit être résolu spécifiquement pour chaque problème résolu par un réseau de neurones, et faire partie intégrante de la procédure générale de synthèse des algorithmes de mise en place de réseaux de neurones multicouches. Une solution de haute qualité à ce problème peut réduire considérablement le temps de configuration. La complexité a priori de la fonctionnelle secondaire d'optimisation a rendu nécessaire l'introduction d'une procédure de sélection de conditions initiales sous forme de valeurs aléatoires de coefficients avec répétition de cette procédure et la procédure d'ajustement des coefficients. Cette procédure semblait extrêmement redondante dans les années 1960 en termes de temps passé à ajuster les coefficients. Cependant, malgré cela, il est encore largement utilisé aujourd’hui. Pour des problèmes individuels, l'idée de choisir des conditions initiales spécifiques au problème donné à résoudre a été adoptée. Cette procédure a été testée pour trois tâches : reconnaissance de formes ; regroupement ; neuroidentification d'objets dynamiques non linéaires.

Mémoire dans le circuit de réglage des coefficients

Une approche systématique de la construction d'algorithmes de recherche de l'extremum de la fonctionnelle d'optimisation secondaire suppose, comme l'un des modes de réglage, la reconfiguration des coefficients à chaque étape de l'arrivée des images d'entrée en fonction de la valeur actuelle du gradient de la fonctionnelle d’optimisation secondaire. Des algorithmes ont été développés pour régler les réseaux de neurones multicouches avec filtrage de la séquence de valeurs de gradient de la fonctionnelle d'optimisation secondaire : un filtre d'ordre zéro avec mémoire $m_n$ (pour les images stationnaires) ; $1, …, k$-ème filtre d'ordre avec mémoire $m_n$ (pour les images non stationnaires) avec différentes hypothèses de changements dans les fonctions temporelles de distribution pour des images de différentes classes.

Etude des algorithmes d'adaptation dans les réseaux de neurones

Question principale– la manière de choisir la structure d'un réseau neuronal multicouche pour résoudre un problème spécifique sélectionné reste encore largement non résolue. Nous ne pouvons proposer qu'une sélection raisonnable et ciblée d'options structurelles avec une évaluation de leur efficacité dans le processus de résolution du problème. Cependant, en évaluant la qualité de l'algorithme de réglage sur une structure spécifique sélectionnée, tâche spécifique n'est peut-être pas assez correct. Ainsi, pour évaluer la qualité de fonctionnement des systèmes de contrôle dynamique linéaire, des signaux d'entrée standard (étape, quadratique, etc.) sont utilisés, en fonction de la réponse à laquelle l'erreur en régime permanent (astatisme du système) et les erreurs dans les processus transitoires sont évaluées. .

De même, des signaux d'entrée typiques pour les réseaux neuronaux multicouches ont été développés pour tester et comparer les performances de différents algorithmes de réglage. Naturellement, les signaux d'entrée typiques pour des objets tels que les réseaux neuronaux multicouches sont spécifiques à chaque problème à résoudre. Tout d'abord, des signaux d'entrée standard ont été développés pour les tâches suivantes : reconnaissance de formes ; regroupement ; neurocontrôle des objets dynamiques.

Le principal principe axiomatique de l'utilisation des technologies de réseaux neuronaux au lieu des méthodes de statistiques mathématiques classiques est le rejet d'une description formalisée des fonctions de distribution de probabilité pour les signaux d'entrée et l'adoption du concept de fonctions de distribution complexes et inconnues. C'est pour cette raison que les signaux d'entrée typiques suivants ont été proposés.

Pour le problème de clustering, un échantillon de signal aléatoire avec une distribution multimodale a été proposé, implémenté dans l'espace de caractéristiques $N$ -dimensionnel avec des modes de fonction de distribution, dont les centres d'un montant de $Z$ sont situés sur l'hyperbissecteur de $ Espace de fonctionnalités N$ -dimensionnel. Chaque mode implémente une composante d'échantillon aléatoire avec une distribution normale et un écart type $σ$ égal pour chacun des modes $Z$. Le sujet de comparaison des différentes méthodes de clustering sera la dynamique des réglages et la qualité de la solution du problème en fonction de $N$, $Z$ et $σ$, avec un échantillon aléatoire $M$ suffisamment grand. Cette approche peut être considérée comme l'une des premières approches assez objectives pour comparer les algorithmes de clustering, y compris ceux basés sur des réseaux de neurones multicouches avec un choix de structure approprié pour atteindre la qualité de clustering requise. Pour les problèmes de classification, les entrées du test sont similaires à celles du clustering, à la différence qu'un échantillon multimodal est divisé en deux (dans le cas de deux classes) ou en parties $K$ (dans le cas de classes $K$) avec modes intercalés de la fonction de distribution pour les classes individuelles.

Réseaux de neurones à structure variable

Le refus dans les technologies des réseaux de neurones des informations a priori, des informations sur les fonctions de distribution des signaux d'entrée, conduit à la nécessité de mettre en œuvre une énumération raisonnable des paramètres de la structure des réseaux de neurones multicouches pour assurer la qualité requise de résolution de problèmes.

Dans les années 1960, pour une classe de problèmes très pertinente à cette époque – la reconnaissance de formes – a été proposée une procédure de réglage des réseaux neuronaux multicouches, dans laquelle la structure n'est pas fixée a priori, mais est le résultat d'un réglage en fonction des valeurs. ​​des coefficients ajustés. Dans ce cas, lors du processus de configuration, le nombre de couches et le nombre de neurones dans les couches sont sélectionnés. La procédure d'ajustement des coefficients d'un réseau neuronal multicouche à structure variable se transfère facilement du problème de la reconnaissance de deux classes d'images au problème de la reconnaissance des classes d'images $K$. De plus, ici le résultat de la configuration est des réseaux de neurones $K$, dans chacun desquels la première classe est la $k$ ème classe ($k = 1, \ldots, K$ ), et la seconde est toutes les autres. Une idée similaire consistant à mettre en place des réseaux de neurones multicouches à structure variable est également applicable à la résolution du problème de clustering. Dans ce cas, l'échantillon analysé d'origine est pris comme première classe d'images, et un échantillon avec une distribution uniforme dans la plage de changements de caractéristiques est pris comme deuxième classe. Un réseau neuronal multicouche à structure variable, mis en œuvre lors du processus de configuration, reflète qualitativement et quantitativement la complexité de la résolution du problème. De ce point de vue, la tâche de clustering en tant que tâche de génération de nouvelles connaissances sur l'objet étudié consiste à identifier et à analyser les zones de l'espace des caractéristiques multidimensionnelles dans lesquelles la fonction de distribution de probabilité dépasse le niveau distribution uniforme dans la plage de changements dans les valeurs des caractéristiques.

Perspectives de développement

Au début du 21e siècle, l'un des principaux concepts de développement (formation) d'un réseau de neurones multicouches est la volonté d'augmenter le nombre de couches, et cela implique de s'assurer du choix d'une structure de réseau de neurones adaptée aux besoins. problème à résoudre et le développement de nouvelles méthodes pour créer des algorithmes d’ajustement des coefficients. Les avantages des réseaux de neurones sont : la propriété de ce qu'on appelle. dégradation progressive− lorsque des éléments individuels tombent en panne, la qualité du fonctionnement du système diminue progressivement (à titre de comparaison, les réseaux logiques d'éléments ET, OU n'échouent PAS lorsqu'un élément du réseau tombe en panne) ; résistance accrue aux changements des paramètres des circuits qui les mettent en œuvre (par exemple, des changements de poids très importants n'entraînent pas d'erreurs dans la mise en œuvre d'une simple fonction logique de deux variables), etc.

L'utilisation généralisée des algorithmes de réseaux neuronaux dans le domaine des problèmes complexes formalisables, faiblement formalisables et non formalisables a conduit à la création d'une nouvelle direction en mathématiques computationnelles - neuromathématiciens. Les neuromathématiques comprennent des algorithmes de réseaux neuronaux pour résoudre les problèmes suivants : reconnaissance de formes ; optimisation et extrapolation de fonctions ; la théorie des graphes; tâches cryptographiques ; résolution de systèmes réels et booléens d'équations linéaires et non linéaires, d'équations différentielles ordinaires unidimensionnelles et multidimensionnelles, d'équations aux dérivées partielles, etc. Basée sur la théorie des réseaux de neurones, une nouvelle section de la théorie moderne du contrôle des complexes non linéaires et multidimensionnels, multiplie connecté systèmes dynamiquesneurofeedback, y compris des méthodes d'identification de réseaux neuronaux d'objets dynamiques complexes ; construction de neurorégulateurs dans les circuits de contrôle d'objets dynamiques complexes, etc.

Intelligence artificielle, réseaux de neurones, apprentissage automatique : que signifient réellement tous ces concepts actuellement populaires ? Pour la plupart des non-initiés, dont je suis moi-même, ils ont toujours semblé fantastiques, mais en réalité, leur essence réside en surface. J'ai depuis longtemps l'idée d'écrire dans un langage simple sur les réseaux de neurones artificiels. Découvrez par vous-même et dites aux autres ce qu'est cette technologie, comment elle fonctionne, réfléchissez à son histoire et à ses perspectives. Dans cet article, j'ai essayé de ne pas entrer dans les détails, mais de parler simplement et populairement de cette direction prometteuse dans le monde de la haute technologie.

Intelligence artificielle, réseaux de neurones, apprentissage automatique : que signifient réellement tous ces concepts actuellement populaires ? Pour la plupart des non-initiés, dont je suis moi-même, ils ont toujours semblé fantastiques, mais en réalité, leur essence réside en surface. J'ai depuis longtemps l'idée d'écrire dans un langage simple sur les réseaux de neurones artificiels. Découvrez par vous-même et dites aux autres ce qu'est cette technologie, comment elle fonctionne, réfléchissez à son histoire et à ses perspectives. Dans cet article, j'ai essayé de ne pas entrer dans les détails, mais de parler simplement et populairement de cette direction prometteuse dans le monde de la haute technologie.

Un peu d'histoire

Pour la première fois, le concept de réseaux de neurones artificiels (ANN) est apparu dans le but de simuler les processus cérébraux. La première avancée majeure dans ce domaine peut être considérée comme la création du modèle de réseau neuronal McCulloch-Pitts en 1943. Les scientifiques ont développé pour la première fois un modèle de neurone artificiel. Ils ont également proposé la conception d'un réseau de ces éléments pour effectuer des opérations logiques. Mais surtout, les scientifiques ont prouvé qu’un tel réseau est capable d’apprendre.

La prochaine étape importante fut le développement par Donald Hebb du premier algorithme de calcul de l'ANN en 1949, qui devint fondamental pendant plusieurs décennies suivantes. En 1958, Frank Rosenblatt a développé le parceptron, un système qui imite les processus cérébraux. À une certaine époque, cette technologie n’avait pas d’équivalent et reste aujourd’hui fondamentale dans les réseaux de neurones. En 1986, presque simultanément, indépendamment les uns des autres, des scientifiques américains et soviétiques ont considérablement amélioré la méthode fondamentale de formation d'un perceptron multicouche. En 2007, les réseaux de neurones connaissent une renaissance. L'informaticien britannique Geoffrey Hinton a été le premier à développer un algorithme d'apprentissage profond pour les réseaux neuronaux multicouches, qui est désormais utilisé, par exemple, pour faire fonctionner des voitures autonomes.

En bref sur l'essentiel

DANS dans un sens général En d’autres termes, les réseaux neuronaux sont des modèles mathématiques qui fonctionnent sur le principe des réseaux de cellules nerveuses dans un organisme animal. Les ANN peuvent être implémentés dans des solutions programmables et matérielles. Pour faciliter la compréhension, un neurone peut être considéré comme une cellule possédant de nombreux trous d’entrée et un trou de sortie. La manière dont plusieurs signaux entrants sont transformés en un signal de sortie est déterminée par l'algorithme de calcul. Des valeurs efficaces sont fournies à chaque entrée neuronale, qui sont ensuite distribuées le long des connexions interneurones (synopsis). Les synapses ont un paramètre - le poids, grâce auquel les informations d'entrée changent lors du passage d'un neurone à un autre. La façon la plus simple d'imaginer le principe de fonctionnement des réseaux de neurones est de mélanger les couleurs. Les neurones bleus, verts et rouges ont des poids différents. L’information du neurone dont le poids est le plus élevé sera dominante dans le neurone suivant.

Le réseau neuronal lui-même est un système composé de nombreux neurones (processeurs). Individuellement, ces processeurs sont assez simples (beaucoup plus simples qu'un processeur d'ordinateur personnel), mais lorsqu'ils sont combinés en grand système les neurones sont capables d’effectuer des tâches très complexes.

Selon le domaine d'application, un réseau de neurones peut être interprété de différentes manières. Par exemple, du point de vue de l'apprentissage automatique, un ANN est une méthode de reconnaissance de formes. D'un point de vue mathématique, il s'agit d'un problème multiparamétrique. Du point de vue de la cybernétique - un modèle de contrôle adaptatif de la robotique. Pour intelligence artificielle ANN est un composant fondamental pour la modélisation de l'intelligence naturelle à l'aide d'algorithmes informatiques.

Le principal avantage des réseaux de neurones par rapport aux algorithmes informatiques conventionnels réside dans leur capacité à apprendre. Au sens général du terme, l'apprentissage consiste à trouver les coefficients de couplage corrects entre les neurones, ainsi qu'à résumer les données et à identifier les dépendances complexes entre les signaux d'entrée et de sortie. En fait, une formation réussie d'un réseau neuronal signifie que le système sera capable d'identifier le résultat correct sur la base de données qui ne figurent pas dans l'ensemble de formation.

Situation actuelle

Et aussi prometteuse que puisse être cette technologie, les ANN sont encore très loin des capacités du cerveau et de la pensée humains. Pourtant, les réseaux de neurones sont déjà utilisés dans de nombreux domaines de l’activité humaine. Jusqu'à présent, ils ne sont pas capables de prendre des décisions très intelligentes, mais ils sont capables de remplacer une personne là où elle était auparavant nécessaire. Parmi les nombreux domaines d'application de l'ANN, on peut noter : la création de systèmes de processus de production auto-apprenants, sans personnel Véhicules, systèmes de reconnaissance d'images, systèmes de sécurité intelligents, robotique, systèmes de surveillance de la qualité, interfaces d'interaction vocale, systèmes d'analyse et bien plus encore. Cette utilisation généralisée des réseaux de neurones est, entre autres, due à l'émergence de diverses méthodes permettant d'accélérer la formation ANN.

Aujourd'hui, le marché des réseaux de neurones est énorme : il se chiffre en milliards et en milliards de dollars. Comme le montre la pratique, la plupart des technologies de réseaux neuronaux dans le monde diffèrent peu les unes des autres. Cependant, l’utilisation des réseaux de neurones est une activité très coûteuse, qui, dans la plupart des cas, ne peut être financée que par les grandes entreprises. Le développement, la formation et le test de réseaux neuronaux nécessitent de grandes Puissance de calcul, il est évident que cela est disponible en abondance acteurs majeurs sur le marché informatique. Parmi les principales entreprises à la pointe des développements dans ce domaine figurent la division Google DeepMind, la division Microsoft Research, IBM, Facebook et Baidu.

Bien sûr, tout cela est bien : les réseaux de neurones se développent, le marché grandit, mais pour l'instant la tâche principale toujours pas résolu. L’humanité n’a pas réussi à créer une technologie approchant même les capacités du cerveau humain. Examinons les principales différences entre le cerveau humain et les réseaux de neurones artificiels.

Pourquoi les réseaux de neurones sont-ils encore loin du cerveau humain ?

La différence la plus importante, qui change radicalement le principe et l'efficacité du système, réside dans la transmission différente des signaux dans les réseaux de neurones artificiels et dans un réseau biologique de neurones. Le fait est que dans un ANN, les neurones transmettent des valeurs qui sont de vraies valeurs, c'est-à-dire des chiffres. Dans le cerveau humain, les impulsions sont transmises avec une amplitude fixe et ces impulsions sont presque instantanées. Cela conduit à un certain nombre d’avantages du réseau de neurones humain.

Premièrement, les lignes de communication dans le cerveau sont beaucoup plus efficaces et économiques que celles du RNA. Deuxièmement, le circuit d'impulsions assure la facilité de mise en œuvre de la technologie : il suffit d'utiliser circuits analogiques au lieu de mécanismes informatiques complexes. En fin de compte, les réseaux pulsés sont insensibles aux interférences audio. Les nombres réels sont sujets au bruit, ce qui augmente le risque d'erreurs.

Conclusion

Bien entendu, au cours de la dernière décennie, le développement des réseaux de neurones a connu un véritable essor. Cela est principalement dû au fait que le processus de formation ANN est devenu beaucoup plus rapide et plus simple. Les réseaux neuronaux dits « pré-entraînés » ont également commencé à être activement développés, ce qui peut accélérer considérablement le processus d'introduction de la technologie. Et s'il est trop tôt pour dire si les réseaux de neurones seront un jour capables de reproduire pleinement les capacités du cerveau humain, la probabilité que dans la prochaine décennie les ANN soient capables de remplacer les humains dans un quart des métiers existants se confirme de plus en plus. .

Pour ceux qui veulent en savoir plus

  • La grande guerre neuronale : ce que Google prépare réellement
  • Comment les ordinateurs cognitifs pourraient changer notre avenir

Les questions de l’intelligence artificielle et des réseaux de neurones sont aujourd’hui plus que jamais d’actualité. De nombreux utilisateurs se tournent de plus en plus vers nous pour nous poser des questions sur le fonctionnement des réseaux de neurones, ce qu'ils sont et quel est le principe de leur fonctionnement ?

Ces questions, outre leur popularité, présentent également une complexité considérable, car les processus sont des algorithmes complexes d'apprentissage automatique conçus à des fins diverses, depuis l'analyse des changements jusqu'à la modélisation des risques associés à certaines actions.

Que sont les réseaux de neurones et leurs types ?

La première question qui se pose à ceux qui sont intéressés est : qu’est-ce qu’un réseau de neurones ? Dans la définition classique, il s'agit d'une certaine séquence de neurones reliés entre eux par des synapses. Les réseaux de neurones sont un modèle simplifié d'analogues biologiques.

Un programme avec une structure de réseau neuronal permet à la machine d'analyser les données d'entrée et de mémoriser le résultat obtenu à partir de certaines sources. Par la suite, une telle approche permet de récupérer en mémoire le résultat correspondant à l'ensemble de données courant, s'il était déjà disponible dans l'expérience des cycles du réseau.

De nombreuses personnes perçoivent le réseau neuronal comme un analogue du cerveau humain. D'une part, ce jugement peut être considéré comme proche de la vérité, mais, d'autre part, le cerveau humain est un mécanisme trop complexe pour qu'il soit possible de le recréer à l'aide d'une machine, même en une fraction de seconde. pour cent. Un réseau de neurones est avant tout un programme basé sur le principe du cerveau, mais en aucun cas son analogue.

Un réseau de neurones est un ensemble de neurones dont chacun reçoit des informations, les traite et les transmet à un autre neurone. Chaque neurone traite le signal exactement de la même manière.

Comment alors obtenir des résultats différents ? Tout dépend des synapses qui relient les neurones entre eux. Un neurone peut avoir un grand nombre de synapses qui renforcent ou affaiblissent le signal, et elles ont la capacité de modifier leurs caractéristiques au fil du temps.

Ce sont les paramètres de synapses correctement sélectionnés qui permettent d'obtenir le résultat correct de transformation des données d'entrée en sortie.

Après avoir défini en termes généraux ce qu'est un réseau de neurones, nous pouvons identifier les principaux types de leur classification. Avant de procéder à la classification, il est nécessaire d'apporter une précision. Chaque réseau possède une première couche de neurones, appelée couche d'entrée.

Il n'effectue aucun calcul ni transformation ; sa tâche n'est qu'une seule chose : recevoir et distribuer les signaux d'entrée aux autres neurones. C'est la seule couche commune à tous les types de réseaux de neurones, leur structure ultérieure est le critère de la division principale.

  • Réseau neuronal monocouche. Il s'agit d'une structure d'interaction de neurones dans laquelle, une fois que les données d'entrée entrent dans la première couche d'entrée, le résultat final est immédiatement transféré à la couche de sortie. Dans ce cas, la première couche d'entrée n'est pas prise en compte, puisqu'elle n'effectue aucune action autre que la réception et la distribution, cela a déjà été évoqué plus haut. Et la deuxième couche effectue tous les calculs et traitements nécessaires et produit immédiatement le résultat final. Les neurones d'entrée sont combinés avec la couche principale par des synapses qui ont des coefficients de pondération différents, garantissant la qualité des connexions.
  • Réseau neuronal multicouche. Comme il ressort clairement de la définition, ce type de réseau neuronal, en plus des couches d'entrée et de sortie, comporte également des couches intermédiaires. Leur nombre dépend de la complexité du réseau lui-même. Cela ressemble plus à la structure d’un réseau neuronal biologique. Ces types de réseaux ont été développés assez récemment ; avant cela, tous les processus étaient mis en œuvre à l'aide de réseaux monocouches. Respectivement solution similaire a bien plus de capacités que son ancêtre. Dans le processus de traitement de l'information, chaque couche intermédiaire représente une étape intermédiaire de traitement et de distribution de l'information.

Selon la direction de distribution de l'information à travers les synapses d'un neurone à l'autre, les réseaux peuvent également être classés en deux catégories.

  • Réseaux à propagation directe ou unidirectionnel, c'est-à-dire une structure dans laquelle le signal se déplace strictement de la couche d'entrée à la couche de sortie. Le mouvement du signal dans la direction opposée est impossible. Des évolutions similaires sont assez répandues dans actuellement résoudre avec succès des problèmes tels que la reconnaissance, les prédictions ou le clustering.
  • Réseaux avec feedback ou récurrents. De tels réseaux permettent au signal de circuler non seulement dans le sens direct, mais également dans le sens inverse. Qu'est-ce que cela donne ? Dans de tels réseaux, le résultat de la sortie peut être renvoyé à l'entrée sur cette base, la sortie du neurone est déterminée par les poids et les signaux d'entrée et est complétée par les sorties précédentes, qui sont à nouveau renvoyées à l'entrée. De tels réseaux se caractérisent par la fonction de mémoire à court terme, sur la base de laquelle les signaux sont restaurés et complétés pendant le traitement.

Ce ne sont pas les seules options de classification des réseaux.

Ils peuvent être divisés en homogènes et hybrides en fonction des types de neurones qui composent le réseau. Et aussi hétéroassociatif ou autoassociatif, selon le mode de formation en réseau, avec ou sans professeur. Vous pouvez également classer les réseaux selon leur objectif.

Où sont utilisés les réseaux de neurones ?

Les réseaux de neurones sont utilisés pour résoudre divers problèmes. Si nous considérons les tâches par degré de complexité, alors un programme informatique classique convient pour résoudre les problèmes les plus simples, plus
problèmes complexes nécessitant une prévision simple ou une solution approximative d'équations, des programmes utilisant des méthodes statistiques sont utilisés.

Mais des tâches d'un niveau encore plus complexe nécessitent une approche complètement différente. Cela s'applique en particulier à la reconnaissance de formes, à la reconnaissance vocale ou à la prédiction complexe. Dans la tête d’une personne, de tels processus se produisent inconsciemment, c’est-à-dire qu’en reconnaissant et en mémorisant des images, une personne n’est pas consciente de la façon dont ce processus se produit et ne peut donc pas le contrôler.

Ce sont précisément ces problèmes que les réseaux de neurones aident à résoudre, c'est-à-dire qu'ils sont créés pour exécuter des processus dont les algorithmes sont inconnus.

Ainsi, les réseaux de neurones sont largement utilisés dans les domaines suivants :

  • reconnaissance, et cette direction est actuellement la plus large ;
  • en prédisant la prochaine étape, cette fonctionnalité est applicable au trading et aux marchés boursiers ;
  • classification des données d'entrée par paramètres ; cette fonction est assurée par des robots de crédit, qui sont capables de prendre une décision en approuvant un prêt à une personne, en s'appuyant sur un ensemble d'entrées de différents paramètres.

Les capacités des réseaux de neurones les rendent très populaires. On peut leur apprendre beaucoup de choses, comme jouer à des jeux, reconnaître une certaine voix, etc. Partant du fait que les réseaux artificiels sont construits sur le principe des réseaux biologiques, ils peuvent apprendre tous les processus qu'une personne effectue inconsciemment.

Qu'est-ce qu'un neurone et une synapse ?

Alors, qu’est-ce qu’un neurone en termes de réseaux de neurones artificiels ? Ce concept fait référence à une unité qui effectue des calculs. Il reçoit des informations de la couche d'entrée du réseau, effectue des calculs simples avec celles-ci et les transmet au neurone suivant.

Le réseau contient trois types de neurones : d'entrée, cachés et de sortie. De plus, si le réseau est monocouche, alors il ne contient pas de neurones cachés. De plus, il existe une variété d’unités appelées neurones de déplacement et neurones de contexte.

Chaque neurone possède deux types de données : l’entrée et la sortie. Dans ce cas, les données d'entrée de la première couche sont égales aux données de sortie. Dans d'autres cas, l'information totale des couches précédentes entre dans l'entrée du neurone, puis passe par le processus de normalisation, c'est-à-dire que toutes les valeurs situées en dehors de la plage souhaitée sont transformées par la fonction d'activation.

Comme mentionné ci-dessus, une synapse est une connexion entre des neurones, chacun ayant son propre degré de poids. C'est grâce à cette fonctionnalité que les informations d'entrée changent au cours du processus de transmission. Lors du traitement, les informations transmises par la synapse avec un poids important seront dominantes.

Il s'avère que le résultat n'est pas influencé par les neurones, mais par les synapses qui attribuent un certain ensemble de poids aux données d'entrée, puisque les neurones eux-mêmes effectuent exactement les mêmes calculs à chaque fois.

Dans ce cas, les poids sont définis dans un ordre aléatoire.

Schéma de fonctionnement d'un réseau de neurones

Pour imaginer le principe de fonctionnement d’un réseau de neurones, aucune compétence particulière n’est requise. La couche d'entrée des neurones reçoit certaines informations. Il est transmis via les synapses à la couche suivante, chaque synapse ayant son propre coefficient de poids, et chaque neurone suivant peut avoir plusieurs synapses entrantes.

En conséquence, les informations reçues par le neurone suivant sont la somme de toutes les données, chacune multipliée par son propre coefficient de poids. La valeur résultante est substituée dans la fonction d'activation et les informations de sortie sont obtenues, qui sont ensuite transmises jusqu'à ce qu'elles atteignent la sortie finale. Le premier lancement du réseau ne donne pas les bons résultats, puisque le réseau n'est pas encore formé.

La fonction d'activation est utilisée pour normaliser les données d'entrée. Il existe de nombreuses fonctions de ce type, mais plusieurs principales sont les plus largement utilisées. Leur principale différence réside dans la plage de valeurs dans laquelle ils opèrent.

  • La fonction linéaire f(x) = x, la plus simple de toutes, est utilisée uniquement pour tester le réseau neuronal créé ou transmettre des données dans sa forme originale.
  • La sigmoïde est considérée comme la fonction d'activation la plus courante et a la forme f(x) = 1 / 1+e-× ; De plus, la plage de ses valeurs va de 0 à 1. On l'appelle aussi fonction logistique.
  • Pour couvrir les valeurs négatives, une tangente hyperbolique est utilisée. F(x) = e²× - 1 / e²× + 1 - c'est la forme de cette fonction et sa plage est de -1 à 1. Si le réseau neuronal ne prévoit pas l'utilisation de valeurs négatives, alors il ne doit pas être utilisé.

Afin de fournir au réseau les données avec lesquelles il fonctionnera, des ensembles de formation sont nécessaires.

L'intégration est un compteur qui augmente à chaque série d'entraînement.

L'époque est un indicateur de la formation d'un réseau de neurones ; cet indicateur augmente à chaque fois que le réseau traverse un cycle ensemble complet ensembles de formation.

Par conséquent, afin de former correctement le réseau, vous devez effectuer des ensembles, en augmentant constamment l'indicateur d'époque.

Les erreurs seront identifiées lors de la formation. Il s'agit de la différence en pourcentage entre le résultat obtenu et le résultat souhaité. Cet indicateur devrait diminuer à mesure que l'indicateur d'époque augmente, sinon il y a une erreur du développeur quelque part.

Qu'est-ce qu'un neurone biaisé et à quoi sert-il ?

Dans les réseaux de neurones, il existe un autre type de neurone : le neurone à déplacement. Il diffère du type principal de neurones en ce que son entrée et sa sortie sont dans tous les cas égales à un. De plus, ces neurones n’ont pas de synapses d’entrée.

La disposition de ces neurones se produit un par couche et pas plus, et ils ne peuvent pas se synapser les uns avec les autres. Il n’est pas conseillé de placer de tels neurones sur la couche de sortie.

A quoi servent-ils ? Il existe des situations dans lesquelles le réseau neuronal ne peut tout simplement pas trouver la bonne solution, car point souhaité sera hors de portée. C’est précisément pourquoi de tels neurones sont nécessaires pour pouvoir déplacer la zone de définition.

Autrement dit, le poids de la synapse modifie la courbure du graphique de fonction, tandis que le neurone de déplacement permet un déplacement le long de l'axe des coordonnées X, de sorte que le réseau neuronal puisse capturer une zone qui lui est inaccessible sans déplacement. Dans ce cas, le décalage peut s'effectuer aussi bien vers la droite que vers la gauche. Les neurones à décalage ne sont généralement pas marqués schématiquement, leur poids est pris en compte par défaut lors du calcul de la valeur d'entrée.

De plus, les neurones à déplacement vous permettront d'obtenir un résultat dans le cas où tous les autres neurones produisent 0 comme paramètre de sortie. Dans ce cas, quel que soit le poids de la synapse, c'est exactement cette valeur qui sera transmise à chaque couche suivante.

La présence d'un neurone à déplacement permettra de corriger la situation et d'obtenir un résultat différent. La faisabilité de l'utilisation de neurones à déplacement est déterminée en testant le réseau avec et sans eux et en comparant les résultats.

Mais il est important de rappeler que pour obtenir des résultats, il ne suffit pas de créer un réseau de neurones. Il doit également être entraîné, ce qui nécessite également des approches particulières et possède ses propres algorithmes. Ce processus peut difficilement être qualifié de simple, car sa mise en œuvre nécessite certaines connaissances et efforts.

La résolution du problème de classification est l’une des applications les plus importantes des réseaux de neurones.

Le problème de classification consiste à attribuer un échantillon à l’un des nombreux ensembles disjoints par paires. Un exemple de telles tâches pourrait être, par exemple, la tâche de détermination de la solvabilité d'un client de la banque, des tâches médicales dans lesquelles il est nécessaire de déterminer, par exemple, l'issue d'une maladie, de résoudre des problèmes de gestion d'un portefeuille de titres (vendre acheter ou « conserver » des actions en fonction de la situation du marché), le problème de la détermination des entreprises viables et sujettes à la faillite.

Objectif du classement

Lors de la résolution de problèmes de classification, il est nécessaire d'inclure les éléments existants échantillons statiques(caractéristiques de la situation du marché, données de l'examen médical, informations sur le client) pour certaines classes. Il existe plusieurs façons de présenter les données. La méthode la plus courante consiste à représenter l’échantillon sous forme de vecteur. Les composantes de ce vecteur représentent diverses caractéristiques de l’échantillon qui influencent la décision quant à la classe dans laquelle un échantillon donné peut être classé. Par exemple, pour des tâches médicales, les composantes de ce vecteur peuvent inclure des données issues du dossier médical du patient. Ainsi, sur la base de certaines informations concernant l’exemple, il est nécessaire de déterminer dans quelle classe il peut être classé. Le classificateur attribue ainsi un objet à l'une des classes conformément à une certaine partition de l'espace à N dimensions, appelée espace d'entrées, et la dimension de cet espace est le nombre de composantes vectorielles.

Tout d’abord, vous devez déterminer le niveau de complexité du système. Dans les problèmes réels, il arrive souvent que le nombre d'échantillons soit limité, ce qui rend difficile la détermination de la complexité du problème. Il est possible de distinguer trois principaux niveaux de complexité. La première (la plus simple) est celle où les classes peuvent être divisées par des lignes droites (ou des hyperplans, si l'espace d'entrée a une dimension supérieure à deux) - ce qu'on appelle séparabilité linéaire. Dans le second cas, les classes ne peuvent pas être divisées par des lignes (plans), mais elles peuvent être séparées à l'aide d'une division plus complexe - séparabilité non linéaire. Dans le troisième cas, les classes se croisent et on ne peut parler que de séparabilité probabiliste.

Idéalement, après prétraitement, nous devrions obtenir un problème linéairement séparable, car après cela la construction du classificateur est considérablement simplifiée. Malheureusement, pour résoudre des problèmes réels, nous disposons d'un nombre limité d'échantillons, sur la base desquels le classificateur est construit. Dans le même temps, nous ne pouvons pas effectuer le prétraitement des données de manière à obtenir une séparabilité linéaire des échantillons.

Utiliser les réseaux de neurones comme classificateur

Les réseaux Feedforward sont un moyen universel d'approximation de fonctions, ce qui leur permet d'être utilisés pour résoudre des problèmes de classification. En règle générale, les réseaux de neurones sont les plus façon efficace classification, car ils génèrent en réalité un grand nombre de modèles de régression (qui sont utilisés pour résoudre des problèmes de classification à l’aide de méthodes statistiques).

Malheureusement, un certain nombre de problèmes surviennent lors de l’application des réseaux de neurones à des problèmes pratiques. Premièrement, on ne sait pas à l’avance quelle complexité (taille) le réseau peut avoir besoin pour mettre en œuvre le mappage avec suffisamment de précision. Cette complexité peut être prohibitive et nécessiter des architectures de réseau complexes. Ainsi, Minsky, dans son ouvrage « Perceptrons », a prouvé que les réseaux neuronaux monocouches les plus simples ne sont capables de résoudre que des problèmes linéairement séparables. Cette limitation peut être surmontée en utilisant des réseaux neuronaux multicouches. En général, on peut dire que dans un réseau à une couche cachée, le vecteur correspondant à l'échantillon d'entrée est transformé par la couche cachée en un nouvel espace, qui peut avoir une dimension différente, puis les hyperplans correspondant aux neurones du la couche de sortie la divise en classes. De cette manière, le réseau reconnaît non seulement les caractéristiques des données originales, mais également les « caractéristiques des fonctionnalités » générées par la couche cachée.

Préparation des données initiales

Pour construire un classificateur, il est nécessaire de déterminer quels paramètres influencent la décision concernant la classe à laquelle appartient un échantillon. Cela peut poser deux problèmes. Premièrement, si le nombre de paramètres est faible, une situation peut alors survenir dans laquelle le même ensemble de données initiales correspond à des exemples situés dans des classes différentes. Il est alors impossible d'entraîner le réseau de neurones, et le système ne fonctionnera pas correctement (il est impossible de trouver le minimum qui correspond à un tel ensemble de données initiales). Les données sources doivent être cohérentes. Pour résoudre ce problème, il est nécessaire d'augmenter la dimension de l'espace des caractéristiques (le nombre de composantes du vecteur d'entrée correspondant à l'échantillon). Mais à mesure que la dimension de l'espace des fonctionnalités augmente, une situation peut survenir dans laquelle le nombre d'exemples peut devenir insuffisant pour former le réseau, et au lieu de généraliser, il se souviendra simplement des exemples de l'ensemble de formation et ne pourra pas fonctionner correctement. . Ainsi, lors de la définition des caractéristiques, il est nécessaire de trouver un compromis sur leur nombre.

Ensuite, vous devez déterminer comment représenter les données d'entrée pour le réseau neuronal, c'est-à-dire déterminer la méthode de rationnement. La normalisation est nécessaire car les réseaux de neurones fonctionnent avec des données représentées par des nombres compris entre 0 et 1, et les données d'origine peuvent avoir une plage arbitraire ou même être des données non numériques. Dans ce cas, diverses méthodes sont possibles, allant de la simple transformation linéaire dans la plage requise et se terminant par une analyse multidimensionnelle des paramètres et une normalisation non linéaire en fonction de l'influence des paramètres les uns sur les autres.

Encodage des valeurs de sortie

Le problème de classification en présence de deux classes peut être résolu sur un réseau avec un neurone dans la couche de sortie, qui peut prendre l'une des deux valeurs 0 ou 1, selon la classe à laquelle appartient l'échantillon. Lorsqu'il existe plusieurs classes, le problème qui se pose est de savoir comment présenter ces données à la sortie réseau. La manière la plus simple de représenter les données de sortie dans ce cas est un vecteur dont les composantes correspondent à différents numéros Des classes. Où i-ième composant le vecteur correspond à la i-ième classe. Toutes les autres composantes sont mises à 0. Alors, par exemple, la deuxième classe correspondra à 1 à la 2ème sortie du réseau et à 0 au reste. Lors de l'interprétation du résultat, on considère généralement que le numéro de classe est déterminé par le numéro de la sortie réseau sur laquelle la valeur maximale est apparue. Par exemple, si dans un réseau à trois sorties nous avons un vecteur de valeurs de sortie (0,2,0,6,0,4), alors nous voyons que la deuxième composante du vecteur a la valeur maximale, ce qui signifie la classe à laquelle cet exemple appartient est 2. Avec cette méthode de codage, parfois le concept est également introduit confiance réseau est que l'exemple appartient à cette classe. La manière la plus simple de déterminer la confiance consiste à déterminer la différence entre la valeur maximale de la sortie et la valeur de l’autre sortie la plus proche du maximum. Par exemple, pour l’exemple discuté ci-dessus, la confiance du réseau que l’exemple appartient à la deuxième classe sera déterminée comme la différence entre les deuxième et troisième composantes du vecteur et est égale à 0,6-0,4=0,2. En conséquence, plus la confiance est élevée, plus la probabilité que le réseau donne la bonne réponse est grande. Cette méthode de codage est la manière la plus simple, mais pas toujours la plus optimale, de représenter les données.

D'autres méthodes sont également connues. Par exemple, le vecteur de sortie est le numéro de cluster écrit sous forme binaire. Ensuite, s'il y a 8 classes, nous aurons besoin d'un vecteur de 3 éléments et, disons, la 3ème classe correspondra au vecteur 011. Mais si nous recevons une valeur incorrecte sur l'une des sorties, nous pouvons obtenir une classification incorrecte ( numéro de cluster incorrect), il est donc logique d'augmenter la distance entre deux clusters en utilisant le codage de sortie Hamming, ce qui augmentera la fiabilité de la classification.

Une autre approche consiste à diviser un problème avec k classes en k*(k-1)/2 sous-problèmes avec deux classes (codage 2 par 2) chacun. Dans ce cas, une sous-tâche signifie que le réseau détermine la présence de l'une des composantes vectorielles. Ceux. le vecteur source est divisé en groupes de deux composantes chacun de telle manière qu'ils incluent toutes les combinaisons possibles de composantes du vecteur de sortie. Le nombre de ces groupes peut être défini comme le nombre d'échantillons non ordonnés de deux à partir des composants d'origine. De la combinatoire

$A_k^n = \frac(k{n!\,(k\,-\,n)!} = \frac{k!}{2!\,(k\,-\,2)!} = \frac{k\,(k\,-\,1)}{2}$!}

Ensuite, par exemple, pour un problème à quatre classes nous avons 6 sorties (sous-tâches) réparties comme suit :

N sous-tâche (sortie) Composants de sortie
1 1-2
2 1-3
3 1-4
4 2-3
5 2-4
6 3-4

Où 1 en sortie indique la présence d'un des composants. Ensuite, nous pouvons accéder au numéro de classe en fonction du résultat du calcul effectué par le réseau comme suit : nous déterminons quelles combinaisons ont reçu une valeur de sortie unitaire (plus précisément, proche de un) (c'est-à-dire quelles sous-tâches ont été activées), et nous supposons que le numéro de classe sera celui qui comprend le plus grand nombre de sous-tâches activées (voir tableau).

Dans de nombreux problèmes, ce codage donne de meilleurs résultats que la méthode de codage classique.

Sélection du volume réseau

Choisir la bonne taille de réseau est d’une grande importance. Il est souvent tout simplement impossible de construire un modèle petit et de haute qualité, et un grand modèle mémorisera simplement les exemples de l'ensemble de formation et n'effectuera pas d'approximation, ce qui, naturellement, entraînera un fonctionnement incorrect du classificateur. Il existe deux approches principales pour construire un réseau : constructive et destructrice. Dans le premier d’entre eux, une taille minimale de réseau est d’abord prise et progressivement augmentée jusqu’à atteindre la précision requise. En parallèle, elle se recycle à chaque étape. Il existe également une méthode dite de corrélation en cascade, dans laquelle, après la fin d'une époque, l'architecture du réseau est ajustée pour minimiser les erreurs. Dans l’approche destructive, un réseau de volume surdimensionné est d’abord pris, puis les nœuds et connexions qui ont peu d’influence sur la solution en sont supprimés. Il est utile de rappeler la règle suivante : le nombre d'exemples dans l'ensemble de formation doit être supérieur au nombre de poids personnalisés. Sinon, au lieu de généraliser, le réseau mémorisera simplement les données et perdra la capacité de classer - le résultat sera incertain pour les exemples qui n'ont pas été inclus dans l'ensemble de formation.

Sélection d'une architecture de réseau

Lors du choix d'une architecture réseau, vous essayez généralement plusieurs configurations avec un nombre d'éléments différent. Dans ce cas, l’indicateur principal est la taille de l’ensemble de formation et la capacité de généralisation du réseau. Généralement, l'algorithme d'apprentissage Back Propagation avec un ensemble de confirmation est utilisé.

Algorithme de construction d'un classificateur basé sur des réseaux de neurones

  1. Travailler avec des données
    • Compiler une base de données d'exemples spécifiques à une tâche donnée
    • Divisez l'ensemble des données en deux ensembles : formation et test (il est possible de le diviser en 3 ensembles : formation, test et confirmation).
  2. Traitement préliminaire
    • Sélectionnez un système de fonctionnalités caractéristiques d'une tâche donnée et transformez les données en conséquence pour les soumettre à l'entrée du réseau (normalisation, standardisation, etc.). En conséquence, il est souhaitable d’obtenir un espace d’ensemble d’échantillons linéairement séparable.
    • Sélectionnez le système de codage des valeurs de sortie (codage classique, codage 2 par 2, etc.)
  3. Conception, formation et évaluation de la qualité du réseau
    • Sélectionnez la topologie du réseau : nombre de couches, nombre de neurones dans les couches, etc.
    • Sélectionnez la fonction d'activation des neurones (par exemple, « sigmoïde »)
    • Sélectionnez l'algorithme de formation du réseau
    • Évaluer la qualité du fonctionnement du réseau sur la base d'un ensemble de confirmation ou d'un autre critère, optimiser l'architecture (réduction des poids, amincissement de l'espace des fonctionnalités)
    • Concentrez-vous sur l'option réseau qui offre la meilleure capacité à généraliser et à évaluer la qualité du travail à l'aide de l'ensemble de test
  4. Utilisation et diagnostic
    • Découvrez le degré d'influence divers facteurs sur la décision prise (approche heuristique).
    • Assurez-vous que le réseau fournit la précision de classification requise (le nombre d'exemples mal reconnus est faible)
    • Si nécessaire, revenez à l’étape 2, en modifiant la façon dont les échantillons sont présentés ou en modifiant la base de données.
    • Utiliser pratiquement le réseau pour résoudre un problème.

Afin de créer un classificateur de haute qualité, vous devez disposer de données de haute qualité. Aucune des méthodes de construction de classificateurs, basées sur des réseaux de neurones ou statistiques, ne produira jamais un classificateur de la qualité requise si l'ensemble d'exemples disponibles n'est pas suffisamment complet et représentatif de la tâche avec laquelle le système devra travailler.