Buckets:

rtrm's picture
|
download
raw
14.3 kB
# Quiz de fin de chapitre
<CourseFloatingBanner
chapter={7}
classNames="absolute z-10 right-0 top-0"
/>
Testons ce que vous avez appris dans ce chapitre !
### 1. Laquelle des tâches suivantes peut être considérée comme un problème de classification de <i>tokens</i> ?
<Question
choices={[
{
text: "Trouvez les composants grammaticaux d'une phrase.",
explain: "Nous pouvons alors étiqueter chaque mot comme étant un nom, un verbe, etc.",
correct: true
},
{
text: "Trouvez si une phrase est grammaticalement correcte ou non.",
explain: "C'est un problème de classification des séquences."
},
{
text: "Trouvez les personnes mentionnées dans une phrase.",
explain: "Nous pouvons étiqueter chaque mot comme personne ou non personne.",
correct: true
},
{
text: "Trouvez le groupe de mots dans une phrase qui répond à une question.",
explain: "C'est un problème de réponse aux questions."
}
]}
/>
### 2. Quelle partie du prétraitement pour la classification de <i>tokens</i> diffère des autres pipelines de prétraitement ?
<Question
choices={[
{
text: "Il n'y a rien à faire, les textes sont déjà tokenisés.",
explain: "Les textes sont en effet donnés sous la forme de mots séparés mais nous devons encore appliquer le modèle de tokenisation en sous-mots."
},
{
text: "Les textes sont donnés sous forme de mots, il suffit donc d'appliquer la tokénisation en sous-mots.",
explain: "C'est différent du prétraitement habituel, nous devons appliquer le pipeline complet de tokénisation. Pouvez-vous penser à une autre différence ?",
correct: true
},
{
text: "Nous utilisons <code>-100</code> pour étiqueter les <i>tokens</i> spéciaux.",
explain: "Ce n'est pas spécifique à la classification de <i>tokens</i>. Nous utilisons toujours <code>-100</code> comme étiquette pour les <i>tokens</i> que nous voulons ignorer dans la perte."
},
{
text: "Nous devons nous assurer que les étiquettes sont tronquées ou rembourrées à la même taille que les entrées, lorsque nous appliquons la troncature/le <i>padding</i>.",
explain: "En effet mais ce n'est pas la seule différence.",
correct: true
}
]}
/>
### 3. Quel problème se pose lorsque nous tokenisons les mots dans un problème de classification de <i>tokens</i> et que nous voulons étiqueter les <i>tokens</i> ?
<Question
choices={[
{
text: "Le <i>tokenizer</i> ajoute des <i>tokens</i> spéciaux et nous n'avons pas d'étiquettes pour eux.",
explain: "Nous les étiquetons par <code>-100</code> ils sont donc ignorés dans la perte."
},
{
text: "Chaque mot peut produire plusieurs <i>tokens</i>, ce qui fait que nous nous retrouvons avec plus de <i>tokens</i> que d'étiquettes.",
explain: "C'est le problème principal et nous devons aligner les étiquettes originales avec les <i>tokens</i>.",
correct: true
},
{
text: "Les <i>tokens</i> ajoutés n'ont pas d'étiquettes, il n'y a donc pas de problème.",
explain: "Nous avons besoin d'autant d'étiquettes que de <i>tokens</i>, sinon nos modèles se tromperont."
}
]}
/>
### 4. Que signifie « adaptation au domaine » ?
<Question
choices={[
{
text: "C'est lorsque nous exécutons un modèle sur un jeu de données et que nous obtenons les prédictions pour chaque échantillon de ce jeu de données.",
explain: "C'est juste une inférence."
},
{
text: "C'est quand on entraîne un modèle sur un jeu de données.",
explain: "Il s'agit d'entraîner un modèle. Il n'y a pas d'adaptation ici."
},
{
text: "C'est lorsque nous <i>finetunons</i> un modèle pré-entraîné sur un nouveau jeu de données et qu'il donne des prédictions qui sont plus adaptées à ce nouveau jeu de données.",
explain: "Le modèle a adapté ses connaissances au nouveau jeu de données.",
correct: true
},
{
text: "C'est lorsque nous ajoutons des échantillons mal classés à un jeu de données pour rendre notre modèle plus robuste.",
explain: "C'est certainement quelque chose que vous devriez faire si vous réentraînez votre modèle régulièrement, mais ce n'est pas une adaptation au domaine."
}
]}
/>
### 5. Quelles sont les étiquettes dans un problème de modélisation du langage masqué ?
<Question
choices={[
{
text: "Certains des <i>tokens</i> de la phrase d'entrée sont masqués de manière aléatoire et les étiquettes sont les <i>tokens</i> d'entrée originaux.",
explain: "C'est ça !",
correct: true
},
{
text: "Certains des <i>tokens</i> de la phrase d'entrée sont masqués de manière aléatoire et les étiquettes sont les <i>tokens</i> d'entrée originaux, décalés vers la gauche.",
explain: "Non, le déplacement des étiquettes vers la gauche correspond à la prédiction du mot suivant, ce qui est une modélisation causale du langage."
},
{
text: "Certains des <i>tokens</i> de la phrase d'entrée sont masqués de manière aléatoire et l'étiquette indique si la phrase est positive ou négative.",
explain: "Il s'agit d'un problème de classification de séquences avec une certaine augmentation de données et non d'une modélisation du langage masqué."
},
{
text: "Certains des <i>tokens</i> des deux phrases d'entrée sont masqués de manière aléatoire et l'étiquette indique si les deux phrases sont similaires ou non.",
explain: "Il s'agit d'un problème de classification de séquences avec une certaine augmentation de données et non d'une modélisation du langage masqué."
}
]}
/>
### 6. Laquelle de ces tâches peut être considérée comme un problème de séquence à séquence ?
<Question
choices={[
{
text: "Rédiger de courtes critiques de longs documents.",
explain: "C'est un problème de résumé. Essayez une autre réponse !",
correct: true
},
{
text: "Répondre à des questions sur un document.",
explain: "Cela peut être formulé comme un problème de séquence à séquence. Ce n'est cependant pas la seule bonne réponse.",
correct: true
},
{
text: "Traduire un texte en chinois en anglais.",
explain: "C'est définitivement un problème de séquence à séquence. Pouvez-vous en trouver un autre ?",
correct: true
},
{
text: "Corriger les messages envoyés par mon neveu/ami pour qu'ils soient en anglais correct.",
explain: "Il s'agit d'un problème de traduction donc d'une tâche de séquence à séquence. Mais ce n'est pas la seule bonne réponse !",
correct: true
}
]}
/>
### 7. Quelle est la bonne façon de prétraiter les données pour un problème de séquence à séquence ?
<Question
choices={[
{
text: "Les entrées et les cibles doivent être envoyées ensemble au <i>tokenizer</i> avec les éléments suivants <code>inputs=...</code> et <code>targets=...</code>.",
explain: "Nous pourrions ajouter cette API à l'avenir mais ce n'est pas possible pour le moment."
},
{
text: "Les entrées et les cibles doivent être prétraitées, en deux appels séparés au <i>tokenizer</i>.",
explain: "C'est vrai, mais incomplet. Il y a quelque chose que vous devez faire pour vous assurer que le <i>tokenizer</i> traite les deux correctement."
},
{
text: "Comme d'habitude, nous devons simplement tokeniser les entrées.",
explain: "Pas dans un problème de classification de séquences. Les cibles sont aussi des textes que nous devons convertir en chiffres !"
},
{
text: "Les entrées doivent être envoyées au <i>tokenizer</i>, et les cibles aussi, mais sous un gestionnaire de contexte spécial.",
explain: "C'est exact, le <i>tokenizer</i> doit être mis en mode cible par ce gestionnaire de contexte.",
correct: true
}
]}
/>
{#if fw === 'pt'}
### 8. Pourquoi existe-t-il une sous-classe spécifique de <code>Trainer</code> pour les problèmes de séquence à séquence ?
<Question
choices={[
{
text: "Parce que les problèmes de séquence-à-séquence utilisent une perte personnalisée, pour ignorer les étiquettes définies à <code>-100</code>.",
explain: "Ce n'est pas du tout une perte personnalisée mais la façon dont la perte est toujours calculée."
},
{
text: "Parce que les problèmes de séquence à séquence nécessitent une boucle d'évaluation spéciale.",
explain: "Les prédictions des modèles de séquence à séquence sont souvent exécutées en utilisant la méthode <code>generate()</code>.",
correct: true
},
{
text: "Parce que les cibles sont des textes dans des problèmes de séquence à séquence.",
explain: "<code>Trainer</code> ne se soucie pas vraiment de cela puisqu'elles ont été prétraités auparavant."
},
{
text: "Parce que nous utilisons deux modèles dans les problèmes de séquence à séquence.",
explain: "Nous utilisons en quelque sorte deux modèles, un encodeur et un décodeur, mais ils sont regroupés dans un seul modèle."
}
]}
/>
{:else}
### 9. Pourquoi est-il souvent inutile de spécifier une perte quand on appelle <code>compile()</code> sur un <i>transformer</i> ?
<Question
choices={[
{
text: "Parce que les <i>tranformers</i> sont entraînés avec un apprentissage autosupervisé.",
explain: "Pas tout à fait. Même l'apprentissage autosupervisé a besoin d'une fonction de perte !"
},
{
text: "Parce que la sortie de perte interne du modèle est utilisée par défaut.",
explain: " ",
correct: true
},
{
text: "Parce que nous calculons les mesures après l'entraînement au lieu de le faire.",
explain: "Nous le faisons souvent mais cela n'explique pas d'où vient la valeur de perte que nous optimisons dans l'entraînement."
},
{
text: "Parce que la perte est spécifiée dans <code>model.fit()</code>.",
explain: "La fonction de perte est toujours fixée une fois que vous exécutez <code>model.compile()</code> et ne peut pas être modifiée dans <code>model.fit()</code>."
}
]}
/>
{/if}
### 10. Quand devez-vous pré-entraîner un nouveau modèle ?
<Question
choices={[
{
text: "Lorsqu'il n'y a pas de modèle pré-entraîné disponible pour votre langue spécifique.",
explain: " ",
correct: true
},
{
text: "Lorsque vous disposez d'un grand nombre de données, même s'il existe un modèle pré-entraîné qui pourrait fonctionner sur ces données.",
explain: "Dans ce cas, vous devriez probablement utiliser le modèle pré-entraîné et le <i>finetuner</i> sur vos données afin d'éviter d'énormes coûts de calcul."
},
{
text: "Lorsque vous avez des doutes sur le biais du modèle pré-entraîné que vous utilisez.",
explain: "C'est vrai mais vous devez vous assurer que les données que vous utiliserez pour l'entraînement sont vraiment meilleures.",
correct: true
},
{
text: "Lorsque les modèles pré-entraînés disponibles ne sont tout simplement pas assez bons.",
explain: "Vous êtes sûr d'avoir bien débogué votre entraînement ?"
}
]}
/>
### 11. Pourquoi est-il facile de prétraîner un modèle de langage sur des batchs de textes ?
<Question
choices={[
{
text: "Parce qu'il y a beaucoup de textes disponibles sur internet.",
explain: "Bien que vrai, cela ne répond pas vraiment à la question. Essayez encore !"
},
{
text: "Parce que l'objectif de pré-entraînement ne nécessite pas que les humains étiquettent les données.",
explain: "La modélisation du langage est un problème autosupervisé.",
correct: true
},
{
text: "Parce que la bibliothèque 🤗 <i>Transformers</i> ne nécessite que quelques lignes de code pour démarrer l'entraînement.",
explain: "Bien que vrai, cela ne répond pas vraiment à la question posée. Essayez une autre réponse !"
}
]}
/>
### 12. Quels sont les principaux défis lors du prétraitement des données pour une tâche de réponse à des questions ?
<Question
choices={[
{
text: "Vous devez tokeniser les entrées.",
explain: "Mais est-ce vraiment un défi majeur ?"
},
{
text: "Vous devez faire face à des contextes très longs, qui donnent plusieurs caractéristiques d'entraînement qui peuvent ou non contenir la réponse.",
explain: "C'est certainement l'un des défis à relever.",
correct: true
},
{
text: "Vous devez tokeniser les réponses à la question ainsi que les entrées.",
explain: "Non, à moins que vous ne formuliez votre problème de réponse aux questions comme une tâche de séquence à séquence."
},
{
text: "À partir de l'intervalle de réponse dans le texte, vous devez trouver le token de début et de fin dans l'entrée tokenisée.",
explain: "C'est une des parties les plus difficiles, oui !",
correct: true
}
]}
/>
### 13. Comment le post-traitement est-il généralement effectué dans les réponses aux questions ?
<Question
choices={[
{
text: "Le modèle vous donne les positions de début et de fin de la réponse, et vous n'avez plus qu'à décoder la plage de <i>tokens</i> correspondant.",
explain: "Ce pourrait être une façon de faire mais c'est un peu trop simpliste."
},
{
text: "Le modèle vous donne les positions de début et de fin de la réponse pour chaque caractéristique créée par un exemple et il vous suffit de décoder la plage de <i>tokens</i> correspondant dans celui qui a le meilleur score.",
explain: "C'est proche du post-traitement que nous avons étudié, mais ce n'est pas tout à fait exact."
},
{
text: "Le modèle vous donne les positions de début et de fin de la réponse pour chaque caractéristique créée par un exemple et vous n'avez plus qu'à les faire correspondre à la portée dans le contexte de celui qui a le meilleur score.",
explain: "C'est ça en résumé !",
correct: true
},
{
text: "Le modèle génère une réponse et il vous suffit de la décoder.",
explain: "A moins que vous ne formuliez votre problème de réponse aux questions comme une tâche de séquence à séquence."
}
]}
/>
<EditOnGithub source="https://github.com/huggingface/course/blob/main/chapters/fr/chapter7/9.mdx" />

Xet Storage Details

Size:
14.3 kB
·
Xet hash:
46498f6cc2f07dd3f91192d1ad87fddb9fa4093903f0781e42139adfa34784c3

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.