|
|
|
# Les réseaux de neurones et l'apprentissage
|
|
|
|
|
|
|
|
## Origines
|
|
|
|
|
|
|
|
### Le modèle naturel
|
|
|
|
|
|
|
|
Une très grande partie du règne animal exhibe des capacités d'apprentissage, et depuis longtemps les hommes se sont interrogés sur le fonctionnement de notre mémoire, et sur la façon dont elle s'organisait.
|
|
|
|
|
|
|
|
L'une des technique utilisée pour conférer à des programmes des capacités d'apprentissage consiste à suivre une approche bio-mimétique : copions le vivant ! Nous allons donc chercher à créer des neurones **artificiels**, *in-silico*, suivant une approche **connexionniste** en les mettant en **réseau**, et pour ce faire nous commencerons par observer ce que nous savons des cellules neuronales réelles.
|
|
|
|
|
|
|
|
Même si les modèles de neurones réels sont toujours incomplets on peut déjà décrire un neurone comme une cellule particulière composée de plusieurs parties :
|
|
|
|
|
|
|
|
- Un corps cellulaire (1), noyau ou **soma**,
|
|
|
|
- Auquel sont reliées de nombreuses **dendrites** (2) qui sont comme les portes d'entrées des signaux provenant d'autres neurones,
|
|
|
|
- Et un **axone** (3) qui est la voie unique de sortie du neurone, qui va se diviser par la suite pour se connecter aux dendrites d'autres neurones par des **synapses**.
|
|
|
|
|
|
|
|

|
|
|
|

|
|
|
|
|
|
|
|
Les neurones sont organisés en *réseau*, chacun étant connecté à une multitude d'autres. L'axone en sortie du neurone se connecte aux dendrites en entrée d'autres neurones. Un neurone s'activant propage un signal vers les dendrites en entrées des neurones auxquels il est connecté et forme donc un réseau de communication à travers lequel se propage les signaux.
|
|
|
|
|
|
|
|
Entre les axones et les dendrites se situent des liaisons que l'on nomme **synapses**. Ces liaisons peuvent laisser passer, voire amplifier un influx nerveux ou au contraire l'atténuer.
|
|
|
|
|
|
|
|
Cet influx nerveux représente l'information transitant entre chaque neurone. Il peut être plus ou moins fort dans le sens où chaque synapse, en fonction d'un **apprentissage**, laissera passer plus ou moins cet influx. Ainsi certaines synapses seront **inhibitrices** car elle bloqueront l'influx, d'autres seront **incitatrices** car elles laisseront passer l'influx. On appelle cela le **poids synaptique**.
|
|
|
|
|
|
|
|
<!--img alt="Modification des poids synaptiques" src="Img/ModificationSynaptique.svg" style="width=300px;"/-->
|
|
|
|
|
|
|
|
Lorsqu'un neurone reçoit suffisamment d'influx nerveux, au delà d'un **seuil de déclenchement**, il peut **s'activer** et envoyer à son tour un influx à travers son axone aux autres neurones auxquels il est connecté.
|
|
|
|
|
|
|
|
Cependant, dans la majeure partie des cellules neuronales, les synapses utilisent des **médiateurs** chimiques pour faire transiter l'influx. C'est à ce niveau qu'une synapse peut générer plus ou moins de médiateurs chimiques et donc amplifier ou inhiber l'influx électrique.
|
|
|
|
|
|
|
|
Le réseau entier de neurones connectés par leur synapses, toutes plus ou moins incitatrices ou inhibitrices, ainsi que les seuils d'activation des neurones, forment un modèle capable de produire des sorties particulières en fonction d'entrées particulières.
|
|
|
|
|
|
|
|
L'**apprentissage** se produit lorsque les pondérations synaptiques se modifient. C'est par changements successifs inhibant ou incitant les synapses que le réseau se transforme pour produire des sorties particulières en fonction des entrées.
|
|
|
|
|
|
|
|
Bien entendu le modèle réel des différents types de cellules neuronales est bien plus complexe, mais c'est cette idée simple d'apprentissage par *inhibition* ou *incitation* que nous allons utiliser dans la suite.
|
|
|
|
|
|
|
|
### Historique
|
|
|
|
|
|
|
|
L'hypothèse que la mémoire (et la pensée) étaient localisées dans le cerveau et que ce dernier était un ensemble d'éléments interconnectés est ancienne. Cependant, les éléments que nous allons utiliser sont assez récents :
|
|
|
|
|
|
|
|
* On attribue généralement à **Alcméon de Crotone** (-520 à -450), une hypothèse reprise par **Démocrite** puis **Hippocrate** selon laquelle *ce qui gouverne siège dans le cerveau*.
|
|
|
|
* **Aristote** ensuite (même s'il imaginait lui que le cœur était le siège de la pensée) décrit la *mémoire* comme *une interconnexion complexe d'éléments simples*.
|
|
|
|
* **Galien** (env -131 à 201) sera le premier à décrire le parcours de l'influx nerveux à partir du cerveau.
|
|
|
|
* **H. Spencer (1820-1903)** Propose que *Les états mentaux dépendent strictement des structures nerveuses et de leur évolution. Interprétation de la psychologie à travers des réseaux d'unités fortement connectées.*
|
|
|
|
* **S.R. Cajal** découvre le neurone : *le système nerveux est constitué d'une myriade de cellules interconnectées*.
|
|
|
|
* **E.L. Thorndike** (1842-1910) Propose le concept de mémoire associative : la fréquence de conjonction d'événements tend à renforcer les liens entre leurs représentations cérébrales.
|
|
|
|
* Ce n'est qu'en 1955, avec les progrès de la microscopie électronique que ces travaux ont été validés.
|
|
|
|
|
|
|
|
## La règle de Hebb
|
|
|
|
|
|
|
|
Hebb (1904-1985) énonce la règle de co-activation qui reprend l'idée de Throndike :
|
|
|
|
|
|
|
|
> « Quand l'axone d'une cellule A est suffisamment proche pour exciter une cellule B et que de manière répétée et persistante, il participe à l'activation de B, alors un processus de croissance ou de changements métaboliques se met en œuvre dans l'une ou dans les deux cellules, de telle manière que la capacité de A à activer B en est renforcée. »
|
|
|
|
|
|
|
|
Il s'agit là d'une formalisation du mécanisme d'*apprentissage*. C'est par le biais de modifications successives des synapses et de leur capacité à inhiber ou inciter l'influx nerveux que le réseau se modifie.
|
|
|
|
|
|
|
|
Voici une illustration de la règle de Hebb, en rouge les neurones activés :
|
|
|
|
|
|
|
|
Soit $`w_{ij}(t)`$ le poids de la connexion entre les neurones $`i`$ et $`j`$ à l'instant $`t`$. Avec $`f(n)=1`$ si le neurone $`n`$ est activé et $`f(n)=0`$ si le neurone est inactif. On a :
|
|
|
|
|
|
|
|
```math
|
|
|
|
w_{ij}(t+1) = w_{ij}(t) + f(i) \cdot f(j)
|
|
|
|
```
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
## Un premier modèle, McCulloch et Pitts
|
|
|
|
|
|
|
|
Le modèle qu'on considère généralement comme fondateur des réseaux de neurones artificiels à été proposé par W. McCulloch, un neurophysiologiste et W. Pitts un mathématicien. Ils posent l'hypothèse selon laquelle on peut assimiler les signaux neuronaux à des propositions logiques. Ils cherchent alors à modéliser les réseaux de neurones en s'appuyant sur la logique des prédicats en plubliant un article fondateur de la théorie des neurones formels : « A Logical Calculus of Ideas Immanent in Nervous Activity ».
|
|
|
|
|
|
|
|
Ces réseaux de neurones n'exhibent pas encore de propriété d'apprentissage proprement dite, mais, nous allons le voir, sont une fondation essentielle des réseaux que nous utiliserons par la suite.
|
|
|
|
|
|
|
|
### Le modèle
|
|
|
|
|
|
|
|
La modélisation de Mc Culloch et Pitts, considère un neurone comme un **automate à seuil** : il s'active quand la **somme** des signaux d'entrée dépasse une valeur donnée, le **seuil**. Il y a deux types d'entrées :
|
|
|
|
|
|
|
|
- activatrice et,
|
|
|
|
- inhibitrice.
|
|
|
|
|
|
|
|
Si une seule des entrées inhibitrice est activée, le neurone ne s'active pas.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Les entrées et sorties sont strictement *booléennes*, activées ou non-activées.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Ici seule la combinaison $`\{1, 0\}`$ active la sortie, soit l'entrée activatrice est à zéro, soit elle est inhibée ($`\{1, 1\}`$).
|
|
|
|
|
|
|
|
Nous pouvons donc décrire un modèle de neurone de McCulloch et Pitts ainsi :
|
|
|
|
|
|
|
|
* $`x_{i=1..n}`$ ensemble d'entrées *activatrices* ayant des valeurs dans $`\{1, 0\}`$.
|
|
|
|
* $`h_{i=1..m}`$ ensemble d'entrées *inhibitrices* ayant des valeurs dans $`\{1, 0\}`$.
|
|
|
|
* $`\theta`$ le *seuil*.
|
|
|
|
* $`f`$ une fonction de *transfert*.
|
|
|
|
* $`s = f(x_i, h_i)`$ le *signal de sortie*.
|
|
|
|
|
|
|
|
La fonction de transfert ppermet de calculer une sortie pour les entrées. On utilise usuellement la fonction *"signe"* :
|
|
|
|
|
|
|
|
```math
|
|
|
|
sgn(x) = \left\{ \begin{array}{cc} 0 \textrm{ si } x < 0 \\ 1 \textrm{ si } x \geq 0 \end{array} \right.
|
|
|
|
```
|
|
|
|
|
|
|
|
Qui nous fournit la fonction de transfert suivante, prenant en compte les entrées inhibitrices :
|
|
|
|
|
|
|
|
```math
|
|
|
|
f(x_i, h_i) = \left\{
|
|
|
|
\begin{array}{cc}
|
|
|
|
sgn\left( \sum_{i=1}^{i=n}x_i - \theta \right) \textrm{ si } \sum_{j=1}^{j=m} h_j = 0 \\
|
|
|
|
0 \textrm{ si } \sum_{j=1}^{j=m} h_j \neq 0
|
|
|
|
\end{array}
|
|
|
|
\right.
|
|
|
|
```
|
|
|
|
|
|
|
|
Ainsi, si $`\sum h_j = 0`$, la fonction s'active dès que la somme des $`x_i`$ dépasse $`\theta`$ :
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
### Opérateurs booléens
|
|
|
|
|
|
|
|
McCulloch et Pitts essayaient de montrer que leur modèle était permettait de modéliser des propositions logiques. En effet, le modèle que nous venons de voir permet de représenter les trois opérateurs booléens élémentaires :
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Partant de ces opérateurs, on peut facilement reconnaître n'importe quelle entrée binaire :
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
On peut montrer qu'il est possible de réaliser une reconnaissance de n'importe quelle fonction booléenne avec un réseau à deux couches. Voici un exemple de fonction reconnaissant quatre valeurs booléennes à trois entrées :
|
|
|
|
|
|
|
|
| Entrées | Sorties |
|
|
|
|
|:-----------:|:-------:|
|
|
|
|
| 001 | 1 |
|
|
|
|
| 011 | 1 |
|
|
|
|
| 101 | 1 |
|
|
|
|
| 111 | 1 |
|
|
|
|
| sinon | 0 |
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Von Neumann s'inspirera de ce modèle, et plus tard, S.C. Kleene prouvera l'équivalence entre le modèle de McCulloch et Pitts et la machine de Turing, en montrant l'équivalence entre ces réseaux et les automates finis.
|
|
|
|
|
|
|
|
## Le Perceptron
|
|
|
|
|
|
|
|
Mais les réseaux de McCulloch et Pitts sont figés. Or une des grandes propriétés que l'on voulait obtenir au début de ce chapitre était la notion *d'apprentissage* ! Le *Perceptron* est le premier modèle opérationnel de réseau *"apprenant"*. Il est du à *F. Rosenblat*, qui cherchait à comprendre le modèle biologique.
|
|
|
|
|
|
|
|
Il est très fortement inspiré de celui de McCulloch et Pitts, mais ajoute un système d'apprentissage, sous la forme d'une **matrice d'interactions**.
|
|
|
|
|
|
|
|
### Le modèle
|
|
|
|
|
|
|
|
Voici le modèle de base du Perceptron :
|
|
|
|
|
|
|
|
- **S-Units** : Unités $`s`$ sensitives.
|
|
|
|
- **A-Units** : Unités d'$`a`$ association.
|
|
|
|
- **R-Units** : Unités de $`r`$ réponse.
|
|
|
|
- **Matrice d'interactions** : Coefficients de couplage entre unités.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
- Les *S-Units* sont sensibles à des stimulations physiques. Ils
|
|
|
|
renvoient $`+1`$ si le signal d'entrée dépasse un seuil $`\theta`$, $`0`$
|
|
|
|
sinon.
|
|
|
|
- Les *A-Units* disposent de connexions entrantes et sortantes.
|
|
|
|
Ils renvoient $`+1`$ si la somme algébrique de leurs entrées dépasse un
|
|
|
|
certain seuil $`\theta`$, $`0`$ sinon.
|
|
|
|
- Les *R-Units* disposent aussi de connexions entrantes
|
|
|
|
et sortantes. Ils renvoient $`+1`$ si la **somme pondérée** des signaux d'entrée
|
|
|
|
dépasse un seuil $`\theta`$, $`-1`$ sinon.
|
|
|
|
- La *matrice d'interactions* définit les coefficients de
|
|
|
|
couplage entre les *A-Units* et les *R-Units* (poids synaptiques).
|
|
|
|
|
|
|
|
Par la suite, nous ne nous intéresserons qu'à la modélisation du *R-Unit*. En effet les *S-Units* et les *A-Units* représentent les entrées du système et n'évoluent pas, nous allons donc les modéliser par des vecteurs de valeurs. Il y aura autant de valeurs dans ces vecteurs que d'entrées dans le *R-Unit*.
|
|
|
|
|
|
|
|

|
|
|
|
<br/><em>Modèle de R-Unit</em>
|
|
|
|
|
|
|
|
Le Perceptron se compose donc uniquement d'une cellule prenant $`n`$ entrées. Le neurone se déclenche au delà d'un seuil $`\theta`$ similairement au modèle de McCulloch et Pitts. La grande différence réside dans le fait que les entrées sont **pondérées**. Chaque entrée possède un poids modifiable qui nous servira à effectuer l'apprentissage. L'ensemble de ces poids forme la
|
|
|
|
**matrice d'interaction**. Ainsi au lieu d'effectuer la somme de ses entrées, le Perceptron réalise une **somme pondérée** $`\sum x_i w_i`$ des valeurs des entrées fois leurs poids respectifs. Si cette somme pondérée dépasse le seuil, le neurone s'active (en d'autres termes, si la somme pondérée moins le seuil dépasse zéro on active le neurone).
|
|
|
|
|
|
|
|
Ainsi l'apprentissage se fait par modification de la matrice d'interaction $`w`$. Elle modélise l'action inhibitrice ou activatrice des synapses.
|
|
|
|
|
|
|
|
Mais il reste aussi à régler le seuil $`theta`$. En théorie cela modélise le moment où le neurone a reçu suffisamment de signaux en entrée et s'active. Ce seuil fait aussi partie de l'apprentissage, mais nous verrons qu'il est plus compliqué à modifier. Pour éviter de le traiter à part, nous pouvons modifier légèrement le modèle en transformant le seuil en une "fausse" entrée dont la valeur est toujours -1 mais qui possède une pondération $`w_0`$ qui va elle aussi évoluer avec les autres pondérations, on appelle cette entrée le Biais. On règle ensuite le seuil $`\theta`$ à zéro. Précédemment le seuil était retiré à la somme pondérée, et si le résultat dépassait 0 on activait le neurone. Ici ce seuil est remplacé par cette entrée négative qui va réaliser la même opération.
|
|
|
|
|
|
|
|

|
|
|
|
<br/><em>Modèle de R-Unit avec biais</em>
|
|
|
|
|
|
|
|
### Processus d'apprentissage
|
|
|
|
|
|
|
|
Mais comment modifier la matrice d'interactions pour effectuer l'apprentissage ? Le but consiste à configurer le Perceptron de façon à ce qu'il reconnaisse une ou plusieurs entrées particulières. La phase d'apprentissage va donc viser à **modifier progressivement les poids synaptiques** pour essayer d'obtenir une **sortie désirée** en fontion d'**entrées** ou en d'autres termes de **stimuli externes induisant ces changements**.
|
|
|
|
|
|
|
|
|
|
|
|
Il existe deux types d'apprentissages : *non supervisé* et *supervisé*.
|
|
|
|
|
|
|
|
- **Apprentissage non supervisé** : On ne connaît pas les sorties attendues. Cela est souvent utilisé pour agréger les données en fonction de régularités statistiques.
|
|
|
|
- **Apprentissage supervisé** : Pour des entrées données, on connaît les sorties. Cela permet de guider le réseau vers la solution recherchée.
|
|
|
|
|
|
|
|
Le Perceptron utilise un **apprentissage supervisé par renforcement.** En fonction de sorties attendues on modifie peu à peu la configuration pour obtenir ces sorties en fonction d'entrées connues.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Le Perceptron fonctionne sur une variante de la règle de Hebb:
|
|
|
|
|
|
|
|
```math
|
|
|
|
w_{ij}(t+1) = w_{ij}(t) + \eta(s_i\cdot s_j)
|
|
|
|
```
|
|
|
|
|
|
|
|
Le neurone $`j`$ prenant ses entrées sur la sortie du neurone $`i`$, avec :
|
|
|
|
|
|
|
|
- $`w_{ij}(t)`$: le poids de la connexion entre $`i`$ et $`j`$ au temps $`t`$.
|
|
|
|
- $`\eta`$: le pas d'apprentissage, $`0 < \eta \leq 1`$.
|
|
|
|
- $`s_i`$: signal transmis par le neurone $`i`$.
|
|
|
|
- $`s_j`$: signal transmis par le neurone $`j`$.
|
|
|
|
|
|
|
|
|
|
|
|
Mais la règle de Hebb ne peut que **renforcer** les pondération synaptiques !
|
|
|
|
|
|
|
|
La règle du Perceptron est une version évoluée de la règle de Hebb :
|
|
|
|
|
|
|
|
```math
|
|
|
|
w_{ij}(t+1) = w_{ij}(t) + \eta(d_j - s_j)s_i
|
|
|
|
```
|
|
|
|
- $`\eta`$ : le pas d'apprentissage entre $`0`$ et $`1`$. On peut le faire varier durant l'apprentissage, partant d'une valeur élevée, pour arriver à des valeurs plus basses pour affiner la solution.
|
|
|
|
- $`d_j`$ : la sortie **désirée**.
|
|
|
|
- $`s_j`$ : la sortie **obtenue** pour l'**entrée courante**.
|
|
|
|
|
|
|
|
Il s'agit donc bien de la même règle de **co-activation** mais celle ci peut aussi "inhiber" (faire) diminuer les coefficients.
|
|
|
|
|
|
|
|
### Exemple d'apprentissage
|
|
|
|
|
|
|
|
Afin de bien comprendre comment fonctionne l'apprentissage voici un exemple d'évolution.
|
|
|
|
|
|
|
|
On cherche à reconnaître un motif en diagonale sur une grille de $`2\times 2`$ pixels.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
- Les pixels sont les S-Units, le signal est $`1`$ quand le pixel est noir, $`0`$ sinon.
|
|
|
|
- On dispose de $`4`$ neurones d'association, un par pixel, recevant les entrées de ces pixels.
|
|
|
|
- Les neurones d'association transmettent leurs entrées sans changement ($`1`$ s'ils sont reliés à des pixels noirs, $`0`$ sinon). En d'autres termes il n'est pas utile de les modéliser.
|
|
|
|
- On a un unique neurone de réponse recevant des entrées des $`4`$ neurones d'association (ici pour simplifier les calculs ses sorties seront soit $`0`$ soit $`1`$.
|
|
|
|
- On ajoute une entrée de biais $`\theta`$ sur le neurone de réponse.
|
|
|
|
- À chaque entrée du neurone de réponse, on associe un poids $`w_i`$ avec $`i = 1..4`$, ici initialisés à zéro.
|
|
|
|
- Le biais par convention est associé à l'entrée $`0`$ et relié au neurone de sortie avec un poids $`w_0 = \theta`$. Sa sortie vaut systématiquement $`-1 \times w_0`$. Ici on l'initialise à $`2`$.
|
|
|
|
- On obtient au final un vecteur de $`5`$ poids qu'il faut ajuster au cours du processus d'apprentissage.
|
|
|
|
|
|
|
|
Au cours du processus d'apprentissage :
|
|
|
|
|
|
|
|
- On présente successivement l'ensemble des entrées possibles,
|
|
|
|
- on applique la règle d'apprentissage.
|
|
|
|
- C'est ce qu'on appelle *une itération* ou *époque*.
|
|
|
|
|
|
|
|
On continue les itérations jusqu'à ce que les sorties soient acceptables.
|
|
|
|
|
|
|
|
| Rang | Entrées | $`\sum w_i s_i`$ | $`y`$ | $`d`$ | $`w_1`$ | $`w_2`$ | $`w_3`$ | $`w_4`$ | $`w_0`$|
|
|
|
|
|------|---------|------------------|-------|-------|---------|---------|---------|---------|--------|
|
|
|
|
|1.1 |1,1,1,1,-1 |$`1\times 0 + 1\times 0 + 1\times 0 + 1\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|1.2 |1,1,1,0,-1 |$`1\times 0 + 1\times 0 + 1\times 0 + 0\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|1.3 |1,1,0,1,-1 |$`1\times 0 + 1\times 0 + 0\times 0 + 1\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|1.4 |1,1,0,0,-1 |$`1\times 0 + 1\times 0 + 0\times 0 + 0\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|1.5 |1,0,1,1,-1 |$`1\times 0 + 0\times 0 + 1\times 0 + 1\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|1.6 |1,0,1,0,-1 |$`1\times 0 + 0\times 0 + 1\times 0 + 0\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|
|
|
|
Pour les entrées de 1 à 6 aucun changement n'est nécessaire car les sorties réelles correspondent aux sorties attendues.
|
|
|
|
|
|
|
|
| Rang | Entrées | $`\sum w_i s_i`$ | $`y`$ | $`d`$ | $`w_1`$ | $`w_2`$ | $`w_3`$ | $`w_4`$ | $`w_0`$|
|
|
|
|
|------|---------|------------------|-------|-------|---------|---------|---------|---------|--------|
|
|
|
|
|1.7 |1,0,0,1,-1|$`1\times 0 + 0\times 0 + 0\times 0 + 1\times 0 + -1\times 2`$|0 |1 |1 |0 |0 |1 |1|
|
|
|
|
|
|
|
|
En revanche, pour l'entrée 7, la sortie désirée est 1 mais la sortie réelle est 0, en effet :
|
|
|
|
|
|
|
|
```math
|
|
|
|
\sum_{i=1}^4 s_i w_i + s_0 w_0 = 1\times 0 + 0\times 0 + 0 \times 0 + 1\times 0 + -1\times 2 = -2
|
|
|
|
```
|
|
|
|
|
|
|
|
On applique donc la règle de Hebb étendue :
|
|
|
|
|
|
|
|
```math
|
|
|
|
\begin{array}{lcl}
|
|
|
|
w_1 \leftarrow w_1 + \eta(d-y)s_1 &=& 0 + 1 \times (1-0)\times 1 = 1\\
|
|
|
|
w_2 \leftarrow w_2 + \eta(d-y)s_2 &=& 0 + 1 \times (1-0)\times 0 = 0\\
|
|
|
|
w_3 \leftarrow w_3 + \eta(d-y)s_3 &=& 0 + 1 \times (1-0)\times 0 = 0\\
|
|
|
|
w_4 \leftarrow w_4 + \eta(d-y)s_4 &=& 0 + 1 \times (1-0)\times 1 = 1\\
|
|
|
|
w_0 \leftarrow w_0 + \eta(d-y)s_0 &=& 2 + 1 \times (1-0)\times -1 = 1
|
|
|
|
\end{array}
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Exercices
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Pour aller plus loin
|
|
|
|
|
|
|
|
|
|
|
|
## Références
|
|
|
|
|
|
|
|
Une grande partie de cette section a été réalisée grâce au livre *"Réseaux neuronaux, une introduction"* de *Jean-Philippe Rennard* aux éditions Vuibert. |
|
|
|
# Les réseaux de neurones et l'apprentissage
|
|
|
|
|
|
|
|
## Origines
|
|
|
|
|
|
|
|
### Le modèle naturel
|
|
|
|
|
|
|
|
Une très grande partie du règne animal exhibe des capacités d'apprentissage, et depuis longtemps les hommes se sont interrogés sur le fonctionnement de notre mémoire, et sur la façon dont elle s'organisait.
|
|
|
|
|
|
|
|
L'une des technique utilisée pour conférer à des programmes des capacités d'apprentissage consiste à suivre une approche bio-mimétique : copions le vivant ! Nous allons donc chercher à créer des neurones **artificiels**, *in-silico*, suivant une approche **connexionniste** en les mettant en **réseau**, et pour ce faire nous commencerons par observer ce que nous savons des cellules neuronales réelles.
|
|
|
|
|
|
|
|
Même si les modèles de neurones réels sont toujours incomplets on peut déjà décrire un neurone comme une cellule particulière composée de plusieurs parties :
|
|
|
|
|
|
|
|
- Un corps cellulaire (1), noyau ou **soma**,
|
|
|
|
- Auquel sont reliées de nombreuses **dendrites** (2) qui sont comme les portes d'entrées des signaux provenant d'autres neurones,
|
|
|
|
- Et un **axone** (3) qui est la voie unique de sortie du neurone, qui va se diviser par la suite pour se connecter aux dendrites d'autres neurones par des **synapses**.
|
|
|
|
|
|
|
|

|
|
|
|

|
|
|
|
|
|
|
|
Les neurones sont organisés en *réseau*, chacun étant connecté à une multitude d'autres. L'axone en sortie du neurone se connecte aux dendrites en entrée d'autres neurones. Un neurone s'activant propage un signal vers les dendrites en entrées des neurones auxquels il est connecté et forme donc un réseau de communication à travers lequel se propage les signaux.
|
|
|
|
|
|
|
|
Entre les axones et les dendrites se situent des liaisons que l'on nomme **synapses**. Ces liaisons peuvent laisser passer, voire amplifier un influx nerveux ou au contraire l'atténuer.
|
|
|
|
|
|
|
|
Cet influx nerveux représente l'information transitant entre chaque neurone. Il peut être plus ou moins fort dans le sens où chaque synapse, en fonction d'un **apprentissage**, laissera passer plus ou moins cet influx. Ainsi certaines synapses seront **inhibitrices** car elle bloqueront l'influx, d'autres seront **incitatrices** car elles laisseront passer l'influx. On appelle cela le **poids synaptique**.
|
|
|
|
|
|
|
|
<!--img alt="Modification des poids synaptiques" src="Img/ModificationSynaptique.svg" style="width=300px;"/-->
|
|
|
|
|
|
|
|
Lorsqu'un neurone reçoit suffisamment d'influx nerveux, au delà d'un **seuil de déclenchement**, il peut **s'activer** et envoyer à son tour un influx à travers son axone aux autres neurones auxquels il est connecté.
|
|
|
|
|
|
|
|
Cependant, dans la majeure partie des cellules neuronales, les synapses utilisent des **médiateurs** chimiques pour faire transiter l'influx. C'est à ce niveau qu'une synapse peut générer plus ou moins de médiateurs chimiques et donc amplifier ou inhiber l'influx électrique.
|
|
|
|
|
|
|
|
Le réseau entier de neurones connectés par leur synapses, toutes plus ou moins incitatrices ou inhibitrices, ainsi que les seuils d'activation des neurones, forment un modèle capable de produire des sorties particulières en fonction d'entrées particulières.
|
|
|
|
|
|
|
|
L'**apprentissage** se produit lorsque les pondérations synaptiques se modifient. C'est par changements successifs inhibant ou incitant les synapses que le réseau se transforme pour produire des sorties particulières en fonction des entrées.
|
|
|
|
|
|
|
|
Bien entendu le modèle réel des différents types de cellules neuronales est bien plus complexe, mais c'est cette idée simple d'apprentissage par *inhibition* ou *incitation* que nous allons utiliser dans la suite.
|
|
|
|
|
|
|
|
### Historique
|
|
|
|
|
|
|
|
L'hypothèse que la mémoire (et la pensée) étaient localisées dans le cerveau et que ce dernier était un ensemble d'éléments interconnectés est ancienne. Cependant, les éléments que nous allons utiliser sont assez récents :
|
|
|
|
|
|
|
|
* On attribue généralement à **Alcméon de Crotone** (-520 à -450), une hypothèse reprise par **Démocrite** puis **Hippocrate** selon laquelle *ce qui gouverne siège dans le cerveau*.
|
|
|
|
* **Aristote** ensuite (même s'il imaginait lui que le cœur était le siège de la pensée) décrit la *mémoire* comme *une interconnexion complexe d'éléments simples*.
|
|
|
|
* **Galien** (env -131 à 201) sera le premier à décrire le parcours de l'influx nerveux à partir du cerveau.
|
|
|
|
* **H. Spencer (1820-1903)** Propose que *Les états mentaux dépendent strictement des structures nerveuses et de leur évolution. Interprétation de la psychologie à travers des réseaux d'unités fortement connectées.*
|
|
|
|
* **S.R. Cajal** découvre le neurone : *le système nerveux est constitué d'une myriade de cellules interconnectées*.
|
|
|
|
* **E.L. Thorndike** (1842-1910) Propose le concept de mémoire associative : la fréquence de conjonction d'événements tend à renforcer les liens entre leurs représentations cérébrales.
|
|
|
|
* Ce n'est qu'en 1955, avec les progrès de la microscopie électronique que ces travaux ont été validés.
|
|
|
|
|
|
|
|
## La règle de Hebb
|
|
|
|
|
|
|
|
Hebb (1904-1985) énonce la règle de co-activation qui reprend l'idée de Throndike :
|
|
|
|
|
|
|
|
> « Quand l'axone d'une cellule A est suffisamment proche pour exciter une cellule B et que de manière répétée et persistante, il participe à l'activation de B, alors un processus de croissance ou de changements métaboliques se met en œuvre dans l'une ou dans les deux cellules, de telle manière que la capacité de A à activer B en est renforcée. »
|
|
|
|
|
|
|
|
Il s'agit là d'une formalisation du mécanisme d'*apprentissage*. C'est par le biais de modifications successives des synapses et de leur capacité à inhiber ou inciter l'influx nerveux que le réseau se modifie.
|
|
|
|
|
|
|
|
Voici une illustration de la règle de Hebb, en rouge les neurones activés :
|
|
|
|
|
|
|
|
Soit $`w_{ij}(t)`$ le poids de la connexion entre les neurones $`i`$ et $`j`$ à l'instant $`t`$. Avec $`f(n)=1`$ si le neurone $`n`$ est activé et $`f(n)=0`$ si le neurone est inactif. On a :
|
|
|
|
|
|
|
|
```math
|
|
|
|
w_{ij}(t+1) = w_{ij}(t) + f(i) \cdot f(j)
|
|
|
|
```
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
## Un premier modèle, McCulloch et Pitts
|
|
|
|
|
|
|
|
Le modèle qu'on considère généralement comme fondateur des réseaux de neurones artificiels à été proposé par W. McCulloch, un neurophysiologiste et W. Pitts un mathématicien. Ils posent l'hypothèse selon laquelle on peut assimiler les signaux neuronaux à des propositions logiques. Ils cherchent alors à modéliser les réseaux de neurones en s'appuyant sur la logique des prédicats en plubliant un article fondateur de la théorie des neurones formels : « A Logical Calculus of Ideas Immanent in Nervous Activity ».
|
|
|
|
|
|
|
|
Ces réseaux de neurones n'exhibent pas encore de propriété d'apprentissage proprement dite, mais, nous allons le voir, sont une fondation essentielle des réseaux que nous utiliserons par la suite.
|
|
|
|
|
|
|
|
### Le modèle
|
|
|
|
|
|
|
|
La modélisation de Mc Culloch et Pitts, considère un neurone comme un **automate à seuil** : il s'active quand la **somme** des signaux d'entrée dépasse une valeur donnée, le **seuil**. Il y a deux types d'entrées :
|
|
|
|
|
|
|
|
- activatrice et,
|
|
|
|
- inhibitrice.
|
|
|
|
|
|
|
|
Si une seule des entrées inhibitrice est activée, le neurone ne s'active pas.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Les entrées et sorties sont strictement *booléennes*, activées ou non-activées.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Ici seule la combinaison $`\{1, 0\}`$ active la sortie, soit l'entrée activatrice est à zéro, soit elle est inhibée ($`\{1, 1\}`$).
|
|
|
|
|
|
|
|
Nous pouvons donc décrire un modèle de neurone de McCulloch et Pitts ainsi :
|
|
|
|
|
|
|
|
* $`x_{i=1..n}`$ ensemble d'entrées *activatrices* ayant des valeurs dans $`\{1, 0\}`$.
|
|
|
|
* $`h_{i=1..m}`$ ensemble d'entrées *inhibitrices* ayant des valeurs dans $`\{1, 0\}`$.
|
|
|
|
* $`\theta`$ le *seuil*.
|
|
|
|
* $`f`$ une fonction de *transfert*.
|
|
|
|
* $`s = f(x_i, h_i)`$ le *signal de sortie*.
|
|
|
|
|
|
|
|
La fonction de transfert permet de calculer une sortie pour les entrées. On utilise usuellement la fonction *"signe"* :
|
|
|
|
|
|
|
|
```math
|
|
|
|
sgn(x) = \left\{ \begin{array}{cc} 0 \textrm{ si } x < 0 \\ 1 \textrm{ si } x \geq 0 \end{array} \right.
|
|
|
|
```
|
|
|
|
|
|
|
|
Qui nous fournit la fonction de transfert suivante, prenant en compte les entrées inhibitrices :
|
|
|
|
|
|
|
|
```math
|
|
|
|
f(x_i, h_i) = \left\{
|
|
|
|
\begin{array}{cc}
|
|
|
|
sgn\left( \sum_{i=1}^{i=n}x_i - \theta \right) \textrm{ si } \sum_{j=1}^{j=m} h_j = 0 \\
|
|
|
|
0 \textrm{ si } \sum_{j=1}^{j=m} h_j \neq 0
|
|
|
|
\end{array}
|
|
|
|
\right.
|
|
|
|
```
|
|
|
|
|
|
|
|
Ainsi, si $`\sum h_j = 0`$, la fonction s'active dès que la somme des $`x_i`$ dépasse $`\theta`$ :
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
### Opérateurs booléens
|
|
|
|
|
|
|
|
McCulloch et Pitts essayaient de montrer que leur modèle était permettait de modéliser des propositions logiques. En effet, le modèle que nous venons de voir permet de représenter les trois opérateurs booléens élémentaires :
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Partant de ces opérateurs, on peut facilement reconnaître n'importe quelle entrée binaire :
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
On peut montrer qu'il est possible de réaliser une reconnaissance de n'importe quelle fonction booléenne avec un réseau à deux couches. Voici un exemple de fonction reconnaissant quatre valeurs booléennes à trois entrées :
|
|
|
|
|
|
|
|
| Entrées | Sorties |
|
|
|
|
|:-----------:|:-------:|
|
|
|
|
| 001 | 1 |
|
|
|
|
| 011 | 1 |
|
|
|
|
| 101 | 1 |
|
|
|
|
| 111 | 1 |
|
|
|
|
| sinon | 0 |
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Von Neumann s'inspirera de ce modèle, et plus tard, S.C. Kleene prouvera l'équivalence entre le modèle de McCulloch et Pitts et la machine de Turing, en montrant l'équivalence entre ces réseaux et les automates finis.
|
|
|
|
|
|
|
|
## Le Perceptron
|
|
|
|
|
|
|
|
Mais les réseaux de McCulloch et Pitts sont figés. Or une des grandes propriétés que l'on voulait obtenir au début de ce chapitre était la notion *d'apprentissage* ! Le *Perceptron* est le premier modèle opérationnel de réseau *"apprenant"*. Il est du à *F. Rosenblat*, qui cherchait à comprendre le modèle biologique.
|
|
|
|
|
|
|
|
Il est très fortement inspiré de celui de McCulloch et Pitts, mais ajoute un système d'apprentissage, sous la forme d'une **matrice d'interactions**.
|
|
|
|
|
|
|
|
### Le modèle
|
|
|
|
|
|
|
|
Voici le modèle de base du Perceptron :
|
|
|
|
|
|
|
|
- **S-Units** : Unités $`s`$ sensitives.
|
|
|
|
- **A-Units** : Unités d'$`a`$ association.
|
|
|
|
- **R-Units** : Unités de $`r`$ réponse.
|
|
|
|
- **Matrice d'interactions** : Coefficients de couplage entre unités.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
- Les *S-Units* sont sensibles à des stimulations physiques. Ils
|
|
|
|
renvoient $`+1`$ si le signal d'entrée dépasse un seuil $`\theta`$, $`0`$
|
|
|
|
sinon.
|
|
|
|
- Les *A-Units* disposent de connexions entrantes et sortantes.
|
|
|
|
Ils renvoient $`+1`$ si la somme algébrique de leurs entrées dépasse un
|
|
|
|
certain seuil $`\theta`$, $`0`$ sinon.
|
|
|
|
- Les *R-Units* disposent aussi de connexions entrantes
|
|
|
|
et sortantes. Ils renvoient $`+1`$ si la **somme pondérée** des signaux d'entrée
|
|
|
|
dépasse un seuil $`\theta`$, $`-1`$ sinon.
|
|
|
|
- La *matrice d'interactions* définit les coefficients de
|
|
|
|
couplage entre les *A-Units* et les *R-Units* (poids synaptiques).
|
|
|
|
|
|
|
|
Par la suite, nous ne nous intéresserons qu'à la modélisation du *R-Unit*. En effet les *S-Units* et les *A-Units* représentent les entrées du système et n'évoluent pas, nous allons donc les modéliser par des vecteurs de valeurs. Il y aura autant de valeurs dans ces vecteurs que d'entrées dans le *R-Unit*.
|
|
|
|
|
|
|
|

|
|
|
|
<br/><em>Modèle de R-Unit</em>
|
|
|
|
|
|
|
|
Le Perceptron se compose donc uniquement d'une cellule prenant $`n`$ entrées. Le neurone se déclenche au delà d'un seuil $`\theta`$ similairement au modèle de McCulloch et Pitts. La grande différence réside dans le fait que les entrées sont **pondérées**. Chaque entrée possède un poids modifiable qui nous servira à effectuer l'apprentissage. L'ensemble de ces poids forme la
|
|
|
|
**matrice d'interaction**. Ainsi au lieu d'effectuer la somme de ses entrées, le Perceptron réalise une **somme pondérée** $`\sum x_i w_i`$ des valeurs des entrées fois leurs poids respectifs. Si cette somme pondérée dépasse le seuil, le neurone s'active (en d'autres termes, si la somme pondérée moins le seuil dépasse zéro on active le neurone).
|
|
|
|
|
|
|
|
Ainsi l'apprentissage se fait par modification de la matrice d'interaction $`w`$. Elle modélise l'action inhibitrice ou activatrice des synapses.
|
|
|
|
|
|
|
|
Mais il reste aussi à régler le seuil $`theta`$. En théorie cela modélise le moment où le neurone a reçu suffisamment de signaux en entrée et s'active. Ce seuil fait aussi partie de l'apprentissage, mais nous verrons qu'il est plus compliqué à modifier. Pour éviter de le traiter à part, nous pouvons modifier légèrement le modèle en transformant le seuil en une "fausse" entrée dont la valeur est toujours -1 mais qui possède une pondération $`w_0`$ qui va elle aussi évoluer avec les autres pondérations, on appelle cette entrée le Biais. On règle ensuite le seuil $`\theta`$ à zéro. Précédemment le seuil était retiré à la somme pondérée, et si le résultat dépassait 0 on activait le neurone. Ici ce seuil est remplacé par cette entrée négative qui va réaliser la même opération.
|
|
|
|
|
|
|
|

|
|
|
|
<br/><em>Modèle de R-Unit avec biais</em>
|
|
|
|
|
|
|
|
### Processus d'apprentissage
|
|
|
|
|
|
|
|
Mais comment modifier la matrice d'interactions pour effectuer l'apprentissage ? Le but consiste à configurer le Perceptron de façon à ce qu'il reconnaisse une ou plusieurs entrées particulières. La phase d'apprentissage va donc viser à **modifier progressivement les poids synaptiques** pour essayer d'obtenir une **sortie désirée** en fontion d'**entrées** ou en d'autres termes de **stimuli externes induisant ces changements**.
|
|
|
|
|
|
|
|
|
|
|
|
Il existe deux types d'apprentissages : *non supervisé* et *supervisé*.
|
|
|
|
|
|
|
|
- **Apprentissage non supervisé** : On ne connaît pas les sorties attendues. Cela est souvent utilisé pour agréger les données en fonction de régularités statistiques.
|
|
|
|
- **Apprentissage supervisé** : Pour des entrées données, on connaît les sorties. Cela permet de guider le réseau vers la solution recherchée.
|
|
|
|
|
|
|
|
Le Perceptron utilise un **apprentissage supervisé par renforcement.** En fonction de sorties attendues on modifie peu à peu la configuration pour obtenir ces sorties en fonction d'entrées connues.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Le Perceptron fonctionne sur une variante de la règle de Hebb:
|
|
|
|
|
|
|
|
```math
|
|
|
|
w_{ij}(t+1) = w_{ij}(t) + \eta(s_i\cdot s_j)
|
|
|
|
```
|
|
|
|
|
|
|
|
Le neurone $`j`$ prenant ses entrées sur la sortie du neurone $`i`$, avec :
|
|
|
|
|
|
|
|
- $`w_{ij}(t)`$: le poids de la connexion entre $`i`$ et $`j`$ au temps $`t`$.
|
|
|
|
- $`\eta`$: le pas d'apprentissage, $`0 < \eta \leq 1`$.
|
|
|
|
- $`s_i`$: signal transmis par le neurone $`i`$.
|
|
|
|
- $`s_j`$: signal transmis par le neurone $`j`$.
|
|
|
|
|
|
|
|
|
|
|
|
Mais la règle de Hebb ne peut que **renforcer** les pondération synaptiques !
|
|
|
|
|
|
|
|
La règle du Perceptron est une version évoluée de la règle de Hebb :
|
|
|
|
|
|
|
|
```math
|
|
|
|
w_{ij}(t+1) = w_{ij}(t) + \eta(d_j - s_j)s_i
|
|
|
|
```
|
|
|
|
- $`\eta`$ : le pas d'apprentissage entre $`0`$ et $`1`$. On peut le faire varier durant l'apprentissage, partant d'une valeur élevée, pour arriver à des valeurs plus basses pour affiner la solution.
|
|
|
|
- $`d_j`$ : la sortie **désirée**.
|
|
|
|
- $`s_j`$ : la sortie **obtenue** pour l'**entrée courante**.
|
|
|
|
|
|
|
|
Il s'agit donc bien de la même règle de **co-activation** mais celle ci peut aussi "inhiber" (faire) diminuer les coefficients.
|
|
|
|
|
|
|
|
### Exemple d'apprentissage
|
|
|
|
|
|
|
|
Afin de bien comprendre comment fonctionne l'apprentissage voici un exemple d'évolution.
|
|
|
|
|
|
|
|
On cherche à reconnaître un motif en diagonale sur une grille de $`2\times 2`$ pixels.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
- Les pixels sont les S-Units, le signal est $`1`$ quand le pixel est noir, $`0`$ sinon.
|
|
|
|
- On dispose de $`4`$ neurones d'association, un par pixel, recevant les entrées de ces pixels.
|
|
|
|
- Les neurones d'association transmettent leurs entrées sans changement ($`1`$ s'ils sont reliés à des pixels noirs, $`0`$ sinon). En d'autres termes il n'est pas utile de les modéliser.
|
|
|
|
- On a un unique neurone de réponse recevant des entrées des $`4`$ neurones d'association (ici pour simplifier les calculs ses sorties seront soit $`0`$ soit $`1`$.
|
|
|
|
- On ajoute une entrée de biais $`\theta`$ sur le neurone de réponse.
|
|
|
|
- À chaque entrée du neurone de réponse, on associe un poids $`w_i`$ avec $`i = 1..4`$, ici initialisés à zéro.
|
|
|
|
- Le biais par convention est associé à l'entrée $`0`$ et relié au neurone de sortie avec un poids $`w_0 = \theta`$. Sa sortie vaut systématiquement $`-1 \times w_0`$. Ici on l'initialise à $`2`$.
|
|
|
|
- On obtient au final un vecteur de $`5`$ poids qu'il faut ajuster au cours du processus d'apprentissage.
|
|
|
|
|
|
|
|
Au cours du processus d'apprentissage :
|
|
|
|
|
|
|
|
- On présente successivement l'ensemble des entrées possibles,
|
|
|
|
- on applique la règle d'apprentissage.
|
|
|
|
- C'est ce qu'on appelle *une itération* ou *époque*.
|
|
|
|
|
|
|
|
On continue les itérations jusqu'à ce que les sorties soient acceptables.
|
|
|
|
|
|
|
|
| Rang | Entrées | $`\sum w_i s_i`$ | $`y`$ | $`d`$ | $`w_1`$ | $`w_2`$ | $`w_3`$ | $`w_4`$ | $`w_0`$|
|
|
|
|
|------|---------|------------------|-------|-------|---------|---------|---------|---------|--------|
|
|
|
|
|1.1 |1,1,1,1,-1 |$`1\times 0 + 1\times 0 + 1\times 0 + 1\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|1.2 |1,1,1,0,-1 |$`1\times 0 + 1\times 0 + 1\times 0 + 0\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|1.3 |1,1,0,1,-1 |$`1\times 0 + 1\times 0 + 0\times 0 + 1\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|1.4 |1,1,0,0,-1 |$`1\times 0 + 1\times 0 + 0\times 0 + 0\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|1.5 |1,0,1,1,-1 |$`1\times 0 + 0\times 0 + 1\times 0 + 1\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|1.6 |1,0,1,0,-1 |$`1\times 0 + 0\times 0 + 1\times 0 + 0\times 0 + -1\times 2`$ |0 |0 |0 |0 |0 |0 |2|
|
|
|
|
|
|
|
|
Pour les entrées de 1 à 6 aucun changement n'est nécessaire car les sorties réelles correspondent aux sorties attendues.
|
|
|
|
|
|
|
|
| Rang | Entrées | $`\sum w_i s_i`$ | $`y`$ | $`d`$ | $`w_1`$ | $`w_2`$ | $`w_3`$ | $`w_4`$ | $`w_0`$|
|
|
|
|
|------|---------|------------------|-------|-------|---------|---------|---------|---------|--------|
|
|
|
|
|1.7 |1,0,0,1,-1|$`1\times 0 + 0\times 0 + 0\times 0 + 1\times 0 + -1\times 2`$|0 |1 |1 |0 |0 |1 |1|
|
|
|
|
|
|
|
|
En revanche, pour l'entrée 7, la sortie désirée est 1 mais la sortie réelle est 0, en effet :
|
|
|
|
|
|
|
|
```math
|
|
|
|
\sum_{i=1}^4 s_i w_i + s_0 w_0 = 1\times 0 + 0\times 0 + 0 \times 0 + 1\times 0 + -1\times 2 = -2
|
|
|
|
```
|
|
|
|
|
|
|
|
On applique donc la règle de Hebb étendue :
|
|
|
|
|
|
|
|
```math
|
|
|
|
\begin{array}{lcl}
|
|
|
|
w_1 \leftarrow w_1 + \eta(d-y)s_1 &=& 0 + 1 \times (1-0)\times 1 = 1\\
|
|
|
|
w_2 \leftarrow w_2 + \eta(d-y)s_2 &=& 0 + 1 \times (1-0)\times 0 = 0\\
|
|
|
|
w_3 \leftarrow w_3 + \eta(d-y)s_3 &=& 0 + 1 \times (1-0)\times 0 = 0\\
|
|
|
|
w_4 \leftarrow w_4 + \eta(d-y)s_4 &=& 0 + 1 \times (1-0)\times 1 = 1\\
|
|
|
|
w_0 \leftarrow w_0 + \eta(d-y)s_0 &=& 2 + 1 \times (1-0)\times -1 = 1
|
|
|
|
\end{array}
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Exercices
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Pour aller plus loin
|
|
|
|
|
|
|
|
|
|
|
|
## Références
|
|
|
|
|
|
|
|
Une grande partie de cette section a été réalisée grâce au livre *"Réseaux neuronaux, une introduction"* de *Jean-Philippe Rennard* aux éditions Vuibert. |