]> AND Private Git Repository - hdrcouchot.git/blob - chaosANN.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
fin relecture sylvaine
[hdrcouchot.git] / chaosANN.tex
1
2 Les réseaux de neurones chaotiques ont été étudiés à de maintes reprises 
3 en raison de leurs applications potentielles:
4 %les mémoires associatives~\cite{Crook2007267}  
5 les  composants utiles à la  sécurité comme les fonctions de 
6 hachage~\cite{Xiao10},
7 le tatouage numérique~\cite{1309431,Zhang2005759}
8 ou les schémas de chiffrement~\cite{Lian20091296}.  
9 Dans tous ces cas, l'emploi de fonctions chaotiques est motivé par 
10 leur comportement imprévisible et proche de l'aléa. 
11
12
13 Les réseaux de neurones chaotiques peuvent être conçus selon plusieurs 
14 principes. Des neurones modifiant leur état en suivant une fonction non 
15 linéaire sont par exemple appelés neurones chaotiques~\cite{Crook2007267}.
16 L'architecture de réseaux de neurones de type Perceptron multi-couches
17 (MLP) n'itèrent quant à eux, pas nécessairement de fonctions chaotiques.
18 Il a cependant été démontré  que ce sont des approximateurs 
19 universels~\cite{Cybenko89,DBLP:journals/nn/HornikSW89}.   
20 Ils permettent, dans certains cas, de simuler des comportements 
21 physiques chaotiques comme le  circuit de Chua~\cite{dalkiran10}.  
22 Parfois~\cite{springerlink:10.1007/s00521-010-0432-2},
23 la fonction de transfert de cette famille de réseau et celle 
24 d'initialisation sont toutes les deux définies à l'aide de 
25 fonctions chaotiques. 
26
27
28
29 Ces réseaux de neurones partagent le fait qu'ils sont qualifiés de 
30 ``chaotiques'' sous prétexte qu'ils embarquent une fonction de ce type 
31 et ce sans qu'aucune preuve rigoureuse ne soit fournie.
32 Ce chapitre caractérise la 
33 classe des réseaux de neurones MLP chaotiques. Il  
34 s'intéresse ensuite à l'étude de prévisibilité de systèmes dynamiques
35 discrets chaotiques par cette famille de MLP.
36
37 La section~\ref{S2} définit la construction d'un réseau de neurones 
38 chaotique selon Devanay. La section~\ref{S3} présente l'approche duale 
39 de vérification si un réseau de neurones est chaotique ou non.
40 La section~\ref{sec:ann:approx} s'intéresse à étudier pratiquement
41 si un réseau de 
42 neurones peut approximer des itérations unaires chaotiques. Ces itérations
43 étant obtenues à partir de fonctions issues de la démarche détaillée dans 
44 le chapitre précédent.
45 Ce travail a été publié dans~\cite{bcgs12:ij}.
46
47 \section{Un réseau de neurones chaotique au sens de Devaney}
48 \label{S2}
49
50 On considère une fonction 
51 $f:\Bool^{\mathsf{N}}\to\Bool^{\mathsf{N}}$ telle que  $\textsc{giu}(f)$ est fortement connexe.
52 Ainsi $G_{f_u}$ est chaotique d'après le théorème~\ref{Th:CaracIC}.
53
54 On considère ici le schéma unaire défini par l'équation (\ref{eq:asyn}).
55 On construit un Perceptron multi-couches associé à la fonction  
56 $F_{f_u}$. 
57 Plus précisément, pour chaque entrée 
58  $(x,s)   \in  \mathds{B}^{\mathsf{N}} \times [{\mathsf{N}}]$,
59 la couche de sortie doit générer $F_{f_u}(x,s)$.   
60 On peut ainsi lier la couche de sortie avec celle d'entrée pour représenter 
61 les dépendances entre deux itérations successives.
62 On obtient une réseau de neurones dont le comportement est le suivant 
63 (voir Figure.~\ref{Fig:perceptron}):
64
65 \begin{itemize}
66 \item   Le réseau est initialisé avec le vecteur d'entrée
67   $\left(x^0,S^0\right)  \mathds{B}^{\mathsf{N}} \times [{\mathsf{N}}]$      
68   et calcule le  vecteur de sortie 
69   $x^1=F_{f_u}\left(x^0,S^0\right)$. 
70   Ce vecteur est publié comme une sortie et est aussi retourné sur la couche d'entrée 
71   à travers les liens de retour.
72 \item Lorsque le réseau est  activé à la $t^{\textrm{ème}}$  itération, l'état du 
73   système $x^t  \in \mathds{B}^{\mathsf{N}}$ reçu depuis la couche de sortie ainsi que le 
74   premier terme de la  séquence $(S^t)^{t  \in \Nats}$
75   (\textit{i.e.},  $S^0  \in [{\mathsf{N}}]$)  servent à construire le nouveau vecteur de sortie.
76   Ce nouveau vecteur, qui représente le nouvel état du système dynamique, satisfait:
77   \begin{equation}
78     x^{t+1}=F_{f_u}(x^t,S^0) \in \mathds{B}^{\mathsf{N}} \enspace .
79   \end{equation}
80 \end{itemize}
81
82 \begin{figure}
83   \centering
84   \includegraphics[scale=0.625]{images/perceptron}
85   \caption{Un Perceptron équivalent  aux itérations unaires}
86   \label{Fig:perceptron}
87 \end{figure}
88
89 Le comportement de ce réseau de neurones est tel que lorsque l'état 
90 initial est composé de $x^0~\in~\mathds{B}^{\mathsf{N}}$ et d'une séquence
91  $(S^t)^{t  \in \Nats}$, alors la séquence  contenant les vecteurs successifs 
92 publiés $\left(x^t\right)^{t \in \mathds{N}^{\ast}}$ est exactement celle produite 
93 par les itérations unaires décrites à la section~\ref{sec:TIPE12}.
94 Mathématiquement, cela signifie que si on utilise les mêmes vecteurs d'entrée
95 les deux approches génèrent successivement les mêmes sorties.
96 En d'autres termes ce réseau de neurones modélise le comportement de  
97 $G_{f_u}$,  dont les itérations sont chaotiques sur $\mathcal{X}_u$.
98 On peut donc le  qualifier de chaotique au sens de Devaney.
99
100 \section{Vérifier si un réseau de neurones est chaotique}
101 \label{S3}
102 On s'intéresse maintenant au cas où l'on dispose d'un
103 réseau de neurones de type Perceptron multi-couches
104 dont on cherche à savoir s'il est chaotique (parce qu'il a par exemple été 
105 déclaré comme tel) au sens de Devaney. 
106 On considère de plus que sa topologie est la suivante:
107 l'entrée est constituée de  ${\mathsf{N}}$ bits et un entier, 
108 la sortie est constituée de ${\mathsf{N}}$ bits
109 et chaque sortie est liée à une entrée par une boucle.
110
111 \begin{itemize}
112 \item Le réseau est initialisé avec  ${\mathsf{N}}$~bits
113    $\left(x^0_1,\dots,x^0_{\mathsf{N}}\right)$ et une valeur entière $S^0 \in [{\mathsf{N}}]$.
114 \item  A l'itération~$t$,     le vecteur 
115   $\left(x^t_1,\dots,x^t_{\mathsf{N}}\right)$  permet de construire les ${\mathsf{N}}$~bits 
116   servant de sortie $\left(x^{t+1}_1,\dots,x^{t+1}_{\mathsf{N}}\right)$.
117 \end{itemize}
118
119 Le comportement de ce type de réseau de neurones peut être prouvé comme 
120 étant chaotique en suivant la démarche suivante.
121 On nomme tout d'abord $F:    \mathds{B}^{\mathsf{N}}  \times [{\mathsf{N}}] \rightarrow
122 \mathds{B}^{\mathsf{N}}$     la      fonction qui associe  
123 au vecteur 
124 $\left(\left(x_1,\dots,x_{\mathsf{N}}\right),s\right)    \in   \mathds{B}^{\mathsf{N}} \times[{\mathsf{N}}]$ 
125 le vecteur 
126 $\left(y_1,\dots,y_{\mathsf{N}}\right)       \in       \mathds{B}^{\mathsf{N}}$, où
127 $\left(y_1,\dots,y_{\mathsf{N}}\right)$  sont les sorties du réseau neuronal
128 après l'initialisation de la couche d'entrée avec 
129 $\left(s,\left(x_1,\dots, x_{\mathsf{N}}\right)\right)$.  Ensuite, on définie $f:
130 \mathds{B}^{\mathsf{N}}       \rightarrow      \mathds{B}^{\mathsf{N}}$  telle que 
131 $f\left(x_1,x_2,\dots,x_{\mathsf{N}}\right)$ est égal à 
132 \begin{equation}
133 \left(
134   F\left(\left(x_1,x_2,\dots,x_{\mathsf{N}}\right),1\right),\dots,
135   F\left(\left(x_1,x_2,\dots,x_{\mathsf{N}}\right),{\mathsf{N}}\right) 
136 \right).
137 \end{equation}
138 Ainsi pour chaque $j$, $j \in [{\mathsf{N}}]$, on a 
139 $f_j\left(x_1,x_2,\dots,x_{\mathsf{N}}\right) = 
140 F\left(\left(x_1,x_2,\dots,x_{\mathsf{N}}\right),j\right)$.
141 Si ce réseau de neurones est initialisé avec 
142 $\left(x_1^0,\dots,x_{\mathsf{N}}^0\right)$   et $S   \in    [{\mathsf{N}}]^{\mathds{N}}$, 
143 il produit exactement les mêmes sorties que les itérations de  $F_{f_u}$ avec une 
144 condition initiale $\left((x_1^0,\dots,  x_{\mathsf{N}}^0),S\right)  \in  \mathds{B}^{\mathsf{N}} \times [{\mathsf{N}}]^{\mathds{N}}$.
145 Les itérations de $F_{f_u}$ 
146 sont donc un modèle formel de cette classe de réseaux de neurones.
147 Pour vérifier si un de ces représentants est chaotique, il suffit ainsi 
148 de vérifier si le graphe d'itérations
149 $\textsc{giu}(f)$ est fortement connexe.
150
151
152 \section[Approximation des itérations unaires chaotiques par RN]{Un réseau de neurones peut-il approximer
153 des itération unaires chaotiques?}\label{sec:ann:approx}
154
155 Cette section s'intéresse à étudier le comportement d'un réseau de neurones 
156 face à des itérations unaires chaotiques, comme définies à 
157 la section~\ref{sec:TIPE12}.
158 Plus précisément, on considère dans cette partie une fonction  dont le graphe 
159 des itérations unaires est fortement connexe et une séquence dans 
160 $[{\mathsf{N}}]^{\mathds{N}}$. On cherche à construire un réseau de neurones
161 qui approximerait les itérations de la fonction $G_{f_u}$ comme définie 
162 à l'équation~(\ref{eq:sch:unaire}).
163
164 Sans perte de généralité, on considère dans ce qui suit une instance
165  de fonction à quatre éléments.
166
167 \subsection{Construction du réseau} 
168 \label{section:translation}
169
170 On considère par exemple les deux fonctions $f$ et $g$ de $\Bool^4$
171 dans $\Bool^4$ définies par:
172
173 \begin{eqnarray*}
174 f(x_1,x_2,x_3,x_4) &= &
175 (x_1(x_2+x_4)+ \overline{x_2}x_3\overline{x_4},
176 x_2,
177 x_3(\overline{x_1}.\overline{x_4}+x_2x_4+x_1\overline{x_2}),
178 x_4+\overline{x_2}x_3) \\
179 g(x_1,x_2,x_3,x_4) &= &
180 (\overline{x_1},
181 \overline{x_2}+ x_1.\overline{x_3}.\overline{x_4},
182 \overline{x_3}(x_1 + x_2+x_4),
183 \overline{x_4}(x_1 + \overline{x_2}+\overline{x_3}))
184 \end{eqnarray*}
185 On peut vérifier facilement que le graphe $\textsc{giu}(f)$ 
186 n'est pas fortement connexe car $(1,1,1,1)$ est un point fixe de $f$
187 tandis que le graphe $\textsc{giu}(g)$ l'est.   
188
189 L'entrée du réseau est une paire de la forme 
190 $(x,(S^t)^{t  \in  \Nats})$ et sa sortie correspondante est
191 de la forme  $\left(F_{h_u}(S^0,x), \sigma((S^t)^{t          \in
192   \Nats})\right)$ comme définie à l'équation~(\ref{eq:sch:unaire}).
193
194 On s'intéresse d'abord aux différentes manières de  
195 mémoriser des configurations. On en considère deux principalement.
196 Dans le premier cas, on considère une entrée booléenne par élément
197 tandis que dans le second cas, les configurations  sont mémorisées comme 
198 des entiers naturels. Dans ce dernier cas, une approche naïve pourrait 
199 consister à attribuer à chaque configuration de $\Bool^{\mathsf{N}}$ 
200 l'entier naturel correspondant.
201 Cependant, une telle représentation rapproche 
202 arbitrairement des configurations diamétralement
203 opposées dans le ${\mathsf{N}}$-cube comme  une puissance de
204 deux et la configuration immédiatement précédente: 10000 serait modélisée 
205 par 16 et  et 01111 par 15 alors que leur distance de Hamming est 15.
206 De manière similaire, ce codage éloigne des configurations qui sont 
207 très proches: par exemple 10000 et 00000 ont une distance de Hamming 
208 de 1 et sont respectivement représentées par 16 et 0.
209 Pour ces raisons, le codage retenu est celui des codes de Gray~\cite{Gray47}.
210
211 Concentrons nous sur la traduction de la stratégie.
212 Il n'est naturellement pas possible de traduire une stratégie 
213 infinie quelconque à l'aide d'un nombre fini d'éléments.
214 On se restreint donc à des stratégies de taille 
215 $l$, $2 \le l \le k$, où $k$ est un paramètre défini
216 initialement. 
217 Chaque stratégie est mémorisée comme un entier naturel exprimé en base 
218 ${\mathsf{N}}+1$: à chaque itération, soit aucun élément n'est modifié, soit un 
219 élément l'est. 
220 Enfin, on donne une dernière entrée: $m  \in [l-1]
221 $, qui est le nombre d'itérations successives que l'on applique 
222 en commençant à $x$. 
223 Les sorties (stratégies et configurations) sont mémorisées 
224 selon les mêmes règles.
225
226 Concentrons nous sur la complexité du problème.
227 Chaque entrée de l'entrée-sortie de l'outil est un triplet 
228 composé d'une configuration $x$, d'un extrait  $S$ de la stratégie à 
229 itérer de taille $l$, $2 \le l \le  k$ et d'un nombre $m \in [l-1]$ d'itérations à exécuter.
230 Il y a  $2^{\mathsf{N}}$  configurations $x$ et  ${\mathsf{N}}^l$ stratégies de
231 taille $l$. 
232 De plus, pour une  configuration donnée, il y a 
233 $\omega = 1 \times {\mathsf{N}}^2 +  2 \times {\mathsf{N}}^3 + \ldots+ (k-1) \times {\mathsf{N}}^k$
234 manières d'écrire le couple $(m,S)$. Il n'est pas difficile d'établir que 
235 \begin{equation}
236 \displaystyle{({\mathsf{N}}-1) \times \omega = (k-1)\times {\mathsf{N}}^{k+1} - \sum_{i=2}^k {\mathsf{N}}^i} \nonumber
237 \end{equation}
238 donc
239 \begin{equation}
240 \omega =
241 \dfrac{(k-1)\times {\mathsf{N}}^{k+1}}{{\mathsf{N}}-1} - \dfrac{{\mathsf{N}}^{k+1}-{\mathsf{N}}^2}{({\mathsf{N}}-1)^2} \enspace . \nonumber
242 \end{equation}
243 \noindent
244 Ainsi le nombre de paires d'entrée-sortie pour les réseaux de neurones considérés
245 est 
246 $$
247 2^{\mathsf{N}} \times \left(\dfrac{(k-1)\times {\mathsf{N}}^{k+1}}{{\mathsf{N}}-1} - \dfrac{{\mathsf{N}}^{k+1}-{\mathsf{N}}^2}{({\mathsf{N}}-1)^2}\right) \enspace .
248 $$
249 Par exemple, pour $4$   éléments binaires et une stratégie d'au plus 
250 $3$~termes on obtient 2304 couples d'entrée-sortie.
251
252 \subsection{Expérimentations}
253 \label{section:ann:experiments}
254 On se focalise dans cette section sur l'entraînement d'un MLP
255 pour apprendre des itérations chaotiques. Ce type de réseau
256 ayant déjà été évalué avec succès dans la prédiction de 
257 séries chaotiques temporelles. En effet, les auteurs de~\cite{dalkiran10} 
258 ont montré qu'un MLP pouvait apprendre la dynamique du circuit de Chua.
259 Ce réseau avec rétropropagation est composé de  deux couches 
260 et entraîné à l'aide d'une  propagation arrière Bayesienne.
261
262 Les choix de l'architecture de réseau ainsi que ceux concernant les
263  méthodes d'apprentissage 
264 ont été détaillés dans~\cite{bcgs12:ij}.
265 En pratique, nous avons considéré des configurations de
266 quatre éléments booléens 
267 et une stratégie fixe de longueur 3.
268 Pour le premier codage, nous avons ainsi 6~entrées et 5~sorties
269 tandis que pour le second, uniquement  3 entrées et 2 sorties.
270 Cela engendre ainsi 2304~combinaisons possibles comme détaillé à la 
271 section précédente.
272
273
274
275 \begin{table}[htbp!]
276 \centering {\small
277 \begin{tabular}{|c|c||c|c|c|}
278 \hline 
279 \multicolumn{5}{|c|}{Topologie du réseau: 6~entrées, 5~sorties, 1~couche cachée} \\
280 \hline
281 \hline
282 \multicolumn{2}{|c||}{Neurones cachés} & \multicolumn{3}{c|}{10 neurones} \\
283 \hline
284 \multicolumn{2}{|c||}{Epochs} & 125 & 250 & 500 \\ 
285 \hline
286 \multirow{6}{*}{\rotatebox{90}{Chaotique $g$ }}&Sortie~(1) & 90.92\% & 91.75\% & 91.82\% \\ 
287 & Sortie~(2) & 69.32\% & 78.46\% & 82.15\% \\
288 & Sortie~(3) & 68.47\% & 78.49\% & 82.22\% \\
289 & Sortie~(4) & 91.53\% & 92.37\% & 93.4\% \\
290 & Config. & 36.10\% & 51.35\% & 56.85\% \\
291 & Stratégie~(5) & 1.91\% & 3.38\% & 2.43\% \\
292 \hline
293 \multirow{6}{*}{\rotatebox{90}{Non-chaotic $f$}}&Sortie~(1) & 97.64\% & 98.10\% & 98.20\% \\
294 & Sortie~(2) & 95.15\% & 95.39\% & 95.46\% \\
295 & Sortie~(3) & 100\% & 100\% & 100\% \\
296 & Sortie~(4) & 97.47\% & 97.90\% & 97.99\% \\
297 & Config. & 90.52\% & 91.59\% & 91.73\% \\
298 & Stratégie~(5) & 3.41\% & 3.40\% & 3.47\% \\
299 \hline
300 \hline
301 \multicolumn{2}{|c||}{Neurones cachés} & \multicolumn{3}{c|}{25 neurones} \\
302 %\cline{3-5} \\%& \multicolumn{3}{|c|}{40 neurons} \\
303 \hline
304 \multicolumn{2}{|c||}{Epochs} & 125 & 250 & 500 \\ %& 125 & 250 & 500 \\ 
305 \hline
306 \multirow{6}{*}{\rotatebox{90}{Chaotique $g$}}&Sortie~(1) & 91.65\% & 92.69\% & 93.93\% \\ %& 91.94\% & 92.89\% & 94.00\% \\
307 & Sortie~(2) & 72.06\% & 88.46\% & 90.5\% \\ %& 74.97\% & 89.83\% & 91.14\% \\
308 & Sortie~(3) & 79.19\% & 89.83\% & 91.59\% \\ %& 76.69\% & 89.58\% & 91.84\% \\
309 & Sortie~(4) & 91.61\% & 92.34\% & 93.47\% \\% & 82.77\% & 92.93\% & 93.48\% \\
310 & Config. & 48.82\% & 67.80\% & 70.97\% \\%& 49.46\% & 68.94\% & 71.11\% \\
311 & Stratégie~(5) & 2.62\% & 3.43\% & 3.78\% \\% & 3.10\% & 3.10\% & 3.03\% \\
312 \hline
313 \multirow{6}{*}{\rotatebox{90}{Non-chaotique $f$}}&Sortie~(1) & 97.87\% & 97.99\% & 98.03\% \\ %& 98.16\% \\
314 & Sortie~(2) & 95.46\% & 95.84\% & 96.75\% \\ % & 97.4\% \\
315 & Sortie~(3) & 100\% & 100\% & 100\% \\%& 100\% \\
316 & Sortie~(4) & 97.77\% & 97.82\% & 98.06\% \\%& 98.31\% \\
317 & Config. & 91.36\% & 91.99\% & 93.03\% \\%& 93.98\% \\
318 & Stratégie~(5) & 3.37\% & 3.44\% & 3.29\% \\%& 3.23\% \\
319 \hline
320 \end{tabular}
321 }
322 \caption{Taux de prédiction lorsque les configurations sont exprimées comme un vecteur booléen.}
323 \label{tab1}
324 \end{table}
325 Le tableau~\ref{tab1} synthétise les résultats obtenus avec le premier 
326 codage. Sans surprise, la précision de la prédiction croit 
327 avec l'Epoch et le nombre de neurones sur la couche cachée.
328 Dans tous les cas, les résultats sont plus précis dans le cas non 
329 chaotique que dans l'autre. Enfin, le réseau ne parvient jamais à
330 apprendre le comportement de la stratégie.
331
332 \begin{table}[b]
333 \centering
334 \begin{tabular}{|c|c||c|c|c|}
335 \hline 
336 \multicolumn{5}{|c|}{Topologie du réseau: 3~entrées, 2~sorties, 1~couche cachée} \\
337 \hline
338 \hline
339 & Neurones cachés & \multicolumn{3}{c|}{10 neurones} \\
340 \cline{2-5}
341 & Epochs & 125 & 250 & 500 \\ %& 1000 
342 \hline
343 \multirow{2}{*}{Chaotique $g$}& Config.~(1) & 13.29\% & 13.55\% & 13.08\% \\ %& 12.5\%
344 & Stratégie~(2) & 0.50\% & 0.52\% & 1.32\% \\ %& 1.42\%
345 \hline
346 \multirow{2}{*}{Non-Chaotique $f$}&Config.~(1) & 77.12\% & 74.00\% & 72.60\% \\ %& 75.81\% 
347 & Stratégie~(2) & 0.42\% & 0.80\% & 1.16\% \\ %& 1.42\% 
348 \hline
349 \hline
350 & Neurones cachés& \multicolumn{3}{c|}{25 neurones} \\
351 \cline{2-5}
352 & Epochs & 125 & 250 & 500 \\ %& 1000 
353 \hline
354 \multirow{2}{*}{Chaotique $g$ }& Config.~(1) & 12.27\% & 13.15\% & 13.05\% \\ %& 15.44\%
355 & Stratégie~(2) & 0.71\% & 0.66\% & 0.88\% \\ %& 1.73\%
356 \hline
357 \multirow{2}{*}{Non-Chaotique $f$}&Config.~(1) & 73.60\% & 74.70\% & 75.89\% \\ %& 68.32\%
358 & Stratégie~(2) & 0.64\% & 0.97\% & 1.23\% \\ %& 1.80\%
359 \hline
360 \end{tabular}
361 \caption{Taux de prédiction lorsque les configurations sont exprimées 
362 à l'aide de codes de Gray.}
363 \label{tab2}
364 \end{table}
365
366
367
368 Les résultats concernant le second codage  (\textit{i.e.},  avec les codes
369 de   Gray) sont synthétisés dans le tableau~\ref{tab2}. On constate 
370 que le réseau apprend cinq fois mieux les comportements non chaotiques
371 que ceux qui le sont. Ceci est  illustré au travers des 
372 figures~\ref{Fig:chaotic_predictions} et~\ref{Fig:non-chaotic_predictions}.
373 De plus, comme dans le codage précédent, les stratégies ne peuvent pas être 
374 prédites.  
375 On constate que ce second codage réduit certes le nombre de sorties, mais est 
376 largement moins performant que le premier.
377 On peut expliquer ceci par le fait
378 que ce second codage garantit que deux entiers successifs correspondent 
379 à deux configurations voisines, \textit{i.e.}, qui ne diffèrent que d'un 
380 élément.
381 La réciproque n'est cependant pas établie et deux configurations voisines
382 peuvent être traduites par des entiers très éloignés et ainsi difficiles 
383  à apprendre. 
384
385
386 \begin{figure}[ht]
387   \begin{center}
388     \subfigure[Fonction chaotique $g$]{
389       \begin{minipage}{0.48\textwidth}
390         \begin{center}
391           \includegraphics[scale=0.37]{images/chaotic_trace2}
392         \end{center}
393       \end{minipage}
394       \label{Fig:chaotic_predictions}
395     }
396     \subfigure[Fonction non-chaotique $f$]{
397       \begin{minipage}{0.48\textwidth}
398         \begin{center}
399           \includegraphics[scale=0.37]{images/non-chaotic_trace2} 
400         \end{center}
401       \end{minipage}
402       \label{Fig:non-chaotic_predictions}
403     }
404   \end{center}
405   \caption {Prédiction lorsque les configurations sont exprimées 
406 à l'aide de codes de Gray.}
407 \end{figure}
408
409
410 \section{Conclusion}
411 Dans ce chapitre, nous avons établi une similitude entre les itérations 
412 chaotiques et une famille  de Perceptrons multi-couches.
413 Nous avons d'abord montré comment  construire un réseau de neurones 
414 ayant un comportement chaotique.
415 Nous avons présenté ensuite comment vérifier si un réseau de neurones 
416 établi était chaotique.
417 Nous avons enfin montré en pratique qu'il est difficile pour un 
418 réseau de neurones d'apprendre le comportement global d'itérations
419 chaotiques.
420 Comme il est difficile (voir impossible) d'apprendre le comportement 
421 de telles fonctions, il paraît naturel de savoir si celles ci peuvent être 
422 utilisées pour générer des nombres pseudo aléatoires, ce que propose la partie
423 suivante.
424
425
426 % \appendix{}
427
428 % \begin{Def} \label{def2}
429 % A continuous function $f$  on a topological space $(\mathcal{X},\tau)$
430 % is defined  to be  {\emph{topologically transitive}}  if for any  pair of
431 % open  sets $U$,  $V  \in  \mathcal{X}$ there  exists  
432 % $k \in
433 % \mathds{N}^{\ast}$
434 %  such  that
435 % $f^k(U) \cap V \neq \emptyset$.
436 % \end{Def}
437
438 %\bibliography{chaos-paper}% Produces the bibliography via BibTeX.
439
440 %\end{document}
441 %
442 % ****** End of file chaos-paper.tex ******