Fonctions d'activation dans les réseaux de neurones. Fonctions d'activation

Dans ce chapitre, nous nous sommes familiarisés avec des concepts tels que 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 des simplifications est que non ordinateurs modernes ne peut pas 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.

De manière générale, il existe plusieurs manières de représenter graphiquement les réseaux de neurones et les 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.

Ce moment 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 un modèle complet d'un 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. Il additionne simplement tous les signaux d'entrée multipliés 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 de neurones artificiels, le plus 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 le signal dans un tel les réseaux arrivent 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 en réseaux avec retour les sorties des neurones peuvent être renvoyées vers les 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 en a encore un 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 la « formation en réseau » – sélection ensemble correct Balance 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 de cette approche est que vous fournissez un signal en entrée, que vous examinez la réponse du réseau, puis que vous la comparez avec une réponse correcte et prête à l’emploi.

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 fournissez simplement des données sur cet objet à ses entrées. 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, et vous avez également acquis une compréhension complète de son fonctionnement (et de ses modèle mathématique).

De plus, vous savez désormais divers types réseaux de neurones artificiels : réseaux monocouches, multicouches, ainsi que réseaux à réaction et réseaux avec rétroaction.

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

Tu sais déjà 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 les bases informations théoriques 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é.

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

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

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

Tableau 7.1 Fonctions d'activation des neurones

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

Riz. 7.2. Exemples de fonctions d'activation :

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

c - sigmoïde (fonction logistique) ;

z - sigmoïde (tangente hyperbolique)

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

Construire un ANN pour résoudre tâche spécifique, il faut sélectionner le type de connexion des neurones, déterminer le type de fonctions de transfert des éléments et sélectionner les coefficients de pondération des connexions interneurones.

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

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

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



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

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

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

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

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

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

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

Lâchement connecté (avec connexions locales) (Fig. 7.3, c).

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

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

connexions, dans - réseaux faiblement connectés

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

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

DEHORS = K(FILET),

À - constante, fonction de seuil

OUT = 1 si NET > T, OUT = 0 sinon,

T- une valeur seuil constante, ou une fonction qui modélise plus précisément les caractéristiques de transfert non linéaire d'un neurone biologique et représente de grandes possibilités pour le réseau neuronal.

Riz. 3.

En figue. 3 blocs, désignés F, reçoit le signal NET et émet le signal OUT. Si le bloc F réduit la plage de changements dans la valeur de NET de sorte que pour toutes les valeurs de NET, les valeurs de OUT appartiennent à un certain intervalle fini, puis F appelé fonction "compressive". La fonction logistique ou « sigmoïde » (en forme de S) représentée sur la figure 4a est souvent utilisée comme fonction de « compression ». Cette fonction s'exprime mathématiquement par

F(x)= 1/(1 + e -x).

Ainsi,

Par analogie avec systèmes électroniques La fonction d'activation peut être considérée comme une amplification non linéaire caractéristique d'un neurone artificiel. Le gain est calculé comme le rapport entre l'incrément de OUT et le petit incrément de NET qui l'a provoqué. Elle s'exprime par la pente de la courbe à un certain niveau d'excitation et varie de petites valeurs aux grandes excitations négatives (la courbe est presque horizontale) à une valeur maximale à une excitation nulle et diminue à nouveau lorsque l'excitation devient fortement positive. Grossberg (1973) a découvert qu’une telle réponse non linéaire résolvait son dilemme de saturation du bruit. Comment le même réseau peut-il gérer à la fois les signaux faibles et forts ? Les signaux faibles nécessitent une amplification de ligne élevée pour produire un signal de sortie utilisable. Cependant, les étages amplificateurs à gain élevé peuvent provoquer une saturation de la sortie avec le bruit de l'amplificateur (fluctuations aléatoires) présent dans tout réseau physiquement implémenté. Des signaux d'entrée forts entraîneront également une saturation des étages d'amplification, éliminant ainsi la possibilité utilisation bénéfique sortie. La région centrale de la fonction logistique, qui présente un gain élevé, résout le problème de la gestion des signaux faibles, tandis que les régions à gain décroissant aux extrémités positives et négatives conviennent aux excitations importantes. Ainsi, le neurone fonctionne avec un gain élevé sur une large gamme de niveaux de signaux d’entrée.


Riz.

Une autre fonction d’activation largement utilisée est la tangente hyperbolique. Sa forme est similaire à celle de la fonction logistique et est souvent utilisé par les biologistes comme modèle mathématique de l'activation des cellules nerveuses. En tant que fonction d'activation d'un réseau de neurones artificiels, elle s'écrit comme suit :


Riz.

Comme la fonction logistique, la tangente hyperbolique est une fonction en forme de S, mais elle est symétrique par rapport à l'origine, et en point FILET= 0 la valeur du signal de sortie OUT est nulle (voir Fig. 4b). Contrairement à la fonction logistique, la tangente hyperbolique prend des valeurs de signes différents, ce qui s'avère bénéfique pour un certain nombre de réseaux.

Révisé modèle simple Un neurone artificiel ignore bon nombre des propriétés de son homologue biologique.

Par exemple, il ne prend pas en compte les délais qui affectent la dynamique du système. Les signaux d'entrée génèrent immédiatement un signal de sortie. Et surtout, elle ne prend pas en compte les effets de la fonction de modulation de fréquence ou de la fonction de synchronisation du neurone biologique, que nombre de chercheurs considèrent comme cruciales.

Malgré ces limitations, les réseaux construits à partir de ces neurones présentent des propriétés qui ressemblent beaucoup à un système biologique. Seuls le temps et la recherche pourront répondre à la question de savoir si de telles coïncidences sont accidentelles ou si elles sont la conséquence du fait que le modèle capture correctement les caractéristiques les plus importantes d'un neurone biologique.

Dans la deuxième partie de l’article, nous poursuivons notre discussion sur les subtilités du deep learning.

5. Sélection des fonctions d'activation

L'un des aspects les plus importants d'un réseau neuronal profond est fonction d'activation(fonction d'activation), qui apporte au réseau non-linéarité. Ensuite, nous examinerons les fonctions d'activation courantes et donnerons des recommandations sur la façon de les choisir.

Sigmoïde

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

Actuellement, le sigmoïde a perdu son ancienne popularité et est très rarement utilisé. Cette fonction présente deux inconvénients sérieux :

  1. La saturation du sigmoïde entraîne une atténuation des gradients. Une propriété extrêmement indésirable du sigmoïde est que lorsque la fonction sature d'un côté ou de l'autre (0 ou 1), le gradient dans ces zones devient proche de zéro. Rappelons que dans le processus de rétropropagation, un gradient (local) donné est multiplié par le gradient global. Par conséquent, si le gradient local est très faible, il annule effectivement le gradient global. En conséquence, il n’y aura presque aucun signal passant par le neurone vers ses poids et de manière récursive vers ses données. De plus, il faut être très prudent lors de l’initialisation des poids des neurones sigmoïdes pour éviter la saturation. Par exemple, si les poids initiaux sont trop importants, la plupart des neurones entreront dans un état de saturation, ce qui entraînera un mauvais apprentissage du réseau.
  2. La sortie sigmoïde n’est pas centrée autour de zéro. Cette propriété n'est pas souhaitable car les neurones des couches suivantes recevront des valeurs qui ne sont pas centrées autour de zéro, ce qui affecte la dynamique de descente de gradient. Si les valeurs entrant dans le neurone sont toujours positives (par exemple, x > 0élément par élément dans f = ω T x + b), puis en cours de rétropropagation tous les gradients des poids ω sera soit positif, soit négatif (en fonction du gradient de l'expression entière F). Cela peut conduire à une dynamique en zigzag indésirable dans les mises à jour de poids. Il convient cependant de noter que lorsque ces gradients sont sommés sur un colis, la mise à jour finale des poids peut avoir des signes différents, ce qui atténue en partie l'inconvénient décrit. Ainsi, le manque de centrage est un inconvénient, mais a des conséquences moins graves que le problème de saturation.

Tangente hyperbolique

La tangente hyperbolique (tanh) prend en entrée un nombre réel arbitraire et produit en sortie un nombre réel compris entre –1 et 1. Comme la sigmoïde, la tangente hyperbolique peut être saturée. Cependant, contrairement au sigmoïde, la sortie de cette fonction est centrée autour de zéro. Ainsi, en pratique, il est toujours préférable d’utiliser la tangente hyperbolique plutôt que la sigmoïde.

RéLU

Ces dernières années, une fonction d'activation appelée redresseur, similaire au redresseur demi-onde en électrotechnique, est devenue très populaire. Les neurones dotés de cette fonction d'activation sont appelés ReLU (unité linéaire rectifiée). ReLU a la formule suivante f(x) = max(0,x) et implémente une simple transition de seuil à zéro.

Examinons les aspects positifs et négatifs de ReLU.

Côtés positifs :

  1. Le calcul de la tangente sigmoïde et hyperbolique nécessite des opérations de calcul intensives telles que l'exponentiation, tandis que ReLU peut être implémenté en utilisant une simple transformation de seuil de la matrice d'activation à zéro. De plus, ReLU n’est pas sujet à saturation.
  2. L'utilisation de ReLU augmente considérablement la vitesse de convergence de la descente du gradient stochastique (dans certains cas jusqu'à 6 fois) par rapport à la tangente sigmoïde et hyperbolique. On pense que cela est dû à la nature linéaire et au manque de saturation de cette fonction.

Côtés négatifs :

  1. Malheureusement, les ReLU ne sont pas toujours assez fiables et peuvent échouer (« mourir ») pendant le processus de formation. Par exemple, un gradient important traversant un ReLU peut entraîner la mise à jour des poids de telle sorte que le neurone ne soit plus jamais déclenché. Si cela se produit, alors à partir de ce moment, le gradient passant par ce neurone sera toujours nul. En conséquence, ce neurone sera irréversiblement désactivé. Par exemple, si le taux d’apprentissage est trop élevé, il peut s’avérer que jusqu’à 40 % des ReLU soient « morts » (c’est-à-dire jamais activés). Ce problème est résolu en choisissant un taux d'apprentissage approprié.

Actuellement, il existe toute une famille de modifications différentes de ReLU. Nous examinerons ensuite leurs caractéristiques.

Pour LReLU αi a une valeur fixe, pour PReLU αi est déterminé sur la base des données, pour RReLU αji est généré de manière aléatoire à partir d'un intervalle donné pendant l'entraînement et reste constant pendant les tests.

ReLU qui fuit

Leaky ReLU (LReLU) est une tentative pour résoudre le problème de défaillance des ReLU conventionnels décrit ci-dessus. ReLU régulier à intervalles réguliers X< 0 donne une sortie nulle, tandis que LReLU a une petite valeur négative dans cet intervalle (pente d'environ 0,01). Autrement dit, la fonction pour LReLU a la forme f(x) = αxà X< 0 Et f(x) = xà x ≥ 0, où α est une petite constante. Certains chercheurs ont signalé avoir utilisé avec succès cette fonction d’activation, mais les résultats ne sont pas toujours cohérents.

ReLU paramétrique

Pour le ReLU paramétrique (parametric ReLU, PReLU), la pente sur l'intervalle négatif n'est pas prédéfinie, mais est déterminée en fonction des données. Les auteurs de la publication affirment que l'utilisation de cette fonction d'activation est un facteur clé pour dépasser le niveau humain dans la tâche de reconnaissance d'images ImageNet. Le processus de rétropropagation et de mise à jour pour PReLU (page 43 diapositives) est assez simple et similaire au processus correspondant pour les ReLU traditionnels.

ReLU randomisé

Pour le ReLU randomisé (ReLU randomisé, RReLU), la pente sur l'intervalle négatif est générée aléatoirement à partir d'un intervalle donné pendant l'entraînement et reste constante pendant les tests. Dans le cadre du concours Kaggle du National Data Science Bowl (NDSB), les RReLU ont pu réduire le surapprentissage en raison de leur élément inhérent de caractère aléatoire. Selon le gagnant de ce concours, lors de l'entraînement la valeur α je a été généré aléatoirement à partir de la distribution 1/U(3, 8), et pendant les tests, la valeur était constante et égale à l'espérance mathématique : 2 / (l + u) = 2 / 11.

La régularisation L1 a la propriété intéressante de rendre les vecteurs de poids clairsemés (c'est-à-dire très proches de zéro). En d’autres termes, les neurones régularisés en L1 finissent par n’utiliser qu’un petit sous-ensemble des entrées les plus importantes et ne sont donc pratiquement pas affectés par les entrées bruyantes.

En pratique, s’il n’est pas nécessaire de sélectionner directement des fonctionnalités, la régularisation L2 fournira de meilleurs résultats que la régularisation L1.

Limitation de la norme du vecteur de poids

Une autre méthode de régularisation est la méthode de limitation de la norme du vecteur poids (contrainte de norme maximale). Dans cette méthode nous fixons une limite supérieure absolue à la norme du vecteur de poids de chaque neurone. La contrainte est appliquée à l’aide d’une descente de gradient projetée. En pratique, cela se réalise de la manière suivante : les poids sont mis à jour comme d'habitude, puis le vecteur de poids ω chaque neurone est limité pour que la condition soit satisfaite ||ω|| 2< c . Généralement la valeur c est de l'ordre de 3 ou 4. Certains chercheurs ont rapporté des effets positifs lors de l'utilisation de cette méthode de régularisation. L’une des propriétés utiles de cette méthode est qu’elle empêche les poids d’exploser même si le taux d’apprentissage est trop élevé, car les mises à jour des poids sont toujours limitées.

Abandonner

Abandon – simple et très méthode efficace régularisation, complétant les méthodes ci-dessus. Cela a été récemment proposé dans l'ouvrage. L'essence de la méthode est que pendant le processus de formation, un sous-réseau est sélectionné plusieurs fois au hasard dans le réseau général et les poids sont mis à jour uniquement au sein de ce sous-réseau. Les neurones tombent dans un sous-réseau avec une probabilité p, que l'on appelle le coefficient d'abandon. Pendant les tests, aucun abandon n'est appliqué ; à la place, les pondérations sont multipliées par le facteur d'abandon, ce qui donne un score moyen pour l'ensemble de tous les sous-réseaux. En pratique, le taux d'abandon scolaire p est généralement choisi à 0,5, mais il peut être ajusté à l'aide d'un ensemble de données de validation.

L'abandon est l'une des méthodes de régularisation les plus populaires. En 2014 société Google a déposé une demande de brevet pour cette méthode.

7. Visualisation

Pendant le processus d'apprentissage, il est utile d'effectuer des visualisations pour contrôler l'efficacité de l'apprentissage.

Comme on le sait, le taux d’apprentissage est un paramètre très sensible. Dans la figure 1 ci-dessous, nous voyons qu'à un taux d'apprentissage très élevé, la courbe d'erreur aura une forme inacceptable. Avec un faible taux d’apprentissage, l’erreur diminuera très lentement même après un grand nombre d’époques. À un taux d'apprentissage élevé, l'erreur diminue rapidement au début, mais tombe ensuite à un minimum local, de sorte que le réseau peut ne pas obtenir de bons résultats. Dans le cas où le taux d'apprentissage est choisi correctement (bon) (ligne rouge), l'erreur diminue progressivement et finit par atteindre une valeur minimale.

Examinons maintenant la courbe d'erreur à plus grande échelle. Une époque correspond à un seul passage dans l'ensemble de données d'entraînement ; par conséquent, chaque époque comprend de nombreux mini-lots. Si nous visualisons l'erreur pour chaque mini-lot, la courbe d'erreur ressemblera à la figure 2. Comme mentionné sur la figure 1, si la courbe d'erreur a une forme proche du linéaire, cela indique un faible taux d'apprentissage. Si l’erreur diminue lentement, le taux d’apprentissage est probablement trop rapide. La « largeur » de la courbe correspond à la taille du mini-lot. Si la « largeur » est trop grande, c'est-à-dire que l'écart entre les mini-paquets est trop grand, alors il est nécessaire d'augmenter la taille du mini-paquet.

Une autre conclusion peut être tirée à l’aide des courbes de précision. Dans la figure 3, la courbe rouge représente la précision sur l'ensemble de données d'entraînement et la courbe verte sur l'ensemble de données de validation. La distance entre les courbes montre l'efficacité du modèle. Longue distance indique que le réseau classe bien les données de formation et classe mal les données de validation. Il y a donc dans ce cas un surentraînement. Pour résoudre ce problème, la régularisation doit être renforcée. S'il n'y a pas de distance entre les courbes et que les deux courbes correspondent niveau faible précision, ce qui signifie que notre modèle a une capacité d’apprentissage insuffisante. Dans ce cas, pour améliorer le résultat, il faut augmenter la capacité du modèle.

8. Ensembles de réseaux profonds

Différentes étapes de formation d'un modèle

Dans le cas où le processus d'apprentissage est très exigeant en ressources, vous pouvez combiner différentes étapes de formation d'un modèle (point de contrôle) en un ensemble, par exemple après chaque époque. Cette approche n’offre pas beaucoup de variété, mais peut donner en pratique d’assez bons résultats.

Exemple pratique :

Dans les problèmes réels, les données sont généralement inégalement réparties entre les classes, c'est-à-dire que certaines classes ont un grand nombre de images de formation, et certaines - un nombre nettement inférieur. Comme indiqué dans un rapport récent, des données de formation déséquilibrées peuvent avoir un impact négatif important sur les performances globales des réseaux convolutifs profonds. La solution la plus simple à ce problème consiste à dupliquer les images dans les classes contenant un petit nombre d’images ou à exclure les images des classes contenant un grand nombre d’images. Une autre solution à ce problème, que nous avons appliquée dans le cadre du concours décrit ci-dessus, est le cadrage. Étant donné que les images originales des événements culturels étaient inégalement réparties entre les classes, nous avons extrait des correctifs d'images pour les classes comportant un petit nombre d'instances de formation. D’une part, cette approche a fourni une variété de données d’entraînement, et d’autre part, elle nous a permis de résoudre le problème du déséquilibre.

Pour résoudre le problème décrit, vous pouvez également appliquer la stratégie réglage fin(mise au point) de modèles pré-entraînés. En particulier, l'ensemble de données de formation d'origine peut être divisé en deux parties, de sorte qu'une partie contient des classes représentées par un grand nombre d'images et l'autre contient des classes représentées par un petit nombre d'images. Chaque partie sera relativement équilibrée. Après cela, vous devez d'abord entraîner le modèle sur des classes avec un grand nombre d'images, puis sur des classes avec un petit nombre d'images.

Traduction de Stanislav Petrenko

A quoi sert un neurone artificiel ? En mots simples, il calcule la somme pondérée de ses entrées, ajoute un biais et décide si cette valeur doit être exclue ou utilisée davantage (oui, la fonction d'activation fonctionne comme ça, mais allons-y dans l'ordre).

Fonction d'activation détermine la valeur de sortie du neurone en fonction du résultat de la somme pondérée des entrées et de la valeur seuil.

Considérons un neurone :

Maintenant le sens Oui peut être n'importe quoi compris entre -infini et +infini. En réalité, le neurone ne connaît pas la limite au-delà de laquelle s’ensuit l’activation. Répondons à la question de savoir comment nous décidons si un neurone doit être activé (nous regardons le schéma d'activation car nous pouvons faire une analogie avec la biologie. C'est ainsi que fonctionne le cerveau, et le cerveau est une bonne indication du travail d'un complexe et système intelligent).

A cet effet, nous avons décidé d'ajouter une fonction d'activation. Il vérifie la valeur produite par le neurone Oui sur la question de savoir s'ils devraient relations extérieures traitez ce neurone comme activé, ou il peut être ignoré.

Fonction d'activation par étapes

La première chose qui vient à l’esprit est la question de savoir ce qui est considéré comme la limite d’activation de la fonction d’activation. Si la valeur Oui supérieure à une certaine valeur seuil, on considère que le neurone est activé. Sinon, on dit que le neurone est inactif. Ce schéma devrait fonctionner, mais formalisons-le d'abord.

  • Fonction A = activée si Y > limite, sinon non.
  • Autre méthode : A = 1 si Y > bordure, sinon A = 0.

La fonction que nous venons de créer s’appelle une fonction étape. Cette fonction est illustrée dans la figure ci-dessous.

La fonction prend la valeur 1 (activé) lorsque O > 0(limite), et la valeur est 0 (non activé) dans le cas contraire.

Nous avons créé une fonction d'activation pour le neurone. C’est une méthode simple, mais elle présente des inconvénients. Considérez la situation suivante.

Imaginez ce que nous créons classificateur binaire- un modèle qui doit dire « oui » ou « non » (activé ou non). La fonction step le fera pour vous - elle affichera exactement 1 ou 0.

Imaginons maintenant un cas où nous avons besoin grande quantité neurones pour classification de nombreuses classes: classe1, classe2, classe3 et ainsi de suite. Que se passe-t-il si plus d’un neurone est activé ? Tous les neuronesla fonction d'activation affichera 1. Dans ce cas, des questions se posent quant à savoir quelle classe doit finalement être obtenue pour un objet donné.

Nous voulons qu'un seul neurone soit activé et que les fonctions d'activation des autres neurones soient égales à zéro (ce n'est que dans ce cas que nous pouvons être sûrs que le réseau détermine correctement la classe). Un tel réseau est plus difficile à former et à réaliser la convergence. Si la fonction d'activation n'est pas binaire, alors les valeurs possibles sont « activée à 50 % », « activée à 20 % » et ainsi de suite. Si plusieurs neurones sont activés, vous pouvez trouver le neurone avec valeur la plus élevée fonction d'activation (il vaut mieux, bien sûr, qu'elle soit softmax fonction, pas maximum. Mais n’abordons pas ces questions pour l’instant).

Mais dans ce cas, comme auparavant, si l’on dit que plus d’un neurone est « activé à 100 % », le problème demeure. Parce qu'il existe des valeurs intermédiaires de sortie des neurones, le processus d'entraînement est plus fluide et plus rapide, et la probabilité d'avoir quelques neurones complètement activés pendant l'entraînement est réduite par rapport à une fonction d'activation par étapes (bien que cela dépende de ce que vous entraînez). sur et sur quelles données).

Nous avons décidé que nous voulions recevoir des valeurs intermédiaires de la fonction d'activation (fonction analogique), et pas seulement dire « activé » ou non (fonction binaire).

La première chose qui me vient à l’esprit est une fonction linéaire.

Fonction d'activation linéaire

A = CX

Une fonction linéaire est une ligne droite proportionnelle à l’entrée (c’est-à-dire la somme pondérée sur ce neurone).

Ce choix de fonction d'activation permet d'obtenir un spectre de valeurs, et pas seulement une réponse binaire. Plusieurs neurones peuvent être connectés ensemble et, si plusieurs neurones sont activés, une décision est prise en fonction de l'application de l'opération max (ou softmax). Mais cela ne va pas sans problèmes.

Si vous connaissez la méthode d’apprentissage, vous remarquerez peut-être que pour cette fonction la dérivée est égale à la constante.

Dérivé de A=cx Par Xégal à Avec. Cela signifie que le dégradé n'a rien à voir avec X. Le gradient est un vecteur constant et la descente s'effectue selon un gradient constant. Si une prédiction erronée est faite, alors les modifications apportées par l'erreur sont également constantes et indépendantes de la modification du delta(x) d'entrée.

Ce n’est pas bon (pas toujours, mais dans la plupart des cas). Mais il y a un autre problème. Regardons les couches connectées. Chaque couche est activée par une fonction linéaire. La valeur de cette fonction va à la couche suivante en tant qu'entrée, la deuxième couche calcule la somme pondérée à ses entrées et, à son tour, active les neurones en fonction d'une autre fonction d'activation linéaire.

Peu importe le nombre de couches que nous avons. S'ils sont tous de nature linéaire, alors la fonction d'activation finale dans la dernière couche sera simplement une fonction linéaire des entrées dans la première couche ! Arrêtez-vous un instant et réfléchissez à cette pensée.

Cela signifie que deux couches (ou N couches) peuvent être remplacées par une seule couche. Nous avons perdu la possibilité de créer des décors à partir de calques. Peu importe la façon dont nous empilons, le tout sera toujours comme une seule couche avec une fonction d'activation linéaire ( combinaison de fonctions linéaires de manière linéaire - une autre fonction linéaire).

Sigmoïde

Le sigmoïde apparaît lisse et semblable à une fonction échelonnée. Considérons ses avantages.

Premièrement, le sigmoïde est de nature non linéaire et la combinaison de ces fonctions produit également une fonction non linéaire. Nous pouvons maintenant empiler des couches.

Un autre avantage d'une telle fonction est qu'elle n'est pas binaire, ce qui rend l'activation analogique, contrairement à une fonction échelon. Le sigmoïde se caractérise également par un dégradé doux.

Si vous remarquez dans la plage de valeurs X de -2 à 2 Les valeurs Y changent très rapidement. Cela signifie que tout petit changement de valeur X dans ce domaine entraîne un changement significatif de la valeur Oui. Ce comportement de la fonction indique que Y a tendance à épouser l'un des bords de la courbe.

Le sigmoïde semble être une fonction adaptée aux problèmes de classification. Il s'efforce d'amener les valeurs à l'un des côtés de la courbe (par exemple, au sommet en x=2 et plus bas à x=-2). Ce comportement permet de trouver des limites claires lors des prédictions.

Un autre avantage de la fonction sigmoïde par rapport à la fonction linéaire est le suivant. Dans le premier cas, nous avons une plage fixe de valeurs de fonction - , tandis que la fonction linéaire varie dans (-inf, inf). Cette propriété du sigmoïde est très utile, car elle ne conduit pas à des erreurs dans le cas grandes valeurs Activation.

Aujourd’hui, le sigmoïde est l’une des fonctions d’activation les plus courantes dans les réseaux neuronaux. Mais il présente également des inconvénients auxquels il convient de prêter attention.

Vous avez peut-être déjà remarqué qu'à mesure que vous approchez des extrémités du sigmoïde, les valeurs Y ont tendance à mal répondre aux changements de X. Cela signifie que le gradient dans ces zones prend de petites valeurs. Ceci entraîne à son tour des problèmes avec le gradient d’extinction. Examinons en détail ce qui se passe lorsque la fonction d'activation s'approche de la partie presque horizontale de la courbe des deux côtés.

Dans un tel cas, la valeur du gradient est faible ou disparaît (ne peut pas apporter de changement significatif en raison de la valeur extrêmement petite). Le réseau neuronal refuse d'apprendre davantage ou le fait extrêmement lentement (selon la méthode d'utilisation ou jusqu'à ce que le gradient/calcul commence à souffrir de limitations en virgule flottante). Il existe des options pour travailler sur ces problèmes, et le sigmoïde est toujours très apprécié pour les problèmes de classification.

Une autre fonction d’activation couramment utilisée est la tangente hyperbolique.

La tangente hyperbolique est très similaire à la sigmoïde. Et en effet, c'est la fonction sigmoïde ajustée.

Par conséquent, une telle fonction présente les mêmes caractéristiques que le sigmoïde évoqué précédemment. Sa nature est non linéaire, elle est bien adaptée aux combinaisons de couches et la plage de valeurs de fonction est (-1, 1). Il ne sert donc à rien de s’inquiéter d’une surcharge de la fonction d’activation avec des valeurs élevées. Cependant, il convient de noter que le gradient de la fonction tangentielle est supérieur à celui de la sigmoïde (la dérivée est plus raide). La décision de choisir sigmoïde ou tangente dépend de vos exigences en matière d'amplitude de gradient. Tout comme la sigmoïde, la tangente hyperbolique présente le problème de la disparition du gradient.

Tangent est également une fonction d'activation très populaire et utilisée.

ReLu

Le prochain sur notre liste est la fonction d'activation ReLu.

A(x) = max(0,x)

En utilisant la définition, il devient clair que ReLu renvoie la valeur X, Si X positif, et 0 sinon. Le schéma de fonctionnement est présenté ci-dessous.

À première vue, ReLu semble avoir les mêmes problèmes qu’une fonction linéaire, puisque ReLu est linéaire dans le premier quadrant. Mais en fait, ReLu est de nature non linéaire et la combinaison de ReLu est également non linéaire! (En fait, une telle fonction est une bonne fonction approximateur, puisque toute fonction peut être approchée par une combinaison de ReLu). Cela signifie que nous pouvons empiler des couches. Région valeurs acceptables RéLu - )