le perceptron multi-couches

Un perceptron multi-couche est un réseau de neurones organisé (comme son nom l'indique) en couches.

L'élément de base d'un perceptron est donc le neurone. Un neurone i a n entrées (des réels xj) , une sortie (un réel yi) , et une fonction de transfert permettant d'obtenir la sortie yi en fonction des xj.

un neurone à 3 entrées

Un perceptron multi-couches va donc ressembler à ça :

La figure ci-dessus représente par convention un perceptron à 2 couches : la première couche sert uniquement de transmetteur ; la couche cachée et la couche de sortie sont actives.

On s'intéresse ici plus particulièrement au fonctions de transfert de type

yi = tfi . (( wij xj ) + i ) , où wij sont les poids des synapses, i un terme additif, tfj une fonction de transfert. Les wij sont non nuls uniquement pour les j appartenant à la couche précédente.

et on cherche à faire approcher à ce réseau une fonction f, en adaptant les coefficients wij et i de chaque neurone.

Pour cela, on peut utiliser la technique de la rétro-propagation du gradient. Une appliquette vous permet de tester l'algorithme décrit ci-dessous.

L'algorithme de rétropopagation du gradient

Etant donné un vecteur d'entrée [xi], on peut calculer les valeurs des sorties de chaque neurone, en particulier les sorties yi des neurones de sorties. On peut en déduire l'erreur pour chaque neurone. L'erreur quadratique moyenne est alors :

E2 = 1/2 (yj - f([xi])2

On veut descendre le long du gradient de E2 . Il faut donc calculer ce gradient, et dériver par rapport à chacun des wij et i .

Pour les sorties, c'est facile : l'erreur sur un neurone ne dépend pas des coefficients des autres neurones de sortie, soit :

dE2 / dwij = (yi - f([xi]) dyi/dwi = Ei . tfi'(ei) . yj

dE2 / di = (yi - f([xi]) dyi/dti = Ei . tfi'(ei)

ei = ( wij xj ) + i ; tfi' est la dérivée de tfi ; Ei = (yi - f([xi]) est l'erreur sur la sortie i.

Pour les couches intermédiaires, c'est un peu plus compliqué : soit un neurone i appartenant à une couche intermédiaire , et j un neurone de la couche précédente ; On obtient la dérivée dE2 / dwij en sommant sur les neurones k de la couche suivante la dérivée de E2 par rapport à yi, multipliée par la dérivée de yi par rapport à yj .

Ce qui donne pour une couche précédant la couche de sortie :

dE2 / dwij = (yk - f([xk]) . dyk/dyi . dyi/dyj

= ( Ek . tfk'(ek) . wki ). tfi'(ei) . yj

Le terme Ek . tfk'(ek) . wki peut être considéré comme une pseudo-erreur sur les sorties des couches cachées obtenu par rétropopagation de l'erreur sur la couche suivante.

En posant : Ei = Ek . tfk'(ek) . wki , on peut de proche en proche calculer l'erreur sur les couches précédentes.

On a ainsi calculé le gradient de l'erreur instantanée par rapport aux paramètres du perceptron. L'algorithme présenté dans l'appliquette consiste à choisir successivement un vecteur d'entrées [xi] et à effectuer une correction proportionnelle au gradient calculé.

page suivante : l'appliquette

retour page principale