next up previous contents
Next: Conclusion Up: Étude d'un premier fichier Previous: Réseau de neurones sans

Réseau de neurones avec une couche cachée

Détermination du nombre de neurones dans la couche cachée

Étant donné que nous disposons de trois variables d'entrée et d'une variable de sortie, le nombre de neurones dans la couche cachée sera :
$\cdot$ soit 3
$\cdot$ soit 75% de 3 c'est à dire 2.25. Donc 2 neurones.
$\cdot$ soit $\sqrt{3}$ c'est à dire 1.73. Donc 1 neurone.

Notons que la variable zj de la couche cachée s'exprime par :

\begin{displaymath}{\displaystyle z_i^j\,=\,\frac{\exp(\alpha_0^j+\sum_{r=1}^p\a...
...a_r^jx_i^r))} \; i\,=\,1,2,\ldots,n
\; et \; j\,=\,1,\ldots,c}\end{displaymath}

Utilisation de l'option "linout" sans influence des variables d'entrée

$\cdot$ Dans ce cas, le passage de la couche cachée à la variable de sortie est linéaire.
On a donc :

\begin{displaymath}{\displaystyle y_i\,=\,\alpha_0^{\ast}+\sum_{j=1}^c\beta_j^{\ast}z_i^j}\end{displaymath}

$\cdot$ Considérons d'abord le nombre de neurones dans la couche cachée égal à deux et faisons varier la valeur du paramètre "decay".

Premier essai : decay=0.

> res11_nnet(temp1[,1:3],yy,size=2,decay=0,linout=T,maxit=100)
En raison de redémarrages consécutifs de l'algorithme d'ajustement, avec différents points de départ aléatoires pour les poids, trois minima ont été trouvé : 131.59, 111.79 et 79.85.
 # weights:  11
initial  value 684.716345 
final  value 131.599985 
converged

# weights:  11
initial  value 601.536740 
iter  10 value 131.596179
iter  20 value 123.558993
iter  30 value 111.922908
iter  40 value 111.793906
final  value 111.793888 
converged

# weights:  11
initial  value 638.150206 
iter  10 value 130.223657
iter  20 value 116.147958
iter  30 value 112.617872
iter  40 value 95.387017
iter  50 value 80.762905
iter  60 value 79.992882
iter  70 value 79.962711
final  value 79.957258 
converged
On vérifie que la "Hessienne" est positive pour les trois minima afin de s'assurer qu'ils représentent bien des minima locaux.
Même si nous relançons plusieurs fois l'algorithme à partir de différents points de départ, il n'est pas garanti que le troisième minima (valeur la plus petite) soit le meilleur.
Les valeurs prédites pour les trois modèles obtenus sont toutes différentes et aucune ne correspond aux vraies valeurs de la variable yy à expliquer.
Comparaison des valeurs prédites pour le troisième minimum avec la variable yy

> cbind(predict(res11,temp1[,1:3]),yy)             
            V1   yy                
ajac 4.9198174   8.7
ango 4.9544435   4.9
besa 4.0312395   5.3
biar 4.9198174   2.0 
bord 8.2998409   8.2
bres 4.9198174   6.2
cler 6.9975820   7.0
dijo 4.0312395   3.6
gren 4.0312395   2.1
lill 0.6690568   0.5
limo 4.9256830   2.3
lyon 4.0312467   3.5
mars 4.9198174   3.8
mont 4.9198174   3.1
nanc 4.0312395   6.9
nant 4.9198174   6.5   
nice 4.9198174   1.8 
orle 5.4199123   5.5
pari 8.2825470   8.2
perp 4.9198174   6.5
reim 3.6450274   3.6
renn 4.9198174   4.3
roue 4.9198198   8.6
stra 4.0312395   3.0
tlse 4.9198174   5.4
Ici, V1 représente le vecteur des valeurs prédites de yy à savoir les températures du mois de décembre dans différentes villes de France. Il est obtenu à l'aide de la commande "predict". La commande "cbind" nous permet de concaténer par colonne les vecteurs yy et V1.
Remarquons que si l'on considère les poids fournis par le premier réseau, on obtient le même minimum, les mêmes poids (heureusement !) et les mêmes prédictions.
Pour le premier minimum obtenu, on a comme poids :
summary(res11)
a 3-2-1 network with 11 weights
options were - linear output units 
  0->4  1->4  2->4  3->4  0->5  1->5  2->5  3->5  0->6  4->6  5->6 
  0.34  0.66  0.17  0.64 -0.23 -0.01 -0.16 -0.68  2.09  2.77  0.47
Second essai : decay=0.001
Dans ce cas aussi, nous avons trois minima qui sont 112.18, 115.72 et 131.62. Notons que le troisième minimum obtenu ici est aussi un minimum obtenu dans le premier essai et nous obtenons par la même les mêmes prédictions.
Quant aux deux autres minima, les valeurs prédites ne sont pas bonnes également.
$\cdot$ Considérons maintenant le nombre de neurones dans la couche cachée égal à 3 et faisons varier la valeur du decay.
Ici, nous avons pris les mêmes valeurs du paramètre "decay" que précédemment et dans les deux cas, on obtient trois minima dont l'un (la valeur étant égale à 131.6) est celui obtenu par les deux réseaux antérieurs.

Supposons maintenant qu'il existe un lien entre les variables d'entrée et la variable de sortie.
Alors, le passage de la couche cachée à la variable de sortie s'écrit :

\begin{displaymath}{\displaystyle y_i\,=\,\alpha_0^{\ast}+\sum_{j=1}^c\beta_j^{\ast}z_i^j
+\sum_{r=1}^p\alpha_r^jx_i^r}\end{displaymath}

Pour un nombre quelconque de neurones cachés (inférieur ou égal à trois), on obtient différents minima et les valeurs prédites pour les différents réseaux sont aussi mauvaises.

Que peut-on donc en conclure ?
Comme on n'obtient pas les bonnes valeurs prédites, on peut donc émettre la conclusion suivante à savoir que les températures des mois de janvier, avril et juillet n'expliquent pas celles du mois de décembre.

Utilisation de l'option entropy et de l'option softmax

$\cdot$ Cas de l'option entropy
Le passage de la couche cachée à la variable de sortie s'exprime par :


\begin{displaymath}{\displaystyle y_i\,=\,\frac{\exp(\alpha_0^{\ast}+\sum_{j=1}^...
...st}+\sum_{j=1}^c\beta_j^{\ast}z_i^j))} \; i\,=\,1,2,\ldots,n
}\end{displaymath}

$\cdot$ Cas de l'option softmax
Le passage de la couche cachée à la variable de sortie s'exprime par :


\begin{displaymath}{\displaystyle y_i\,=\,\frac{\exp(\alpha_0^{\ast}+\sum_{j=1}^...
...st}+\sum_{j=1}^c\beta_j^{\ast}z_i^j))} \; i\,=\,1,2,\ldots,n
}\end{displaymath}

Dans ces deux formules, il n'y a pas d'influence des variables d'entrée.

$\cdot$ Avec ces deux options, les valeurs prédites valent toujours 1.
En effet, les valeurs prédites sont toujours comprises entre 0 et 1 même si les valeurs observées de y sont négatives ou supérieures à 1.


next up previous contents
Next: Conclusion Up: Étude d'un premier fichier Previous: Réseau de neurones sans
Yasmine yactine
1999-07-28