Intelligence artificielle

La magie derrière le réseau perceptron – Adriano Vinhas – Medium

La magie derrière le réseau perceptron - Adriano Vinhas - Medium


Note de préface

Cette histoire fait partie d'une série que je crée sur les réseaux de neurones. Ce chapitre est consacré à un type très simple de réseau de neurones dont la création est attribuée à Frank Rosenblatt après ses recherches dans les années 50 et 60. Je vais parler du perceptron.

Le neurone perceptron

Le perceptron est une amélioration du neurone McCulloch et Pitts que j'ai mentionné dans mon dernier article. Comme dans les modèles McCulloch et Pitts, il s’agit d’un neurone unique qui utilise la fonction de seuil comme fonction d’activation, ainsi que d’un ensemble de connexions de différentes forces reliant plusieurs entrées au neurone. Cependant, la percée majeure introduite par Rosenblatt suggérait un moyen pour qu'un réseau de neurones puisse apprendre les valeurs de poids optimales par lui-même. Ces poids pourraient maintenant être numériques et déterminés par l'algorithme d'apprentissage plutôt que fabriqués à la main et limités à une méthode booléenne (positive / négative). La manière dont ces valeurs de poids ont été optimisées a été réalisée à l'aide d'une stratégie d'apprentissage appelée enseignement supervisé.

L'apprentissage supervisé est un type d'apprentissage qui implique l'existence d'un superviseur / enseignant pour guider le modèle pendant le processus d'apprentissage. En pratique, cela signifie que le réseau est présenté avec plusieurs exemples et leurs réponses correctes pour fournir des indications sur ce qui peut être amélioré. Ensuite, le réseau ajuste ses pondérations en fonction des réponses qu'il s'est trompé, afin qu'au cours d'une itération future, le réseau puisse augmenter le nombre d'exemples prédits correctement.

Le perceptron a été conçu pour un type spécifique de problèmes d’apprentissage automatique: problèmes de classification binaire. Un problème de classification est un problème dans lequel notre ensemble de réponses possibles est fini et limité à un ensemble de catégories / classes (par exemple, détecter si un courrier électronique est un spam ou non). Dans notre cas perceptron, la raison pour laquelle il résout uniquement des problèmes de classification binaire est due à la nature de sa fonction d'activation. J'ai mentionné dans le dernier article que la sortie y d'un réseau de neurones est la sortie de la fonction d'activation f (z). Étant donné que le perceptron utilise la fonction de seuil comme activation et que cette fonction a deux sorties possibles, 0 ou 1, la sortie sera alors conditionnée pour distinguer uniquement entre deux classes différentes. Vous pouvez imaginer cela comme un neurone essayant de décider entre allumer ou éteindre une lumière.

Juste un chat agissant comme un neurone perceptron

Construire un réseau perceptron

Pimentons les choses. Un moyen possible de rendre notre architecture réseau un peu plus complexe consiste à placer plusieurs perceptrons et à vous assurer que toutes les entrées sont connectées à chacun des perceptrons que nous avons placés. L’illustration de ce que je viens de décrire est illustrée à la figure 1. Dans la terminologie Machine Learning, on considère ce groupe de neurones comme un couche entièrement connectée ou couche dense parce que chacune des entrées a une connexion à chacun des neurones. Les réseaux de neurones peuvent avoir plusieurs couches et ce concept sera exploré en détail dans l’un de mes prochains articles. Restons simples pour l’instant.

Figure 1: Architecture d'un réseau de neurones à plusieurs perceptrons

Dans la figure 1, il y a 3 entrées, chacune d'entre elles est connectée à 5 neurones différents. Le carré vert représente le tracé de la fonction d'activation de seuil.

Comme il existe une connexion de chacune des entrées à chacun des neurones, on peut dire que ces neurones sont indépendants les uns des autres: le calcul de leurs sorties ne dépend pas des autres. Cela dépend des entrées (qui seront naturellement les mêmes pour chaque neurone), de leur poids (chaque neurone a son propre ensemble) et de leurs fonctions d'activation (chaque neurone a le sien). Cela nous oblige à redéfinir la définition du vecteur du poids faite au chapitre 0.

A partir de maintenant, chaque connexion sera identifiée comme w(i, j), où je identifie l'entrée d'où provient la connexion et j est le neurone où la connexion va. La représentation formelle se fait comme suit: laissez un réseau de neurones avoir m les entrées et n les neurones. Chaque connexion est représentée par w(i, j) où 0 je <m et 0 j <n, qui à leur tour forment ensemble la matrice de poids W

Cette matrice W est celle qui décrit les connexions entre toutes les entrées de tous les neurones de la couche d’un perceptron. Pour l'exemple décrit à la figure 1, nous avons m= 3 parce que c'est le nombre d'entrées et n= 5 parce que ce sont le nombre de neurones, ce qui signifie que la matrice W aura 3 lignes et 5 colonnes.

Former un réseau perceptron

Le processus de formation proposé par Rosenblatt pour les réseaux de perceptron est assez simple. Il consiste à montrer au réseau un ensemble d’exemples qu’il devrait apprendre. Chaque exemple a une sortie attendue et un ensemble de métriques / caractéristiques qui lui sont associées. Celles-ci sont appelées fonctionnalités. Les caractéristiques de chaque exemple sont introduites dans le réseau par l’intermédiaire des nœuds d’entrée du réseau, de sorte que la sortie prédite puisse être calculée. Ensuite, les poids sont ajustés en fonction des divergences éventuelles entre la sortie attendue (t) et la sortie prévue (y). Ce processus est itératif car les mêmes exemples sont présentés au réseau plusieurs fois. Mais comment pouvons-nous changer ces poids?

Nous voulons que les pondérations changent de manière à ce que la prévision du réseau soit plus proche du résultat réel lorsque le même exemple est présenté au réseau lors de la prochaine itération. La logique derrière cela est de diminuer les poids si un neurone a tiré mais il n’aurait pas dû le faire (y = 1 et t = 0) ou augmenter les poids si un neurone ne s'est pas déclenché mais qu'il aurait dû le déclencher (y = 0 et t = 1). Formellement parlant, nous voulons ajouter un delta Δw (i, j) au poids actuel w (i, j) et créer un nouveau poids qui remplace celui existant.

La prochaine question est donc de savoir combien devrait être ce delta. La formule de mise à jour repose sur 3 facteurs:

  • La différence entre la sortie attendue et prévue
    On peut utiliser - (y-t) imiter le comportement prévu pour les mises à jour de poids. Si le neurone avait déclenché, nous aurions Δw (i, j) = - (0–1) = 1 (le poids augmente) alors que si le neurone aurait tiré, nous avons Δw (i, j) = - (1–0) = - 1 (le poids diminue);
  • Le signe d'entrée
    Si le signe d'entrée est négatif, la logique ci-dessus pour la mise à jour des poids est inversée. Imaginez qu'après avoir montré une entrée négative à un perceptron avec un seul poids positif w (i, j), un neurone aurait dû être déclenché mais il ne l’a pas fait (t = 1 et y = 0). Avec la logique ci-dessus Δw (i, j) = 1, ce qui signifie que notre poids deviendra plus positif, la multiplication entre X et w devient plus négatif et le résultat après la fonction d'activation sera toujours égal à 0, mais encore plus éloigné du seuil. Afin de rendre compte de cela, nous utilisons l’entrée comme partie de la formule en la multipliant: - (y-t) × x
  • Le taux d'apprentissage
    C'est l'un des paramètres les plus importants du processus de formation car il définit la rapidité avec laquelle le réseau apprend ses poids en définissant la quantité d'erreur à utiliser pour la mise à jour des poids. C’est normalement un nombre très faible (disons entre 0,1 et 0.4) et il est représenté par un µ.

Compte tenu de ces trois facteurs, voici la formule finale pour former un perceptron:

1549918851 544 La magie derrière le réseau perceptron Adriano Vinhas Medium - La magie derrière le réseau perceptron - Adriano Vinhas - Medium

w(i, j) est un poids qui relie l'entrée je au neurone j, y (j) identifie la sortie du perceptron, t(j) identifie le résultat attendu du perceptron, x(je) identifie l'entrée et µ est le taux d'apprentissage.

Le rôle de biais

Nous avons vu précédemment que la sortie d’un neurone de perceptron est le produit scalaire situé entre les entrées (X) et des poids (w) soumis à la fonction d'activation de seuil. Mais que se passe-t-il si cette entrée est 0? Imaginons un seul neurone avec une seule entrée. Nous savons que notre production y est déterminé par y = f (x₀ × w₀). Si l'entrée est x₀ = 0 puis y = f (0) = 1.

Dans ce cas, la sortie du neurone sera la même quelle que soit la valeur de poids due à la propriété zéro-produit. Cela implique qu'il n'y a pas d'apprentissage en cours car, autant que la valeur de poids change dans le processus d'apprentissage, le neurone produira toujours le même résultat. Ce problème est résolu en ajoutant un nœud supplémentaire connecté au neurone appelé le noeud de biais, afin de rendre l'apprentissage possible. L’architecture de perceptron modifiée est décrite à la figure 2.

Figure 2: Architecture d'un seul neurone avec biais

En prenant comme exemple la figure 2, la formule pour obtenir le résultat y sera alors y = f (x₀ × w₀+x₁ × w₁+X× w₂ + b₀).

Forces et limites

Le perceptron est un puissant solutionneur de problèmes étant donné sa simplicité. Si un problème a une solution séparable linéairement, il est prouvé que le perceptron peut toujours converger vers une solution optimale.

Deux points ressortent de ma dernière phrase:

  • Qu'est-ce que «Solution séparable linéairement» signifier?
    Imaginez un ensemble de données avec deux classes (cercles et croix) et deux entités pouvant alimenter un perceptron. L’objectif du réseau est de deviner s’il s’agit d’une croix ou d’un cercle en fonction de ces deux caractéristiques. Une façon de visualiser le jeu de données consiste à tracer un graphique en deux dimensions du jeu de données, l’axe des ordonnées étant la première entrée et l’axe des x, le second. S'il existe un moyen de tracer une ligne droite telle que les cercles figurent d'un côté et les croix de l'autre, le problème est dit séparable linéairement. La logique s'applique toujours pour les problèmes avec plus d'entités / entrées, bien qu'avec 3 entités, la limite qui sépare les classes ne soit plus une ligne mais un plan. Avec plus de 3 caractéristiques, la limite s'appelle un hyperplan.
  • Comment savons-nous que nous pouvons réellement obtenir une solution optimale?
    Dans ce contexte, une solution optimale est celle qui est capable de créer une limite qui sépare les deux classes à travers le processus de formation de perceptron. La preuve du théorème de convergence des perceptrons indique que, lorsque le réseau n'a pas donné l'exemple, ses pondérations vont être mises à jour de manière à ce que la limite du classificateur se rapproche pour être parallèle à une limite hypothétique séparant les deux classes. Pour plus de détails avec plus de jargon mathématique, consultez ce lien.

Cependant, le problème avec le perceptron est que beaucoup de problèmes du monde réel ne sont pas séparables linéairement. Il est donc très probable que l’utilisation d’une couche de perceptrons ne soit pas la meilleure solution pour votre problème car elle ne pourra pas trouver la solution optimale. limite qui sépare vos classes. Cette limitation est illustrée à la figure 4 par le biais de ce que l’on appelle le problème XOR.

Figure 4: Problème XOR et problème de séparabilité linéaire illustré

Dans la figure ci-dessus, il y a une représentation graphique de la fonction logique OU et de la fonction XOR (XOR signifie «exclusif ou»). La fonction OU est celle qui, basée sur deux entrées, renvoie 1 si l'une des entrées est 1 (sinon le résultat est 0), alors que la fonction XOR génère 1 si une seule des entrées est 1.

Si nous devions utiliser un perceptron à deux entrées pour enseigner ces fonctions, nous pouvons voir dans le graphique situé à l'extrême gauche de la figure 4 (fonction OU) qu'il existe une ligne séparant les croix du cercle, tandis que dans le graphique situé à l'extrême droite (fonction XOR), La seule façon de séparer les deux classes est d'utiliser une limite non linéaire. Cela signifie qu'un seul perceptron peut apprendre la fonction OU mais il ne peut pas apprendre la fonction XOR.

Dans cet article, je vous ai expliqué ce qu'est le perceptron, quels types de problèmes il résout, comment il peut être formé pour apprendre des modèles en séparant les classes et quelles sont ses limites. Cependant, il est maintenant nécessaire de plonger dans le code et de concrétiser cela, ainsi, dans mon prochain article, je vais vous montrer comment créer un perceptron, le former et l'utiliser. Restez à l'écoute!

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close