1
00:00:05,120 --> 00:00:07,440
Vous êtes au bon endroit si vous voulez

2
00:00:07,440 --> 00:00:15,360
comprendre ce qu'est l'algorithme de tokenisation en sous-mots « Byte Pair Encoding », comment l'entraîner

3
00:00:15,360 --> 00:00:18,640
et comment la tokenisation d'un texte est effectuée avec cet algorithme.

4
00:00:21,600 --> 00:00:25,920
L'algorithme BPE a été initialement proposé en tant qu'algorithme de compression de texte

5
00:00:26,640 --> 00:00:30,800
mais il est également très bien adapté en tant que tokenizer pour vos modèles de langage.

6
00:00:32,560 --> 00:00:38,720
L'idée de BPE est de diviser les mots en une séquence d'unités de sous-mots qui sont des unités

7
00:00:38,720 --> 00:00:44,400
qui apparaissent fréquemment dans un corpus de référence, qui est le corpus que nous avons utilisé pour l'entraîner.

8
00:00:46,560 --> 00:00:53,680
Comment un tokenizer BPE est-il entrapiné ? Tout d'abord, nous devons obtenir un corpus de textes. Nous n'entraînerons pas

9
00:00:54,480 --> 00:01:02,080
notre tokenizer sur ce texte brut, mais nous le normaliserons d'abord, puis le prétokeniserons. Comme la

10
00:01:02,080 --> 00:01:07,520
prétokénisation divise le texte en une liste de mots, nous pouvons représenter notre corpus d'une autre

11
00:01:07,520 --> 00:01:14,000
manière en rassemblant les mêmes mots et en maintenant un compteur, ici représenté en bleu.

12
00:01:17,120 --> 00:01:22,960
Pour comprendre le fonctionnement de l'entraînement, nous considérons ce corpus jouet composé des mots suivants :

13
00:01:23,520 --> 00:01:32,480
huggingface, hugging, hug, hugger, etc. BPE est un algorithme qui commence par un vocabulaire initial

14
00:01:32,480 --> 00:01:35,200
puis l'augmente jusqu'à la taille souhaitée.

15
00:01:36,240 --> 00:01:41,360
Pour construire le vocabulaire initial, on commence par séparer chaque mot du corpus

16
00:01:41,360 --> 00:01:46,640
en une liste d'unités élémentaires qui les composent, ici les caractères.

17
00:01:50,800 --> 00:01:50,900


18
00:01:51,360 --> 00:01:57,760
Nous listons dans notre vocabulaire tous les caractères qui apparaissent et qui constitueront notre vocabulaire initial !

19
00:02:00,240 --> 00:02:09,840
Voyons maintenant comment l'augmenter. Nous revenons à notre corpus divisé, nous allons parcourir les mots

20
00:02:09,840 --> 00:02:18,480
un par un et compter toutes les occurrences de paires de tokens. La première paire est composée du token « h »

21
00:02:18,480 --> 00:02:26,080
et « u », la seconde « u » et « g », et nous continuons ainsi jusqu'à ce que nous ayons la liste complète.

22
00:02:35,440 --> 00:02:41,200
Une fois que nous connaissons tous les couples et leur fréquence d'apparition, nous choisirons celui qui

23
00:02:41,200 --> 00:02:49,840
apparaît le plus fréquemment : ici, il s'agit du couple composé des lettres « l » et « e ».

24
00:02:51,680 --> 00:02:57,040
Nous notons notre première règle de fusion et nous ajoutons le nouveau token à notre vocabulaire.

25
00:03:00,080 --> 00:03:04,080
Nous pouvons ensuite appliquer cette règle de fusion à nos divisions :

26
00:03:04,080 --> 00:03:09,280
vous pouvez voir que nous avons fusionné toutes les paires de tokens composées des tokens « l » et « e ».

27
00:03:13,840 --> 00:03:19,040
Et maintenant il ne nous reste plus qu'à reproduire les mêmes étapes avec nos nouvelles divisions :

28
00:03:21,520 --> 00:03:24,640
on calcule la fréquence d'occurrence de chaque paire de tokens,

29
00:03:27,760 --> 00:03:33,680
on sélectionne la paire avec la fréquence la plus élevée, on la note dans nos règles de fusion,

30
00:03:35,760 --> 00:03:38,720
on ajoute la nouvelle à le vocabulaire,

31
00:03:39,600 --> 00:03:46,160
puis nous fusionnons toutes les paires de tokens composées du token « le » et « a » dans nos divisions.

32
00:03:50,160 --> 00:03:59,840
Et nous pouvons répéter cette opération jusqu'à atteindre la taille de vocabulaire souhaitée.

33
00:04:05,600 --> 00:04:13,200
Ici, nous nous sommes arrêtés lorsque notre vocabulaire a atteint 21 tokens. Nous pouvons voir maintenant que les mots de notre

34
00:04:13,200 --> 00:04:20,560
corpus sont maintenant divisés en beaucoup moins de tokens qu'au début de la entraînement. Nous pouvons voir que

35
00:04:20,560 --> 00:04:27,840
notre algorithme a appris les radicaux « hug » et « learn » ainsi que la terminaison verbale « ing ».

36
00:04:29,760 --> 00:04:35,600
Maintenant que nous avons appris notre vocabulaire et nos règles de fusion, nous pouvons tokeniser de nouveaux textes.

37
00:04:37,840 --> 00:04:41,120
Par exemple, si nous voulons symboliser le mot

38
00:04:41,120 --> 00:04:48,480
« hugs » : nous allons d'abord le diviser en unités élémentaires afin qu'il devienne une séquence de caractères.

39
00:04:49,840 --> 00:04:53,680
Ensuite, nous passerons en revue nos règles de fusion jusqu'à ce que nous en ayons une que nous puissions appliquer.

40
00:04:54,480 --> 00:05:01,040
Ici, nous pouvons fusionner les lettres « h » et « u ». Et ici, nous pouvons fusionner 2 tokens pour obtenir le nouveau token « hug ».

41
00:05:02,240 --> 00:05:09,840
Lorsque nous arrivons à la fin de notre règle de fusion, la tokenisation est terminée.

42
00:05:10,640 --> 00:05:22,400
Et ça y est, j'espère que maintenant l'algorithme BPE n'a plus de secret pour vous !