52 lines
3.0 KiB
Markdown
52 lines
3.0 KiB
Markdown
# Le Réseau Monocouche
|
|
|
|
Jusqu'ici, nous avons vu des réseaux avec un seul neurone. Une des limites d'un tel réseau est qu'**un seul neurone ne peut séparer que deux classes**. En effet, un neurone ne peut pas donner simultanément l'appartenance ou non à plusieurs classes.
|
|
|
|
Pour séparer des données de plusieurs classes, il devient nécessaire d'utiliser plusieurs neurones, chacun étant spécialisé pour détecter l'appartenance ou non à une classe spécifique.
|
|
|
|
Exemples :
|
|
|
|
- Pour séparer 3 classes, il faut au moins 3 neurones.
|
|
- Pour séparer 2 classes, un seul neurone suffit (si $y > 0.5$ alors classe A, sinon classe B).
|
|
|
|
C'est exactement ce qu'un réseau monocouche fait : il permet d'avoir une quantité infinie de neurones. Le nombre de neurones est contrôlé automatiquement par PerceptronViewer en fonction du nombre de classes différentes dans le dataset.
|
|
|
|
<div class="exercice">
|
|
Reprenons le dataset oblique afin de pouvoir comparer les résultats avec ceux d'un réseau à un neurone :
|
|
|
|
- <span>Dataset</span> : `Classification - Oblique (linéairement séparable)`
|
|
|
|
Puis cliquez sur "Lancer" tout en laissant les autres paramètres intacts.
|
|
|
|
On peut voir maintenant des zones apparaître sur le graphe de décision. Chacune de ces zones représente la ligne de décision d'un neurone : si un point se trouve dans une de ces zones, il sera considéré comme faisant partie de la classe correspondante.
|
|
</div>
|
|
|
|
## Structure du réseau monocouche
|
|
|
|
Le réseau monocouche permet de choisir quel type de neurone utiliser. Dans le cadre de PerceptronViewer, des neurones ADALINE ont été utilisés.
|
|
|
|
Afin de clarifier les schémas de réseaux complexes, les perceptrons sont représentés par un cercle.
|
|
|
|

|
|
|
|
Chaque neurone est connecté à toutes les entrées et la valeur de leur sortie va déterminer la classe à laquelle l'exemple appartient.
|
|
|
|
## Fonctionnement de l'entraînement
|
|
|
|
L'entraînement va dépendre du type de neurone utilisé. Globalement, deux approches principales existent :
|
|
|
|
1. Entraîner tous les neurones simultanément : au moment de la correction des poids synaptiques, on parcourt tous les neurones.
|
|
2. Entraîner les neurones séparément : considérer les neurones comme des réseaux séparés. On entraîne le premier réseau, puis on passe au suivant.
|
|
|
|
La méthode d'entraînement utilisée dans PerceptronViewer est la première car elle se rapproche de l'entraînement du réseau multicouches, ce qui évite d'implémenter des méthodes différentes.
|
|
|
|
<div class="exercice">
|
|
Exploitons l'avantage du réseau monocouche en utilisant un dataset composé de 3 classes :
|
|
|
|
- <span>Dataset</span> : `Classification - 3 classes (linéairement séparable)`
|
|
|
|
Puis cliquez sur "Lancer" tout en laissant les autres paramètres intacts.
|
|
|
|
On obtient une séparation nette entre les 3 classes qui est assez bien généralisée (si l'on ajoute un nouveau point, il sera dans la classe la plus proche)
|
|
</div>
|