1
00:00:05,760 --> 00:00:08,560
Étape de post-traitement d'une tâche de réponse aux questions.

2
00:00:10,640 --> 00:00:14,640
Lors de la réponse aux questions, le traitement du jeu de données initial

3
00:00:14,640 --> 00:00:20,960
implique de diviser les exemples en plusieurs caractéristiques, qui peuvent ou non contenir la réponse. Passer

4
00:00:20,960 --> 00:00:25,680
ces caractéristiques à travers le modèle nous donnera des logits pour les positions de début et de fin,

5
00:00:25,680 --> 00:00:30,640
puisque nos étiquettes sont les indices des tokens qui correspondent au début et à la fin de la réponse.

6
00:00:31,600 --> 00:00:36,560
Nous devons ensuite convertir ces logits en une réponse, puis choisir l'une des différentes réponses que

7
00:00:36,560 --> 00:00:43,280
chaque caractéristique donne pour être LA réponse pour un exemple donné. Pour l'étape de traitement, vous devez vous

8
00:00:43,280 --> 00:00:47,840
référer à la vidéo ci-dessous. Ce n'est pas très différent pour la validation, nous avons juste besoin d'ajouter

9
00:00:47,840 --> 00:00:53,520
quelques lignes pour garder une trace de deux choses : au lieu de supprimer la correspondance de décalage, nous les conservons,

10
00:00:53,520 --> 00:00:58,240
et y incluons également les informations sur l'emplacement du contexte en définissant les décalages

11
00:00:58,240 --> 00:01:04,240
de les tokens spéciaux et la question à `None`.Puis, nous gardons aussi une trace de l'`exemple_id`` pour

12
00:01:04,240 --> 00:01:08,880
chaque caractéristique, afin de pouvoir faire correspondre la caractéristique aux exemples dont elle est issue.

13
00:01:10,240 --> 00:01:14,400
Si vous ne souhaitez pas calculer la perte de validation, vous n'aurez pas besoin d'inclure tout le code spécial

14
00:01:14,400 --> 00:01:19,840
que nous avons utilisé pour créer les étiquettes. Ceci fait, nous pouvons appliquer cette fonction de prétraitement à l'aide de la

15
00:01:19,840 --> 00:01:26,160
méthode `map`. Nous prenons le jeu de données SQUAD comme dans la vidéo « Traitement des données pour la réponse aux questions ».

16
00:01:26,160 --> 00:01:30,560
Une fois cela fait, l'étape suivante consiste à créer notre modèle. Nous utilisons ici le modèle par défaut du

17
00:01:30,560 --> 00:01:34,560
pipeline de réponses aux questions, mais vous devez utiliser n'importe quel modèle que vous souhaitez évaluer.

18
00:01:35,600 --> 00:01:40,560
Avec la méthode `to_tf_dataset`, nous pouvons simplement envoyer notre jeu de données traité à `model.predict`,

19
00:01:41,120 --> 00:01:44,880
et nous obtenons directement nos logits de début et de fin pour le jeu de données sous forme de tableaux NumPy.

20
00:01:45,600 --> 00:01:51,040
Ceci fait, nous pouvons vraiment plonger dans le post-traitement. Nous aurons besoin d'une correspondance des exemples

21
00:01:51,040 --> 00:01:57,040
aux caractéristiques, que nous pouvons créer comme ceci. Maintenant, pour la partie principale du post-traitement,

22
00:01:57,040 --> 00:02:02,080
voyons comment extraire une réponse des logits. Nous pourrions simplement prendre le meilleur index pour les logits de début et de

23
00:02:02,080 --> 00:02:07,680
fin et terminer, mais si notre modèle prédit quelque chose d'impossible, comme des tokens dans la question,

24
00:02:07,680 --> 00:02:13,040
nous examinerons davantage de logits. Notez que dans le pipeline de réponses aux questions, nous avons attribué un

25
00:02:13,040 --> 00:02:18,560
score à chaque réponse en fonction des probabilités, que nous n'avons pas calculées ici. En termes de logits,

26
00:02:18,560 --> 00:02:24,080
la multiplication que nous avions dans les scores devient une addition. Pour aller vite, nous ne regardons pas tous

27
00:02:24,080 --> 00:02:29,040
les logits de début et de fin possibles, mais les vingt meilleurs. Nous ignorons les logits qui génèrent

28
00:02:29,040 --> 00:02:34,240
des réponses impossibles ou des réponses trop longues. Comme nous l'avons vu dans le prétraitement, les étiquettes (0,

29
00:02:34,240 --> 00:02:38,880
0) correspondent à aucune réponse, sinon nous utilisons les décalages pour obtenir la réponse dans le contexte.

30
00:02:39,920 --> 00:02:43,760
Examinons la réponse prédite pour la première caractéristique, qui est la réponse

31
00:02:43,760 --> 00:02:47,680
avec le meilleur score (ou le meilleur score logit puisque la SoftMax est une fonction croissante).

32
00:02:48,480 --> 00:02:54,000
Le modèle a bien compris ! Ensuite, nous devons simplement boucler cela pour chaque exemple,

33
00:02:54,000 --> 00:02:58,880
choisir pour chacun la réponse avec le meilleur score logit dans toutes les caractéristiques générées par l'exemple.

34
00:02:59,840 --> 00:03:03,840
Vous savez maintenant comment obtenir des réponses à partir des prédictions de votre modèle !