fatimataba21 commited on
Commit
0b86555
·
1 Parent(s): a305b36

message de commit

Browse files
Files changed (1) hide show
  1. app.py +632 -0
app.py CHANGED
@@ -0,0 +1,632 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import random
3
+ import pandas as pd
4
+ import numpy as np
5
+ import json
6
+
7
+ # Préparation des données
8
+ questions = [
9
+ {
10
+ "question": "Quelle est la différence principale entre un algorithme classique et un algorithme de Machine Learning ?",
11
+ "options": [
12
+ "A) Les algorithmes classiques sont plus précis",
13
+ "B) Les algorithmes de Machine Learning utilisent les données historiques pour produire un modèle prédictif",
14
+ "C) Les algorithmes classiques fonctionnent sur de plus grandes bases de données",
15
+ "D) Les algorithmes de Machine Learning sont toujours supervisés"
16
+ ],
17
+ "correct": "B",
18
+ "category": "Fondamentaux du Machine Learning"
19
+ },
20
+ {
21
+ "question": "Dans un modèle linéaire f(x) = ax + b, que représentent a et b ?",
22
+ "options": [
23
+ "A) a est l'ordonnée à l'origine et b est la pente",
24
+ "B) a est la pente et b est l'ordonnée à l'origine",
25
+ "C) a est la variable d'entrée et b est la variable de sortie",
26
+ "D) a est la moyenne et b est l'écart-type"
27
+ ],
28
+ "correct": "B",
29
+ "category": "Fondamentaux du Machine Learning"
30
+ },
31
+ {
32
+ "question": "Quel type d'apprentissage utilise des données étiquetées pour entraîner un modèle ?",
33
+ "options": [
34
+ "A) Apprentissage non supervisé",
35
+ "B) Apprentissage par renforcement",
36
+ "C) Apprentissage supervisé",
37
+ "D) Apprentissage semi-supervisé"
38
+ ],
39
+ "correct": "C",
40
+ "category": "Fondamentaux du Machine Learning"
41
+ },
42
+ {
43
+ "question": "Qu'est-ce que le surapprentissage (overfitting) ?",
44
+ "options": [
45
+ "A) Un modèle qui apprend trop rapidement",
46
+ "B) Un modèle qui ne parvient pas à capturer les tendances dans les données d'entraînement",
47
+ "C) Un modèle qui capture trop bien les données d'entraînement mais généralise mal",
48
+ "D) Un modèle qui nécessite trop de données d'entraînement"
49
+ ],
50
+ "correct": "C",
51
+ "category": "Fondamentaux du Machine Learning"
52
+ },
53
+ {
54
+ "question": "Pourquoi utilise-t-on le Deep Learning plutôt que le Machine Learning classique pour certains problèmes ?",
55
+ "options": [
56
+ "A) Le Deep Learning est toujours plus précis",
57
+ "B) Le Machine Learning classique est limité avec les données non-structurées et de grande dimension",
58
+ "C) Le Deep Learning nécessite moins de données",
59
+ "D) Le Machine Learning classique est plus complexe à implémenter"
60
+ ],
61
+ "correct": "B",
62
+ "category": "Fondamentaux du Machine Learning"
63
+ },
64
+ {
65
+ "question": "Qu'est-ce qu'un perceptron ?",
66
+ "options": [
67
+ "A) Un algorithme de classification d'images",
68
+ "B) L'élément de base d'un réseau de neurones artificiels, inspiré des neurones biologiques",
69
+ "C) Une technique de visualisation de données",
70
+ "D) Un type de fonction d'activation"
71
+ ],
72
+ "correct": "B",
73
+ "category": "Réseaux de Neurones Artificiels"
74
+ },
75
+ {
76
+ "question": "Quels sont les éléments caractéristiques d'un perceptron ?",
77
+ "options": [
78
+ "A) Son activation, ses connexions d'entrée, sa fonction d'entrée et sa fonction d'activation",
79
+ "B) Sa taille, sa couleur, sa forme et sa position",
80
+ "C) Son algorithme, sa mémoire, son processeur et son interface",
81
+ "D) Son bias, son taux d'apprentissage, sa dimension et sa profondeur"
82
+ ],
83
+ "correct": "A",
84
+ "category": "Réseaux de Neurones Artificiels"
85
+ },
86
+ {
87
+ "question": "Quelles sont les principales couches d'un réseau de neurones ?",
88
+ "options": [
89
+ "A) Couche d'entrée, couche cachée, couche de sortie",
90
+ "B) Couche primaire, couche secondaire, couche tertiaire",
91
+ "C) Couche superficielle, couche intermédiaire, couche profonde",
92
+ "D) Couche d'acquisition, couche de traitement, couche de restitution"
93
+ ],
94
+ "correct": "A",
95
+ "category": "Réseaux de Neurones Artificiels"
96
+ },
97
+ {
98
+ "question": "Comment fonctionne l'algorithme de rétropropagation (backpropagation) ?",
99
+ "options": [
100
+ "A) Il propage les entrées de la première à la dernière couche",
101
+ "B) Il calcule le gradient de la fonction d'erreur et met à jour les paramètres du réseau",
102
+ "C) Il supprime les neurones inutiles du réseau",
103
+ "D) Il compare les sorties de différents modèles"
104
+ ],
105
+ "correct": "B",
106
+ "category": "Réseaux de Neurones Artificiels"
107
+ },
108
+ {
109
+ "question": "Qu'est-ce qu'une fonction d'activation dans un réseau de neurones ?",
110
+ "options": [
111
+ "A) Une fonction qui initialise les poids du réseau",
112
+ "B) Une fonction qui transforme la somme pondérée des entrées d'un neurone en sortie",
113
+ "C) Une fonction qui détermine la vitesse d'apprentissage",
114
+ "D) Une fonction qui compte le nombre de neurones actifs"
115
+ ],
116
+ "correct": "B",
117
+ "category": "Réseaux de Neurones Artificiels"
118
+ },
119
+ {
120
+ "question": "Qu'est-ce qu'un hyperparamètre dans un réseau de neurones ?",
121
+ "options": [
122
+ "A) Un paramètre dont la valeur est apprise pendant l'entraînement",
123
+ "B) Un paramètre qui contrôle les autres paramètres",
124
+ "C) Un paramètre constant dont la valeur est fixée avant le début du processus d'apprentissage",
125
+ "D) Un paramètre qui change automatiquement pendant l'exécution"
126
+ ],
127
+ "correct": "C",
128
+ "category": "Hyperparamètres"
129
+ },
130
+ {
131
+ "question": "Parmi ces éléments, lequel n'est PAS un hyperparamètre ?",
132
+ "options": [
133
+ "A) Taux d'apprentissage",
134
+ "B) Poids des connexions entre neurones",
135
+ "C) Nombre de couches cachées",
136
+ "D) Taille des échantillons (batch size)"
137
+ ],
138
+ "correct": "B",
139
+ "category": "Hyperparamètres"
140
+ },
141
+ {
142
+ "question": "Quel est l'effet d'un taux d'apprentissage trop élevé ?",
143
+ "options": [
144
+ "A) L'apprentissage est plus lent mais plus stable",
145
+ "B) L'apprentissage est plus rapide mais potentiellement instable",
146
+ "C) L'apprentissage ne démarre pas",
147
+ "D) L'apprentissage est toujours meilleur"
148
+ ],
149
+ "correct": "B",
150
+ "category": "Hyperparamètres"
151
+ },
152
+ {
153
+ "question": "À quoi sert la technique de \"dropout\" dans un réseau de neurones ?",
154
+ "options": [
155
+ "A) À augmenter la vitesse d'entraînement",
156
+ "B) À réduire le surapprentissage en désactivant aléatoirement des neurones",
157
+ "C) À ajouter plus de neurones progressivement",
158
+ "D) À stabiliser la fonction d'activation"
159
+ ],
160
+ "correct": "B",
161
+ "category": "Hyperparamètres"
162
+ },
163
+ {
164
+ "question": "Qu'est-ce que la technique d'\"Early Stopping\" ?",
165
+ "options": [
166
+ "A) Arrêter l'entraînement après un nombre fixe d'époques",
167
+ "B) Interrompre l'entraînement lorsqu'il n'y a plus d'amélioration sur le jeu de validation",
168
+ "C) Commencer l'entraînement avec moins de neurones",
169
+ "D) Limiter le nombre d'exemples d'entraînement"
170
+ ],
171
+ "correct": "B",
172
+ "category": "Hyperparamètres"
173
+ },
174
+ {
175
+ "question": "Quelle est la définition du Deep Learning ?",
176
+ "options": [
177
+ "A) Une technique d'apprentissage automatique basée sur des arbres de décision profonds",
178
+ "B) Une catégorie d'IA qui exploite des réseaux de neurones artificiels avec plusieurs couches",
179
+ "C) Un algorithme spécifique pour l'analyse de données complexes",
180
+ "D) Une méthode d'apprentissage par renforcement avancée"
181
+ ],
182
+ "correct": "B",
183
+ "category": "Deep Learning"
184
+ },
185
+ {
186
+ "question": "Quelle est la principale différence entre le Deep Learning et le Machine Learning traditionnel ?",
187
+ "options": [
188
+ "A) Le Deep Learning nécessite moins de données",
189
+ "B) Le Machine Learning utilise des réseaux de neurones plus complexes",
190
+ "C) Le Deep Learning utilise des réseaux de neurones à plusieurs couches pour apprendre des représentations hiérarchiques",
191
+ "D) Le Machine Learning est plus récent que le Deep Learning"
192
+ ],
193
+ "correct": "C",
194
+ "category": "Deep Learning"
195
+ },
196
+ {
197
+ "question": "Lequel de ces modèles n'appartient PAS au Deep Learning ?",
198
+ "options": [
199
+ "A) CNN (Convolutional Neural Network)",
200
+ "B) RNN (Recurrent Neural Network)",
201
+ "C) SVM (Support Vector Machine)",
202
+ "D) Transformer"
203
+ ],
204
+ "correct": "C",
205
+ "category": "Deep Learning"
206
+ },
207
+ {
208
+ "question": "Pourquoi le Deep Learning est-il particulièrement efficace pour traiter des images ?",
209
+ "options": [
210
+ "A) Parce qu'il utilise moins de ressources computationnelles",
211
+ "B) Parce qu'il peut extraire automatiquement des caractéristiques hiérarchiques",
212
+ "C) Parce qu'il nécessite moins de données d'entraînement",
213
+ "D) Parce qu'il est plus simple à implémenter"
214
+ ],
215
+ "correct": "B",
216
+ "category": "Deep Learning"
217
+ },
218
+ {
219
+ "question": "Qu'est-ce que le \"transfer learning\" en Deep Learning ?",
220
+ "options": [
221
+ "A) Transférer des données d'un ordinateur à un autre",
222
+ "B) Transférer la connaissance acquise sur un jeu de données \"source\" pour mieux traiter un nouveau jeu de données \"cible\"",
223
+ "C) Transférer un modèle d'un langage de programmation à un autre",
224
+ "D) Transférer l'apprentissage d'un réseau de neurones à un autre type d'algorithme"
225
+ ],
226
+ "correct": "B",
227
+ "category": "Deep Learning"
228
+ },
229
+ {
230
+ "question": "Quelles sont les principales opérations appliquées dans un CNN ?",
231
+ "options": [
232
+ "A) Convolution, pooling et fonction d'activation",
233
+ "B) Addition, soustraction et multiplication",
234
+ "C) Encodage, décodage et normalisation",
235
+ "D) Segmentation, classification et régression"
236
+ ],
237
+ "correct": "A",
238
+ "category": "Réseaux de Neurones à Convolution (CNN)"
239
+ },
240
+ {
241
+ "question": "À quoi sert l'opération de convolution dans un CNN ?",
242
+ "options": [
243
+ "A) À réduire la taille de l'image",
244
+ "B) À détecter les caractéristiques d'une image",
245
+ "C) À augmenter le nombre de pixels",
246
+ "D) À transformer l'image en noir et blanc"
247
+ ],
248
+ "correct": "B",
249
+ "category": "Réseaux de Neurones à Convolution (CNN)"
250
+ },
251
+ {
252
+ "question": "Qu'est-ce que le \"pooling\" dans un CNN ?",
253
+ "options": [
254
+ "A) Une technique pour combiner plusieurs images",
255
+ "B) Une méthode pour réduire la dimensionnalité en conservant les informations importantes",
256
+ "C) Un algorithme de partage de poids",
257
+ "D) Une fonction d'activation spécifique aux CNN"
258
+ ],
259
+ "correct": "B",
260
+ "category": "Réseaux de Neurones à Convolution (CNN)"
261
+ },
262
+ {
263
+ "question": "Quel est le rôle du \"flattening\" dans un CNN ?",
264
+ "options": [
265
+ "A) Transformer une matrice multidimensionnelle en vecteur unidimensionnel",
266
+ "B) Aplatir physiquement le matériel informatique",
267
+ "C) Réduire le nombre de couches du réseau",
268
+ "D) Éliminer les variations d'intensité dans une image"
269
+ ],
270
+ "correct": "A",
271
+ "category": "Réseaux de Neurones à Convolution (CNN)"
272
+ },
273
+ {
274
+ "question": "Qu'est-ce que le \"padding\" dans une couche de convolution ?",
275
+ "options": [
276
+ "A) Une technique pour augmenter la taille des filtres",
277
+ "B) L'ajout de zéros autour des bords d'une image avant la convolution",
278
+ "C) Un paramètre qui détermine la couleur de fond",
279
+ "D) Une méthode pour réduire le bruit dans l'image"
280
+ ],
281
+ "correct": "B",
282
+ "category": "Réseaux de Neurones à Convolution (CNN)"
283
+ },
284
+ {
285
+ "question": "Que signifie le terme \"stride\" dans une couche de convolution ?",
286
+ "options": [
287
+ "A) La largeur des filtres utilisés",
288
+ "B) Le nombre de filtres appliqués",
289
+ "C) La distance de déplacement du filtre à chaque application",
290
+ "D) La profondeur de la couche de convolution"
291
+ ],
292
+ "correct": "C",
293
+ "category": "Réseaux de Neurones à Convolution (CNN)"
294
+ },
295
+ {
296
+ "question": "Parmi ces architectures, laquelle n'est PAS un modèle CNN ?",
297
+ "options": [
298
+ "A) VGG16",
299
+ "B) ResNet",
300
+ "C) LSTM",
301
+ "D) AlexNet"
302
+ ],
303
+ "correct": "C",
304
+ "category": "Réseaux de Neurones à Convolution (CNN)"
305
+ },
306
+ {
307
+ "question": "Quel type de problème un CNN n'est PAS conçu pour résoudre ?",
308
+ "options": [
309
+ "A) Classification d'images",
310
+ "B) Détection d'objets",
311
+ "C) Prédiction de séries temporelles",
312
+ "D) Segmentation sémantique"
313
+ ],
314
+ "correct": "C",
315
+ "category": "Réseaux de Neurones à Convolution (CNN)"
316
+ },
317
+ {
318
+ "question": "Pour quel type de données les RNN sont-ils particulièrement adaptés ?",
319
+ "options": [
320
+ "A) Images 2D",
321
+ "B) Données séquentielles (texte, séries temporelles)",
322
+ "C) Graphes",
323
+ "D) Tables de données structurées"
324
+ ],
325
+ "correct": "B",
326
+ "category": "Réseaux de Neurones Récurrents (RNN)"
327
+ },
328
+ {
329
+ "question": "Quelle est la caractéristique principale des RNN par rapport aux réseaux feed-forward ?",
330
+ "options": [
331
+ "A) Ils utilisent plus de neurones",
332
+ "B) Ils ont une mémoire interne qui conserve des informations sur les états précédents",
333
+ "C) Ils sont plus rapides à entraîner",
334
+ "D) Ils nécessitent moins de données d'entraînement"
335
+ ],
336
+ "correct": "B",
337
+ "category": "Réseaux de Neurones Récurrents (RNN)"
338
+ },
339
+ {
340
+ "question": "Quel problème majeur affecte les RNN simples lors de l'apprentissage de dépendances à long terme ?",
341
+ "options": [
342
+ "A) Le problème du gradient explosif",
343
+ "B) Le problème du gradient qui disparaît (vanishing gradient)",
344
+ "C) Le problème de surapprentissage",
345
+ "D) Le problème de sous-apprentissage"
346
+ ],
347
+ "correct": "B",
348
+ "category": "Réseaux de Neurones Récurrents (RNN)"
349
+ },
350
+ {
351
+ "question": "Quelle architecture a été développée pour résoudre le problème du gradient qui disparaît dans les RNN ?",
352
+ "options": [
353
+ "A) CNN",
354
+ "B) LSTM (Long Short-Term Memory)",
355
+ "C) GAN",
356
+ "D) ResNet"
357
+ ],
358
+ "correct": "B",
359
+ "category": "Réseaux de Neurones Récurrents (RNN)"
360
+ },
361
+ {
362
+ "question": "Quelles sont les trois opérations principales dans une cellule LSTM ?",
363
+ "options": [
364
+ "A) Convolution, pooling, activation",
365
+ "B) Encodage, traitement, décodage",
366
+ "C) Forget Gate, Input Gate, Output Gate",
367
+ "D) Lecture, écriture, mise à jour"
368
+ ],
369
+ "correct": "C",
370
+ "category": "Réseaux de Neurones Récurrents (RNN)"
371
+ },
372
+ {
373
+ "question": "À quoi sert la \"Forget Gate\" dans une cellule LSTM ?",
374
+ "options": [
375
+ "A) À supprimer complètement le réseau",
376
+ "B) À décider quelles informations de l'état précédent doivent être oubliées",
377
+ "C) À ignorer les nouvelles entrées",
378
+ "D) À réinitialiser tous les poids"
379
+ ],
380
+ "correct": "B",
381
+ "category": "Réseaux de Neurones Récurrents (RNN)"
382
+ },
383
+ {
384
+ "question": "Quelle est l'innovation principale introduite par l'architecture Transformer ?",
385
+ "options": [
386
+ "A) L'utilisation exclusive de couches de convolution",
387
+ "B) Le mécanisme d'attention qui remplace les connexions récurrentes",
388
+ "C) L'élimination complète des couches cachées",
389
+ "D) L'utilisation de fonctions d'activation plus complexes"
390
+ ],
391
+ "correct": "B",
392
+ "category": "Transformers et Mécanismes d'Attention"
393
+ },
394
+ {
395
+ "question": "Qu'est-ce que le \"Scaled Dot-Product Attention\" dans les Transformers ?",
396
+ "options": [
397
+ "A) Une technique pour augmenter la taille des matrices",
398
+ "B) Un mécanisme permettant de calculer l'importance relative entre différents éléments d'une séquence",
399
+ "C) Une méthode de normalisation des données",
400
+ "D) Un type de fonction d'activation"
401
+ ],
402
+ "correct": "B",
403
+ "category": "Transformers et Mécanismes d'Attention"
404
+ },
405
+ {
406
+ "question": "Que représentent les trois composantes Q, K, V dans le mécanisme d'attention ?",
407
+ "options": [
408
+ "A) Questions, Kilomètres, Valeurs",
409
+ "B) Qualité, Kinésie, Vitesse",
410
+ "C) Query (requête), Key (clé), Value (valeur)",
411
+ "D) Quantité, Kurtosis, Variance"
412
+ ],
413
+ "correct": "C",
414
+ "category": "Transformers et Mécanismes d'Attention"
415
+ },
416
+ {
417
+ "question": "Quelle est la différence entre le \"Self-Attention\" et le \"Multi-Head Attention\" ?",
418
+ "options": [
419
+ "A) Le Self-Attention s'applique à une seule séquence, tandis que le Multi-Head Attention combine plusieurs mécanismes d'attention en parallèle",
420
+ "B) Le Self-Attention utilise une tête, tandis que le Multi-Head Attention utilise plusieurs têtes physiques",
421
+ "C) Le Self-Attention est supervisé, tandis que le Multi-Head Attention est non supervisé",
422
+ "D) Le Self-Attention est utilisé pour les images, tandis que le Multi-Head Attention est utilisé pour le texte"
423
+ ],
424
+ "correct": "A",
425
+ "category": "Transformers et Mécanismes d'Attention"
426
+ },
427
+ {
428
+ "question": "Quelle est la particularité du \"Masked Multi-Head Attention\" utilisé dans le décodeur d'un Transformer ?",
429
+ "options": [
430
+ "A) Il masque certains neurones aléatoirement",
431
+ "B) Il empêche les positions de faire attention aux positions futures",
432
+ "C) Il cache certaines parties de l'image",
433
+ "D) Il supprime les mots peu fréquents"
434
+ ],
435
+ "correct": "B",
436
+ "category": "Transformers et Mécanismes d'Attention"
437
+ },
438
+ {
439
+ "question": "Quelle architecture a été introduite dans le papier \"Attention is All You Need\" ?",
440
+ "options": [
441
+ "A) ResNet",
442
+ "B) LSTM",
443
+ "C) Transformer",
444
+ "D) GAN"
445
+ ],
446
+ "correct": "C",
447
+ "category": "Transformers et Mécanismes d'Attention"
448
+ },
449
+ {
450
+ "question": "Quel est le principe de base d'un auto-encodeur ?",
451
+ "options": [
452
+ "A) Encoder les données puis les décoder pour retrouver l'entrée originale",
453
+ "B) Classer automatiquement les données en catégories",
454
+ "C) Générer de nouvelles données aléatoires",
455
+ "D) Compresser les données de manière irréversible"
456
+ ],
457
+ "correct": "A",
458
+ "category": "Auto-encodeurs"
459
+ },
460
+ {
461
+ "question": "Qu'est-ce qu'un \"bottleneck\" (goulot d'étranglement) dans un auto-encodeur ?",
462
+ "options": [
463
+ "A) Un problème technique qui ralentit l'entraînement",
464
+ "B) Une couche cachée de dimension réduite qui force le réseau à apprendre une représentation compressée",
465
+ "C) Un défaut dans l'architecture du réseau",
466
+ "D) Une limite dans la quantité de données qu'on peut traiter"
467
+ ],
468
+ "correct": "B",
469
+ "category": "Auto-encodeurs"
470
+ },
471
+ {
472
+ "question": "Comment calcule-t-on généralement l'erreur de reconstruction dans un auto-encodeur ?",
473
+ "options": [
474
+ "A) Par la différence entre le nombre de neurones d'entrée et de sortie",
475
+ "B) Par la distance entre les représentations latentes de différentes entrées",
476
+ "C) Par la différence entre l'entrée originale et la sortie reconstruite",
477
+ "D) Par le temps nécessaire à l'encodage et au décodage"
478
+ ],
479
+ "correct": "C",
480
+ "category": "Auto-encodeurs"
481
+ },
482
+ {
483
+ "question": "Qu'est-ce qui caractérise un \"Denoising Auto-Encoder\" ?",
484
+ "options": [
485
+ "A) Il produit des sorties sans bruit",
486
+ "B) Il ajoute du bruit aux données d'entrée et tente de reconstruire les données originales",
487
+ "C) Il filtre automatiquement les données bruitées",
488
+ "D) Il utilise le bruit comme fonction d'activation"
489
+ ],
490
+ "correct": "B",
491
+ "category": "Auto-encodeurs"
492
+ },
493
+ {
494
+ "question": "Quelle est l'utilité principale des auto-encodeurs en Deep Learning ?",
495
+ "options": [
496
+ "A) Uniquement pour la compression de données",
497
+ "B) Pour la génération d'images réalistes",
498
+ "C) Pour la capture de la structure des données et l'apprentissage de représentations utiles",
499
+ "D) Pour remplacer les réseaux convolutifs"
500
+ ],
501
+ "correct": "C",
502
+ "category": "Auto-encodeurs"
503
+ },
504
+ {
505
+ "question": "Quelle méthode est utilisée pour évaluer les performances d'un modèle de classification ?",
506
+ "options": [
507
+ "A) Régression linéaire",
508
+ "B) Matrice de confusion",
509
+ "C) Analyse en composantes principales",
510
+ "D) Clustering k-means"
511
+ ],
512
+ "correct": "B",
513
+ "category": "Questions Diverses"
514
+ },
515
+ {
516
+ "question": "Qu'est-ce que l'augmentation de données (data augmentation) en Deep Learning ?",
517
+ "options": [
518
+ "A) L'ajout de nouvelles caractéristiques aux données existantes",
519
+ "B) La création de données synthétiques pour augmenter la taille du jeu d'entraînement",
520
+ "C) L'application de transformations aux données existantes pour créer de nouveaux exemples d'entraînement",
521
+ "D) L'augmentation artificielle du nombre d'époques d'entraînement"
522
+ ],
523
+ "correct": "C",
524
+ "category": "Questions Diverses"
525
+ },
526
+ {
527
+ "question": "Quelle technique est utilisée pour éviter le surapprentissage dans les modèles de Deep Learning ?",
528
+ "options": [
529
+ "A) Augmenter le nombre de paramètres",
530
+ "B) Réduire le nombre d'exemples d'entraînement",
531
+ "C) Régularisation (comme L1, L2, dropout)",
532
+ "D) Utiliser uniquement des fonctions d'activation linéaires"
533
+ ],
534
+ "correct": "C",
535
+ "category": "Questions Diverses"
536
+ },
537
+ {
538
+ "question": "Dans quel cas utiliserait-on le transfert d'apprentissage (transfer learning) ?",
539
+ "options": [
540
+ "A) Lorsqu'on dispose de très grandes quantités de données d'entraînement",
541
+ "B) Lorsqu'on a peu de données pour un problème mais qu'il existe un modèle pré-entraîné sur un problème similaire",
542
+ "C) Uniquement pour les problèmes de traitement du langage naturel",
543
+ "D) Lorsqu'on veut transférer les données d'un ordinateur à un autre"
544
+ ],
545
+ "correct": "B",
546
+ "category": "Questions Diverses"
547
+ },
548
+ {
549
+ "question": "Quelle est la différence entre la segmentation sémantique et la détection d'objets ?",
550
+ "options": [
551
+ "A) La segmentation sémantique identifie chaque pixel d'une image, tandis que la d��tection d'objets localise les objets avec des boîtes englobantes",
552
+ "B) La segmentation sémantique fonctionne uniquement sur les images en noir et blanc",
553
+ "C) La détection d'objets est une technique dépassée, remplacée par la segmentation sémantique",
554
+ "D) Il n'y a pas de différence, ce sont deux termes pour la même technique"
555
+ ],
556
+ "correct": "A",
557
+ "category": "Questions Diverses"
558
+ }
559
+ ]
560
+
561
+ # Fonction pour calculer les statistiques
562
+ def calculate_stats(results):
563
+ if not results:
564
+ return "Aucune question répondue jusqu'à présent."
565
+
566
+ total = len(results)
567
+ correct = sum(1 for r in results if r['correct'])
568
+ percentage = (correct / total) * 100 if total > 0 else 0
569
+
570
+ # Regrouper par catégorie
571
+ categories = {}
572
+ for r in results:
573
+ cat = r['category']
574
+ if cat not in categories:
575
+ categories[cat] = {'total': 0, 'correct': 0}
576
+ categories[cat]['total'] += 1
577
+ if r['correct']:
578
+ categories[cat]['correct'] += 1
579
+
580
+ # Formater la sortie
581
+ stats = f"## Résumé\n\n"
582
+ stats += f"- **Questions répondues:** {total}\n"
583
+ stats += f"- **Questions correctes:** {correct} ({percentage:.1f}%)\n\n"
584
+ stats += "## Par catégorie\n\n"
585
+ for cat, data in categories.items():
586
+ cat_percentage = (data['correct'] / data['total']) * 100 if data['total'] > 0 else 0
587
+ stats += f"- **{cat}:** {data['correct']}/{data['total']} ({cat_percentage:.1f}%)\n"
588
+
589
+ return stats
590
+
591
+ # État de l'application
592
+ class AppState:
593
+ def __init__(self):
594
+ self.current_questions = []
595
+ self.current_index = 0
596
+ self.results = []
597
+ self.mode = "all" # "all", "category" ou "wrong"
598
+ self.selected_category = None
599
+
600
+ def reset_with_questions(self, new_questions, mode="all", category=None):
601
+ self.current_questions = new_questions.copy()
602
+ random.shuffle(self.current_questions)
603
+ self.current_index = 0
604
+ self.mode = mode
605
+ self.selected_category = category
606
+
607
+ def get_current_question(self):
608
+ if not self.current_questions or self.current_index >= len(self.current_questions):
609
+ return None
610
+ return self.current_questions[self.current_index]
611
+
612
+ def next_question(self):
613
+ if self.current_index < len(self.current_questions) - 1:
614
+ self.current_index += 1
615
+ return self.current_questions[self.current_index]
616
+ return None
617
+
618
+ def prev_question(self):
619
+ if self.current_index > 0:
620
+ self.current_index -= 1
621
+ return self.current_questions[self.current_index]
622
+ return None
623
+
624
+ def add_result(self, question, selected_option, is_correct):
625
+ result = {
626
+ 'question': question['question'],
627
+ 'selected_option': selected_option,
628
+ 'correct': is_correct,
629
+ 'category': question['category']
630
+ }
631
+ self.results.append(result)
632
+ return result