0% ont trouvé ce document utile (0 vote)
3 vues10 pages

Correction DeepLearning

Le document présente un examen sur le Deep Learning, comprenant des questions sur des concepts fondamentaux tels que l'encodage de texte, les fonctions d'activation, les réseaux de neurones convolutionnels, et la normalisation par lot. Il aborde également des architectures spécifiques comme GPT-2 et des applications potentielles de modèles de génération de texte. Les réponses doivent être justifiées, et l'utilisation de documents ou d'appareils électroniques est interdite.

Transféré par

Adama Sembene
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues10 pages

Correction DeepLearning

Le document présente un examen sur le Deep Learning, comprenant des questions sur des concepts fondamentaux tels que l'encodage de texte, les fonctions d'activation, les réseaux de neurones convolutionnels, et la normalisation par lot. Il aborde également des architectures spécifiques comme GPT-2 et des applications potentielles de modèles de génération de texte. Les réponses doivent être justifiées, et l'utilisation de documents ou d'appareils électroniques est interdite.

Transféré par

Adama Sembene
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Examen “Deep Learning” — Première

Session
Instructions
Justifier toutes les réponses : la rédaction compte. Il peut y avoir plusieurs réponses
justes par question. Aucun document nest autorisé. Interdiction dutiliser un appareil
électronique (téléphone, ordinateur, calculatrice, . . . ).

Questions de Base
1. On considère trois textes de tailles respectives 200, 250 et 100 mots que lon encode et
regroupe en batch. Lencodage utilise un modèle bag of words basé sur un tokenizer
qui tokenize mot par mot. Quel est le rang et quelles sont les dimensions du tenseur
obtenu ?
- Les trois textes ont 200, 250 et 100 mots, et ils sont regroupés en batch, donc
on a 3 textes. - Chaque texte est encodé en un vecteur de taille V , représentant
la fréquence des mots. - En batch, les vecteurs sont regroupés en un tenseur de
dimensions [3, V ], où 3 est la taille du batch (nombre de textes) et V est la taille
du vocabulaire.
Le tenseur obtenu est donc de rang 2 (une matrice), et ses dimensions sont [3, V ],
où V dépend du nombre de mots uniques dans les textes.
2. On considère les tenseurs suivants :
• tens1 = [Link](20, 4, 50)
• tens2 = [Link](4, 50)
• tens3 = [Link](50, 4)
Quelle est la sortie de la commande [Link] ?
• [Link]([3]) vu que le rang est 3
• [Link]([20, 4, 50])
• 4000 vu quil y a 4000 entrées dans le tenseur.
- La première option ([Link]([3])) est incorrecte, car elle donnerait le rang
(nombre de dimensions), pas les dimensions elles-mêmes. - La troisième option
(4000) est incorrecte, car elle donne le nombre total déléments (20 × 4 × 50 = 4000),
pas les dimensions. - La deuxième option ([Link]([20, 4, 50])) est correcte,
car elle correspond exactement aux dimensions du tenseur.
La sortie est donc [Link]([20, 4, 50]).
3. Quelles sont les caractéristiques fondamentales du type de machine learning que
nous avons vu dans le cours ? Incluez le type de données, le type dalgorithmes et
les objets encodant lapprentissage.

1
- Type de données : Le deep learning travaille généralement avec des données non
structurées ou complexes, comme des images, des textes, des sons ou des vidéos. Ces
données sont souvent représentées sous forme de tenseurs (par exemple, matrices
pour les images ou séquences pour les textes). - Type dalgorithmes : Les algo-
rithmes principaux sont les réseaux de neurones artificiels, notamment les réseaux
profonds (composés de nombreuses couches). On utilise des techniques comme la
rétropropagation du gradient et des optimisations comme la descente de gradient
stochastique (SGD). - Objets encodant lapprentissage : Lapprentissage est
encodé dans les poids des réseaux de neurones. Ces poids sont ajustés pendant
lentraînement pour minimiser une fonction de perte, et ils capturent les relations
entre les entrées et les sorties.
En résumé, le deep learning utilise des réseaux de neurones profonds pour traiter
des données complexes, avec lapprentissage encodé dans les poids.
4. Quest-ce quune fonction dactivation dans les réseaux de neurones ? Donnez quelques
exemples classiques.
Exemples classiques : - ReLU (Rectified Linear Unit) : f (x) = max(0, x),
qui retourne 0 pour les valeurs négatives et x pour les valeurs positives. - Sigmoid :
f (x) = 1+e1−x , qui mappe les valeurs dans lintervalle [0, 1]. - Tanh : f (x) = tanh(x),
qui mappe les valeurs dans lintervalle [−1, 1]. - Softmax : Utilisée dans la couche
de sortie pour les tâches de classification, elle normalise les sorties en probabilités.
Ces fonctions permettent au réseau de capturer des relations non linéaires dans les
données.
5. Quel est lintérêt dutiliser des réseaux convolutionnels par rapport aux réseaux fully
connected ?
- Efficacité pour les données spatiales : Les CNN sont conçus pour traiter
des données avec une structure spatiale, comme des images. Ils utilisent des fil-
tres de convolution qui capturent des motifs locaux (par exemple, bords, textures),
réduisant le besoin de connections globales. - Réduction des paramètres : Con-
trairement aux FCNN, où chaque neurone est connecté à tous les neurones de la
couche précédente, les CNN partagent les poids des filtres de convolution, ce qui
réduit considérablement le nombre de paramètres et le risque de surapprentissage.
- Invariance par translation : Les CNN sont robustes aux translations dans les
données (par exemple, un objet dans une image peut être reconnu même sil est
déplacé), grâce aux couches de convolution et de pooling. - Efficacité computa-
tionnelle : Les CNN nécessitent moins de calculs que les FCNN pour des données
de grande dimension (comme des images), car ils exploitent la structure locale des
données.
En résumé, les CNN sont plus adaptés aux tâches comme la vision par ordinateur,
car ils exploitent la structure spatiale des données et sont plus efficaces que les
FCNN.
6. Donnez un exemple de couche (layer) qui fonctionne différemment selon quelle est
en phase dentraînement ou en phase dinférence.
- Phase dentraînement : Pendant lentraînement, la couche de dropout désactive

2
aléatoirement un pourcentage de neurones (par exemple, 50%) à chaque itération.
Cela empêche le réseau de trop dépendre de certains neurones et réduit le risque
de surapprentissage. - Phase dinférence : En phase dinférence (prédiction), la
couche de dropout est désactivée, et tous les neurones sont utilisés. Cependant, les
poids sont souvent mis à léchelle (par exemple, multipliés par le taux de rétention,
comme 0,5 si 50% des neurones étaient désactivés) pour maintenir la cohérence des
sorties.
La couche de dropout fonctionne donc différemment selon la phase, en introduisant
de laléatoire pendant lentraînement mais en étant déterministe pendant linférence.
7. La data augmentation consiste-t-elle à :
• Créer de nouvelles données en demandant à de nouvelles personnes den créer
?
• Créer de nouvelles données à partir des anciennes pour implémenter une
symétrie connue du problème ?
- La première option (demander à de nouvelles personnes de créer des données) nest
pas de la data augmentation, mais plutôt une collecte de données. - La deuxième op-
tion est correcte : la data augmentation génère de nouvelles données en appliquant
des transformations aux données existantes, comme des rotations, des translations,
des changements de luminosité pour des images, ou des synonymes pour du texte.
Ces transformations exploitent des symétries ou invariances du problème (par ex-
emple, une image dun chat reste un chat même si elle est tournée).
En résumé, la data augmentation utilise les données existantes pour créer de nou-
velles variations.
8. Donnez un exemple de data augmentation.
- Si vous avez une image dun chien, vous pouvez la faire pivoter de 10 degrés dans
un sens ou dans lautre pour générer une nouvelle image. Cela simule différentes
orientations du chien tout en conservant son label (cest toujours un chien). - Cette
transformation est utile dans des tâches comme la classification dimages, car elle
aide le modèle à apprendre à reconnaître des objets sous différents angles, amélio-
rant sa généralisation.
Autre exemple : pour du texte, remplacer des mots par des synonymes (par exemple,
ń grand ż par ń large ż) pour augmenter la variété des données dentraînement.
9. Expliquez le concept de modèle bag of words (BoW). En quoi diffère-t-il des méth-
odes dencodage de texte plus avancées comme lutilisation des word embeddings ?
Différence avec les word embeddings : - Contexte et sémantique : Les word
embeddings (comme Word2Vec, GloVe, ou BERT) encodent les mots en vecteurs
denses dans un espace continu, où des mots sémantiquement similaires (par ex-
emple, ń roi ż et ń reine ż) ont des vecteurs proches. BoW ignore complètement
le contexte et la sémantique. - Dimensionnalité : BoW produit des vecteurs
épars de grande dimension (taille du vocabulaire), tandis que les word embeddings
génèrent des vecteurs denses de dimension plus petite (par exemple, 300 dimen-
sions). - Ordre des mots : BoW ne prend pas en compte lordre des mots (ń le

3
chat mange ż et ń mange chat le ż ont le même vecteur BoW), alors que les word
embeddings avancés (comme BERT) capturent le contexte et lordre via des modèles
comme les transformers.
En résumé, BoW est simple mais limité, tandis que les word embeddings capturent
des relations sémantiques et contextuelles plus riches.
10. La batch normalization consiste à considérer des batches de même taille. Vrai ou
Faux ? Justifiez votre réponse.
La batch normalization (BN) consiste à normaliser les activations dune couche pour
chaque batch pendant lentraînement, mais elle nexige pas que tous les batches aient
la même taille.
- Explication : BN calcule la moyenne et la variance des activations sur le batch
actuel, puis normalise les activations pour quelles aient une moyenne de 0 et une
variance de 1. Ensuite, elle applique une transformation affine (avec des paramètres
appris). Cela se fait pour chaque batch, indépendamment de sa taille. - Taille des
batches : Bien quil soit courant dutiliser des batches de même taille (par exemple,
32 ou 64) pour simplifier lentraînement, ce nest pas une exigence stricte de BN.
Même avec des batches de tailles différentes, BN peut fonctionner en calculant les
statistiques sur le batch donné. - Cas particulier : Le dernier batch dun ensemble
de données peut avoir une taille différente (plus petite), et BN sadapte en utilisant
les statistiques de ce batch.
En conclusion, la batch normalization nimpose pas que les batches aient la même
taille.
11. Décrivez larchitecture de GPT-2. Quels en sont les composants clés ?
- Architecture générale : GPT-2 est composé de plusieurs couches (ou layers)
de transformers, empilées les unes sur les autres. Il utilise uniquement la partie
decoder du transformer (contrairement au transformer original qui a un encoder et
un decoder). - Composants clés : 1. Token Embeddings : Les mots (ou tokens)
sont convertis en vecteurs denses via une couche dembedding. 2. Positional Em-
beddings : Comme GPT-2 est sensible à lordre des mots, il ajoute des positional
embeddings pour encoder la position de chaque token dans la séquence. 3. Trans-
former Decoder Blocks : Chaque bloc contient : - Multi-Head Self-Attention
: Permet au modèle de se concentrer sur différents mots de la séquence dentrée pour
chaque token, en capturant les relations contextuelles. - Feed-Forward Neural
Network (FFNN) : Une couche fully connected appliquée à chaque token in-
dépendamment. - Layer Normalization : Appliquée après chaque sous-couche
(self-attention et FFNN) pour stabiliser lentraînement. - Residual Connections
: Ajoutées autour des sous-couches pour faciliter le flux des gradients. 4. Out-
put Layer : Une couche linéaire suivie dune softmax pour prédire la probabilité
du prochain token. - Caractéristiques : GPT-2 utilise un masked self-attention
(attention causale) pour sassurer que chaque token ne peut prêter attention quaux
tokens précédents, ce qui est essentiel pour la génération autoregressive.
En résumé, GPT-2 est une pile de transformer decoders avec self-attention, FFNN,
et des embeddings pour les tokens et leurs positions.

4
12. Sur quelle tâche un modèle sequence-to-sequence comme GPT est-il entraîné ? Jus-
tifiez votre réponse.
Justification : - GPT est un modèle autoregressif qui génère du texte en prédisant
un token à la fois, en se basant sur les tokens précédents. Pendant lentraînement,
on lui donne une séquence de tokens, et il doit prédire le token suivant pour chaque
position. - Par exemple, pour la phrase ń Le chat mange ż, GPT est entraîné à
prédire ń chat ż après ń Le ż, puis ń mange ż après ń Le chat ż. - Cela diffère des
modèles sequence-to-sequence classiques (comme ceux utilisés pour la traduction),
qui transforment une séquence dentrée en une séquence de sortie (par exemple, une
phrase en anglais en une phrase en français). GPT génère du texte de manière
unidirectionnelle, sans encoder.
En résumé, GPT est entraîné sur une tâche de language modeling (prédiction du
prochain token).
13. Proposez une application novatrice de GPT-2 dans un domaine de votre choix.
Idée : Utiliser GPT-2 pour générer des explications personnalisées et des exercices
adaptés au niveau de compréhension dun étudiant. Par exemple : - Un étudiant
pose une question sur un concept mathématique (par exemple, ń Quest-ce quune
dérivée ? ż). - GPT-2 génère une explication simplifiée ou détaillée selon le niveau
de létudiant (débutant, intermédiaire, avancé), en sappuyant sur des exemples con-
textuels. - Ensuite, GPT-2 peut générer des exercices personnalisés (par exemple,
ń Calculez la dérivée de f (x) = x2 + 3x) avec des solutions commentées.
Avantages : - Adaptation au niveau de létudiant grâce à la génération de texte
contextuel. - Création de contenu éducatif à la volée, économisant du temps pour
les enseignants. - Possibilité dintégrer des interactions (dialogue avec létudiant)
pour clarifier des concepts.
Cette application exploite la capacité de GPT-2 à générer du texte cohérent et
contextuel pour un apprentissage sur mesure.
14. Quels sujets (déjà existants ou non dans le cours) auriez-vous voulu que jaborde ou
que jexplique plus en profondeur ?
- Transfer Learning et Fine-Tuning : Le cours pourrait inclure une explication
détaillée du transfer learning, qui est très utilisé en deep learning (par exemple,
fine-tuner un modèle comme BERT pour des tâches spécifiques). Cela inclurait des
exemples pratiques et des discussions sur les meilleures pratiques. - Interpréta-
bilité des modèles : Explorer des méthodes pour comprendre les décisions des
réseaux de neurones (par exemple, SHAP, LIME, ou lanalyse des poids dattention
dans les transformers) serait utile pour des applications réelles. - Applications
pratiques : Ajouter des études de cas concrètes, comme lutilisation du deep learn-
ing dans la détection de fraudes ou la génération de musique, pour montrer comment
appliquer les concepts vus en cours.
Ces sujets permettraient de mieux connecter la théorie à des applications pratiques
et dapprofondir des concepts avancés.

5
Petit Problème
P1 a accès à des commentaires de films, avec une note de 0 à 4 (i.e., 0, 1, 2, 3). Ces
données proviennent de commentaires de critiques littéraires sur des sites de librairies.
P1 a utilisé le modèle et la fonction de coût suivants :
class NN ( nn . Module ) :
def __init__ ( self ) :
super () . __init__ ()
self . fi rs t_ li ne ar _l ay er = nn . Linear (1000 , 100)
self . square d _ l i n e a r _ l a y e r = nn . Linear (100 , 100)
self . last_linear _layer = nn . Linear (100 , 1)

def forward ( self , x ) :


a1_1 = self . f irs t_ li ne ar _l ay er ( x )
a1_2 = self . activation ( a1_1 )
a2_1 = self . s q u a r e d _ l i n e a r _ l a y e r ( a1_2 )
a2_2 = self . activation ( a2_1 )
a3_1 = self . last_ linear _layer ( a2_2 )
a3_2 = self . activation ( a3_1 )
a4_1 = self . s q u a r e d _ l i n e a r _ l a y e r ( a3_2 )
a4_2 = self . activation ( a4_1 )
a5_1 = self . s q u a r e d _ l i n e a r _ l a y e r ( a4_2 )
a5_2 = self . activation ( a5_1 )
a6_1 = self . last_ linear _layer ( a5_2 )
out = nn . Sigmoid () ( a6_1 )
return out

1. Quel est le type de réseau de neurones que P1 essaie dimplémenter ?


Justification : - Le modèle utilise des couches [Link], qui sont des couches
fully connected (chaque neurone dune couche est connecté à tous les neurones de la
couche suivante). - Il ny a pas de couches convolutionnelles (nn.Conv2d) ou récur-
rentes ([Link], [Link]), ni de mécanismes dattention (comme dans les transform-
ers). - La structure est séquentielle : les couches linéaires sont suivies de fonctions
dactivation, ce qui est typique dun FCNN.
En résumé, le réseau est un fully connected neural network.
2. En considérant quil voulait implémenter une des quatre architectures données dans
la question précédente, identifiez deux erreurs dans le code et expliquez-les.
1. Définition incorrecte de squared_linear_layer : - Dans le constructeur
(__init__), P1 définit self.squared_linear_layer = [Link](100, 100). Cepen-
dant, dans la méthode forward, cette couche est utilisée plusieurs fois (a2_1,
a4_1, a5_1) avec des entrées différentes, mais il sagit toujours de la même couche
(même instance, mêmes poids). - Problème : Si P1 voulait que chaque appel à
squared_linear_layer soit une transformation distincte (comme dans un réseau
avec des couches différentes), il aurait dû définir des couches séparées dans __init__
(par exemple, self.squared_linear_layer1, self.squared_linear_layer2, etc.).
- Correction : Définir des couches distinctes pour chaque transformation linéaire.

6
2. Utilisation incorrecte de last_linear_layer : - De manière similaire,
self.last_linear_layer est utilisé deux fois (a3_1 et a6_1), mais cest la même
instance de couche. Cela signifie que les poids de cette couche sont partagés entre
les deux appels, ce qui nest probablement pas lintention de P1 sil voulait un réseau
avec des couches distinctes. - Problème : Cela réduit la capacité du modèle, car
les transformations ne sont pas indépendantes. - Correction : Définir une nouvelle
couche pour chaque transformation linéaire distincte.
Erreur supplémentaire (bonus) : La méthode [Link] est appelée
plusieurs fois, mais elle nest pas définie dans le code. Cela provoquerait une er-
reur dexécution. P1 aurait dû définir cette méthode dans la classe (par exemple,
[Link] = [Link]()).
En résumé, les erreurs principales sont le partage incorrect des couches squared_linear_layer
et last_linear_layer, et labsence de définition de [Link].
3. Quest-ce que P1 est en train de faire ?
• P1 essaie de faire une régression pour prédire la note dun commentaire.
• P1 essaie de faire de la classification : il essaie de prédire si le commentaire
est positif ou négatif (i.e., si la note est plus grande ou plus petite que 2).
• P1 essaie de faire de la classification : il essaie de prédire la note associée à
un commentaire.
Justification : - La sortie du modèle est passée par une fonction [Link](),
qui mappe les valeurs dans lintervalle [0, 1]. Cela suggère que la sortie est une
valeur continue, pas une classe discrète. - Les notes vont de 0 à 4. Si P1 voulait
faire de la classification (options 2 ou 3), il aurait utilisé une Softmax pour prédire
des probabilités sur plusieurs classes (par exemple, 5 classes pour les notes 0 à 4,
ou 2 classes pour positif/négatif). Une sortie unique avec Sigmoid est typique dune
régression. - Option 2 (classification binaire positif/négatif) est incorrecte, car la
sortie nest pas binarisée (elle est continue entre 0 et 1). Option 3 (classification
multiclasse) est incorrecte, car il ny a quune seule sortie, pas une sortie par classe.
Pour correspondre à léchelle des notes (0 à 4), P1 pourrait multiplier la sortie par
4 après le Sigmoid, ce qui donnerait une prédiction continue dans [0, 4], confirmant
quil sagit dune régression.
4. Quelle fonction de perte P1 devrait-il utiliser ?
• [Link]()
• [Link]()
• [Link]()
Justification : - Comme établi dans la question précédente, P1 effectue une ré-
gression (prédire une note continue entre 0 et 4). La fonction de perte appropriée
pour une régression est généralement la mean squared error (MSE), qui mesure la
différence quadratique entre les prédictions et les valeurs réelles. - [Link]()
est donc la bonne fonction de perte pour ce problème. - [Link]()
et [Link]() sont utilisées pour des tâches de classification binaire (par ex-

7
emple, prédire 0 ou 1), ce qui ne correspond pas à ce que fait P1. De plus,
[Link]() combine un Sigmoid et une perte binaire, mais P1 ap-
plique déjà un Sigmoid dans son modèle, donc cela entraînerait une double appli-
cation.
En résumé, pour une régression, [Link]() est la fonction de perte appropriée.
5. Comment les commentaires sont-ils encodés à lentrée du réseau ? Une des quatre
propositions est vraie.
• P1 a numéroté chaque commentaire de 1 à 2000, et il a encodé donc chaque
commentaire par le nombre correspondant.
• P1 a numéroté chaque commentaire de 1 à 2000, et a encodé chaque commen-
taire par un vecteur de 0, avec un unique 1 en position donnée par le numéro
du commentaire.
• P1 a numéroté chaque mot et a encodé un commentaire par le vecteur composé
des numéros associés aux mots.
• P1 a choisi une façon de découper la phrase, puis a numéroté chaque token, et
a encodé un commentaire par un vecteur de taille 1000 avec un numérotage
choisi, avec un vecteur de positions données par les numéros des tokens les
plus fréquents (les 1000 premiers).
Justification : - La première couche de P1 est [Link](1000, 100), ce qui
signifie que lentrée du réseau est un vecteur de taille 1000. Cela indique que chaque
commentaire est encodé sous forme dun vecteur de 1000 dimensions. - La première
option (numéroter les commentaires de 1 à 2000) produirait un scalaire, pas un
vecteur de taille 1000. - La deuxième option (vecteur de 0 avec un 1 à la position
du numéro du commentaire) produirait un vecteur de taille 2000 (car il y a 2000
commentaires), pas 1000. - La troisième option (vecteur des numéros des mots)
est vague et ne correspond pas à une taille fixe de 1000, car la longueur des com-
mentaires varie. - La quatrième option correspond à une méthode classique en
traitement du langage naturel : P1 tokenize les commentaires (découpe en tokens),
numérote les tokens les plus fréquents (1000 premiers), et encode chaque commen-
taire sous forme dun vecteur de taille 1000, où chaque dimension peut représenter
la fréquence ou la présence dun token. Cela correspond à une représentation de
type bag of words ou one-hot encoding tronquée aux 1000 tokens les plus fréquents.
En résumé, P1 encode les commentaires en vecteurs de taille 1000 basés sur les
tokens les plus fréquents.
6. Combien y a-t-il de couches cachées dans le modèle ? Combien de paramètres le
modèle contient-il ?
Nombre de paramètres : - first_linear_layer : [Link](1000, 100)
1000 × 100 + 100 = 100, 100 paramètres (poids + biais). - squared_linear_layer
: [Link](100, 100) 100 × 100 + 100 = 10, 100 paramètres. Cette couche est
réutilisée 3 fois (a2_1, a4_1, a5_1), mais comme cest la même instance, elle ne
compte quune fois : 10,100 paramètres. - last_linear_layer : [Link](100,
1) 100 × 1 + 1 = 101 paramètres. Réutilisée 2 fois (a3_1, a6_1), mais cest la même
instance : 101 paramètres. - Total : 100, 100 + 10, 100 + 101 = 110, 301.

8
En résumé, le modèle a 5 couches cachées et 110,301 paramètres.
7. À partir de quel pourcentage de bonnes prédictions peut-on dire que le modèle de
P1 bat un modèle basique ?
• 1%
• 25%
• 50%
- P1 effectue une régression (prédire une note de 0 à 4), mais la question parle de ń
bonnes prédictions ż, ce qui est plus typique dune classification. Cela suggère une
possible incohérence dans lénoncé. Cependant, supposons que ń bonne prédiction
ż signifie que la note prédite est arrondie à la note réelle (par exemple, si la pré-
diction est 3.2, on la compare à 3). - Un modèle basique pour une classification
(si on interprète les notes comme des classes) serait un modèle qui prédit la classe
majoritaire. Les notes vont de 0 à 4 (5 classes). Si les notes sont uniformément
distribuées, chaque classe représente 15 = 20%. Un modèle basique qui choisit une
classe au hasard aurait une précision de 20%. - Cependant, si les notes ne sont
pas uniformément distribuées (par exemple, plus de notes autour de 3), un mod-
èle basique pourrait prédire la classe la plus fréquente. Sans information sur la
distribution, supposons une distribution uniforme pour simplifier.
- Option 1% : Trop faible, car même un modèle aléatoire fait mieux (20%). - Option
25% : Légèrement supérieur à 20%, ce qui signifie que le modèle de P1 est meilleur
quun modèle aléatoire. - Option 50% : Beaucoup plus élevé que 20%, mais pas
nécessairement le seuil minimal pour battre un modèle basique.
Puisque 25% est le seuil le plus raisonnable pour dépasser une précision aléatoire de
20%, le modèle de P1 bat un modèle basique à partir de 25% de bonnes prédictions.
8. P1 a du mal à entraîner le modèle. Il décide alors dutiliser des connexions résidu-
elles et en ajouter une dans le code précédent. Expliquez ce quest une connexion
résiduelle et comment en ajouter une dans le code précédent.
Ajout dune connexion résiduelle dans le code de P1 : - Dans le code de P1,
ajoutons une connexion résiduelle entre a1_2 et a2_2, car les dimensions correspon-
dent (les deux ont une taille de 100). - Actuellement : a1_2 = [Link](a1_1),
puis a2_1 = self.squared_linear_layer(a1_2), et a2_2 = [Link](a2_1).
- Avec une connexion résiduelle, on ajoute a1_2 à a2_2 : a2_2 = [Link](a2_1)
+ a1_2.
Voici le code modifié (en supposant que [Link] = [Link]()) :
class NN ( nn . Module ) :
def __init__ ( self ) :
super () . __init__ ()
self . firs t_ li ne ar _l ay er = nn . Linear (1000 , 100)
self . sq u a r e d _ l i n e a r _ l a y e r = nn . Linear (100 , 100)
self . last_ linear _layer = nn . Linear (100 , 1)
self . activation = nn . ReLU () # Define the activation
function

9
def forward ( self , x ) :
a1_1 = self . fi rs t_ li ne ar _l ay er ( x )
a1_2 = self . activation ( a1_1 )
a2_1 = self . s q u a r e d _ l i n e a r _ l a y e r ( a1_2 )
a2_2 = self . activation ( a2_1 ) + a1_2 # Residual
connection
a3_1 = self . last_ linear _layer ( a2_2 )
a3_2 = self . activation ( a3_1 )
a4_1 = self . s q u a r e d _ l i n e a r _ l a y e r ( a3_2 )
a4_2 = self . activation ( a4_1 )
a5_1 = self . s q u a r e d _ l i n e a r _ l a y e r ( a4_2 )
a5_2 = self . activation ( a5_1 )
a6_1 = self . last_ linear _layer ( a5_2 )
out = nn . Sigmoid () ( a6_1 )
return out

Explication : - La connexion résiduelle a2_2 = [Link](a2_1) + a1_2


ajoute lentrée a1_2 à la sortie de la transformation [Link](a2_1). - Cela
nécessite que a1_2 et [Link](a2_1) aient la même dimension (ici, 100),
ce qui est le cas. - Cette modification peut aider à améliorer lentraînement en
permettant un meilleur flux des gradients.
En résumé, une connexion résiduelle facilite lentraînement, et ici, elle est ajoutée
entre a1_2 et a2_2.

10

Vous aimerez peut-être aussi