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

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